/* Monster Creator Styles */

/* Advanced Options Button Styling */
body .toggle-advanced-options {
    background-color: var(--primary-color);
    border-color: var(--primary-color);
    color: var(--text-light);
}

body .toggle-advanced-options:hover {
    background-color: var(--primary-color-hover);
    border-color: var(--primary-color-hover);
    color: var(--text-light);
}

/* CSS Variables — Monster Creator-specific only.
   Sitewide variables (--primary-color, --text-dark, etc.) come from main_style.css. */
:root {
    /* MC-specific color variants */
    --primary-color-hover: #3b5998;
    --mc-accent-color: #2ecc71;
    --mc-accent-color-hover: #27ae60;
    --danger-color: #e74c3c;
    --danger-color-hover: #c0392b;
    --danger-color-rgb: 231, 76, 60;
    --success-color-hover: #27ae60;
    --warning-color-hover: #d35400;

    /* RGB versions for rgba() usage */
    --primary-color-rgb: 74, 105, 189;
    --mc-accent-color-rgb: 46, 204, 113;

    /* MC-specific text */
    --text-muted: #767676;

    /* MC font settings */
    --font-family: 'Poppins', sans-serif;
    --font-size-base: 16px;
    --font-size-small: 0.875rem;
    --font-size-large: 1.25rem;

    /* MC spacing */
    --spacing-small: .5rem;
    --spacing-medium: 1rem;
    --spacing-large: 2rem;

    /* MC border settings */
    --border-radius: 5px;
    --border-width: 3px;

    /* Card system */
    --card-border: 1px solid rgba(0, 0, 0, 0.1);
    --card-radius: 8px;
    --card-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);

    /* Button shadows */
    --btn-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
    --btn-shadow-hover: 0 4px 8px rgba(0, 0, 0, 0.15);

    /* Z-index scale */
    --z-base: 1;
    --z-dropdown: 100;
    --z-sticky: 500;
    --z-modal-backdrop: 900;
    --z-modal: 1000;
    --z-toast: 1100;
}

/* Utility Classes */
.text-muted {
    color: var(--text-muted);
    font-size: 0.85em;
}
.text-muted.block {
    display: block;
    margin-top: 2px;
}
.full-width {
    width: 100%;
}
.input-narrow {
    width: 60px;
    display: inline-block;
}
.select-inline {
    display: inline-block;
    width: auto;
}
.template-action-row {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.hit-dice-formula {
    margin-left: 6px;
    font-style: italic;
    color: var(--text-muted);
}

html.dark {
    --text-muted: #aaa;
    --card-border: 1px solid rgba(255, 255, 255, 0.08);
    --card-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);
}

/* Dark mode heading contrast — primary-color is too dim on dark backgrounds */
html.dark h1,
html.dark h2,
html.dark h3,
html.dark h4,
html.dark h5,
html.dark h6 {
    color: var(--primary-color-light, #8ba3e0);
}

.dark .text-muted {
    color: #aaa;
}
.dark .hit-dice-formula {
    color: #aaa;
}

/* General Styles */
body {
    font-family: var(--font-family);
    font-size: var(--font-size-base);
    line-height: 1.5;
    color: var(--text-dark);
    background-color: var(--background-light);
}

/* Container - scoped to avoid affecting header/footer */
.container:not(header .container):not(footer .container):not(#header-placeholder .container):not(#footer-placeholder .container) {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 var(--spacing-medium);
}

/* Typography */
h1, h2, h3, h4, h5, h6 {
    margin-bottom: var(--spacing-medium);
    color: var(--primary-color);
}

/* Progress Bar Styles */
#progress-container {
    margin-bottom: var(--spacing-large);
    /* margin-top set dynamically by JS based on actual header + toggle heights */
    margin-top: 290px; /* Fallback; JS overrides with exact calculation */
}

#progress-bar {
    display: flex;
    justify-content: space-between;
    background-color: rgba(245, 245, 245, 0.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 10px 5px;
    border-radius: var(--border-radius);
    position: fixed;
    top: 233px; /* Fallback: header (~148px) + rules toggle (~85px). JS overrides. */
    left: 0;
    right: 0;
    z-index: calc(var(--z-modal) - 2); /* Below rules toggle, above content */
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}
html.dark #progress-bar {
    background-color: transparent;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

.progress-step {
    flex: 1;
    text-align: center;
    padding: var(--spacing-small);
    background-color: var(--background-light);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: all var(--transition-speed) ease;
}

.progress-step.active {
    background-color: var(--primary-color);
    color: var(--text-light);
}

.progress-step.completed {
    background-color: var(--success-color);
    color: var(--text-light);
}

.progress-step:not(.active):hover {
    background-color: rgba(var(--primary-color-rgb), 0.15);
    color: var(--primary-color);
    transition: all 0.2s ease;
}
.progress-step.visited:not(.active) {
    background-color: rgba(var(--primary-color-rgb), 0.25);
    color: var(--primary-color);
}
html.dark .progress-step:not(.active):hover {
    background-color: rgba(var(--primary-color-rgb), 0.3);
    color: var(--text-light);
}
html.dark .progress-step.visited:not(.active) {
    background-color: rgba(var(--primary-color-rgb), 0.35);
    color: var(--text-light);
}

/* Mobile & tablet: horizontal scrolling for progress bar */
@media screen and (max-width: 768px) {
    #progress-bar {
        overflow-x: auto;
        white-space: nowrap;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        -ms-overflow-style: none;
        gap: 2px;
        /* Fade mask: visible edge fades to hint at scrollable content */
        mask-image: linear-gradient(to right, black calc(100% - 30px), transparent 100%);
        -webkit-mask-image: linear-gradient(to right, black calc(100% - 30px), transparent 100%);
        padding-right: 10px;
    }
    #progress-bar.scrolled-end {
        mask-image: linear-gradient(to left, black calc(100% - 30px), transparent 100%);
        -webkit-mask-image: linear-gradient(to left, black calc(100% - 30px), transparent 100%);
    }
    #progress-bar.scrolled-middle {
        mask-image: linear-gradient(to right, transparent, black 30px, black calc(100% - 30px), transparent 100%);
        -webkit-mask-image: linear-gradient(to right, transparent, black 30px, black calc(100% - 30px), transparent 100%);
    }
    #progress-bar::-webkit-scrollbar {
        display: none;
    }
    .progress-step {
        flex: 0 0 auto;
        white-space: nowrap;
        min-width: fit-content;
        padding: var(--spacing-small) 0.75rem;
        font-size: 0.85rem;
    }
}

/* === BOX-SIZING FOUNDATION ===
   All monster creator containers use border-box so max-width includes padding.
   Scoped to monster creator only — does not affect header/footer. */
#progress-container,
#progress-container *,
.monster-controls,
.monster-controls *,
.step,
.step * {
    box-sizing: border-box;
}

/* === BUTTON HOVER ISOLATION ===
   Neutralize main_style.css .btn hover effects (gradient overlay, text-shadow, glow)
   inside the monster creator. Header nav buttons keep their effects. */
#progress-container .btn::before,
.monster-controls .btn::before,
.step .btn::before,
.tab-container .btn::before {
    display: none !important;
}

#progress-container .btn:hover,
.monster-controls .btn:hover,
.step .btn:hover,
.tab-container .btn:hover {
    text-shadow: none;
}

/* Clean hover for ALL monster creator buttons */
#progress-container button,
.monster-controls button,
.step button,
.tab-container button {
    transition: background-color 0.2s ease, border-color 0.2s ease;
}

/* Layout Architecture — max-width content centering */
#progress-container,
.monster-controls,
.step:not(#header-placeholder .step):not(#footer-placeholder .step):not(header .step):not(footer .step) {
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}

/* Step Styles - scoped to avoid affecting header/footer */
.step:not(#header-placeholder .step):not(#footer-placeholder .step):not(header .step):not(footer .step) {
    background: rgba(255, 255, 255, 0.1);
    backdrop-filter: blur(10px);
    padding: var(--spacing-large);
    margin-bottom: var(--spacing-large);
    border: var(--card-border);
    border-radius: var(--card-radius);
    box-shadow: var(--card-shadow);
}

/* Controls Styles */
.monster-controls {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 1rem;
    background: var(--background-light);
    border: var(--card-border);
    border-radius: var(--card-radius);
    box-shadow: var(--card-shadow);
}

.autosave-toggle {
    display: flex;
    align-items: center;
    gap: 10px;
}
.autosave-label {
    font-size: var(--font-size-small);
    font-weight: 600;
    color: var(--text-dark);
    cursor: pointer;
    user-select: none;
}
html.dark .autosave-label {
    color: var(--text-light);
}

.control-group {
    display: flex;
    gap: 1rem;
    align-items: center;
}

.toggle-switch {
    position: relative;
    display: inline-block;
    width: 60px;
    height: 34px;
    margin-right: 10px;
}

.toggle-switch input {
    opacity: 0;
    width: 0;
    height: 0;
}

.slider {
    position: absolute;
    cursor: pointer;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #ccc;
    transition: .4s;
    border-radius: 34px;
}

.slider:before {
    position: absolute;
    content: "";
    height: 26px;
    width: 26px;
    left: 4px;
    bottom: 4px;
    background-color: white;
    transition: .4s;
    border-radius: 50%;
}

input:checked + .slider {
    background-color: var(--primary-color);
}

input:checked + .slider:before {
    transform: translateX(26px);
}

/* Form Element Styles */
input[type="text"],
input[type="number"],
select,
textarea {
    font-family: inherit;
    width: 100%;
    padding: var(--spacing-small);
    margin-bottom: var(--spacing-medium);
    border: var(--border-width) solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
    color: var(--text-dark);
    font-size: 1rem;
    transition: all 0.3s ease;
}

input[type="text"]:focus,
input[type="number"]:focus,
select:focus,
textarea:focus {
    outline: 2px solid var(--mc-accent-color);
    outline-offset: 2px;
    border-color: var(--mc-accent-color);
    box-shadow: 0 0 8px rgba(var(--mc-accent-color-rgb), 0.4);
}

/* Number Input Arrow Styles */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    /* Increase width for larger arrows */
    width: 20em;
    height: 100%;
    margin: 0;
    padding: 0;
    /* Hide arrows by default */
    opacity: 0;
    background: linear-gradient(to bottom,
        var(--background-light) 0%,
        var(--background-light) 100%);
    border-left: 2px solid var(--primary-color);
    cursor: pointer;
    position: absolute;
    right: 0;
    top: 0;
    /* Add transition for smooth opacity change */
    transition: opacity 0.2s ease;
}

/* Show arrows on hover and focus */
input[type="number"]:hover::-webkit-inner-spin-button,
input[type="number"]:hover::-webkit-outer-spin-button,
input[type="number"]:focus::-webkit-inner-spin-button,
input[type="number"]:focus::-webkit-outer-spin-button {
    opacity: 1;
}

input[type="number"]::-webkit-inner-spin-button::before,
input[type="number"]::-webkit-outer-spin-button::before {
    content: "";
    position: absolute;
    /* Increase arrow size */
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-bottom: 10px solid var(--primary-color);
    /* Position the up arrow */
    top: 25%;
    left: 50%;
    transform: translateX(-50%);
}

input[type="number"]::-webkit-inner-spin-button::after,
input[type="number"]::-webkit-outer-spin-button::after {
    content: "";
    position: absolute;
    /* Increase arrow size */
    border-left: 10px solid transparent;
    border-right: 10px solid transparent;
    border-top: 10px solid var(--primary-color);
    /* Position the down arrow */
    bottom: 25%;
    left: 50%;
    transform: translateX(-50%);
}

input[type="number"]::-webkit-inner-spin-button:hover,
input[type="number"]::-webkit-outer-spin-button:hover {
    background: var(--primary-color);
    opacity: 0.9;
}

input[type="number"]::-webkit-inner-spin-button:hover::before,
input[type="number"]::-webkit-outer-spin-button:hover::before,
input[type="number"]::-webkit-inner-spin-button:hover::after,
input[type="number"]::-webkit-outer-spin-button:hover::after {
    border-bottom-color: var(--text-light);
    border-top-color: var(--text-light);
}

/* Checkbox Styles */
.checkbox-label {
    display: flex;
    align-items: center;
    margin-bottom: var(--spacing-small);
    cursor: pointer;
}

.checkbox-label input[type="checkbox"] {
    margin-right: var(--spacing-small);
}

/* Custom checkboxes */
input[type="checkbox"]:not(.toggle-switch input) {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    border: 2px solid var(--primary-color);
    border-radius: 3px;
    background-color: var(--background-light);
    cursor: pointer;
    vertical-align: middle;
    position: relative;
    flex-shrink: 0;
}
input[type="checkbox"]:checked:not(.toggle-switch input) {
    background-color: var(--primary-color);
}
input[type="checkbox"]:checked:not(.toggle-switch input)::after {
    content: '\2713';
    position: absolute;
    color: white;
    font-size: 14px;
    top: -1px;
    left: 2px;
}

/* Custom radio buttons */
input[type="radio"] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    border: 2px solid var(--primary-color);
    border-radius: 50%;
    background-color: var(--background-light);
    cursor: pointer;
    vertical-align: middle;
    position: relative;
    flex-shrink: 0;
}
input[type="radio"]:checked {
    background-color: var(--primary-color);
    box-shadow: inset 0 0 0 3px var(--background-light);
}

/* Dark mode variants */
html.dark input[type="checkbox"]:not(.toggle-switch input),
html.dark input[type="radio"] {
    background-color: var(--background-dark);
    border-color: var(--primary-color);
}
html.dark input[type="radio"]:checked {
    box-shadow: inset 0 0 0 3px var(--background-dark);
}

/* Button Styles — scoped: excludes header/footer nav buttons and remove/delete buttons */
button:not(header button):not(footer button):not(.auth-links button):not(.auth-buttons button):not(.remove-section-btn):not(.remove-timeline-entry):not(.remove-variant-btn):not(.remove-image-btn):not(.remove-scaling):not(.remove-button):not(.btn-danger):not(.cr-options-btn),
.btn:not(header .btn):not(footer .btn):not(.auth-links .btn):not(.auth-buttons .btn):not(.btn-danger),
#new-monster,
#delete-monster,
.action-btn,
.add-button,
.roll,
.next-button,
.prev-button,
.step-navigation button,
#save-monster,
#export-pdf,
#export-json,
#load-monster-data,
#add-custom-language-btn,
#add-spell,
#add-bonus-action,
#add-reaction,
.add-resistance-button,
.add-immunities-button,
.add-condition-immunity-button,
#add-attack-action-btn,
#add-trait-btn,
#add-existing-spell-btn,
#add-custom-spell-btn,
#add-innate-existing-spell-btn,
#add-innate-custom-spell-btn,
#add-pact-cantrip-btn,
#add-custom-pact-cantrip-btn,
#add-pact-spell-btn,
#add-custom-pact-spell-btn,
#add-bonus-action-btn,
#add-reaction-btn,
.add-legendary-action-btn,
.add-lair-action-btn,
.add-regional-effect-btn,
.preview-button,
.collapse-btn,
.add-timeline-entry,
.remove-timeline-entry,
.toggle-timeline-view,
.add-custom-attribute-btn,
.add-condition-immunity-button,
.add-spell-slot-btn,
.add-lore-section-btn,
.hp-roll,
.ac-roll,
.ac-calc {
    font-family: inherit;
    display: inline-block;
    padding: var(--spacing-small) var(--spacing-medium);
    background-color: var(--primary-color);
    color: var(--text-light);
    border: none;
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: background-color var(--transition-speed) ease;
    font-weight: bold;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    font-size: var(--font-size-small);
    margin: var(--spacing-small);
}

/* AC Calculate button - visually distinct green to differentiate from blue Roll */
.ac-calc {
    background-color: var(--success-color);
}
.ac-calc:hover {
    background-color: var(--success-color-hover);
}

/* Shield checkbox and magic bonus – inline with AC controls */
.ac-modifier-inline {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 8px;
    font-size: 0.9em;
    font-weight: normal;
    cursor: pointer;
    vertical-align: middle;
}
.ac-modifier-inline input[type="checkbox"] {
    margin: 0;
    cursor: pointer;
}
#ac-armor-magic,
#ac-shield-magic {
    margin-left: 4px;
    font-size: 0.9em;
}

#new-monster:hover,
#delete-monster:hover,
.action-btn:hover,
.add-button:hover,
.roll:hover,
.next-button:hover,
.prev-button:hover,
.step-navigation button:hover,
#save-monster:hover,
#export-pdf:hover,
#export-json:hover,
#load-monster-data:hover,
#add-custom-language-btn:hover,
#add-spell:hover,
#add-bonus-action:hover,
#add-reaction:hover,
.add-resistance-button:hover,
.add-immunities-button:hover,
.add-condition-immunity-button:hover,
#add-attack-action-btn:hover,
#add-trait-btn:hover,
#add-existing-spell-btn:hover,
#add-custom-spell-btn:hover,
#add-innate-existing-spell-btn:hover,
#add-innate-custom-spell-btn:hover,
#add-pact-cantrip-btn:hover,
#add-custom-pact-cantrip-btn:hover,
#add-pact-spell-btn:hover,
#add-custom-pact-spell-btn:hover,
#add-bonus-action-btn:hover,
#add-reaction-btn:hover,
.add-legendary-action-btn:hover,
.add-lair-action-btn:hover,
.add-regional-effect-btn:hover,
.preview-button:hover,
.collapse-btn:hover,
.add-timeline-entry:hover,
.remove-timeline-entry:hover,
.toggle-timeline-view:hover,
.add-custom-attribute-btn:hover,
.add-condition-immunity-button:hover,
.add-spell-slot-btn:hover,
.add-lore-section-btn:hover {
    background-color: var(--primary-color-hover);
}

/* Delete monster button — override primary color */
#delete-monster {
    background-color: var(--danger-color);
    white-space: nowrap;
    flex-shrink: 0;
}
#delete-monster:hover {
    background-color: var(--danger-color-hover);
}

/* Remove/Delete Button Styling — single authoritative source.
   ALL remove/delete buttons get danger-red + trash icon styling. */
.remove-button,
.remove-spell-btn,
.remove-damage-btn,
.delete-btn,
.remove-attack,
.remove-trait,
.remove-bonus-action,
.remove-reaction,
.remove-section-btn,
.remove-timeline-entry,
.remove-variant-btn,
.remove-image-btn,
.remove-scaling,
.btn-danger {
    background-color: var(--danger-color);
    color: #ffffff;
    border: 1px solid var(--danger-color);
    font-weight: 600;
    transition: background-color 0.2s ease;
    /* Ensure consistent minimum touch-friendly sizing across all remove buttons */
    min-width: 32px;
    min-height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 4px 8px;
}

.remove-button:hover,
.remove-spell-btn:hover,
.remove-damage-btn:hover,
.delete-btn:hover,
.remove-attack:hover,
.remove-trait:hover,
.remove-bonus-action:hover,
.remove-reaction:hover,
.remove-section-btn:hover,
.remove-timeline-entry:hover,
.remove-variant-btn:hover,
.remove-image-btn:hover,
.remove-scaling:hover,
.btn-danger:hover {
    background-color: var(--danger-color-hover);
    border-color: var(--danger-color-hover);
    /* NO box-shadow, NO text-shadow — clean shift only */
}

#new-monster,
#delete-monster,
#save-monster,
#export-pdf {
    padding: var(--spacing-small) var(--spacing-medium);
}

/* Edit button styling for templates */
.edit-button {
    background-color: var(--primary-color);
    color: #ffffff;
    border: 2px solid var(--primary-color);
    padding: 0.25rem 0.5rem;
    border-radius: var(--border-radius);
    font-weight: 500;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.2s ease;
    text-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);
}

