/**
 * Form Runtime Engine - Neo-Brutalist Styles
 *
 * Scoped under AISB body classes for proper mode detection:
 * - .aisb-neo-brutalist-cards = Lifted mode (borders + shadow)
 * - .aisb-neo-brutalist-cards-outline = Outline mode (borders only)
 * - .aisb-neo-brutalist-buttons = Button styling enabled
 *
 * IMPORTANT: Neo-brutalist borders and shadows use a FIXED color that
 * does NOT change based on light/dark mode. This ensures visual consistency.
 *
 * Design Principle: Only primary/solid buttons and section cards receive
 * Neo-Brutalist treatment. Form fields, ghost buttons, and message alerts
 * remain minimal for usability.
 *
 * ⚠  PUBLIC CONTRACT: Every `--aisb-*` token referenced in this file is part
 * of the documented integration contract with the Promptless WP plugin. Before
 * adding, removing, or renaming any `--aisb-*` reference, read and update:
 *     docs/AISB_TOKEN_CONTRACT.md
 * Every `var(--aisb-*, ...)` MUST include a fallback so standalone installs
 * still render correctly when the plugin is inactive.
 *
 * @package FormRuntimeEngine
 */

/* ==========================================================================
   Neo-Brutalist Color Variable
   Uses AISB's neo-brutalist primary border color, falls back to pure black
   This color does NOT change in dark mode - Promptless injects #000000 for both themes
   ========================================================================== */

:root {
    --fre-neo-border-color: var(--aisb-neo-brutalist-primary-border, #000000);
}

/* ==========================================================================
   Neo-Brutalist Section/Card Styling - LIFTED MODE
   body.aisb-neo-brutalist-cards (without -outline class)
   ========================================================================== */

body.aisb-neo-brutalist-cards:not(.aisb-neo-brutalist-cards-outline) .fre-section {
    border-width: var(--aisb-neo-border-width, 4px);
    border-style: solid;
    border-color: var(--fre-neo-border-color);
    box-shadow: var(--aisb-neo-shadow-offset, 8px) var(--aisb-neo-shadow-offset, 8px) 0 var(--fre-neo-border-color);
    position: relative;
    z-index: 1;
}

/* ==========================================================================
   Neo-Brutalist Section/Card Styling - OUTLINE MODE
   body.aisb-neo-brutalist-cards.aisb-neo-brutalist-cards-outline
   ========================================================================== */

body.aisb-neo-brutalist-cards-outline .fre-section {
    border-width: var(--aisb-neo-border-width, 4px);
    border-style: solid;
    border-color: var(--fre-neo-border-color);
    box-shadow: none;
    position: relative;
    z-index: 1;
}

/* ==========================================================================
   EXCLUDED FROM NEO-BRUTALIST STYLING

   The following elements remain minimal and clean:
   - Message fields / alerts (success, error, warning, info notifications)
   - Form fields (inputs, textareas, selects)
   - Checkboxes and radios

   Only buttons and section cards receive neo-brutalist treatment.
   ========================================================================== */

/* ==========================================================================
   Neo-Brutalist Buttons - LIFTED MODE
   body.aisb-neo-brutalist-buttons (without -outline class)
   ========================================================================== */

body.aisb-neo-brutalist-buttons:not(.aisb-neo-brutalist-buttons-outline) .fre-form__submit-button,
body.aisb-neo-brutalist-buttons:not(.aisb-neo-brutalist-buttons-outline) .fre-btn--primary {
    border: var(--aisb-neo-border-width-button, 3px) solid var(--fre-neo-border-color);
    box-shadow: var(--aisb-neo-shadow-offset-button, 4px) var(--aisb-neo-shadow-offset-button, 4px) 0 var(--fre-neo-border-color);
    transition: transform 0.1s ease, box-shadow 0.1s ease, background-color 0.15s ease;
}

body.aisb-neo-brutalist-buttons:not(.aisb-neo-brutalist-buttons-outline) .fre-form__submit-button:hover:not(:disabled),
body.aisb-neo-brutalist-buttons:not(.aisb-neo-brutalist-buttons-outline) .fre-btn--primary:hover:not(:disabled) {
    transform: translate(1px, 1px);
    box-shadow: var(--aisb-neo-shadow-offset-button-hover, 3px) var(--aisb-neo-shadow-offset-button-hover, 3px) 0 var(--fre-neo-border-color);
}

body.aisb-neo-brutalist-buttons:not(.aisb-neo-brutalist-buttons-outline) .fre-form__submit-button:active:not(:disabled),
body.aisb-neo-brutalist-buttons:not(.aisb-neo-brutalist-buttons-outline) .fre-btn--primary:active:not(:disabled) {
    transform: translate(2px, 2px);
    box-shadow: 2px 2px 0 var(--fre-neo-border-color);
}

/* ==========================================================================
   Neo-Brutalist Buttons - OUTLINE MODE
   body.aisb-neo-brutalist-buttons.aisb-neo-brutalist-buttons-outline
   ========================================================================== */

body.aisb-neo-brutalist-buttons-outline .fre-form__submit-button,
body.aisb-neo-brutalist-buttons-outline .fre-btn--primary {
    border: var(--aisb-neo-border-width-button, 3px) solid var(--fre-neo-border-color);
    box-shadow: none;
}

body.aisb-neo-brutalist-buttons-outline .fre-form__submit-button:hover:not(:disabled),
body.aisb-neo-brutalist-buttons-outline .fre-btn--primary:hover:not(:disabled) {
    opacity: 0.9;
}