.edit-button:hover {
    background-color: #764ba2;
    border-color: #764ba2;
    transform: translateY(-1px);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

.edit-button:active {
    transform: translateY(0);
}

html.dark .edit-button {
    background-color: var(--primary-color, #4a69bd);
    border-color: var(--primary-color-light, #5a7acd);
}

html.dark .edit-button:hover {
    background-color: var(--primary-color-light, #5a7acd);
    border-color: var(--primary-color-light, #6a8add);
}

.reset-button {
    background-color: #dc3545;
    color: white;
    margin-right: 10px;
}

.reset-button:hover {
    background-color: #c82333;
}

/* Dropdown Styles */
select {
    appearance: none;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-color: var(--background-light);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%23333' viewBox='0 0 12 12'%3E%3Cpath d='M10.293 3.293L6 7.586 1.707 3.293A1 1 0 00.293 4.707l5 5a1 1 0 001.414 0l5-5a1 1 0 10-1.414-1.414z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.7em top 50%;
    background-size: 0.65em auto;
    padding-right: 2em;
}

/* Ability Score Styles */
.ability-score-group {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem 0.75rem;
    margin-bottom: 0.75rem;
    padding: 0.75rem;
    background-color: rgba(var(--primary-color-rgb), 0.05);
    border-radius: var(--border-radius);
}

.ability-score-group label {
    flex: 0 0 110px;
    font-weight: 600;
    white-space: nowrap;
}

.ability-score-group input[type="number"] {
    flex: 0 0 80px;
    width: 80px;
    text-align: center;
}

.ability-score-group .modifier {
    flex: 0 0 48px;
    width: 48px;
    text-align: center;
    background-color: var(--primary-color);
    color: var(--text-light);
    border-radius: var(--border-radius);
    padding: 0.25rem 0.5rem;
    font-weight: 600;
    white-space: nowrap;
}

.ability-score-group .roll {
    flex: 0 0 auto;
    white-space: nowrap;
}

/* CR advisory hints — wrap to own line below the score controls */
.ability-score-group .cr-field-hint {
    flex: 1 1 100%;
    margin: 0;
}

/* === SAVING THROW PROFICIENCIES GRID === */
.saving-throw-proficiency {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.saving-throw-proficiency label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.5rem 0.75rem;
    background: rgba(var(--primary-color-rgb), 0.05);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease;
    font-size: 0.9rem;
    white-space: nowrap;
}

.saving-throw-proficiency label:hover {
    background: rgba(var(--primary-color-rgb), 0.12);
    border-color: rgba(var(--primary-color-rgb), 0.3);
}

.saving-throw-proficiency label input[type="checkbox"] {
    flex-shrink: 0;
    margin: 0;
    width: 16px;
    height: 16px;
}

.saving-throw-proficiency .modifier {
    margin-left: auto;
    font-size: 0.8rem;
    opacity: 0.7;
    font-weight: 600;
}

/* === SKILL PROFICIENCY GRID === */
.skill-proficiency-group {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.skill-proficiency-group label {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.5rem 0.75rem;
    background: rgba(var(--primary-color-rgb), 0.05);
    border: 1px solid rgba(0, 0, 0, 0.08);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: background-color 0.2s ease, border-color 0.2s ease;
    font-size: 0.85rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.skill-proficiency-group label:hover {
    background: rgba(var(--primary-color-rgb), 0.12);
    border-color: rgba(var(--primary-color-rgb), 0.3);
}

.skill-proficiency-group label input[type="checkbox"] {
    flex-shrink: 0;
    margin: 0;
    width: 16px;
    height: 16px;
}

.skill-proficiency-group .modifier {
    margin-left: auto;
    font-size: 0.8rem;
    opacity: 0.7;
    font-weight: 600;
}

/* Dark mode for saving throws and skills */
html.dark .saving-throw-proficiency label,
html.dark .skill-proficiency-group label {
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(255, 255, 255, 0.08);
}

html.dark .saving-throw-proficiency label:hover,
html.dark .skill-proficiency-group label:hover {
    background: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.15);
}

/* Responsive: 2 columns on tablet, 1 on mobile */
@media screen and (max-width: 768px) {
    .saving-throw-proficiency,
    .skill-proficiency-group {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media screen and (max-width: 480px) {
    .saving-throw-proficiency,
    .skill-proficiency-group {
        grid-template-columns: 1fr;
    }

    .ability-score-group {
        flex-wrap: wrap;
        gap: 0.5rem;
    }

    .ability-score-group label {
        flex: 1 1 100%;
    }

    .ability-score-group input[type="number"] {
        flex: 1;
        width: auto;
    }
}

/* Grid Layouts */
.combat-stats-container,
.movement-container,
.senses-container,
.resistance-container,
.immunities-container,
.condition-immunities-container,
.checkbox-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-medium);
}

/* Senses — grouped rows so each sense + its range radios stay together */
.senses-list {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    width: 100%;
}

.sense-row {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.4rem 0.6rem;
    border: 1px solid #ddd;
    border-radius: var(--border-radius);
    background: rgba(0, 0, 0, 0.02);
}

.sense-label {
    min-width: 140px;
    font-weight: 600;
    white-space: nowrap;
}

.sense-range-options {
    display: flex;
    gap: 0.75rem;
    opacity: 0.5;
    transition: opacity 0.2s;
}

/* When the sense checkbox is checked, brighten the range options */
.sense-row:has(input[type="checkbox"]:checked) .sense-range-options {
    opacity: 1;
}

/* Dark mode overrides for sense rows */
html.dark .sense-row {
    border-color: rgba(255, 255, 255, 0.1);
    background: rgba(255, 255, 255, 0.03);
    color: var(--text-light);
}
html.dark .sense-row input,
html.dark .sense-row select {
    background-color: var(--background-dark);
    color: var(--text-light);
    border-color: rgba(255, 255, 255, 0.2);
}

.ability-skill-divider{
border: 1px solid var(--primary-color);
border-top: none;
border-left:none;
border-right: none;
margin: var(--spacing-small);
}

/* Language Group Styles */
.language-group {
    margin-top: var(--spacing-medium);
}

.language-comprehension,
.language-checkboxes {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-small);
}

/* Tab Styles */
.tab-container {
    display: flex;
    margin-bottom: var(--spacing-medium);
    background-color: rgba(0, 0, 0, 0.03);
    border-radius: var(--card-radius);
    border: var(--card-border);
}

.tab-button {
    flex: 1;
    padding: var(--spacing-small) var(--spacing-medium);
    background-color: var(--background-light);
    color: #000000; /* Black text by default in light mode */
    border: 1px solid var(--primary-color);
    border-bottom: none;
    cursor: pointer;
    transition: all var(--transition-speed) ease;
    font-weight: bold;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Light mode: Black text by default, white when active */
html:not(.dark) .tab-button {
    background-color: #ffffff;
    color: #000000;
    border-color: var(--primary-color);
}

html:not(.dark) .tab-button:hover {
    background-color: var(--primary-color);
    color: #000000;
}

html:not(.dark) .tab-button.active {
    background-color: var(--primary-color);
    color: #ffffff; /* White text when active in light mode */
}

.tab-button:hover {
    background-color: var(--primary-color);
    color: var(--text-light);
}

.tab-button.active {
    background-color: var(--primary-color);
    color: var(--text-light);
}

.tab-content {
    display: none;
    padding: var(--spacing-medium);
    background-color: var(--background-light);
    border: 1px solid var(--primary-color);
    border-top: none;
}

.tab-content.active {
    display: block;
}

/* Action Styles */
.attack-action-template,
.bonus-action,
.reaction,
.legendary-action,
.lair-action,
.regional-effect,
.trait {
    background-color: var(--background-light);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    position: relative;
}

/* Drag and Drop Styles */
.legendary-action,
.lair-action,
.regional-effect {
    position: relative;
    cursor: default;
    transition: all 0.3s ease;
    background-color: var(--background-light);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-small);
    padding: var(--spacing-medium);
}

.drag-handle {
    position: absolute;
    top: 5px;
    left: 5px;
    cursor: grab;
    padding: 5px;
    color: var(--primary-color);
    font-size: 1.2em;
    z-index: var(--z-base); /* Ensure handle is above other content */
}

.drag-handle:active {
    cursor: grabbing;
}

.dragging {
    opacity: 0.6;
    background-color: var(--background-dark);
    border: 2px dashed var(--primary-color);
}

.drag-drop-indicator {
    height: 4px;
    background-color: var(--tertiary-color);
    margin: 8px 0;
    border-radius: 2px;
    pointer-events: none; /* Prevent indicator from interfering with drag */
    box-shadow: 0 0 4px var(--tertiary-color); /* Add glow effect */
}

/* Dark Mode Styles */
.dark .legendary-action,
.dark .lair-action,
.dark .regional-effect {
    background-color: var(--background-dark);
    border-color: var(--mc-accent-color);
}

.dark .drag-handle {
    color: var(--mc-accent-color);
}

.dark .dragging {
    border-color: var(--mc-accent-color);
}

.dark .drag-drop-indicator {
    background-color: var(--tertiary-color);
    box-shadow: 0 0 4px var(--tertiary-color);
}

/* Summary Styles — inherits D&D stat-block look */
#monster-summary {
    margin-top: var(--spacing-large);
}

/* Empty state for stat block */
#monster-summary:empty,
#monster-summary.stat-block:empty {
    background: var(--background-light);
    border: 2px dashed var(--border-color, #ccc);
    border-radius: var(--border-radius);
    padding: 2rem;
    min-height: 60px;
}

#monster-summary:empty::after {
    content: 'Complete the steps above to generate your monster stat block.';
    display: block;
    text-align: center;
    color: var(--text-muted, #888);
    font-style: italic;
    font-size: 0.9rem;
}

/* Spell Styles */
.spell-slots-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--spacing-small);
}

.spell-list-columns {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-large);
    margin-bottom: var(--spacing-large);
}

.spell-level-column {
    flex: 1;
    min-width: 150px;
}

.spell-level-column ul {
    list-style-type: none;
    padding-left: 0;
}

/* Modal Styles */
.modal {
    display: none;
    position: fixed;
    z-index: var(--z-modal);
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0,0,0,0.4);
}

.modal-content {
    background-color: var(--background-light);
    margin: 15% auto;
    padding: var(--spacing-large);
    border: var(--border-width) solid var(--primary-color);
    width: 80%;
    max-width: 800px;
    max-height: 80vh;
    overflow-y: auto;
    border-radius: var(--border-radius);
}

.close {
    color: #aaa;
    float: right;
    font-size: 28px;
    font-weight: bold;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.close:hover,
.close:focus {
    color: var(--text-dark);
    text-decoration: none;
    cursor: pointer;
}

/* Spell Selection Modal Styles */
.spell-selection-modal .modal-content {
    max-height: 90vh;
    overflow-y: auto;
    position: relative;
    padding: 20px;
}

.filter-summary,
.filter-options,
.spell-list-controls {
    margin-bottom: var(--spacing-medium);
}

.filter-options {
    border: var(--border-width) solid var(--primary-color);
    padding: var(--spacing-medium);
    background-color: var(--background-light);
    border-radius: var(--border-radius);
}

.filter-section {
    margin-bottom: var(--spacing-medium);
}

.filter-section h4 {
    margin-bottom: var(--spacing-small);
    color: var(--primary-color);
}

.filter-section label {
    margin-right: 10px;
    display: inline-flex;
    align-items: center;
}

.filter-section input[type="checkbox"] {
    margin-right: 5px;
}

.spell-search,
.sort-option {
    margin-bottom: var(--spacing-medium);
    padding: 8px 12px;
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
}

#spell-list,
#selected-spells-list {
    list-style-type: none;
    padding: 0;
    margin: 0;
    max-height: 50vh;
    overflow-y: auto;
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
}

.spell-level-header {
    padding: 8px 12px;
    background-color: var(--primary-color);
    color: var(--text-light);
    font-weight: bold;
    border-bottom: 1px solid rgba(255, 255, 255, 0.2);
}

.spell-item {
    padding: 8px 12px;
    cursor: pointer;
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.spell-item:hover {
    background-color: rgba(var(--primary-color-rgb), 0.1);
}

.spell-item label {
    display: flex;
    align-items: center;
    width: 100%;
    cursor: pointer;
}

.spell-item input[type="checkbox"] {
    margin-right: 10px;
}

.selected-spell-item {
    padding: 8px 12px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 1px solid rgba(0, 0, 0, 0.1);
}

.remove-selected-spell {
    background: none;
    border: none;
    color: var(--danger-color);
    font-size: 1.2em;
    cursor: pointer;
    padding: 0 5px;
}

.remove-selected-spell:hover {
    color: var(--danger-color-hover);
}

.modal-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
}

.row {
    display: flex;
    flex-wrap: wrap;
    margin: 0 -10px;
}

.col {
    flex: 1 1 45%;
    padding: 0 10px;
    min-width: 300px;
}

/* Dark mode adjustments */
.dark .filter-options,
.dark #spell-list,
.dark #selected-spells-list {
    background-color: var(--background-dark);
    border-color: var(--mc-accent-color);
}

.dark .spell-level-header {
    background-color: var(--mc-accent-color);
}

.dark .spell-item:hover {
    background-color: rgba(var(--mc-accent-color-rgb), 0.2);
}

/* Lore Section Styles */

.collapse-btn {
    background: none;
    border: none;
    font-size: 1.2em;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.lore-content {
    resize: vertical;
}

.preview-mode .lore-section {
    background-color: var(--background-light);
    padding: 20px;
    margin-bottom: 20px;
    border-radius: 5px;
}

.preview-content {
    font-family: var(--font-family);
    line-height: 1.6;
}

.tag-container {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 10px;
}

.tag {
    background-color: var(--primary-color);
    color: var(--text-light);
    padding: 5px 10px;
    border-radius: 20px;
    font-size: 0.9em;
    display: flex;
    align-items: center;
}

.remove-tag {
    margin-left: 5px;
    cursor: pointer;
}

.sortable-ghost {
    opacity: 0.5;
}

/* Add tooltips */
[title] {
    position: relative;
}

[title]:hover::after,
[title]:focus::after,
[title]:active::after {
    content: attr(title);
    position: absolute;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%);
    padding: 5px 10px;
    background: var(--background-dark);
    color: var(--text-light);
    border-radius: var(--border-radius);
    font-size: 0.8em;
    white-space: nowrap;
    z-index: var(--z-modal);
    pointer-events: none;
}

/* Timeline Container */
.timeline-container {
    background-color: var(--background-light);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-top: var(--spacing-medium);
    position: relative;
}

/* Decorative timeline line — only visible inside the visual view */
.timeline-visual::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 50%;
    height: 2px;
    background-color: var(--primary-color);
    z-index: var(--z-base);
    transform: translateY(-50%);
}

.timeline-header {
    display: flex;
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    position: relative;
    z-index: calc(var(--z-base) + 1);
}

.timeline-entries-wrapper {
    min-height: 100px;
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    position: relative;
    z-index: calc(var(--z-base) + 1);
}

/* Timeline Entry */
.timeline-entry {
    display: flex;
    background-color: var(--background-light);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-small);
    padding: var(--spacing-medium);
    position: relative;
    transition: all 0.3s ease;
}

.timeline-entry.dragging {
    opacity: 0.6;
    background-color: var(--background-dark);
    border: 2px dashed var(--primary-color);
}

.timeline-entry .drag-handle {
    cursor: grab;
    padding: 0 var(--spacing-small);
    color: var(--primary-color);
    font-size: 1.2em;
}

.timeline-content {
    display: flex;
    flex: 1;
    gap: var(--spacing-medium);
    align-items: flex-start;
}

.timeline-content input {
    flex: 1;
    padding: var(--spacing-small);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    width: 150px;
    flex-shrink: 0;
}

.timeline-content textarea {
    flex: 1;
    resize: vertical;
    min-height: 2.5em;
    overflow-wrap: break-word;
    word-wrap: break-word;
    line-height: 1.5;
}

.timeline-entry-controls {
    display: flex;
    gap: var(--spacing-small);
}

.timeline-drop-indicator {
    height: 3px;
    background-color: var(--tertiary-color);
    margin: var(--spacing-small) 0;
    border-radius: var(--border-radius);
    transition: all 0.3s ease;
}

/* Timeline Visual */
.timeline-visual {
    position: relative;
    padding: var(--spacing-large) 40px;
    margin: var(--spacing-large) 0;
    min-height: 150px;
}

.timeline-points {
    position: absolute;
    left: 40px;
    right: 40px;
    top: 50%;
    height: 4px;
    background: var(--primary-color);
    transform: translateY(-50%);
}

.timeline-point {
    position: absolute;
    display: inline-block;
    width: 16px;
    height: 16px;
    background-color: var(--primary-color);
    border: 3px solid var(--background-light);
    border-radius: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    cursor: pointer;
    z-index: calc(var(--z-base) + 1);
    transition: all 0.3s ease;
}

.timeline-point:hover {
    transform: translate(-50%, -50%) scale(1.2);
    box-shadow: 0 0 10px rgba(var(--primary-color-rgb), 0.5);
}

.timeline-point-label {
    position: absolute;
    top: -30px;
    left: 50%;
    transform: translateX(-50%);
    font-size: 0.9em;
    background-color: var(--background-light);
    padding: 4px 8px;
    border-radius: var(--border-radius);
    white-space: nowrap;
    opacity: 0.8;
}

.timeline-modal {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: var(--background-light);
    padding: var(--spacing-large);
    border-radius: var(--border-radius);
    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);
    z-index: var(--z-modal);
    width: 400px;
    max-width: 90vw;
}

.timeline-modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0, 0, 0, 0.5);
    z-index: calc(var(--z-modal) - 1);
}

.timeline-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-medium);
}

.timeline-modal-close {
    background: none;
    border: none;
    font-size: 1.5em;
    cursor: pointer;
    color: var(--text-dark);
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* Dark Mode */
.dark .timeline-container,
.dark .timeline-entry,
.dark .timeline-label,
.dark .timeline-event-text {
    background-color: var(--background-dark);
    border-color: var(--mc-accent-color);
}

.dark .timeline-container::before {
    background-color: var(--mc-accent-color);
}

.dark .timeline-modal {
    background: var(--background-dark);
    border: 1px solid var(--mc-accent-color);
}

.dark .timeline-point {
    border-color: var(--background-dark);
    background-color: var(--mc-accent-color);
    box-shadow: 0 0 10px rgba(var(--mc-accent-color-rgb), 0.3);
}

.dark .timeline-point-label {
    background-color: var(--background-dark);
    color: var(--text-light);
}

.dark .timeline-event-text {
    background-color: var(--background-dark);
    border-color: var(--mc-accent-color);
}

/* ============================================
   STEP 6: LORE & BEHAVIOR - Enhanced Styles
   ============================================ */

/* Lore Progress Tracker */
.lore-progress-tracker {
    background: linear-gradient(135deg, var(--primary-color), var(--mc-accent-color));
    color: white;
    padding: var(--spacing-medium);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-large);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--spacing-medium);
}

.progress-info {
    display: flex;
    gap: var(--spacing-medium);
    flex-wrap: wrap;
    font-weight: 500;
}

.bulk-actions {
    display: flex;
    gap: var(--spacing-small);
    flex-wrap: wrap;
}

.bulk-action-btn {
    background: rgba(255, 255, 255, 0.2);
    border: 1px solid rgba(255, 255, 255, 0.3);
    color: white;
    padding: var(--spacing-small) var(--spacing-medium);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: all var(--transition-speed);
}

.bulk-action-btn:hover {
    background: rgba(255, 255, 255, 0.3);
    transform: translateY(-2px);
}

/* Lore Toolbar */
.lore-toolbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--spacing-small);
    padding: var(--spacing-small) var(--spacing-medium);
    background: var(--background-light);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    margin-bottom: var(--spacing-medium);
}

.lore-progress {
    display: flex;
    align-items: center;
    gap: var(--spacing-small);
    font-size: var(--font-size-small);
    color: var(--text-dark);
    flex-wrap: wrap;
}

.lore-progress .separator {
    color: var(--text-muted);
}

.lore-bulk-actions {
    display: flex;
    gap: var(--spacing-small);
}

.lore-bulk-actions button {
    background: none;
    border: 1px solid var(--primary-color);
    color: var(--primary-color);
    padding: 4px 10px;
    border-radius: var(--border-radius);
    cursor: pointer;
    font-size: var(--font-size-small);
    transition: all var(--transition-speed);
}

.lore-bulk-actions button:hover {
    background: var(--primary-color);
    color: white;
}

html.dark .lore-toolbar {
    background: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.15);
}

html.dark .lore-progress {
    color: var(--text-light);
}

html.dark .lore-bulk-actions button {
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--primary-color-light, #8ba3e0);
}

html.dark .lore-bulk-actions button:hover {
    background: rgba(96, 165, 250, 0.2);
    color: #93bbfc;
}

/* Lore Section Enhanced */
.lore-section {
    background-color: var(--background-light);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    transition: all var(--transition-speed);
}

.lore-section:hover {
    box-shadow: 0 4px 8px rgba(0,0,0,0.15);
}

.lore-section.dragging {
    opacity: 0.5;
    transform: scale(0.95);
}

.lore-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-medium);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--primary-color);
}

.section-title-group {
    display: flex;
    align-items: center;
    gap: var(--spacing-small);
}

.drag-handle {
    cursor: grab;
    color: var(--primary-color);
    font-size: 1.2em;
    padding: 0 var(--spacing-small);
    user-select: none;
}

.drag-handle:active {
    cursor: grabbing;
}

.required-indicator {
    color: var(--warning-color);
    font-size: 1.2em;
}

.section-controls {
    display: flex;
    align-items: center;
    gap: var(--spacing-small);
}

.section-controls button:not(.remove-section-btn) {
    background: none;
    border: 1px solid var(--primary-color);
    color: var(--primary-color);
    padding: var(--spacing-small);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: all var(--transition-speed);
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.section-controls button:not(.remove-section-btn):hover {
    background: var(--primary-color);
    color: white;
}

.section-help-btn {
    font-weight: bold;
}

/* Remove/delete buttons inside section-controls get danger-red styling.
   Uses `background` shorthand to cleanly override any competing rules.
   Includes sizing/layout since :not() exclusion on `button` skips these. */
.section-controls .remove-section-btn {
    background: var(--danger-color);
    color: #ffffff;
    border: 1px solid var(--danger-color);
    padding: var(--spacing-small);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: all var(--transition-speed);
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.section-controls .remove-section-btn:hover {
    background: var(--danger-color-hover);
    color: #ffffff;
    border-color: var(--danger-color-hover);
}

.section-content {
    margin-bottom: var(--spacing-medium);
}

.section-prompts {
    background: var(--background-light);
    border-left: 3px solid var(--mc-accent-color);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    border-radius: var(--border-radius);
    font-style: italic;
}

.prompt-text {
    margin: 0;
    color: var(--text-dark);
}

.lore-footer {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: var(--spacing-small);
    border-top: 1px solid var(--primary-color);
    font-size: var(--font-size-small);
    color: var(--text-dark);
    flex-wrap: wrap;
    gap: var(--spacing-small);
}

/* Completion Indicators */
.completion-indicator {
    padding: 2px 8px;
    border-radius: var(--border-radius);
    font-weight: 500;
}

.completion-indicator.not-started {
    background: #e0e0e0;
    color: var(--text-muted);
}

.completion-indicator.just-started {
    background: #fff3cd;
    color: #856404;
}

.completion-indicator.in-progress {
    background: #cce5ff;
    color: #004085;
}

.completion-indicator.good-progress {
    background: #d4edda;
    color: #155724;
}

.completion-indicator.well-developed {
    background: #d4edda;
    color: #155724;
    font-weight: bold;
}

/* Overall completion percentage indicators */
#lore-completion.low-completion {
    color: #dc3545;
    font-weight: 600;
}

#lore-completion.medium-completion {
    color: #ffc107;
    font-weight: 600;
}

#lore-completion.high-completion {
    color: #28a745;
    font-weight: 700;
}

/* Section Drop Indicator */
.section-drop-indicator {
    height: 4px;
    background: var(--mc-accent-color);
    border-radius: 2px;
    margin: var(--spacing-small) 0;
    box-shadow: 0 0 10px var(--mc-accent-color);
    animation: pulse 1s infinite;
}

@keyframes pulse {
    0%, 100% { opacity: 0.6; }
    50% { opacity: 1; }
}

/* Structured Inputs */
.structured-input {
    background: var(--background-light);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

.structured-input h4 {
    margin: 0 0 var(--spacing-medium) 0;
    color: var(--primary-color);
}

/* Behavior Checklist */
.behavior-checklist label {
    display: block;
    margin-bottom: var(--spacing-small);
    cursor: pointer;
}

.behavior-checklist input[type="checkbox"] {
    margin-right: var(--spacing-small);
    cursor: pointer;
}

/* Interaction Table */
.interaction-table .reaction-row,
.social-hierarchy .hierarchy-level,
.environmental-impact .impact-row {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: var(--spacing-medium);
    align-items: center;
    margin-bottom: var(--spacing-medium);
}

.interaction-table label,
.social-hierarchy label,
.environmental-impact label {
    font-weight: 500;
    color: var(--text-dark);
}

.impact-row select,
.impact-row input {
    max-width: 200px;
}

/* Variants Table */
.variants-table .add-variant-btn {
    background: var(--mc-accent-color);
    color: white;
    border: none;
    padding: var(--spacing-small) var(--spacing-medium);
    border-radius: var(--border-radius);
    cursor: pointer;
    margin-bottom: var(--spacing-medium);
    transition: all var(--transition-speed);
}

.variants-table .add-variant-btn:hover {
    background: var(--mc-accent-color-hover);
    transform: translateY(-2px);
}

.variant-row {
    display: grid;
    grid-template-columns: 1fr 2fr auto;
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    padding: var(--spacing-small);
    background: white;
    border-radius: var(--border-radius);
    border: 1px solid var(--primary-color);
}

.remove-variant-btn {
    background: var(--danger-color);
    color: white;
    border: none;
    border-radius: var(--border-radius);
    cursor: pointer;
    width: 32px;
    height: 32px;
    font-size: 1.2em;
    transition: all var(--transition-speed);
}

.remove-variant-btn:hover {
    background: var(--danger-color-hover);
}

/* Visual Upload Enhanced */
.visual-upload {
    margin-top: var(--spacing-medium);
}

.upload-controls {
    display: flex;
    align-items: center;
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

.upload-button {
    background: var(--mc-accent-color);
    color: white;
    padding: var(--spacing-small) var(--spacing-medium);
    border-radius: var(--border-radius);
    cursor: pointer;
    transition: all var(--transition-speed);
    display: inline-block;
}

.upload-button:hover {
    background: var(--mc-accent-color-hover);
    transform: translateY(-2px);
}

.upload-hint {
    font-size: var(--font-size-small);
    color: var(--text-muted);
}

.images-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
    gap: var(--spacing-medium);
}

.image-preview-item {
    background: white;
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-small);
    transition: all var(--transition-speed);
}

.image-preview-item:hover {
    box-shadow: 0 4px 8px rgba(0,0,0,0.15);
}

.image-wrapper {
    position: relative;
}

.image-wrapper .uploaded-image {
    width: 100%;
    height: 200px;
    object-fit: cover;
    border-radius: var(--border-radius);
}

.remove-image-btn,
.zoom-image-btn {
    position: absolute;
    top: 5px;
    background: rgba(0,0,0,0.7);
    color: white;
    border: none;
    border-radius: 50%;
    width: 30px;
    height: 30px;
    cursor: pointer;
    transition: all var(--transition-speed);
    font-size: 1.2em;
    display: flex;
    align-items: center;
    justify-content: center;
}

.remove-image-btn {
    right: 5px;
}

.remove-image-btn:hover {
    background: var(--danger-color);
}

.zoom-image-btn {
    right: 40px;
}

.zoom-image-btn:hover {
    background: var(--primary-color);
}

.image-metadata {
    margin-top: var(--spacing-small);
}

.image-metadata input {
    width: 100%;
    margin-bottom: var(--spacing-small);
}

.image-size {
    font-size: var(--font-size-small);
    color: var(--text-muted);
}

/* Image Zoom Modal */
.image-zoom-modal .image-zoom-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.9);
    z-index: var(--z-modal);
}

.image-zoom-content {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: white;
    padding: var(--spacing-large);
    border-radius: var(--border-radius);
    max-width: 90vw;
    max-height: 90vh;
    z-index: calc(var(--z-modal) + 1);
    overflow: auto;
}

.image-zoom-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-medium);
}

.image-zoom-close {
    background: none;
    border: none;
    font-size: 2em;
    cursor: pointer;
    color: var(--text-dark);
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.image-zoom-body img {
    max-width: 100%;
    max-height: 80vh;
}

/* Validation Styles */
/* Note: .validation-error and .validation-warning base styles are in the Step 5 Validation section */

.validation-message {
    font-size: var(--font-size-small);
    padding: 4px 8px;
    border-radius: var(--border-radius);
    margin-top: 4px;
}

.validation-message.error {
    background: #f8d7da;
    color: #721c24;
    border: 1px solid #f5c6cb;
}

.validation-message.warning {
    background: #fff3cd;
    color: #856404;
    border: 1px solid #ffeaa7;
}

/* Validation Modal */
.validation-modal {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: var(--background-light);
    padding: var(--spacing-large);
    border-radius: var(--border-radius);
    box-shadow: 0 10px 30px rgba(0,0,0,0.3);
    max-width: 600px;
    max-height: 80vh;
    overflow-y: auto;
    z-index: var(--z-modal);
}

.validation-modal-content h3 {
    margin-top: 0;
    color: var(--primary-color);
}

.validation-errors,
.validation-warnings,
.validation-suggestions {
    margin-bottom: var(--spacing-medium);
}

.validation-errors h4 {
    color: var(--danger-color);
}

.validation-warnings h4 {
    color: var(--warning-color);
}

.validation-suggestions h4 {
    color: var(--primary-color);
}

.validation-modal ul {
    list-style: none;
    padding-left: 0;
}

.validation-modal li {
    padding: var(--spacing-small);
    margin-bottom: var(--spacing-small);
    border-left: 3px solid;
    background: var(--background-light);
}

.validation-errors li {
    border-color: var(--danger-color);
}

.validation-warnings li {
    border-color: var(--warning-color);
}

.validation-suggestions li {
    border-color: var(--primary-color);
}

.validation-actions {
    display: flex;
    gap: var(--spacing-medium);
    justify-content: flex-end;
}

.validation-continue,
.validation-stay {
    padding: var(--spacing-small) var(--spacing-large);
    border: none;
    border-radius: var(--border-radius);
    cursor: pointer;
    font-weight: 500;
    transition: all var(--transition-speed);
}

.validation-continue {
    background: var(--mc-accent-color);
    color: white;
}

.validation-continue:hover {
    background: var(--mc-accent-color-hover);
}

.validation-stay {
    background: var(--primary-color);
    color: white;
}

.validation-stay:hover {
    background: var(--primary-color-hover);
}

/* Keyboard Shortcuts Modal */
.keyboard-shortcuts-modal .shortcuts-modal-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(0,0,0,0.7);
    z-index: var(--z-modal);
}

.shortcuts-modal-content {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    background: white;
    padding: var(--spacing-large);
    border-radius: var(--border-radius);
    max-width: 500px;
    z-index: calc(var(--z-modal) + 1);
    box-shadow: 0 10px 30px rgba(0,0,0,0.3);
}

.shortcuts-modal-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: var(--spacing-medium);
}

.shortcuts-modal-close {
    background: none;
    border: none;
    font-size: 2em;
    cursor: pointer;
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.shortcut-item {
    display: flex;
    align-items: center;
    gap: var(--spacing-medium);
    padding: var(--spacing-small);
    margin-bottom: var(--spacing-small);
    background: var(--background-light);
    border-radius: var(--border-radius);
}

.shortcut-item kbd {
    background: white;
    border: 1px solid #ccc;
    border-radius: 3px;
    padding: 2px 6px;
    font-family: monospace;
    font-size: 0.9em;
    box-shadow: 0 1px 2px rgba(0,0,0,0.1);
}

.shortcut-desc {
    flex: 1;
}

.shortcuts-note {
    margin-top: var(--spacing-medium);
    font-size: var(--font-size-small);
    color: var(--text-muted);
    font-style: italic;
}

/* Responsive Design */
@media (max-width: 768px) {
    .lore-progress-tracker {
        flex-direction: column;
        align-items: flex-start;
    }
    
    .progress-info {
        flex-direction: column;
        gap: var(--spacing-small);
    }
    
    .interaction-table .reaction-row,
    .social-hierarchy .hierarchy-level,
    .environmental-impact .impact-row {
        grid-template-columns: 1fr;
    }
    
    .variant-row {
        grid-template-columns: 1fr;
    }
    
    .images-gallery {
        grid-template-columns: 1fr;
    }
}

/* Dark Mode Support */
.dark .lore-section,
.dark .structured-input,
.dark .variant-row,
.dark .image-preview-item,
.dark .validation-modal,
.dark .shortcuts-modal-content,
.dark .image-zoom-content {
    background-color: var(--background-dark);
    border-color: var(--mc-accent-color);
    color: var(--text-light);
}

.dark .lore-header {
    border-bottom-color: var(--primary-color);
    color: var(--text-light);
}

.dark .section-prompts {
    background: rgba(255,255,255,0.1);
    border-left-color: var(--mc-accent-color);
}

.dark .prompt-text,
.dark .upload-hint {
    color: var(--text-light);
}

.dark .lore-footer {
    border-top-color: rgba(255, 255, 255, 0.15);
    color: var(--text-light);
}

.dark .lore-section .lore-content,
.dark .structured-input textarea,
.dark .structured-input input[type="text"],
.dark .structured-input input[type="number"],
.dark .structured-input select {
    background-color: var(--card-bg, #374151);
    color: var(--text-light);
    border-color: rgba(255, 255, 255, 0.15);
}

.dark .interaction-table label,
.dark .social-hierarchy label,
.dark .environmental-impact label,
.dark .structured-input h4 {
    color: var(--primary-color-light, #8ba3e0);
}

.dark .behavior-checklist label {
    color: var(--text-light);
}

.dark .completion-indicator.not-started {
    background: var(--card-bg, #374151);
    color: #9ca3af;
}

.dark .completion-indicator.just-started {
    background: #78350f;
    color: #fbbf24;
}

.dark .completion-indicator.in-progress {
    background: #1e3a5f;
    color: #60a5fa;
}

.dark .completion-indicator.good-progress,
.dark .completion-indicator.well-developed {
    background: #064e3b;
    color: #34d399;
}

/* Print Styles */
@media print {
    .lore-progress-tracker,
    .bulk-actions,
    .section-controls,
    .drag-handle {
        display: none !important;
    }
    
    .lore-section {
        page-break-inside: avoid;
        border: 1px solid #000;
    }
}

/* ============================================
   STEP 7: LORE DISPLAY IN STAT BLOCK
   ============================================ */

.monster-lore {
    margin-top: var(--spacing-large);
}

.monster-lore .section-header {
    font-size: 1.2em;
    font-weight: bold;
    color: var(--primary-color);
    margin-bottom: var(--spacing-medium);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--primary-color);
}

.monster-lore .lore-entry {
    margin-bottom: var(--spacing-medium);
    padding: var(--spacing-small);
    background: var(--background-light);
    border-radius: var(--border-radius);
}

.monster-lore .lore-entry strong {
    color: var(--primary-color);
    display: block;
    margin-bottom: var(--spacing-small);
}

/* Timeline Display in Stat Block */
.timeline-display {
    margin-top: var(--spacing-small);
    padding-left: var(--spacing-medium);
}

.timeline-item {
    margin-bottom: var(--spacing-small);
    padding: var(--spacing-small);
    background: white;
    border-left: 3px solid var(--primary-color);
    border-radius: var(--border-radius);
}

.timeline-date {
    font-weight: bold;
    color: var(--primary-color);
}

html.dark .timeline-item {
    background: var(--card-bg, #374151);
    border-left-color: var(--primary-color-light, #8ba3e0);
}

html.dark .stat-block .timeline-date {
    color: var(--primary-color-light, #8ba3e0);
}

html.dark .monster-lore .lore-entry strong {
    color: var(--primary-color-light, #8ba3e0);
}

/* Visual Display in Stat Block */
.visual-display {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: var(--spacing-medium);
    margin-top: var(--spacing-small);
}

.image-item {
    text-align: center;
}

.image-item img {
    border-radius: var(--border-radius);
    border: 2px solid var(--primary-color);
    box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}

.image-caption {
    font-style: italic;
    font-size: var(--font-size-small);
    margin-top: var(--spacing-small);
    color: var(--text-muted);
}

/* Behavior Aspects Display */
.behavior-aspects {
    margin: var(--spacing-small) 0;
    font-style: italic;
    color: var(--text-muted);
}

/* Interaction Table Display */
.interaction-table {
    margin: var(--spacing-small) 0;
    padding: var(--spacing-small);
    background: white;
    border-radius: var(--border-radius);
}

.interaction-table > div {
    margin-bottom: var(--spacing-small);
    padding: var(--spacing-small);
    border-left: 3px solid var(--primary-color);
}

/* Social Hierarchy Display */
.social-hierarchy {
    margin: var(--spacing-small) 0;
    padding: var(--spacing-small);
    background: white;
    border-radius: var(--border-radius);
}

.social-hierarchy > div {
    margin-bottom: var(--spacing-small);
}

/* Variants List Display */
.variants-list {
    margin-top: var(--spacing-small);
}

.variant-item {
    margin-bottom: var(--spacing-small);
    padding: var(--spacing-small);
    background: white;
    border-left: 3px solid var(--mc-accent-color);
    border-radius: var(--border-radius);
}

/* Environmental Impact Display */
.environmental-impact {
    margin: var(--spacing-small) 0;
    padding: var(--spacing-small);
    background: white;
    border-radius: var(--border-radius);
}

.environmental-impact > div {
    margin-bottom: var(--spacing-small);
}

/* Dark Mode for Stat Block Lore */
.dark .monster-lore .lore-entry,
.dark .timeline-item,
.dark .interaction-table,
.dark .interaction-table > div,
.dark .social-hierarchy,
.dark .variant-item,
.dark .environmental-impact {
    background-color: var(--background-dark);
    color: var(--text-light);
}

.dark .monster-lore .section-header {
    color: var(--mc-accent-color);
    border-bottom-color: var(--mc-accent-color);
}

.dark .timeline-date,
.dark .monster-lore .lore-entry strong {
    color: var(--mc-accent-color);
}

/* Print Styles for Lore */
@media print {
    .monster-lore {
        page-break-before: auto;
    }
    
    .monster-lore .lore-entry {
        page-break-inside: avoid;
    }
    
    .timeline-item,
    .variant-item {
        page-break-inside: avoid;
    }
}

/* Form Row Styles */
.form-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-small);
    margin-bottom: var(--spacing-small);
    align-items: center;
    }
    
    .form-row > * {
        flex: 1 1 auto;
    }
    
    .form-row > label {
        flex: 0 0 auto;
        margin-right: var(--spacing-small);
    }
    
    /* Multiattack Styles */
    .multiattack-details {
        margin-top: var(--spacing-small);
    }
    
    /* Damage Section Styles */
    .damage-section {
        margin-top: var(--spacing-medium);
    }
    
    .damage-entry {
        margin-bottom: 0.25rem;
    }
    
    .damage-entries-container {
        margin-bottom: 0.5rem;
    }
    
    .damage-entries-container .form-row {
        margin-bottom: 0.25rem;
    }
    
    .damage-entries-container .form-group {
        margin-bottom: 0.25rem;
    }
    
    .damage-entries-container label {
        margin-bottom: 0.25rem;
        font-size: 0.9rem;
    }
    
    /* Effect Section Styles */
    .effect-section {
        margin-top: var(--spacing-medium);
    }
    
    /* Recharge Details Styles */
    .recharge-details {
        margin-top: var(--spacing-small);
    }
    
    /* Uses Details Styles */
    .uses-details {
        margin-top: var(--spacing-small);
    }
    
    /* Custom Attack/Spell Details Styles */
    .custom-attack-details,
    .custom-spell-details {
        margin-top: var(--spacing-small);
    }
    
    /* Trigger Details Styles */
    .trigger-details {
        margin-top: var(--spacing-small);
    }
    
    /* Attributes Row Styles */
    .attributes-row {
        display: flex;
        flex-wrap: wrap;
        gap: var(--spacing-medium);
        margin-bottom: var(--spacing-medium);
    }
    
    .attribute {
        flex: 1 1 150px;
    }
    
    /* Custom Spell Form Styles */
    .custom-spell-form {
        background-color: var(--background-light);
        border: 1px solid var(--primary-color);
        border-radius: var(--border-radius);
        padding: var(--spacing-medium);
        margin-top: var(--spacing-medium);
    }
    
    .custom-spell-form h3 {
        margin-top: 0;
    }
    
    .spell-damage-section,
    .spell-scaling-section,
    .spell-condition-section {
        margin-top: var(--spacing-medium);
    }
    
    /* Simplified Spell Styles */
    .simplified-spell {
        background-color: var(--background-light);
        border: 1px solid var(--primary-color);
        border-radius: var(--border-radius);
        padding: var(--spacing-medium);
        margin-bottom: var(--spacing-medium);
    }

    .stat-block {
        background: linear-gradient(135deg, #FDF1DC 0%, #EDE5D0 100%);
        border: 2px solid #58180D;
        border-radius: var(--border-radius);
        padding: 1.25rem 1.5rem;
        color: #1a1a1a;
        font-family: 'Georgia', 'Times New Roman', serif;
        max-width: 800px;
        margin: 0 auto;
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
        line-height: 1.5;
    }

    .dark .stat-block {
        background: linear-gradient(135deg, #1e1a14 0%, #252019 100%);
        border-color: #7A200D;
        color: #E8DCC8;
        box-shadow: 0 2px 10px rgba(0, 0, 0, 0.4);
    }
    
    /* Summary controls buttons - ensure visibility in light mode */
    .summary-controls {
        display: flex;
        gap: 1rem;
        justify-content: center;
        margin-top: 2rem;
        padding: 1rem;
        flex-wrap: wrap;
    }
    
    .summary-controls button,
    .summary-controls #save-monster,
    .summary-controls #export-pdf {
        background-color: #4a69bd;
        color: #ffffff;
        border: 2px solid #4a69bd;
        padding: 0.75rem 1.5rem;
        border-radius: 6px;
        font-weight: 600;
        font-size: 1rem;
        cursor: pointer;
        transition: all 0.3s ease;
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    }
    
    .summary-controls button:hover,
    .summary-controls #save-monster:hover,
    .summary-controls #export-pdf:hover {
        background-color: #5a7acd;
        border-color: #5a7acd;
        transform: translateY(-2px);
        box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
    }
    
    .summary-controls button:active,
    .summary-controls #save-monster:active,
    .summary-controls #export-pdf:active {
        transform: translateY(0);
        box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    }
    
    /* Light mode specific styling for summary buttons */
    html:not(.dark) .summary-controls button,
    html:not(.dark) .summary-controls #save-monster,
    html:not(.dark) .summary-controls #export-pdf {
        background-color: var(--primary-color);
        color: #ffffff;
        border-color: var(--primary-color);
        text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
    }
    
    html:not(.dark) .summary-controls button:hover,
    html:not(.dark) .summary-controls #save-monster:hover,
    html:not(.dark) .summary-controls #export-pdf:hover {
        background-color: #764ba2;
        border-color: #764ba2;
        color: #ffffff;
    }
    
    /* Dark mode styling for summary buttons */
    html.dark .summary-controls button,
    html.dark .summary-controls #save-monster,
    html.dark .summary-controls #export-pdf {
        background-color: #4a69bd;
        color: #ffffff;
        border-color: #5a7acd;
    }
    
    html.dark .summary-controls button:hover,
    html.dark .summary-controls #save-monster:hover,
    html.dark .summary-controls #export-pdf:hover {
        background-color: #5a7acd;
        border-color: #6a8add;
    }
    
    .monster-name {
        color: #58180D;
        font-size: 1.75rem;
        font-weight: 700;
        margin: 0;
        padding-bottom: 0.125rem;
        font-family: 'Georgia', 'Times New Roman', serif;
        letter-spacing: 0.02em;
    }

    .dark .monster-name {
        color: #E89A5A;
    }

    .monster-type-line {
        color: #444;
        font-style: italic;
        font-size: 0.95rem;
        margin: 0;
        padding-bottom: 0.5rem;
        border-bottom: 2px solid #58180D;
    }

    .dark .monster-type-line {
        color: #B8A890;
        border-bottom-color: #7A200D;
    }

    /* Thin red rule — decorative divider used after type line and before sections */
    .stat-block .combat-stats::before,
    .stat-block .monster-details::before {
        content: '';
        display: block;
        border-top: 1px solid #58180D;
        margin-bottom: 0.5rem;
        opacity: 0.5;
    }
    .dark .stat-block .combat-stats::before,
    .dark .stat-block .monster-details::before {
        border-top-color: #7A200D;
    }

    .combat-stats {
        padding: 0.5rem 0;
        margin: 0.5rem 0;
    }

    .stat-line {
        margin: 0.15rem 0;
    }

    .stat-label {
        color: #58180D;
        font-weight: 700;
        margin-right: 0.5rem;
    }

    .dark .stat-label {
        color: #E89A5A;
    }
    
    .ability-scores {
        display: grid;
        grid-template-columns: repeat(6, 1fr);
        gap: 0.25rem;
        margin: 0.75rem 0;
        padding: 0.5rem 0;
        border-top: 2px solid #58180D;
        border-bottom: 2px solid #58180D;
        text-align: center;
    }

    .dark .ability-scores {
        border-color: #7A200D;
    }

    .ability {
        padding: 0.35rem 0.25rem;
    }

    .ability-label {
        color: #58180D;
        font-weight: 700;
        font-size: 0.8rem;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        margin-bottom: 0.15rem;
    }

    .dark .ability-label {
        color: #E89A5A;
    }

    .ability-mod {
        color: #1a1a1a;
        font-size: 1rem;
        font-weight: 600;
    }

    .dark .ability-mod {
        color: #E8DCC8;
    }
    
    .monster-details {
        padding: 0.5rem 0;
    }

    .monster-details > div {
        margin: 0.2rem 0;
        line-height: 1.4;
    }

    .monster-details > div:empty {
        display: none;
    }

    .detail-label {
        color: #58180D;
        font-weight: 700;
        margin-right: 0.5rem;
    }

    .dark .detail-label {
        color: #E89A5A;
    }
    
/* Stat block content sections — tight spacing with no extra borders
   (section-header provides the visual divider) */
.monster-traits,
.monster-spellcasting,
.monster-actions,
.monster-bonus-actions,
.monster-reactions,
.monster-legendary-actions,
.monster-mythic-actions,
.monster-lair-actions,
.monster-regional-effects,
.monster-lore {
    margin-top: 0.25rem;
}

/* Empty section handling */
.monster-traits:empty,
.monster-spellcasting:empty,
.monster-actions:empty,
.monster-bonus-actions:empty,
.monster-reactions:empty,
.monster-legendary-actions:empty,
.monster-mythic-actions:empty,
.monster-lair-actions:empty,
.monster-regional-effects:empty,
.monster-lore:empty {
    display: none;
}

/* Stat block action/trait items */
.stat-block .action,
.stat-block .trait,
.stat-block .bonus-action,
.stat-block .reaction {
    margin: 0.35rem 0;
    line-height: 1.5;
}

.stat-block .action strong,
.stat-block .trait strong,
.stat-block .bonus-action strong,
.stat-block .reaction strong {
    font-style: italic;
}

.stat-block .action em,
.stat-block .trait em {
    font-weight: normal;
}    
    /* Dark Mode Styles */
    .dark #progress-bar {
        color: var(--text-light);
    }
    
    .dark .step,
    .dark .attack-action-template,
    .dark .bonus-action,
    .dark .reaction,
    .dark .legendary-action,
    .dark .lair-action,
    .dark .regional-effect,
    .dark .trait,
    .dark .lore-section,
    .dark .modal-content,
    .dark .filter-options,
    .dark .custom-spell-form,
    .dark .simplified-spell {
        background-color: var(--background-dark);
        border-color: var(--mc-accent-color);
    }

    /* Dark mode stat block — D&D themed, NOT generic green */
    .dark #monster-summary:empty {
        background-color: var(--background-dark);
        border-color: rgba(122, 32, 13, 0.4);
    }
    .dark #monster-summary:empty::after {
        color: #B8A890;
    }
    .dark .modal-content{
        color: var(--text-light);
    }
    
    .dark input[type="text"],
    .dark input[type="number"],
    .dark select,
    .dark textarea {
        background-color: var(--background-dark);
        color: var(--text-light);
        border-color: var(--mc-accent-color);
    }
    /* Number Input Arrow Styles for dark mode */
.dark input[type="number"]::-webkit-inner-spin-button,
.dark input[type="number"]::-webkit-outer-spin-button {
    background: var(--background-dark);
    border-left: var(--border-width) solid var(--mc-accent-color);
}

.dark input[type="number"]::-webkit-inner-spin-button:hover,
.dark input[type="number"]::-webkit-outer-spin-button:hover {
    background-color: var(--mc-accent-color);
}

.dark input[type="number"]::-webkit-inner-spin-button:active,
.dark input[type="number"]::-webkit-outer-spin-button:active {
    background-color: var(--mc-accent-color);
}
    
    .dark .tab-button {
        background-color: var(--background-dark);
        color: var(--text-light);
        border-color: var(--mc-accent-color);
    }
    
    .dark .tab-button:hover,
    .dark .tab-button.active {
        background-color: var(--primary-color);
    }
    
    .dark .drag-handle {
        color: var(--text-light);
    }
    
    .dark select {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%3Cfff' viewBox='0 0 12 12'%3E%3Cpath d='M10.293 3.293L6 7.586 1.707 3.293A1 1 0 00.293 4.707l5 5a1 1 0 001.414 0l5-5a1 1 0 10-1.414-1.414z'/%3E%3C/svg%3E");
    }
    
    .dark .close {
        color: var(--text-light);
    }
    
    .dark .close:hover,
    .dark .close:focus {
        color: var(--primary-color);
    }
    
    /* Responsive Styles */
    @media screen and (max-width: 1200px) {
        .ability-score-group,
        .combat-stats-container,
        .movement-container,
        .senses-container {
            grid-template-columns: repeat(2, 1fr);
            gap: 1rem;
        }
    }

    @media screen and (max-width: 768px) {
        .ability-score-group,
        .combat-stats-container, 
        .movement-container,
        .senses-container,
        .resistance-container,
        .immunities-container,
        .condition-immunities-container,
        .checkbox-group {
            grid-template-columns: 1fr;
            gap: 0.75rem;
        }

        .form-row {
            flex-direction: column;
            align-items: stretch;
            gap: 0.75rem;
        }

        .form-row > * {
            width: 100%;
            margin-bottom: 0;
        }

        /* On narrow screens, stack sense label above range options */
        .sense-row {
            flex-wrap: wrap;
        }
        .sense-label {
            min-width: 100%;
        }

        .tab-container {
            flex-direction: column;
            gap: 0.5rem;
        }

        .tab-button {
            width: 100%;
            border: 1px solid var(--primary-color);
            border-bottom: none;
            padding: 0.75rem;
        }

        .tab-button:last-child {
            border-bottom: 1px solid var(--primary-color);
        }
        
        .stat-block {
            padding: 0.75rem;
            margin: 0.5rem;
        }

        .ability-scores {
            grid-template-columns: repeat(3, 1fr);
            gap: 0.35rem;
        }

        .proficiency-group {
            grid-template-columns: 1fr;
            gap: 0.25rem;
        }
    }

    @media screen and (max-width: 480px) {
        .ability-scores {
            grid-template-columns: repeat(2, 1fr);
        }

        .stat-block {
            padding: 0.5rem;
            margin: 0.25rem;
        }
    }

    /* Print Styles */
    @media print {
        body {
            background-color: white;
            color: black;
            margin: 0;
            padding: 0;
        }

        .step,
        .attack-action-template,
        .bonus-action,
        .reaction,
        .legendary-action,
        .lair-action,
        .regional-effect,
        .trait,
        #monster-summary,
        .lore-section {
            background-color: white;
            border: 1px solid black;
            page-break-inside: avoid;
            margin: 0.5cm 0;
            padding: 0.5cm;
        }

        button,
        .btn,
        .action-btn,
        .add-button,
        .remove-button,
        .roll,
        .next-button,
        .prev-button,
        .step-navigation button {
            display: none;
        }

        .tab-container {
            display: block;
        }

        .tab-content {
            display: block !important;
            page-break-inside: avoid;
        }

        .modal {
            display: none !important;
        }
    }

    /* Accessibility Styles */
    @media (prefers-reduced-motion: reduce) {
        * {
            animation-duration: 0.01ms !important;
            animation-iteration-count: 1 !important;
            transition-duration: 0.01ms !important;
            scroll-behavior: auto !important;
        }
    }

    /* Focus styles for keyboard navigation */
    button:focus-visible,
    input:focus-visible,
    select:focus-visible,
    textarea:focus-visible,
    .tab-button:focus-visible {
        outline: 3px solid var(--primary-color);
        outline-offset: 2px;
        box-shadow: 0 0 0 2px var(--background-light);
    }

    /* High Contrast Mode */
    @media (forced-colors: active) {
        .progress-step.active,
        .progress-step.completed,
        button,
        .btn,
        .action-btn,
        .add-button,
        .remove-button,
        .roll,
        .next-button,
        .prev-button,
        .step-navigation button {
            forced-color-adjust: none;
            border: 2px solid ButtonText;
        }

        input,
        select,
        textarea {
            border: 1px solid ButtonText;
        }
    }

    /* Number Input Container */
    .number-control {
        position: relative;
        display: inline-flex;
        align-items: center;
        gap: 0.5rem;
    }

    /* Base Number Input Styling */
    input[type="number"] {
        width: 80px;
        padding: 0.5rem;
        padding-right: 25px; /* Space for the buttons */
        border: 2px solid var(--primary-color);
        border-radius: var(--border-radius);
        background-color: var(--background-light);
        color: var(--text-dark);
        font-size: 1rem;
        position: relative;
        -moz-appearance: textfield; /* Firefox base style */
        appearance: textfield; /* Standard property */
    }

    /* Webkit (Chrome, Safari, Edge) spinner buttons */
    input[type="number"]::-webkit-inner-spin-button {
        opacity: 0; /* Hidden by default */
        background: none;
        position: absolute;
        top: 0;
        right: 0;
        width: 10px;
        height: 100%;
        cursor: pointer;
        transform-origin: right center;
        transform: scale(2); /* Makes the click target bigger */
        margin: 0;
        transition: opacity 0.2s ease;
    }

    /* Show spinner on hover/focus */
    input[type="number"]:hover::-webkit-inner-spin-button,
    input[type="number"]:focus::-webkit-inner-spin-button {
        opacity: 1;
    }

    /* Firefox specific styles */
    @supports (-moz-appearance: none) {
        input[type="number"] {
            position: relative;
        }
        
        input[type="number"]::-moz-number-wrapper {
            display: flex;
            align-items: stretch;
            height: 100%;
            position: absolute;
            right: 0;
            top: 0;
        }
        
        input[type="number"]::-moz-number-spin-up,
        input[type="number"]::-moz-number-spin-down {
            display: flex;
            align-items: center;
            justify-content: center;
            width: 25px;
            background-color: rgba(var(--primary-color-rgb), 0.1);
            border-left: 2px solid var(--primary-color);
            cursor: pointer;
            opacity: 0;
            transition: opacity 0.2s ease;
        }
        
        input[type="number"]::-moz-number-spin-up {
            border-radius: 0 var(--border-radius) 0 0;
        }
        
        input[type="number"]::-moz-number-spin-down {
            border-radius: 0 0 var(--border-radius) 0;
        }
        
        input[type="number"]:hover::-moz-number-spin-up,
        input[type="number"]:hover::-moz-number-spin-down,
        input[type="number"]:focus::-moz-number-spin-up,
        input[type="number"]:focus::-moz-number-spin-down {
            opacity: 1;
        }
    }

    /* Dark mode adjustments */
    .dark input[type="number"] {
        background-color: var(--background-dark);
        color: var(--text-light);
        border-color: var(--primary-color);
    }

    .dark input[type="number"]::-webkit-inner-spin-button {
        filter: invert(1) hue-rotate(180deg);
    }

    /* Hover/Focus states */
    input[type="number"]:hover,
    input[type="number"]:focus {
        border-color: var(--primary-color-hover);
        outline: none;
    }

    /* Add visual indicators for the buttons using background image */
    input[type="number"]::-webkit-inner-spin-button {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='50'%3E%3Ctext x='7' y='20' font-size='14' fill='%234A69BD'%3E+%3C/text%3E%3Ctext x='7' y='45' font-size='14' fill='%234A69BD'%3E−%3C/text%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: center;
    }

    /* Dark mode SVG */
    .dark input[type="number"]::-webkit-inner-spin-button {
        background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='25' height='50'%3E%3Ctext x='7' y='20' font-size='14' fill='%23ffffff'%3E+%3C/text%3E%3Ctext x='7' y='45' font-size='14' fill='%23ffffff'%3E−%3C/text%3E%3C/svg%3E");
    }

    /* Stat Block Section Headers — D&D maroon with thin rule */
    .section-header {
        color: #58180D;
        font-size: 1.35rem;
        font-weight: 700;
        margin: 0.75rem 0 0.35rem;
        border-bottom: 2px solid #58180D;
        padding-bottom: 0.15rem;
        font-family: 'Georgia', 'Times New Roman', serif;
    }

    .dark .section-header {
        color: #E89A5A;
        border-bottom-color: #7A200D;
    }

    /* Legendary/Lair/Regional description intro text */
    .legendary-actions-description,
    .lair-actions-description,
    .regional-effects-description {
        font-style: italic;
        color: #555;
        margin-bottom: 0.5rem;
        line-height: 1.5;
    }

    .dark .legendary-actions-description,
    .dark .lair-actions-description,
    .dark .regional-effects-description {
        color: #B8A890;
    }

    /* Individual legendary/lair/regional items — clean, no heavy backgrounds */
    .stat-block .legendary-action,
    .stat-block .lair-action,
    .stat-block .regional-effect {
        margin: 0.3rem 0;
        padding: 0.15rem 0;
        line-height: 1.5;
    }

    .regional-effects-end {
        font-style: italic;
        color: #555;
        margin-top: 0.5rem;
        padding-top: 0.35rem;
        border-top: 1px solid rgba(88, 24, 13, 0.3);
    }

    .dark .regional-effects-end {
        color: #B8A890;
        border-top-color: rgba(122, 32, 13, 0.4);
    }

    /* Lore section — condensed styling */
    .stat-block .lore-section {
        font-size: 0.9rem;
    }

    .stat-block .lore-entry {
        margin: 0.35rem 0;
        line-height: 1.5;
    }

    .stat-block .lore-entry strong {
        color: #58180D;
    }

    .dark .stat-block .lore-entry strong {
        color: #E89A5A;
    }

    /* Print styles for stat block sections */
    @media print {
        .stat-block {
            background: #fff !important;
            color: #000 !important;
            border-color: #333 !important;
            box-shadow: none !important;
        }

        .section-header {
            color: #000;
            border-bottom-color: #000;
        }

        .monster-name {
            color: #000;
        }

        .stat-label,
        .detail-label,
        .ability-label {
            color: #000;
        }

        .ability-scores {
            border-color: #333;
        }

        .legendary-actions-description,
        .lair-actions-description,
        .regional-effects-description,
        .regional-effects-end {
            color: var(--text-muted);
        }
    }

    .custom-spells-table-container {
        margin-top: 2rem;
        padding: 1rem;
        border: 1px solid var(--border-color);
        border-radius: var(--border-radius);
        background-color: var(--background-color);
    }

    .custom-spells-table-container h3 {
        margin-bottom: 1rem;
        color: var(--text-color);
    }

    .custom-spells-table {
        width: 100%;
        border-collapse: collapse;
        margin-bottom: 1rem;
        color: var(--text-color);
    }

    .custom-spells-table th,
    .custom-spells-table td {
        padding: 0.75rem;
        text-align: left;
        border: 1px solid var(--border-color);
        font-size: 0.9rem;
    }

    .custom-spells-table th {
        background-color: var(--header-background);
        font-weight: bold;
    }

    .custom-spells-table tr:nth-child(even) {
        background-color: var(--alternate-row-background);
    }

    .custom-spells-table tr:hover {
        background-color: var(--hover-background);
    }

    .custom-spells-table .spell-description-row td {
        padding: 0.5rem 1rem;
        background-color: var(--description-background);
        font-style: italic;
    }

    .custom-spells-table .edit-spell-btn,
    .custom-spells-table .remove-spell-btn {
        padding: 0.25rem 0.5rem;
        margin: 0 0.25rem;
        border: 1px solid var(--border-color);
        border-radius: 3px;
        background-color: var(--button-background);
        color: var(--text-color);
        cursor: pointer;
        font-size: 0.8rem;
    }

    .custom-spells-table .edit-spell-btn:hover {
        background-color: var(--edit-button-hover);
        border-color: #0066cc;
        color: #0066cc;
    }

    .custom-spells-table .remove-spell-btn:hover {
        background-color: var(--remove-button-hover);
        border-color: #cc0000;
        color: #cc0000;
    }

    /* Light mode defaults (no wrapper needed — this is the base) */
    .custom-spells-table-container {
        --background-color: #fff;
        --text-color: #333;
        --border-color: #ddd;
        --header-background: #f5f5f5;
        --alternate-row-background: #f9f9f9;
        --hover-background: #f0f0f0;
        --description-background: #fafafa;
        --button-background: #fff;
        --edit-button-hover: #e7f3ff;
        --remove-button-hover: #ffe7e7;
    }

    /* Dark mode overrides — uses site's .dark class toggle */
    html.dark .custom-spells-table-container {
        --background-color: #2a2a2a;
        --text-color: #e0e0e0;
        --border-color: #444;
        --header-background: #333;
        --alternate-row-background: #2d2d2d;
        --hover-background: #363636;
        --description-background: #2f2f2f;
        --button-background: #3a3a3a;
        --edit-button-hover: #2b4052;
        --remove-button-hover: #522b2b;
    }

/* Spell Container Styles */
.spell-container-wrapper {
    margin-bottom: 20px;
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    overflow: hidden;
}

.spell-container-wrapper h4 {
    margin: 0;
    padding: 8px 12px;
    background-color: var(--primary-color);
    color: var(--text-light);
    font-size: 1rem;
}

.spell-container {
    padding: 10px;
}

.spell-container .spell-item {
    margin-bottom: 8px;
    padding: 8px 10px;
    border: 1px solid rgba(var(--primary-color-rgb), 0.3);
    border-radius: var(--border-radius);
    background-color: rgba(var(--primary-color-rgb), 0.05);
    position: relative;
}

.spell-container .spell-item:last-child {
    margin-bottom: 0;
}

.spell-container .spell-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.spell-container .spell-name {
    font-weight: bold;
    flex-grow: 1;
}

.spell-container .remove-spell-btn {
    background: none;
    border: none;
    color: var(--danger-color);
    font-size: 1.2em;
    cursor: pointer;
    width: 24px;
    height: 24px;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.spell-container .remove-spell-btn:hover {
    color: var(--danger-color-hover);
    background-color: rgba(var(--danger-color-rgb), 0.1);
    border-radius: 50%;
}

/* Dark mode adjustments */
.dark .spell-container-wrapper {
    border-color: var(--mc-accent-color);
}

.dark .spell-container-wrapper h4 {
    background-color: var(--mc-accent-color);
}

.dark .spell-container .spell-item {
    border-color: rgba(var(--mc-accent-color-rgb), 0.3);
    background-color: rgba(var(--mc-accent-color-rgb), 0.05);
}

/* Innate Spellcasting Actions */
.innate-spell-actions {
    margin-bottom: var(--spacing-medium);
    display: flex;
    gap: var(--spacing-small);
    flex-wrap: wrap;
}

/* Spell Button Groups */
.spell-button-group {
    display: flex;
    gap: var(--spacing-small);
    flex-wrap: wrap;
    margin-bottom: var(--spacing-medium);
    align-items: center;
    justify-content: flex-start;
}

/* Ensure all buttons in spell sections have consistent styling */
.casting-type-section .add-button,
.spell-button-group .add-button,
.spell-actions .add-button,
.innate-spell-actions .add-button {
    margin: 0; /* Remove default margin to rely on gap */
    min-width: 140px; /* Ensure consistent button width */
    text-align: center;
    padding: var(--spacing-small) var(--spacing-medium);
    font-size: var(--font-size-small);
}

/* Fix any duplicate or misaligned elements */
.innate-spell-actions .add-button,
.pact-spellcasting .add-button {
    margin-bottom: var(--spacing-small);
}

/* Ensure proper spacing for spell containers */
.spell-container-wrapper {
    margin-bottom: var(--spacing-medium);
}

.spell-container-wrapper h5 {
    margin-bottom: var(--spacing-small);
    font-weight: 600;
    color: var(--primary-color);
}

.innate-spell-groups {
    margin-top: var(--spacing-medium);
}

.innate-spell-group {
    background-color: rgba(46, 204, 113, 0.05);
    border: 1px solid var(--mc-accent-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

.innate-spell-group h5 {
    color: var(--mc-accent-color);
    font-weight: 600;
    margin-bottom: var(--spacing-small);
    padding-bottom: var(--spacing-small);
    border-bottom: 1px solid var(--mc-accent-color);
}

.innate-spell-list {
    min-height: 60px;
    background-color: var(--background-light);
    border: 1px solid var(--mc-accent-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-small);
}

/* Dark mode for innate spellcasting */
.dark .innate-spell-group {
    background-color: rgba(0, 0, 0, 0.2);
    border-color: rgba(255, 255, 255, 0.2);
}

.dark .innate-spell-group h5 {
    color: var(--text-light);
}

.dark .innate-spell-list {
    border-color: rgba(255, 255, 255, 0.2);
}

/* Usage Selection Modal */
.usage-options {
    display: flex;
    flex-direction: column;
    gap: var(--spacing-small);
    margin-top: var(--spacing-medium);
}

.usage-btn {
    padding: var(--spacing-small) var(--spacing-medium);
    text-align: left;
    justify-content: flex-start;
}

.usage-btn:hover {
    transform: translateX(5px);
    transition: transform 0.2s ease;
}

/* Spell level containers */
.spell-level-container {
    margin-bottom: var(--spacing-medium);
}

.spell-level-container h5 {
    margin-bottom: var(--spacing-small);
    color: var(--primary-color);
    font-weight: 600;
}

/* Spell slot groups */
.spell-slot-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: var(--spacing-small);
    margin-bottom: var(--spacing-medium);
}

.spell-slot-group label {
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 0.25rem;
}

.spell-slot-input {
    width: 100%;
    padding: var(--spacing-small);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
    text-align: center;
}

/* Clean up spellcasting sections */
.casting-type-section {
    margin-bottom: var(--spacing-large);
    padding: var(--spacing-medium);
    border: 1px solid var(--border-color, #e2e8f0);
    border-radius: var(--border-radius);
    background-color: rgba(255, 255, 255, 0.02);
}

/* Spellcasting Configuration Section */
.spellcasting-config {
    background-color: var(--background-light);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    box-shadow: var(--btn-shadow);
}

.spellcasting-config .form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

.spellcasting-config .form-row:last-child {
    margin-bottom: 0;
}

/* Spell Management Area */
#spell-management-area {
    margin-top: var(--spacing-medium);
}

/* Casting Type Sections */
.casting-type-section {
    padding: var(--spacing-medium);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
    margin-bottom: var(--spacing-medium);
}

.casting-type-section h4 {
    color: var(--primary-color);
    font-weight: 600;
    margin-bottom: var(--spacing-medium);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--primary-color);
}

/* Spell Actions - Button Groups */
.spell-actions {
    display: flex;
    gap: var(--spacing-small);
    flex-wrap: wrap;
    margin-bottom: var(--spacing-medium);
    align-items: center;
    justify-content: flex-start;
    padding: var(--spacing-small) 0;
}

.spell-button-group {
    display: flex;
    gap: var(--spacing-small);
    flex-wrap: wrap;
    margin-bottom: var(--spacing-medium);
    align-items: center;
    justify-content: flex-start;
}

/* Pact Magic Configuration */
.pact-config {
    background-color: rgba(52, 152, 219, 0.1);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

.pact-config .form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-small);
}

/* Spell Containers */
.spell-container-wrapper {
    margin-bottom: var(--spacing-medium);
}

.spell-container-wrapper h4,
.spell-container-wrapper h5 {
    margin-bottom: var(--spacing-small);
    font-weight: 600;
    color: var(--primary-color);
}

.spell-container {
    background-color: var(--background-light);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-small);
    min-height: 60px;
    display: flex;
    flex-direction: column;
    gap: var(--spacing-small);
}

/* Spell Items */
.spell-item {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background-color: rgba(52, 152, 219, 0.1);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-small);
    margin-bottom: var(--spacing-small);
    transition: background-color var(--transition-speed);
}

.spell-item:hover {
    background-color: rgba(52, 152, 219, 0.2);
}

.spell-item:last-child {
    margin-bottom: 0;
}

.spell-info {
    display: flex;
    align-items: center;
    gap: var(--spacing-small);
    flex-grow: 1;
}

.spell-name {
    font-weight: 600;
    color: var(--text-dark);
}

.spell-school {
    font-size: var(--font-size-small);
    color: var(--text-dark);
    opacity: 0.7;
}

/* Remove Spell Button — layout sizing */
.remove-spell-btn {
    border-radius: var(--border-radius);
    padding: 0.25rem 0.5rem;
    font-size: var(--font-size-small);
    cursor: pointer;
    min-width: auto;
}

/* Empty State Message */
.empty-spell-message {
    text-align: center;
    color: var(--text-dark);
    opacity: 0.6;
    font-style: italic;
    padding: var(--spacing-medium);
    margin: 0;
}

/* Spell Grid Container for Traditional Spellcasting */
.spell-grid-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: var(--spacing-medium);
    margin-top: var(--spacing-medium);
}

.spell-grid-item {
    margin-bottom: 0; /* Override default margin since grid provides spacing */
}

/* Spell Level Containers */
.spell-level-container {
    margin-bottom: var(--spacing-medium);
}

.spell-level-container h5 {
    color: var(--primary-color);
    font-weight: 600;
    margin-bottom: var(--spacing-small);
    padding-bottom: var(--spacing-small);
    border-bottom: 1px solid var(--primary-color);
}

/* Spell Slot Groups */
.spell-slot-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: var(--spacing-small);
    margin-bottom: var(--spacing-medium);
}

.spell-slot-group label {
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 0.25rem;
}

.spell-slot-input {
    width: 100%;
    padding: var(--spacing-small);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
    text-align: center;
}

/* Dark Theme Overrides */
.dark .spellcasting-config,
.dark .casting-type-section,
.dark .pact-config,
.dark .innate-spell-group,
.dark .spell-container,
.dark .spell-item {
    background-color: var(--background-dark);
    border-color: var(--primary-color);
    color: var(--text-light);
}

.dark .spell-container-wrapper h4,
.dark .spell-container-wrapper h5,
.dark .casting-type-section h4,
.dark .innate-spell-group h5 {
    color: var(--primary-color);
}

.dark .spell-name {
    color: var(--text-light);
}

.dark .spell-school {
    color: var(--text-light);
}

.dark .empty-spell-message {
    color: var(--text-light);
}

/* Mobile Responsiveness for Spellcasting */
@media screen and (max-width: 768px) {
    .spellcasting-config .form-row,
    .pact-config .form-row {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }
    
    .spell-actions,
    .spell-button-group {
        flex-direction: column;
        align-items: stretch;
    }
    
    .casting-type-section .add-button,
    .spell-actions .add-button {
        min-width: 100%;
        margin-bottom: var(--spacing-small);
    }
    
    .spell-grid-container {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }
    
    .spell-slot-group {
        grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
    }
    
    .spell-item {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--spacing-small);
    }
    
    .spell-info {
        width: 100%;
    }
    
    .remove-spell-btn {
        align-self: flex-end;
        min-width: 80px;
    }
}

/* Print Styles for Spellcasting */
@media print {
    .spell-actions,
    .spell-button-group,
    .remove-spell-btn {
        display: none;
    }
    
    .spell-container {
        border: 1px solid #000;
        break-inside: avoid;
    }
    
    .casting-type-section {
        break-inside: avoid;
        page-break-inside: avoid;
    }
}

/* ===============================================
   STEP 4 COMPREHENSIVE STYLING OVERHAUL
   =============================================== */

/* ===== STEP 4 BUTTON OVERRIDES ===== */
/* Only overrides properties that differ from the base button styles (lines 528-591).
   Base styles already handle: background, color, border, border-radius, cursor, transition,
   text-transform, letter-spacing. We only add box-shadow and min-width here. */
.add-damage-btn,
.add-effect-btn,
.confirm-btn,
.cancel-btn,
.select-spell-btn {
    min-width: 140px;
    text-align: center;
    box-shadow: var(--btn-shadow);
}

/* ===== FORM ROW GRID SYSTEM ===== */
/* Precise alignment system for all Step 4 forms */
.form-row {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
    align-items: start;
}

.form-row.two-column {
    grid-template-columns: 1fr 1fr;
}

.form-row.three-column {
    grid-template-columns: 1fr 1fr 1fr;
}

.form-row.four-column {
    grid-template-columns: 1fr 1fr 1fr 1fr;
}

.form-row.single-column {
    grid-template-columns: 1fr;
}

/* Form Element Alignment */
.form-row > * {
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

.form-row > label {
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 0.5rem;
    text-transform: uppercase;
    font-size: 12px;
    letter-spacing: 0.5px;
}

/* Button Container Alignment */
.button-container,
.spell-actions,
.spell-button-group,
.innate-spell-actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-small);
    align-items: center;
    justify-content: flex-start;
    margin: var(--spacing-medium) 0;
    padding: var(--spacing-small);
    background: rgba(52, 152, 219, 0.05);
    border-radius: var(--border-radius);
    border: 1px solid rgba(52, 152, 219, 0.2);
}

/* ===== SPELLCASTING GRID SYSTEM ===== */
/* Comprehensive grid layout for spell slots and tables */

/* Spellcasting Configuration Grid */
.spellcasting-config {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: var(--spacing-medium);
    background-color: var(--background-light);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-large);
    margin-bottom: var(--spacing-large);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

/* Spell Slot Grid System */
.spell-slot-container,
#spell-slot-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-large);
}

.spell-level-container {
    background: rgba(52, 152, 219, 0.05);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

.spell-level-container h5 {
    color: var(--primary-color);
    font-weight: 700;
    margin-bottom: var(--spacing-small);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--primary-color);
    text-align: center;
    text-transform: uppercase;
    font-size: 14px;
    letter-spacing: 0.5px;
}

/* Spell Slot Input Grid */
.spell-slot-group {
    display: grid;
    grid-template-columns: 1fr 80px;
    gap: var(--spacing-small);
    align-items: center;
    margin-bottom: var(--spacing-small);
}

.spell-slot-group:last-child {
    margin-bottom: 0;
}

.spell-slot-group label {
    font-weight: 600;
    color: var(--text-dark);
    font-size: 13px;
    text-transform: capitalize;
}

.spell-slot-input {
    padding: var(--spacing-small);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
    text-align: center;
    font-weight: 600;
    font-size: 14px;
}

/* ===== SPELL TABLE GRID SYSTEM ===== */
/* Comprehensive spell list grid layout */

.spell-list-container,
#spell-list-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(350px, 1fr));
    gap: var(--spacing-medium);
    margin-top: var(--spacing-large);
}

.spell-container-wrapper {
    background: rgba(255, 255, 255, 0.8);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
}

.spell-container-wrapper h4,
.spell-container-wrapper h5 {
    color: var(--primary-color);
    font-weight: 700;
    margin-bottom: var(--spacing-medium);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--primary-color);
    text-align: center;
    text-transform: uppercase;
    font-size: 15px;
    letter-spacing: 0.5px;
}

/* ===== SPELL ITEM LAYOUT FIX ===== */
/* Fix overlapping spell school and remove buttons */

.spell-container {
    max-height: 300px;
    overflow-y: auto;
    padding: var(--spacing-small);
    background: rgba(52, 152, 219, 0.02);
    border-radius: var(--border-radius);
    border: 1px solid rgba(52, 152, 219, 0.2);
}

.spell-item {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--spacing-medium);
    align-items: center;
    background-color: rgba(52, 152, 219, 0.08);
    border: 1px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-small);
    transition: all var(--transition-speed);
}

.spell-item:hover {
    background-color: rgba(52, 152, 219, 0.15);
    transform: translateY(-1px);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
}

.spell-item:last-child {
    margin-bottom: 0;
}

/* Spell Info Grid - Prevents Overlapping */
.spell-info {
    display: grid;
    grid-template-columns: 1fr;
    gap: 4px;
    min-width: 0; /* Prevents grid overflow */
}

.spell-name {
    font-weight: 700;
    color: var(--text-dark);
    font-size: 15px;
    line-height: 1.2;
    margin: 0;
    word-wrap: break-word;
}

.spell-school {
    font-size: 12px;
    color: var(--text-dark);
    opacity: 0.7;
    font-style: italic;
    text-transform: capitalize;
    margin: 0;
    word-wrap: break-word;
}

/* Remove Button - Fixed Positioning */
body .remove-spell-btn {
    border-radius: var(--border-radius);
    padding: 6px 12px;
    font-size: 11px;
    cursor: pointer;
    min-width: 60px;
    text-align: center;
    white-space: nowrap;
    flex-shrink: 0;
    align-self: center;
}

/* ===== CASTING TYPE SECTIONS ===== */
/* Standardized section styling */

.casting-type-section {
    background: rgba(255, 255, 255, 0.9);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-large);
    margin-bottom: var(--spacing-large);
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}

.casting-type-section h4 {
    color: var(--primary-color);
    font-weight: 700;
    margin-bottom: var(--spacing-large);
    padding-bottom: var(--spacing-medium);
    border-bottom: 3px solid var(--primary-color);
    text-align: center;
    text-transform: uppercase;
    font-size: 18px;
    letter-spacing: 1px;
}

/* ===== INNATE SPELLCASTING LAYOUT ===== */
/* Grid system for innate spell groups */

.innate-spell-groups {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
    gap: var(--spacing-large);
    margin-top: var(--spacing-large);
}

.innate-spell-group {
    background: rgba(46, 204, 113, 0.05);
    border: 2px solid var(--mc-accent-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
}

.innate-spell-group h5 {
    color: var(--mc-accent-color);
    font-weight: 700;
    margin-bottom: var(--spacing-medium);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--mc-accent-color);
    text-align: center;
    text-transform: uppercase;
    font-size: 14px;
    letter-spacing: 0.5px;
}

.innate-spell-list {
    min-height: 60px;
    max-height: 200px;
    overflow-y: auto;
    padding: var(--spacing-small);
    background: rgba(46, 204, 113, 0.02);
    border-radius: var(--border-radius);
    border: 1px solid rgba(46, 204, 113, 0.3);
}

/* ===== PACT MAGIC LAYOUT ===== */
/* Grid system for pact magic configuration */

.pact-config {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: var(--spacing-medium);
    background: rgba(128, 90, 213, 0.05);
    border: 2px solid var(--warning-color);
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-large);
}

/* ===== EMPTY STATE STYLING ===== */
.empty-spell-message {
    text-align: center;
    color: var(--text-dark);
    opacity: 0.6;
    font-style: italic;
    font-size: 14px;
    padding: var(--spacing-large);
    margin: 0;
    background: rgba(0, 0, 0, 0.02);
    border-radius: var(--border-radius);
    border: 1px dashed rgba(52, 152, 219, 0.3);
}

/* ===== RESPONSIVE DESIGN ===== */
/* Comprehensive mobile and tablet support */

@media screen and (max-width: 1024px) {
    .spell-list-container,
    #spell-list-container {
        grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
        gap: var(--spacing-medium);
    }
    
    .innate-spell-groups {
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    }
    
    .spellcasting-config {
        grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    }
}

@media screen and (max-width: 768px) {
    /* Mobile-first button layout */
    .button-container,
    .spell-actions,
    .spell-button-group,
    .innate-spell-actions {
        flex-direction: column;
        align-items: stretch;
    }
    
    .button-container button,
    .spell-actions button,
    .spell-button-group button,
    .innate-spell-actions button {
        width: 100%;
        min-width: 100%;
        margin-bottom: var(--spacing-small);
    }
    
    /* Mobile form rows */
    .form-row,
    .form-row.two-column,
    .form-row.three-column,
    .form-row.four-column {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }
    
    /* Mobile spellcasting grids */
    .spellcasting-config,
    .pact-config {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
        padding: var(--spacing-medium);
    }
    
    .spell-slot-container,
    #spell-slot-container {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }
    
    .spell-list-container,
    #spell-list-container {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }
    
    .innate-spell-groups {
        grid-template-columns: 1fr;
        gap: var(--spacing-medium);
    }
    
    /* Mobile spell items */
    .spell-item {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
        text-align: left;
    }
    
    .spell-info {
        margin-bottom: var(--spacing-small);
    }
    
    body .remove-spell-btn {
        align-self: flex-end;
        min-width: 80px;
    }

    /* Mobile section headers */
    .casting-type-section h4 {
        font-size: 16px;
    }

    .spell-container-wrapper h4,
    .spell-container-wrapper h5 {
        font-size: 14px;
    }
}

@media screen and (max-width: 480px) {
    /* Extra small screens */
    .casting-type-section,
    .spellcasting-config {
        padding: var(--spacing-medium);
    }

    .spell-container-wrapper {
        padding: var(--spacing-small);
    }

    .spell-item {
        padding: var(--spacing-small);
    }

    button,
    .add-button {
        padding: 10px 16px;
        font-size: 12px;
        min-width: 120px;
    }

    body .remove-spell-btn {
        padding: 4px 8px;
        font-size: 10px;
        min-width: 50px;
    }
}

/* ===== DARK THEME OVERRIDES ===== */
.dark .spellcasting-config,
.dark .casting-type-section,
.dark .pact-config,
.dark .innate-spell-group,
.dark .spell-container-wrapper,
.dark .spell-level-container,
.dark .spell-container,
.dark .spell-item {
    background-color: var(--background-dark);
    border-color: var(--primary-color);
    color: var(--text-light);
}

.dark .spell-container-wrapper h4,
.dark .spell-container-wrapper h5,
.dark .casting-type-section h4,
.dark .innate-spell-group h5,
.dark .spell-level-container h5 {
    color: var(--primary-color);
    border-bottom-color: var(--primary-color);
}

.dark .spell-name {
    color: var(--text-light);
}

.dark .spell-school {
    color: var(--text-light);
}

.dark .empty-spell-message {
    color: var(--text-light);
}

.dark .button-container,
.dark .spell-actions,
.dark .spell-button-group,
.dark .innate-spell-actions {
    background: rgba(52, 152, 219, 0.1);
    border-color: rgba(52, 152, 219, 0.3);
}

/* ===== PRINT OPTIMIZATION ===== */
@media print {
    .button-container,
    .spell-actions,
    .spell-button-group,
    .innate-spell-actions,
    .remove-spell-btn,
    button {
        display: none !important;
    }
    
    .spell-container,
    .spell-item,
    .casting-type-section {
        border: 1px solid #000 !important;
        break-inside: avoid;
        background: white !important;
    }
    
    .spell-item {
        margin-bottom: 2px !important;
        padding: 4px !important;
    }
}

/* ===== ACCESSIBILITY IMPROVEMENTS ===== */
button:focus-visible,
.add-button:focus-visible,
.remove-spell-btn:focus-visible {
    outline: 3px solid var(--primary-color);
    outline-offset: 2px;
}

.spell-item:focus-within {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
}

/* High contrast mode support */
@media (forced-colors: active) {
    .spell-item,
    .casting-type-section,
    .spellcasting-config {
        border: 2px solid ButtonText;
    }
    
    button,
    .add-button {
        border: 1px solid ButtonText;
    }
}

/* ===== PERFORMANCE OPTIMIZATIONS ===== */
.spell-container {
    contain: layout;
    will-change: scroll-position;
}

.spell-item {
    contain: layout style;
}

/* Reduce motion for users who prefer it */
/* Note: prefers-reduced-motion is handled globally by the * selector above */

/* ===============================================
   COMPREHENSIVE STEP 4 SPELL SLOT FIXES
   =============================================== */

/* Enhanced Spell Slot Input Styling */
.spell-slot-input {
    width: 100%;
    padding: var(--spacing-small);
    border: 2px solid var(--primary-color);
    border-radius: var(--border-radius);
    background-color: var(--background-light);
    color: var(--text-dark);
    text-align: center;
    font-weight: 600;
    font-size: 1rem;
    min-height: 44px;
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.1);
    transition: all 0.2s ease;
}

.spell-slot-input:focus {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 3px rgba(45, 55, 72, 0.1);
    outline: none;
}

/* Enhanced Spell Slot Group Labels */
.spell-slot-group label {
    font-weight: 600;
    color: var(--text-dark);
    margin-bottom: 0.5rem;
    font-size: 0.9rem;
    display: block;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Fix text overlapping issues with better spacing */
.spell-slot-group {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: var(--spacing-medium);
    margin-bottom: var(--spacing-large);
    padding: var(--spacing-small);
}

/* ===== DARK MODE SPELL SLOT FIXES ===== */
.dark .spell-slot-input {
    background-color: var(--background-dark);
    color: var(--text-light);
    border-color: rgba(255, 255, 255, 0.1);
    box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
}

.dark .spell-slot-input:focus {
    border-color: var(--primary-color-light, #8ba3e0);
    box-shadow: 0 0 0 3px rgba(99, 179, 237, 0.2);
    background-color: var(--background-dark);
    color: var(--text-light);
}

.dark .spell-slot-group label {
    color: var(--text-light);
    opacity: 0.9;
}

/* ===== SPELL LEVEL CONTAINER IMPROVEMENTS ===== */
.spell-level-container {
    margin-bottom: var(--spacing-large);
    padding: var(--spacing-medium);
    border: 1px solid var(--border-color);
    border-radius: var(--border-radius);
    background-color: rgba(255, 255, 255, 0.5);
}

.dark .spell-level-container {
    background-color: rgba(45, 55, 72, 0.3);
    border-color: rgba(255, 255, 255, 0.1);
}

.spell-level-container h5 {
    color: var(--primary-color);
    font-weight: 600;
    margin-bottom: var(--spacing-medium);
    padding-bottom: var(--spacing-small);
    border-bottom: 2px solid var(--primary-color);
    font-size: 1.1rem;
}

.dark .spell-level-container h5 {
    color: var(--primary-color-light, #8ba3e0);
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

/* ===== CHECKBOX LABEL IMPROVEMENTS ===== */
.checkbox-label {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    color: var(--text-dark);
    cursor: pointer;
    padding: 0.5rem 0;
    font-size: 1rem;
}

.dark .checkbox-label {
    color: var(--text-light);
}

.checkbox-label input[type="checkbox"] {
    width: 18px;
    height: 18px;
    cursor: pointer;
}

/* ===== INNATE SPELL MODAL IMPROVEMENTS ===== */
.usage-options {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: var(--spacing-medium);
    margin: var(--spacing-medium) 0;
}

.usage-btn {
    background: var(--primary-color);
    color: white;
    border: none;
    border-radius: var(--border-radius);
    padding: var(--spacing-medium);
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s ease;
    font-size: 1rem;
}

.usage-btn:hover {
    background: var(--mc-accent-color);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}

/* ===== MOBILE RESPONSIVENESS IMPROVEMENTS ===== */
@media screen and (max-width: 768px) {
    .spell-slot-group {
        grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
        gap: var(--spacing-small);
        margin-bottom: var(--spacing-medium);
    }
    
    .usage-options {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }
    
    .checkbox-label {
        font-size: 0.9rem;
        padding: 0.75rem 0;
    }
}

@media screen and (max-width: 480px) {
    .spell-slot-group {
        grid-template-columns: 1fr 1fr;
        gap: var(--spacing-small);
    }
    
    .spell-slot-input {
        font-size: 0.9rem;
        min-height: 36px;
    }
}

/* ===== CONSOLE OVERLAP FIXES ===== */
@media screen and (max-height: 600px) {
    .spell-level-container {
        margin-bottom: var(--spacing-medium);
        padding: var(--spacing-small);
    }
    
    .spell-slot-group {
        margin-bottom: var(--spacing-medium);
    }
}

/* ===== D&D RULES TOGGLE SYSTEM ===== */
.sticky-rules-toggle {
    position: fixed;
    top: 148px; /* Fallback: JS overrides with actual header height */
    left: 0;
    right: 0;
    z-index: calc(var(--z-modal) - 1); /* Below modal but above other content */
    background: linear-gradient(135deg, rgba(74, 105, 189, 0.92) 0%, rgba(118, 75, 162, 0.92) 100%);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    padding: 0.6rem 1.5rem;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
    border-bottom: 3px solid #5a67d8;
    width: 100%;
    overflow: hidden;
    box-sizing: border-box;
}

/* Dark mode styles for rules toggle */
html.dark .sticky-rules-toggle {
    background: linear-gradient(135deg, rgba(74, 91, 181, 0.88) 0%, rgba(90, 61, 122, 0.88) 100%);
    border-bottom-color: #3d4a9f;
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
}

.rules-toggle-wrapper {
    max-width: 1200px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

/* Title integrated into the toggle bar */
.monster-creator-title {
    font-family: 'MedievalSharp', Georgia, 'Times New Roman', serif;
    font-size: 1.55rem;
    font-weight: 700;
    color: white;
    margin: 0;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4), 0 2px 4px rgba(0, 0, 0, 0.25);
    white-space: nowrap;
    letter-spacing: 1px;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
html.dark .monster-creator-title {
    color: #f0e6d3;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.6), 0 2px 6px rgba(0, 0, 0, 0.4);
}

/* Group the edition controls on the right */
.rules-toggle-controls {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.rules-toggle-label {
    font-weight: 600;
    color: white;
    font-size: 1rem;
    margin: 0;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
}

html.dark .rules-toggle-label {
    color: #e0e0e0;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
}

.toggle-switch-wrapper {
    display: flex;
    background: rgba(255, 255, 255, 0.15);
    border-radius: 20px;
    padding: 4px;
    gap: 2px;
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15);
}

html.dark .toggle-switch-wrapper {
    background: rgba(0, 0, 0, 0.5);
    box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.1);
}

.rules-button {
    padding: 0.45rem 1.4rem;
    border: none;
    background: transparent;
    color: rgba(255, 255, 255, 0.75);
    font-weight: 600;
    font-size: 0.85rem;
    cursor: pointer;
    transition: all 0.3s ease;
    border-radius: 50px;
    white-space: nowrap;
}

.rules-button:hover {
    color: white;
    background: rgba(255, 255, 255, 0.1);
}

/* Light mode: White text on translucent background */
html:not(.dark) .rules-button {
    background: rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.85);
}

html:not(.dark) .rules-button:hover {
    background: rgba(255, 255, 255, 0.2);
    color: white;
}

html.dark .rules-button {
    background: rgba(0, 0, 0, 0.25);
    color: rgba(255, 255, 255, 0.5);
}

html.dark .rules-button:hover {
    background: rgba(255, 255, 255, 0.1);
    color: rgba(255, 255, 255, 0.8);
}

.rules-button.active {
    background: white;
    color: var(--primary-color);
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    font-weight: 700;
}

/* Light mode: Colored background with white text when active */
html:not(.dark) .rules-button.active {
    background: var(--primary-color);
    color: #ffffff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}

html.dark .rules-button.active {
    background: linear-gradient(135deg, var(--primary-color) 0%, #764ba2 100%);
    color: white;
    box-shadow: 0 2px 10px rgba(102, 126, 234, 0.5), 0 1px 3px rgba(0, 0, 0, 0.2);
    font-weight: 700;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}

html.dark .rules-button:not(.active) {
    background: rgba(0, 0, 0, 0.3);
    color: rgba(255, 255, 255, 0.5);
}

.rules-indicator {
    color: white;
    font-size: 0.8rem;
    display: none; /* Hidden by default — active button already shows edition */
    align-items: center;
    gap: 0.3rem;
    white-space: nowrap;
    opacity: 0.85;
}
@media (min-width: 1200px) {
    .rules-indicator {
        display: flex;
    }
}

html.dark .rules-indicator {
    color: #e0e0e0;
}

.rules-indicator strong {
    color: #ffd700;
    font-weight: 700;
    font-size: 0.9rem;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.3);
}

html.dark .rules-indicator strong {
    color: #ffed4e;
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}

/* ===== CR BALANCE TOGGLE IN EDITION BAR ===== */
.cr-balance-divider {
    width: 1px;
    height: 24px;
    background: rgba(255, 255, 255, 0.3);
    margin: 0 4px;
}
html.dark .cr-balance-divider {
    background: rgba(255, 255, 255, 0.2);
}
.cr-balance-toggle {
    display: flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
    user-select: none;
    white-space: nowrap;
}
.cr-balance-toggle input[type="checkbox"] {
    display: none;
}
.cr-balance-slider {
    position: relative;
    width: 32px;
    height: 18px;
    background: rgba(255, 255, 255, 0.25);
    border-radius: 9px;
    transition: background 0.2s;
    flex-shrink: 0;
}
.cr-balance-slider::after {
    content: '';
    position: absolute;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: #fff;
    top: 2px;
    left: 2px;
    transition: transform 0.2s;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.cr-balance-toggle input:checked + .cr-balance-slider {
    background: rgba(72, 187, 120, 0.85);
}
.cr-balance-toggle input:checked + .cr-balance-slider::after {
    transform: translateX(14px);
}
html.dark .cr-balance-slider {
    background: rgba(255, 255, 255, 0.15);
}
html.dark .cr-balance-toggle input:checked + .cr-balance-slider {
    background: rgba(72, 187, 120, 0.7);
}
.cr-balance-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.85);
    letter-spacing: 0.3px;
}
html.dark .cr-balance-label {
    color: rgba(224, 224, 224, 0.85);
}
/* Gear icon — edition bar settings trigger */
.cr-options-btn {
    all: unset;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: rgba(255, 255, 255, 0.7);
    font-size: 1.15rem;
    cursor: pointer;
    padding: 4px 6px;
    margin-left: 6px;
    line-height: 1;
    border-radius: 4px;
    transition: color 0.15s, background 0.15s;
    min-width: 0;
    min-height: 0;
    box-sizing: border-box;
    position: relative;
}
.cr-options-btn:hover {
    color: #fff;
    background: rgba(255, 255, 255, 0.15);
}
html.dark .cr-options-btn {
    color: rgba(224, 224, 224, 0.6);
}
html.dark .cr-options-btn:hover {
    color: rgba(224, 224, 224, 0.95);
    background: rgba(255, 255, 255, 0.12);
}
/* Settings popup — fixed-position dropdown anchored to gear button via JS */
.cr-options-popup {
    display: none;
    position: fixed;
    z-index: 10000;
    min-width: 280px;
    padding: 14px 16px;
    background: var(--background-dark, #1a202c);
    border: 1px solid rgba(255,255,255,0.15);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.4);
    color: var(--text-light, #f7fafc);
    font-size: 0.85rem;
    font-weight: normal;
    text-transform: none;
    letter-spacing: 0;
}
.cr-options-popup.open {
    display: block;
}
html:not(.dark) .cr-options-popup {
    background: #fff;
    border: 1px solid rgba(0,0,0,0.12);
    box-shadow: 0 8px 24px rgba(0,0,0,0.15);
    color: #2d3748;
}
.cr-options-popup-title {
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid rgba(255,255,255,0.1);
}
html:not(.dark) .cr-options-popup-title {
    border-bottom-color: rgba(0,0,0,0.08);
}
.cr-options-popup .cr-settings-row {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    align-items: center;
    margin-bottom: 10px;
}
.cr-options-popup .cr-settings-row:last-child {
    margin-bottom: 0;
}
.cr-options-popup .cr-settings-label {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    cursor: pointer;
    font-weight: normal;
    white-space: nowrap;
}
.cr-options-popup .cr-settings-label input[type="checkbox"],
.cr-options-popup .cr-settings-label input[type="radio"] {
    margin: 0;
    cursor: pointer;
}
.cr-options-popup .cr-settings-label-text {
    font-weight: 600;
    margin-right: 4px;
}

/* Default: 2024-only elements hidden until rules toggle activates them */
.rules-2024-only {
    display: none;
}

/* 2024-specific fields visibility */
body[data-rules-edition="2014"] .rules-2024-only {
    display: none !important;
}

body[data-rules-edition="2024"] .rules-2024-only:not(.tab-content) {
    display: block;
}
body[data-rules-edition="2024"] .tab-content.rules-2024-only.active {
    display: block;
}
body[data-rules-edition="2024"] button.rules-2024-only {
    display: inline-block;
}

body[data-rules-edition="2024"] .rules-2014-only {
    display: none !important;
}

body[data-rules-edition="2014"] .rules-2014-only {
    display: block;
}

/* Mobile responsive rules toggle */
@media screen and (max-width: 768px) {
    .sticky-rules-toggle {
        padding: 0.75rem 1rem;
    }
    
    .rules-toggle-wrapper {
        gap: 1rem;
    }
    
    .rules-toggle-label {
        font-size: 0.9rem;
    }
    
    .rules-button {
        padding: 0.4rem 1rem;
        font-size: 0.85rem;
    }
    
    .rules-indicator {
        font-size: 0.85rem;
    }
    
    .rules-indicator strong {
        font-size: 0.9rem;
    }
    .cr-balance-label {
        font-size: 0.72rem;
    }
}

@media screen and (max-width: 480px) {
    .rules-toggle-wrapper {
        flex-direction: column;
        gap: 0.75rem;
    }

    .toggle-switch-wrapper {
        width: 100%;
        justify-content: center;
    }

    .rules-button {
        flex: 1;
        text-align: center;
    }

    .rules-toggle-label {
        display: none;
    }

    .sticky-rules-toggle {
        padding: 5px 10px;
    }
    .cr-balance-divider {
        display: none;
    }
    .cr-balance-toggle {
        align-self: center;
    }
}

/* ===== STEP 5 DRAG AND DROP ENHANCEMENTS ===== */
.drag-handle {
    cursor: move;
    cursor: grab;
    padding: 0.5rem;
    margin-right: 0.5rem;
    font-size: 1.2rem;
    color: #7f8c8d;
    user-select: none;
    transition: color 0.2s ease, transform 0.2s ease;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.drag-handle:hover {
    color: #3498db;
    transform: scale(1.1);
}

.drag-handle:active {
    cursor: grabbing;
    color: #2980b9;
}

.drag-placeholder {
    background: linear-gradient(135deg, #e8f4f8 0%, #d4e9f7 100%);
    border: 2px dashed #3498db;
    border-radius: 8px;
    margin: 0.5rem 0;
    padding: 1rem;
    min-height: 60px;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0.7;
    transition: all 0.3s ease;
    animation: pulse 1.5s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% {
        opacity: 0.7;
        transform: scale(1);
    }
    50% {
        opacity: 0.9;
        transform: scale(1.02);
    }
}

.placeholder-text {
    color: #3498db;
    font-weight: 600;
    font-size: 0.9rem;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.drag-source {
    opacity: 0.3;
    pointer-events: none;
}

.dragging {
    opacity: 0.8;
    background-color: white;
    border: 2px solid #3498db;
    box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
    transform: rotate(2deg);
    cursor: grabbing;
}

/* Make items focusable for keyboard accessibility */
.legendary-action,
.lair-action,
.regional-effect {
    position: relative;
    outline: none;
    transition: box-shadow 0.2s ease;
}

.legendary-action:focus,
.lair-action:focus,
.regional-effect:focus {
    box-shadow: 0 0 0 3px rgba(52, 152, 219, 0.5);
}

.legendary-action:focus-visible,
.lair-action:focus-visible,
.regional-effect:focus-visible {
    outline: 2px solid var(--mc-accent-color, #3498db);
    outline-offset: 2px;
}

/* Touch-friendly drag handles for mobile */
@media (max-width: 768px) {
    .drag-handle {
        font-size: 1.5rem;
        padding: 0.75rem;
        min-width: 44px;
        min-height: 44px;
    }
    
    .drag-placeholder {
        min-height: 80px;
        border-width: 3px;
    }
}

/* Keyboard reordering hint */
.legendary-action:focus::after,
.lair-action:focus::after,
.regional-effect:focus::after {
    content: 'Alt + ↑/↓ to reorder';
    position: absolute;
    top: -25px;
    right: 10px;
    background: #2c3e50;
    color: white;
    padding: 4px 8px;
    border-radius: var(--border-radius);
    font-size: 0.75rem;
    pointer-events: none;
    white-space: nowrap;
    opacity: 0.9;
    z-index: var(--z-modal);
}

/* ===== STEP 5 IN-APP HELP SYSTEM ===== */
.help-icon {
    display: inline-block;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #3498db;
    color: white;
    text-align: center;
    line-height: 18px;
    font-size: 12px;
    font-weight: bold;
    cursor: help;
    margin-left: 4px;
    transition: all 0.2s ease;
    vertical-align: middle;
}

.help-icon:hover {
    background: #2980b9;
    transform: scale(1.1);
}

.help-text {
    display: block;
    color: #7f8c8d;
    font-size: 0.9rem;
    font-style: italic;
    margin: 0.5rem 0;
    padding: 0.5rem;
    background: #ecf0f1;
    border-left: 3px solid #3498db;
    border-radius: 3px;
}

.help-text strong {
    color: #2c3e50;
    font-style: normal;
}

/* Enhanced tooltips for help icons */
h2 .help-icon, h3 .help-icon {
    font-size: 14px;
    width: 20px;
    height: 20px;
    line-height: 20px;
}

/* ===== STEP 5 VALIDATION SYSTEM ===== */
.validation-error {
    border-color: #e74c3c !important;
    border-width: 2px !important;
    background-color: #fee !important;
    animation: shake 0.3s ease-in-out;
}

.validation-warning {
    border-color: #f39c12 !important;
    border-width: 2px !important;
    background-color: #fffbf0 !important;
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}

.validation-tooltip {
    position: absolute;
    bottom: 100%;
    left: 0;
    background: #e74c3c;
    color: white;
    padding: 6px 10px;
    border-radius: var(--border-radius);
    font-size: 0.75rem;
    white-space: nowrap;
    margin-bottom: 5px;
    z-index: var(--z-modal);
    pointer-events: none;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
    animation: tooltipFadeIn 0.3s ease-out;
}

.validation-tooltip::after {
    content: '';
    position: absolute;
    top: 100%;
    left: 10px;
    border: 5px solid transparent;
    border-top-color: #e74c3c;
}

.validation-tooltip-warning {
    background: #f39c12;
}

.validation-tooltip-warning::after {
    border-top-color: #f39c12;
}

@keyframes tooltipFadeIn {
    from {
        opacity: 0;
        transform: translateY(-5px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Success feedback */
input:valid:not(:placeholder-shown),
textarea:valid:not(:placeholder-shown) {
    border-color: #2ecc71;
}

/* Focus states with validation — boosted specificity to override dark mode focus rules */
body input.validation-error:focus,
body select.validation-error:focus,
body textarea.validation-error:focus {
    border-color: #c0392b;
    box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.2);
}

body input.validation-warning:focus,
body select.validation-warning:focus,
body textarea.validation-warning:focus {
    border-color: #d35400;
    box-shadow: 0 0 0 3px rgba(243, 156, 18, 0.2);
}

/* ===== STEP 5 MODAL SYSTEM ===== */
#step5-modal-container {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: var(--z-toast);
    display: none;
}

.step5-modal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.7);
    z-index: calc(var(--z-toast) + 1);
}

.step5-modal {
    position: fixed;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 90%;
    max-width: 900px;
    max-height: 90vh;
    background: white;
    border-radius: 12px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
    z-index: calc(var(--z-toast) + 2);
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.step5-modal-header {
    padding: 1.5rem 2rem;
    background: linear-gradient(135deg, var(--primary-color) 0%, var(--secondary-color, #764ba2) 100%);
    color: white;
    display: flex;
    justify-content: space-between;
    align-items: center;
    border-bottom: 3px solid var(--primary-color-light, #5a67d8);
}

.step5-modal-header h2 {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: white;
}

.step5-modal-close {
    background: none;
    border: none;
    color: white;
    font-size: 2rem;
    line-height: 1;
    cursor: pointer;
    padding: 0;
    width: 44px;
    height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: var(--border-radius);
    transition: background 0.2s;
}

.step5-modal-close:hover {
    background: rgba(255, 255, 255, 0.2);
}

.step5-modal-body {
    flex: 1;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.step5-modal-tabs {
    display: flex;
    border-bottom: 2px solid rgba(0, 0, 0, 0.1);
    background: var(--card-bg, #f7fafc);
}

.step5-modal-tab {
    flex: 1;
    padding: 1rem;
    border: none;
    background: none;
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-secondary, #64748b);
    cursor: pointer;
    transition: all 0.3s;
    border-bottom: 3px solid transparent;
}

/* Light mode: Black text by default, white when active */
html:not(.dark) .step5-modal-tabs {
    background: var(--card-bg, #f7fafc);
    border-bottom-color: rgba(0, 0, 0, 0.1);
}

html:not(.dark) .step5-modal-tab {
    color: var(--text-dark, #000000);
    background: var(--card-bg, #f7fafc);
}

html:not(.dark) .step5-modal-tab:hover {
    background: rgba(0, 0, 0, 0.04);
    color: var(--text-dark, #000000);
}

html:not(.dark) .step5-modal-tab.active {
    color: #ffffff;
    border-bottom-color: var(--primary-color);
    background: var(--primary-color);
}

.step5-modal-tab:hover {
    background: rgba(0, 0, 0, 0.04);
    color: var(--text-dark, #475569);
}

.step5-modal-tab.active {
    color: var(--primary-color);
    border-bottom-color: var(--primary-color);
    background: var(--card-bg, white);
}

.step5-modal-content {
    flex: 1;
    overflow-y: auto;
    padding: 1.5rem;
}

.step5-modal-tab-content {
    display: none;
}

.step5-modal-tab-content.active {
    display: block;
}

/* Template Search - Search box on its own line, full width */
.template-search {
    margin-bottom: 1rem;
}

.template-search-input {
    width: 100%;
    display: block;
    padding: 0.875rem 1rem;
    border: 2px solid #e2e8f0;
    border-radius: 8px;
    font-size: 1rem;
    transition: border-color 0.2s;
    box-sizing: border-box;
}

.template-search-input:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
}

/* Template Filter - Dropdown on its own line, full width */
.template-filter {
    margin-bottom: 1.5rem;
}

.template-category-filter {
    width: 100%;
    display: block;
    padding: 0.875rem 1rem;
    border: 2px solid #e2e8f0;
    border-radius: 8px;
    font-size: 1rem;
    cursor: pointer;
    background: white;
    box-sizing: border-box;
    transition: border-color 0.2s;
}

.template-category-filter:focus {
    outline: none;
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);
}

/* Template List */
.template-list {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 1rem;
}

.template-card {
    border: 2px solid #e2e8f0;
    border-radius: 8px;
    padding: 1rem;
    transition: all 0.3s;
    background: white;
    display: flex;
    flex-direction: column;
}

.template-card:hover {
    border-color: var(--primary-color);
    box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
    transform: translateY(-2px);
}

.template-card-header {
    display: flex;
    justify-content: space-between;
    align-items: start;
    margin-bottom: 0.75rem;
}

.template-card-title {
    margin: 0;
    font-size: 1.1rem;
    font-weight: 600;
    color: #1e293b;
    flex: 1;
}

.template-card-category {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
    background: #e0e7ff;
    color: var(--primary-color);
    border-radius: var(--border-radius);
    text-transform: capitalize;
    font-weight: 600;
    margin-left: 0.5rem;
}

.template-card-description {
    font-size: 0.9rem;
    color: #64748b;
    line-height: 1.5;
    margin-bottom: 0.75rem;
    flex: 1;
}

.template-card-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.template-tag {
    font-size: 0.75rem;
    padding: 0.25rem 0.5rem;
    background: #f1f5f9;
    color: #475569;
    border-radius: var(--border-radius);
    font-weight: 500;
}

.template-card-button {
    width: 100%;
    padding: 0.75rem;
    background: var(--primary-color);
    color: white;
    border: none;
    border-radius: 6px;
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}

.template-card-button:hover {
    background: #5568d3;
    transform: translateY(-1px);
    box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
}

/* Custom Form Container */
.custom-form-container {
    background: #f7fafc;
    border-radius: 8px;
    padding: 1.5rem;
}

.custom-form-container .legendary-action,
.custom-form-container .lair-action,
.custom-form-container .regional-effect {
    background: white;
    border-radius: 8px;
    padding: 1.5rem;
}

/* Modal Action Type Selector - Visibility improvements */
body .modal-action-type-selector {
    background: #f5f5f5;
    border: 2px solid var(--primary-color);
}

body .modal-action-type-selector label {
    color: var(--primary-color);
    font-weight: 600;
}

body .modal-action-type-selector select {
    background: white;
    color: #333;
    border: 2px solid var(--primary-color);
}

html.dark .modal-action-type-selector {
    background: var(--background-dark);
    border-color: var(--primary-color);
}

html.dark .modal-action-type-selector label {
    color: var(--primary-color-light, #8ba3e0);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

html.dark .modal-action-type-selector select {
    background: var(--card-bg, #374151);
    color: var(--text-dark);
    border-color: var(--primary-color);
}

/* Dark Mode: Template Search and Filter */
html.dark .template-search-input {
    background: var(--card-bg, #374151);
    color: var(--text-dark);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark .template-search-input:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.2);
}

html.dark .template-search-input::placeholder {
    color: var(--text-secondary, #a0aec0);
}

html.dark .template-category-filter {
    background: var(--card-bg, #374151);
    color: var(--text-dark);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark .template-category-filter:focus {
    border-color: var(--primary-color);
    box-shadow: 0 0 0 3px rgba(66, 153, 225, 0.2);
}

html.dark .template-category-filter option {
    background: var(--card-bg, #374151);
    color: var(--text-dark);
}

/* Modal Footer */
.step5-modal-footer {
    padding: 1rem 2rem;
    background: var(--card-bg, #f7fafc);
    border-top: 2px solid rgba(0, 0, 0, 0.1);
    display: flex;
    justify-content: flex-end;
    gap: 1rem;
}

.step5-modal-button {
    padding: 0.75rem 2rem;
    border: none;
    border-radius: 6px;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.2s;
}

.step5-modal-button.secondary {
    background: rgba(0, 0, 0, 0.08);
    color: var(--text-dark, #475569);
}

.step5-modal-button.secondary:hover {
    background: rgba(0, 0, 0, 0.12);
}

.step5-modal-button.primary {
    background: var(--primary-color);
    color: white;
}

.step5-modal-button.primary:hover {
    background: var(--primary-color-light, #5568d3);
    box-shadow: 0 4px 12px var(--accent-glow, rgba(102, 126, 234, 0.3));
}

/* Mobile Responsiveness for Modals */
@media screen and (max-width: 768px) {
    .step5-modal {
        width: 95%;
        max-height: 95vh;
    }
    
    .step5-modal-header {
        padding: 1rem 1.5rem;
    }
    
    .step5-modal-header h2 {
        font-size: 1.25rem;
    }
    
    .template-list {
        grid-template-columns: 1fr;
    }
    
    /* Template search already stacks vertically, no changes needed */
    
    .step5-modal-footer {
        padding: 1rem;
    }
    
    .step5-modal-button {
        padding: 0.75rem 1.5rem;
        font-size: 0.95rem;
    }
}

@media screen and (max-width: 480px) {
    .step5-modal-content {
        padding: 1rem;
    }
    
    .custom-form-container {
        padding: 1rem;
    }
}

/* ===== EXPERTISE TOGGLE BUTTON ===== */
.expertise-toggle {
    border: 1px solid #999;
    border-radius: 3px;
    background: #eee;
    color: #555;
    font-weight: 600;
}
.expertise-toggle.active {
    background: #4a90d9;
    color: #fff;
    border-color: #4a90d9;
}

/* ===== COMPREHENSIVE DARK MODE SUPPORT ===== */
html.dark,
body.dark,
[data-theme="dark"] {
    /* Dark mode color overrides */
    --background-light: #1a202c;
    --background-dark: #2d3748;
    --text-light: #f7fafc;
    --text-dark: #e2e8f0;
    --primary-color: #4299e1;
    --primary-color-hover: #3182ce;
    --mc-accent-color: #48bb78;
    --mc-accent-color-hover: #38a169;
    --danger-color: #f56565;
    --danger-color-hover: #e53e3e;
    --success-color: #48bb78;
    --success-color-hover: #38a169;
    --warning-color: #ed8936;
    --warning-color-hover: #dd6b20;
}

html.dark body,
body.dark,
[data-theme="dark"] body {
    background-color: var(--background-light);
    color: var(--text-dark);
}

/* Dark Mode: General Elements */
html.dark .step,
html.dark .step-content {
    background-color: var(--background-dark);
    color: var(--text-dark);
}

html.dark .step:not(#header-placeholder .step):not(#footer-placeholder .step) {
    border: var(--card-border);
}

html.dark h1,
html.dark h2,
html.dark h3,
html.dark h4,
html.dark h5,
html.dark h6 {
    color: var(--primary-color-light, #8ba3e0);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}

/* Step 5 specific heading visibility improvements */
#step5 h2,
#step5 h3,
#step5 h4 {
    color: var(--primary-color);
    font-weight: 600;
}

html.dark #step5 h2,
html.dark #step5 h3,
html.dark #step5 h4 {
    color: var(--primary-color-light, #8ba3e0);
    text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);
}

/* Form section headings */
.form-section h4 {
    color: var(--primary-color);
    font-weight: 600;
    margin-top: 1rem;
    margin-bottom: 0.5rem;
}

html.dark .form-section h4 {
    color: var(--primary-color-light, #8ba3e0);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

/* Save/Condition checkbox toggle headers */
.toggle-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    user-select: none;
}

.toggle-header h4 {
    margin: 0;
    display: inline;
}

.toggle-header input[type="checkbox"] {
    width: 16px;
    height: 16px;
    accent-color: var(--primary-color);
    cursor: pointer;
}

.save-section-toggle,
.condition-section-toggle {
    border-top: 1px solid rgba(var(--primary-color-rgb), 0.15);
    padding-top: 0.75rem;
    margin-top: 0.5rem;
}

html.dark .save-section-toggle,
html.dark .condition-section-toggle {
    border-top-color: rgba(255, 255, 255, 0.1);
}

.save-fields-container,
.condition-fields-container {
    margin-top: 0.5rem;
    padding-left: 1.5rem;
}

/* Dark Mode: Expertise toggle */
html.dark .expertise-toggle {
    background: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
    border-color: rgba(255, 255, 255, 0.15);
}
html.dark .expertise-toggle.active {
    background: #4a90d9;
    color: #fff;
    border-color: #4a90d9;
}

/* Light mode: Ensure all text is visible */
html:not(.dark) .legendary-action,
html:not(.dark) .lair-action,
html:not(.dark) .regional-effect,
html:not(.dark) .form-section,
html:not(.dark) .legendary-action-body,
html:not(.dark) .lair-action-body,
html:not(.dark) .regional-effect-body {
    color: #333;
}

html:not(.dark) .legendary-action label,
html:not(.dark) .lair-action label,
html:not(.dark) .regional-effect label,
html:not(.dark) .form-section label {
    color: #333;
}

html:not(.dark) .legendary-action input[type="text"],
html:not(.dark) .legendary-action textarea,
html:not(.dark) .legendary-action select,
html:not(.dark) .lair-action input[type="text"],
html:not(.dark) .lair-action textarea,
html:not(.dark) .lair-action select,
html:not(.dark) .regional-effect input[type="text"],
html:not(.dark) .regional-effect textarea,
html:not(.dark) .regional-effect select {
    background-color: #fff;
    color: #333;
    border-color: var(--primary-color);
}

/* Dark Mode: Forms and Inputs */
html.dark input[type="text"],
html.dark input[type="number"],
html.dark input[type="email"],
html.dark input[type="password"],
html.dark textarea,
html.dark select {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
}

html.dark input[type="text"]:focus,
html.dark input[type="number"]:focus,
html.dark input[type="email"]:focus,
html.dark input[type="password"]:focus,
html.dark textarea:focus,
html.dark select:focus,
html.dark .form-control:focus {
    border-color: var(--mc-accent-color);
    box-shadow: 0 0 8px rgba(72, 187, 120, 0.4);
    background-color: var(--background-dark);
}

html.dark input::placeholder,
html.dark textarea::placeholder {
    color: var(--text-secondary, #a0aec0);
}

/* Dark Mode: Cards and Containers */
html.dark .card,
html.dark .attack-action,
html.dark .trait,
html.dark .bonus-action,
html.dark .reaction,
html.dark .legendary-action,
html.dark .lair-action,
html.dark .regional-effect {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
}

html.dark .card-header {
    background-color: var(--card-bg, #374151);
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

html.dark .card-body {
    background-color: var(--background-dark);
}

/* Dark Mode: Buttons - PRIMARY STYLES (excludes header/footer nav buttons) */
html.dark .step .btn:not(.btn-danger),
html.dark .monster-controls .btn:not(.btn-danger),
html.dark #progress-container .btn:not(.btn-danger),
html.dark .add-button,
html.dark .action-btn,
html.dark .step button:not(.remove-button):not(.btn-danger):not(.delete-btn):not(.remove-spell-btn):not(.remove-damage-btn):not(.remove-section-btn):not(.remove-timeline-entry):not(.remove-variant-btn):not(.remove-image-btn):not(.remove-scaling),
html.dark .monster-controls button:not(.remove-button):not(.btn-danger):not(.delete-btn):not(.remove-spell-btn):not(.remove-damage-btn):not(.remove-section-btn):not(.remove-timeline-entry):not(.remove-variant-btn):not(.remove-image-btn):not(.remove-scaling),
html.dark #progress-container button:not(.remove-button):not(.btn-danger):not(.delete-btn):not(.remove-spell-btn):not(.remove-damage-btn):not(.remove-section-btn):not(.remove-timeline-entry):not(.remove-variant-btn):not(.remove-image-btn):not(.remove-scaling) {
    background-color: var(--primary-color);
    color: #ffffff;
    border-color: var(--primary-color-hover);
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
}

html.dark .step .btn:not(.btn-danger):hover,
html.dark .monster-controls .btn:not(.btn-danger):hover,
html.dark .step .add-button:hover,
html.dark .monster-controls .add-button:hover,
html.dark .step .action-btn:hover,
html.dark .monster-controls .action-btn:hover,
html.dark .step button:not(.remove-button):not(.btn-danger):not(.delete-btn):not(.remove-spell-btn):not(.remove-damage-btn):not(.remove-section-btn):not(.remove-timeline-entry):not(.remove-variant-btn):not(.remove-image-btn):not(.remove-scaling):hover,
html.dark .monster-controls button:not(.remove-button):not(.btn-danger):not(.delete-btn):not(.remove-spell-btn):not(.remove-damage-btn):not(.remove-section-btn):not(.remove-timeline-entry):not(.remove-variant-btn):not(.remove-image-btn):not(.remove-scaling):hover {
    background-color: var(--primary-color-hover);
    border-color: #2c5282;
    color: #ffffff;
}


/* Dark Mode: DELETE/REMOVE BUTTONS */
html.dark .remove-button,
html.dark .btn-danger,
html.dark .delete-btn,
html.dark .remove-spell-btn,
html.dark .remove-damage-btn,
html.dark .remove-attack,
html.dark .remove-trait,
html.dark .remove-bonus-action,
html.dark .remove-reaction,
html.dark .remove-section-btn,
html.dark .remove-timeline-entry,
html.dark .remove-variant-btn,
html.dark .remove-image-btn,
html.dark .remove-scaling {
    background-color: var(--danger-color);
    color: #ffffff;
    border-color: var(--danger-color);
}

html.dark .remove-button:hover,
html.dark .btn-danger:hover,
html.dark .delete-btn:hover,
html.dark .remove-spell-btn:hover,
html.dark .remove-damage-btn:hover,
html.dark .remove-attack:hover,
html.dark .remove-trait:hover,
html.dark .remove-bonus-action:hover,
html.dark .remove-reaction:hover,
html.dark .remove-section-btn:hover,
html.dark .remove-timeline-entry:hover,
html.dark .remove-variant-btn:hover,
html.dark .remove-image-btn:hover,
html.dark .remove-scaling:hover {
    background-color: var(--danger-color-hover);
    border-color: var(--danger-color-hover);
}

/* Dark Mode: Tab Container */
html.dark .tab-container {
    background-color: rgba(255, 255, 255, 0.03);
    border-color: rgba(255, 255, 255, 0.08);
}

html.dark .tab-button {
    background-color: var(--card-bg, #374151);
    color: var(--text-secondary, #a0aec0);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark .tab-button.active {
    background-color: var(--primary-color);
    color: #ffffff;
    border-color: var(--primary-color-hover);
}

html.dark .tab-button:hover:not(.active) {
    background-color: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
}

/* Dark Mode: Progress Bar — transparent with blur, no gray bar */
html.dark #progress-bar {
    background-color: transparent;
}

html.dark .progress-step {
    background-color: var(--card-bg, #374151);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-secondary, #a0aec0);
}

html.dark .progress-step.active {
    background-color: var(--primary-color);
    color: #ffffff;
    border-color: var(--primary-color-hover);
}

html.dark .progress-step.completed {
    background-color: var(--success-color);
    color: #ffffff;
    border-color: var(--success-color-hover);
}

/* Dark Mode: Spellcasting Sections */
html.dark .spellcasting-config,
html.dark .spell-slot-container,
html.dark .spell-list-container,
html.dark .spell-container {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
}

html.dark .spell-level-title {
    color: var(--primary-color-light, var(--primary-color));
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

html.dark .spell-item,
html.dark .spell-entry {
    background-color: var(--card-bg, #374151);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
}

html.dark .spell-item:hover,
html.dark .spell-entry:hover {
    background-color: rgba(255, 255, 255, 0.1);
}

html.dark .empty-spell-message {
    color: var(--text-secondary, #a0aec0);
}

/* Dark Mode: Modal */
html.dark .modal,
html.dark .modal-container {
    background-color: rgba(0, 0, 0, 0.8);
}

html.dark .modal-content,
html.dark .spell-modal .modal-content {
    background-color: var(--background-dark);
    color: var(--text-dark);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark .modal-header {
    background-color: var(--background-dark);
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

html.dark .modal-title {
    color: var(--primary-color-light, var(--primary-color));
}

html.dark .modal-body {
    background-color: var(--background-dark);
}

html.dark .modal-footer {
    background-color: var(--background-dark);
    border-top-color: rgba(255, 255, 255, 0.1);
}

html.dark .close,
html.dark .close-button {
    color: var(--text-dark);
}

html.dark .close:hover,
html.dark .close-button:hover {
    color: #ffffff;
}

/* Dark Mode: Step 5 Modal Tabs */
html.dark .step5-modal-tabs {
    background: var(--background-dark, #374151);
    border-bottom-color: rgba(255, 255, 255, 0.1);
}

html.dark .step5-modal-tab {
    color: var(--text-secondary, #a0aec0);
    background: var(--background-dark, #374151);
}

html.dark .step5-modal-tab.active {
    color: #ffffff;
    background: var(--primary-color);
    border-bottom-color: var(--primary-color);
}

html.dark .step5-modal-tab:hover:not(.active) {
    color: var(--text-light, #cbd5e0);
    background: rgba(255, 255, 255, 0.08);
}

/* Dark Mode: Step 5 Modal Body & Footer */
html.dark .step5-modal {
    background-color: var(--background-dark, #1a2533);
}

html.dark .step5-modal-content {
    background-color: var(--background-dark, #1a2533);
    color: var(--text-dark, #e2e8f0);
}

html.dark .step5-modal-footer {
    background: var(--background-dark, #1a2533);
    border-top-color: rgba(255, 255, 255, 0.1);
}

html.dark .step5-modal-button.secondary {
    background: rgba(255, 255, 255, 0.1);
    color: var(--text-light, #e2e8f0);
}

html.dark .step5-modal-button.secondary:hover {
    background: rgba(255, 255, 255, 0.15);
}

html.dark .step5-modal-button.primary {
    background: var(--primary-color);
    color: white;
}

html.dark .step5-modal-button.primary:hover {
    background: var(--primary-color-light, #5568d3);
}

/* Dark Mode: Tables */
html.dark table {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark th {
    background-color: var(--background-dark);
    color: var(--text-dark);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark td {
    background-color: var(--background-dark);
    color: var(--text-dark);
    border-color: rgba(255, 255, 255, 0.1);
}

html.dark tr:hover td {
    background-color: var(--card-bg, #374151);
}

/* Dark Mode: Checkboxes and Radio Buttons */
html.dark input[type="checkbox"],
html.dark input[type="radio"] {
    border-color: rgba(255, 255, 255, 0.1);
    background-color: var(--background-dark);
}

html.dark input[type="checkbox"]:checked,
html.dark input[type="radio"]:checked {
    background-color: var(--primary-color);
    border-color: var(--primary-color-hover);
}

/* Dark Mode: Labels */
html.dark label {
    color: var(--text-dark);
}

html.dark .checkbox-label {
    color: var(--text-dark);
}

/* Dark Mode: Form Groups */
html.dark .form-group,
html.dark .form-row {
    border-color: rgba(255, 255, 255, 0.1);
}

/* Dark Mode: Validation Messages */
html.dark .validation-feedback,
html.dark .error-container {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.1);
    color: var(--text-dark);
}

/* Dark Mode: Rules Toggle (No change needed - already has good contrast) */
html.dark .sticky-rules-toggle {
    /* Rules toggle already has good contrast with gradient background */
    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);
}

/* Dark Mode: Spell School Badges */
html.dark .spell-school {
    background-color: var(--card-bg, #374151);
    color: var(--text-secondary, #a0aec0);
}

/* ===== DARK MODE: ADDITIONAL ELEMENT COVERAGE ===== */

/* Dark Mode: .form-control inputs/selects */
html.dark .form-control {
    background-color: var(--background-dark);
    color: var(--text-light);
    border-color: rgba(255, 255, 255, 0.2);
}

/* Dark Mode: Rules toggle wrapper */
html.dark .rules-toggle-wrapper {
    background-color: transparent;
    border-color: rgba(255, 255, 255, 0.2);
}

/* Dark Mode: Hit dice row */
html.dark .hit-dice-row {
    color: var(--text-light);
}

/* Dark Mode: Armor type selects */
html.dark select.form-control,
html.dark .armor-type select {
    background-color: var(--background-dark);
    color: var(--text-light);
}

/* Dark Mode: AC modifier inline (shield/magic dropdowns) */
html.dark .ac-modifier-inline {
    color: var(--text-light);
}
html.dark .ac-modifier-inline select {
    background-color: var(--background-dark);
    color: var(--text-light);
    border-color: rgba(255, 255, 255, 0.2);
}

/* Dark Mode: Damage sections and checkbox groups */
html.dark .damage-section,
html.dark .damage-vulnerabilities,
html.dark .damage-resistances,
html.dark .damage-immunities {
    color: var(--text-light);
}
html.dark .checkbox-group label {
    color: var(--text-light);
}

/* Dark Mode: Trait cards */
html.dark .trait-card {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--text-light);
}

/* Dark Mode: Speed input groups */
html.dark .speed-input-group {
    color: var(--text-light);
}
html.dark .speed-input-group input {
    background-color: var(--background-dark);
    color: var(--text-light);
    border-color: rgba(255, 255, 255, 0.2);
}

/* Dark Mode: Initiative container (2024 rules) */
html.dark .initiative-container {
    border-color: var(--primary-color);
    background-color: rgba(66, 153, 225, 0.1);
}
html.dark .initiative-container label {
    color: var(--primary-color);
}

/* Dark Mode: Multiattack configuration */
html.dark .multiattack-config {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--text-light);
}

/* Dark Mode: Bonus action cards */
html.dark .bonus-action-card {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--text-light);
}

/* Dark Mode: Reaction cards */
html.dark .reaction-card {
    background-color: var(--background-dark);
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--text-light);
}

/* ===== DARK MODE BODY STYLES ===== */
/* main_script.js adds .dark class to <html> element (document.documentElement) */
/* Uses CSS variables so palette-manager overrides take effect */
.dark body,
html.dark body {
    background-color: var(--background-dark, #1a2533);
    color: var(--text-light, #ecf0f1);
}

/* ===== HEADER AND FOOTER STYLE PROTECTION ===== */
/* Prevent monster creator styles from interfering with header/footer */
/* Header and footer use main_style.css - we just prevent conflicts */

/* Ensure placeholders don't add visual artifacts */
#header-placeholder,
#footer-placeholder {
    margin: 0;
    padding: 0;
    width: 100%;
    background: transparent;
    border: none;
    box-shadow: none;
    display: block;
}

/* Footer spans full viewport width (not constrained by max-width) */
#footer-placeholder {
    width: 100%;
    margin: 0;
    padding: 0;
}

/* Ensure header/footer maintain main_style.css positioning and styles */
/* Monster creator styles are scoped and won't interfere with header/footer */

/* ===== STEPS 1-3 DENSITY AND CONSISTENCY IMPROVEMENTS ===== */
/* Reduce spacing for Steps 1-3 to match other steps */
#step1 .creation-step,
#step2 .creation-step,
#step3 {
    padding: var(--spacing-medium);
    margin-bottom: var(--spacing-medium);
}

/* Tighter form group spacing */
#step1 .ability-score-group,
#step2 .ability-score-group,
#step3 .combat-stats-group {
    margin-bottom: 0.75rem;
    padding: 0.5rem;
}

/* Reduce language checkbox spacing */
#step1 .language-checkboxes {
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

/* Tighter label spacing */
#step1 label,
#step2 label,
#step3 label {
    margin-bottom: 0.25rem;
}

/* Reduce input spacing */
#step1 input[type="text"],
#step1 input[type="number"],
#step1 select,
#step2 input[type="text"],
#step2 input[type="number"],
#step2 select,
#step3 input[type="text"],
#step3 input[type="number"],
#step3 select {
    margin-bottom: 0.5rem;
    padding: 0.5rem;
}

/* Compact checkbox groups */
#step1 .checkbox-group,
#step2 .checkbox-group,
#step3 .checkbox-group {
    gap: 0.5rem;
    margin-bottom: 0.75rem;
}

/* Tighter divider spacing */
#step1 .ability-skill-divider,
#step2 .ability-skill-divider,
#step3 .ability-skill-divider {
    margin: 0.5rem 0;
}

/* Consistent button sizing for Steps 1-3 */
#step1 .next-button,
#step2 .next-button,
#step2 .prev-button,
#step3 .next-button,
#step3 .prev-button {
    margin: var(--spacing-small);
    padding: var(--spacing-small) var(--spacing-medium);
}

/* Step navigation spacing */
#step1 .step-navigation,
#step2 .step-navigation,
#step3 .step-navigation {
    margin-top: var(--spacing-medium);
    padding-top: var(--spacing-medium);
}

/* Language comprehension radio group - tighter spacing */
#step1 .language-comprehension {
    margin-bottom: 0.5rem;
    gap: 0.75rem;
}

/* Custom language section - compact */
#step1 .custom-language-section {
    margin-top: 0.5rem;
}

/* Passive perception group - tighter */
#step2 .passive-perception-group {
    margin-bottom: 0.75rem;
    padding: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* Auto-calculate button for passive perception */
#step2 .auto-calculate-btn {
    padding: 0.375rem 0.75rem;
    font-size: 0.875rem;
    background-color: #4a5568;
    color: white;
    border: 1px solid #2d3748;
    border-radius: 0.25rem;
    cursor: pointer;
    transition: background-color 0.2s;
}

#step2 .auto-calculate-btn:hover {
    background-color: #2d3748;
}

#step2 .auto-calculate-btn:active {
    background-color: #1a202c;
}

/* Dark mode for auto-calculate button */
.dark #step2 .auto-calculate-btn,
html.dark #step2 .auto-calculate-btn {
    background-color: var(--card-bg, #4a5568);
    border-color: var(--background-dark);
    color: white;
}

.dark #step2 .auto-calculate-btn:hover,
html.dark #step2 .auto-calculate-btn:hover {
    background-color: var(--background-dark);
}

/* Combat stats container - grid with tighter spacing */
#step3 .combat-stats-container,
#step3 .movement-container,
#step3 .senses-container {
    gap: 0.75rem;
    margin-bottom: var(--spacing-medium);
}

/* Resistance/Immunity containers - compact */
#step3 .resistance-container,
#step3 .immunities-container,
#step3 .condition-immunities-container {
    gap: 0.5rem;
    margin-bottom: var(--spacing-medium);
}

/* Dark mode adjustments for Steps 1-3 density */
.dark #step1 .creation-step,
.dark #step2 .creation-step,
.dark #step3,
html.dark #step1 .creation-step,
html.dark #step2 .creation-step,
html.dark #step3 {
    background: rgba(45, 55, 72, 0.8);
}

.dark #step1 .ability-score-group,
.dark #step2 .ability-score-group,
.dark #step3 .combat-stats-group,
html.dark #step1 .ability-score-group,
html.dark #step2 .ability-score-group,
html.dark #step3 .combat-stats-group {
    background-color: rgba(55, 65, 81, 0.5);
}

/* =====================================================
   RESPONSIVE DESIGN — Session 8 Fixes
   Addresses: damage entries, AC section, Step 5 forms,
   stat block, general touch targets
   ===================================================== */

/* --- Attack Details Row (Step 4) --- */
.attack-details-row {
    display: flex;
    gap: 12px;
    align-items: flex-end;
    flex-wrap: wrap;
    margin-bottom: var(--spacing-medium);
}

.attack-detail {
    display: flex;
    flex-direction: column;
}

.attack-detail label {
    font-size: 0.85rem;
    font-weight: 600;
    margin-bottom: 4px;
}

.attack-detail.attack-type-field {
    flex: 1 1 180px;
}

.attack-detail.reach-range-container,
.attack-detail.attack-bonus-field {
    flex: 0 0 110px;
}

.attack-detail .input-group {
    display: flex;
    align-items: center;
}

.attack-detail .input-prefix,
.attack-detail .input-suffix {
    font-size: 0.85rem;
    color: var(--text-muted);
    padding: 0 4px;
}

@media (max-width: 576px) {
    .attack-details-row {
        flex-direction: column;
    }
    .attack-detail.reach-range-container,
    .attack-detail.attack-bonus-field {
        flex: 1 1 100%;
    }
}

/* --- Damage Entry Flexbox Layout (Step 4) --- */
.damage-fields {
    display: flex;
    gap: 8px;
    align-items: flex-end;
    flex-wrap: wrap;
}
.damage-field {
    display: flex;
    flex-direction: column;
}
.damage-field label {
    font-size: 0.8rem;
    font-weight: 600;
    margin-bottom: 4px;
    white-space: nowrap;
}
.damage-field.dice-count,
.damage-field.modifier {
    flex: 0 0 70px;
}
.damage-field.die-type {
    flex: 0 0 80px;
}
.damage-field.damage-type {
    flex: 1 1 140px;
}
.damage-fields .remove-damage-btn {
    align-self: flex-end;
    margin-bottom: 0;
    flex-shrink: 0;
    height: 38px;
}
.damage-field input,
.damage-field select {
    margin-bottom: 0;
}

@media screen and (max-width: 480px) {
    .damage-fields {
        gap: 6px;
    }
    .damage-field.dice-count,
    .damage-field.modifier {
        flex: 1 1 calc(50% - 6px);
    }
    .damage-field.die-type,
    .damage-field.damage-type {
        flex: 1 1 calc(50% - 6px);
    }
}

/* --- Step 3 AC Section (armor + shield + magic dropdowns) --- */
@media screen and (max-width: 768px) {
    /* HP and AC groups stack vertically and fill full width */
    #step3 .combat-stats-container {
        grid-template-columns: 1fr;
    }

    /* Each combat-stats-group wraps its controls */
    #step3 .combat-stats-group {
        width: 100%;
        display: flex;
        flex-wrap: wrap;
        gap: 8px;
        align-items: center;
    }

    /* AC modifiers wrap to new line */
    .ac-modifier-inline {
        display: flex;
        margin-left: 0;
        margin-top: 0.5rem;
    }

    #armor-type,
    #ac-armor-magic,
    #ac-shield-magic {
        width: 100% !important;
        margin-left: 0;
        margin-top: 0.35rem;
    }

    /* Hit dice row: stack inputs */
    #hit-dice-count,
    #hit-dice-type {
        display: block !important;
        width: 100% !important;
        margin-left: 0 !important;
        margin-top: 0.35rem;
    }
}

/* --- Step 5 Template Action Rows --- */
@media screen and (max-width: 768px) {
    .template-action-row {
        flex-direction: column;
        align-items: stretch;
    }

    .template-action-row .add-button,
    .template-action-row select {
        width: 100%;
    }

    /* Legendary/lair/regional action forms — inputs full-width */
    .legendary-action input,
    .legendary-action textarea,
    .legendary-action select,
    .lair-action input,
    .lair-action textarea,
    .lair-action select,
    .regional-effect input,
    .regional-effect textarea,
    .regional-effect select {
        width: 100% !important;
        max-width: 100%;
    }
}

/* At mobile: stack legendary/lair action form rows vertically */
@media screen and (max-width: 480px) {
    .legendary-action .form-row,
    .lair-action .form-row {
        flex-direction: column;
    }

    .legendary-action .form-row > *,
    .lair-action .form-row > * {
        width: 100% !important;
    }
}

/* --- Step 4 Spell Slots Grid at Mobile --- */
@media screen and (max-width: 480px) {
    .spell-slots-grid {
        grid-template-columns: 1fr 1fr;
    }
}

/* --- Step 7 Stat Block Responsive --- */
@media screen and (max-width: 1200px) {
    .stat-block {
        max-width: 100%;
        margin: 0 0.5rem;
    }
}

@media screen and (max-width: 768px) {
    .stat-block {
        padding: 0.75rem 1rem;
        font-size: 0.95rem;
    }

    .monster-name {
        font-size: 1.4rem;
    }

    .section-header {
        font-size: 1.15rem;
    }

    /* Ability scores: 3-col at tablet */
    .stat-block .ability-scores {
        grid-template-columns: repeat(3, 1fr);
        gap: 0.35rem;
    }
}

@media screen and (max-width: 480px) {
    .stat-block {
        padding: 0.5rem 0.75rem;
        font-size: 0.9rem;
        margin: 0 0.25rem;
    }

    .monster-name {
        font-size: 1.2rem;
    }

    .section-header {
        font-size: 1.05rem;
    }

    /* Ability scores: 2-col at mobile */
    .stat-block .ability-scores {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Long trait/action descriptions wrap properly */
    .stat-block .action,
    .stat-block .trait,
    .stat-block .bonus-action,
    .stat-block .reaction,
    .stat-block .legendary-action,
    .stat-block .lair-action,
    .stat-block .regional-effect {
        word-wrap: break-word;
        overflow-wrap: break-word;
    }
}

/* ============================================================
   Accessibility — Focus states
   ============================================================ */
.tab-button:focus-visible,
.progress-step:focus-visible,
.add-button:focus-visible,
button:focus-visible {
    outline: 2px solid var(--primary-color);
    outline-offset: 2px;
}

select:focus-visible,
input:focus-visible,
textarea:focus-visible {
    outline: 2px solid var(--primary-color);
    outline-offset: 1px;
}

/* ============================================================
   Accessibility — Touch targets (44px minimum)
   ============================================================ */
@media (pointer: coarse) {
    .remove-image-btn,
    .remove-button,
    .remove-section-btn {
        min-width: 44px;
        min-height: 44px;
    }

    .tab-button {
        min-height: 44px;
        padding: 8px 16px;
    }

    .progress-step {
        min-height: 44px;
        min-width: 44px;
    }

    select, input[type="number"] {
        min-height: 44px;
    }
}

/* --- General Touch Targets --- */
@media screen and (max-width: 768px) {
    /* Buttons minimum 44px touch target */
    .add-button,
    .remove-button,
    .btn,
    .action-btn,
    .next-button,
    .prev-button,
    .roll,
    button[type="button"] {
        min-height: 44px;
        padding: 0.6rem 1rem;
    }

    /* Checkboxes and radios — adequate tap area */
    input[type="checkbox"],
    input[type="radio"] {
        min-width: 20px;
        min-height: 20px;
    }

    /* Dropdowns full-width for easier selection on mobile */
    #step3 select,
    #step4 select.form-control,
    #step5 select.form-control {
        width: 100%;
        min-height: 44px;
    }

    /* Number inputs — bigger for finger-friendly tapping */
    input[type="number"] {
        min-height: 44px;
    }

    /* Section controls (Step 6) — wrap on small screens, 44px touch targets */
    .section-controls {
        flex-wrap: wrap;
    }

    .section-controls button {
        min-width: 44px;
        min-height: 44px;
    }
}

/* --- Step 4 Subtabs Stacking on Mobile --- */
@media screen and (max-width: 480px) {
    .tab-container {
        display: flex;
        flex-direction: column;
        gap: 4px;
    }
    .tab-button {
        width: 100%;
        text-align: center;
    }
}

/* --- Lore Toolbar Responsive --- */
@media screen and (max-width: 768px) {
    .lore-toolbar {
        flex-direction: column;
        align-items: flex-start;
    }

    .lore-bulk-actions {
        width: 100%;
        justify-content: flex-start;
    }

    .interaction-table .reaction-row,
    .social-hierarchy .hierarchy-level,
    .environmental-impact .impact-row {
        grid-template-columns: 1fr;
        gap: var(--spacing-small);
    }

    .variant-row {
        grid-template-columns: 1fr;
    }
}

@media screen and (max-width: 480px) {
    .lore-progress {
        flex-direction: column;
        gap: 2px;
        align-items: flex-start;
    }

    .lore-progress .separator {
        display: none;
    }

    .lore-bulk-actions {
        flex-wrap: wrap;
    }

    .images-gallery {
        grid-template-columns: 1fr;
    }

    .timeline-header {
        flex-wrap: wrap;
    }
}

/* --- Monster Controls Bar Stacking on Mobile --- */
@media screen and (max-width: 480px) {
    .monster-controls {
        flex-direction: column;
        gap: 10px;
        padding: 10px;
    }
    .control-group {
        flex-wrap: wrap;
        justify-content: center;
        gap: 8px;
    }
}

/* ============================================
   CR VALIDATION PANEL (Soft Rules / Advisory)
   ============================================ */
.cr-validation-panel {
    margin-top: 16px;
    border: 1px solid #e2e8f0;
    border-radius: var(--border-radius);
    overflow: hidden;
    font-size: 0.9rem;
}

.cr-validation-header {
    background: #f7fafc;
    padding: 10px 14px;
    border-bottom: 1px solid #e2e8f0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.cr-validation-header-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.cr-validation-title {
    font-weight: 600;
    color: #2d3748;
}

.cr-validation-subtitle {
    font-size: 0.8rem;
    color: #718096;
    font-style: italic;
}

/* Settings gear toggle */
.cr-settings-toggle {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 1.1rem;
    color: #718096;
    padding: 2px 6px;
    border-radius: 4px;
    transition: color 0.2s, background 0.2s;
}

.cr-settings-toggle:hover {
    color: #4a5568;
    background: #edf2f7;
}

/* Settings panel (collapsed by default) */
.cr-settings-panel {
    display: none;
    padding: 8px 14px;
    border-bottom: 1px solid #e2e8f0;
    background: #f7fafc;
    font-size: 0.82rem;
}

.cr-settings-panel.cr-settings-open {
    display: block;
}

.cr-settings-row {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    align-items: center;
    margin-bottom: 6px;
}

.cr-settings-row:last-child {
    margin-bottom: 0;
}

.cr-settings-label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    white-space: nowrap;
}

.cr-settings-label-text {
    font-weight: 500;
    color: #4a5568;
}

/* Disabled state */
.cr-validation-disabled .cr-validation-header {
    opacity: 0.7;
}

.cr-validation-item {
    padding: 8px 14px;
    display: flex;
    align-items: baseline;
    gap: 8px;
    border-bottom: 1px solid #edf2f7;
}

.cr-validation-item:last-child {
    border-bottom: none;
}

.cr-validation-icon {
    flex-shrink: 0;
    font-size: 1rem;
}

.cr-validation-stat {
    font-weight: 600;
    min-width: 60px;
    color: #4a5568;
}

.cr-validation-msg {
    color: #4a5568;
}

.cr-info {
    background: #ebf8ff;
}

.cr-info .cr-validation-icon {
    color: #3182ce;
}

.cr-warning {
    background: #fffaf0;
}

.cr-warning .cr-validation-icon {
    color: #d69e2e;
}

/* Dark mode CR validation */
html.dark .cr-validation-panel {
    border-color: var(--dark-border);
}

html.dark .cr-validation-header {
    background: var(--dark-card-bg);
    border-color: var(--dark-border);
}

html.dark .cr-validation-title {
    color: var(--dark-text);
}

html.dark .cr-validation-subtitle {
    color: var(--dark-text-secondary);
}

html.dark .cr-validation-item {
    border-color: var(--dark-border);
}

html.dark .cr-validation-stat,
html.dark .cr-validation-msg {
    color: var(--dark-text-secondary);
}

html.dark .cr-info {
    background: rgba(49, 130, 206, 0.1);
}

html.dark .cr-warning {
    background: rgba(214, 158, 46, 0.1);
}

/* Dark mode: settings gear + panel */
html.dark .cr-settings-toggle {
    color: var(--dark-text-secondary);
}

html.dark .cr-settings-toggle:hover {
    color: var(--dark-text);
    background: rgba(255, 255, 255, 0.08);
}

html.dark .cr-settings-panel {
    background: var(--dark-card-bg);
    border-color: var(--dark-border);
}

html.dark .cr-settings-label-text {
    color: var(--dark-text-secondary);
}

/* =========================================================
   Per-Step Inline Hints
   ========================================================= */
.cr-inline-hints {
    display: none;
    margin: 8px 0 4px;
}

/* Per-field inline hint containers (placed next to each relevant field) */
.cr-field-hint {
    display: none;
    margin: 4px 0 2px;
}

.cr-field-hint .cr-inline-hint {
    font-size: 0.78rem;
    padding: 3px 8px;
    margin-bottom: 2px;
}

.cr-inline-hint {
    display: flex;
    align-items: baseline;
    gap: 6px;
    padding: 4px 10px;
    font-size: 0.8rem;
    line-height: 1.4;
    border-radius: 4px;
    margin-bottom: 3px;
}

.cr-inline-hint:last-child {
    margin-bottom: 0;
}

.cr-hint-icon {
    flex-shrink: 0;
    font-size: 0.85rem;
}

.cr-hint-msg {
    color: #4a5568;
}

.cr-hint-more {
    font-style: italic;
    cursor: default;
    opacity: 0.8;
}

/* Inline hint level colors (reuse .cr-info / .cr-warning from panel) */
.cr-inline-hint.cr-info {
    background: #ebf8ff;
}

.cr-inline-hint.cr-info .cr-hint-icon {
    color: #3182ce;
}

.cr-inline-hint.cr-warning {
    background: #fffaf0;
}

.cr-inline-hint.cr-warning .cr-hint-icon {
    color: #d69e2e;
}

/* Dark mode inline hints */
html.dark .cr-inline-hint.cr-info {
    background: rgba(49, 130, 206, 0.1);
}

html.dark .cr-inline-hint.cr-warning {
    background: rgba(214, 158, 46, 0.1);
}

html.dark .cr-hint-msg {
    color: var(--dark-text-secondary);
}

html.dark .cr-hint-icon {
    opacity: 0.9;
}

/* Responsive: stack settings on small screens */
@media (max-width: 600px) {
    .cr-settings-row {
        flex-direction: column;
        gap: 6px;
    }

    .cr-inline-hint {
        font-size: 0.75rem;
        padding: 3px 8px;
    }

    .cr-field-hint .cr-inline-hint {
        font-size: 0.72rem;
        padding: 2px 6px;
    }

    .cr-options-popup {
        min-width: 260px;
        max-width: 90vw;
    }
}

/* ============================================
   Auto-Submit Dialog (Gallery)
   ============================================ */
.auto-submit-dialog-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
}

.auto-submit-dialog {
    background: #1a1612;
    border: 1px solid #3a3530;
    border-radius: 12px;
    padding: 1.5rem;
    max-width: 420px;
    width: 90%;
    color: #f0e8d8;
}

.auto-submit-dialog h3 {
    margin: 0 0 0.75rem;
    font-size: 1.1rem;
}

.auto-submit-dialog h3 i {
    color: var(--mc-accent-color, #2ecc71);
    margin-right: 0.5rem;
}

.auto-submit-dialog p {
    margin: 0 0 0.75rem;
    font-size: 0.9rem;
    line-height: 1.5;
    color: #b0a898;
}

.auto-submit-dialog-actions {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
    margin-top: 1rem;
}