/* ==========================================================================
   FinMinion button system — one look for every page.
   Loaded LAST (after fm-shell.css). Covers Radzen buttons (.rz-button) and the
   few Bootstrap buttons (.btn) used in content areas.

   Deliberately NOT applied to:
     • buttons on the page banner (.fm-ph)   – glass / gold style in fm-template-pages.css
     • the top bar + navigation dock         – fm-shell.css / fm-nav.css
     • the dashboard's own buttons           – hero-btn, db-link, rd-mini … in fm-dashboard.css
     • the login submit button               – fm-login.css

   Sizes     xs 28px · sm 34px · md 40px (default)       Radius 12px (icon-only 11px)
   Roles     Primary = navy · Secondary = gold · Light/Base = white outline
             Success / Info / Danger = soft tints         Text = borderless
   ========================================================================== */

:root {
    --fm-btn-h-xs: 28px;
    --fm-btn-h-sm: 34px;
    --fm-btn-h-md: 40px;
    --fm-btn-radius: 12px;
    --fm-btn-ring: 0 0 0 3px rgba(211, 169, 66, .45);
    --fm-btn-ease: .16s ease;
}

/* ---------- Shared shape ---------- */
.rz-button:not(.fm-ph .rz-button),
.btn:not(.fm-ph .btn):not(.fm-login__submit):not(.btn-close):not(.btn-link):not(.btn-reveal-trigger) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .45rem;
    min-height: var(--fm-btn-h-md);
    padding: 0 1.1rem;
    border-radius: var(--fm-btn-radius);
    border: 1px solid transparent;
    font-family: var(--fm-font-body);
    font-size: .84rem;
    font-weight: 700;
    letter-spacing: .005em;
    line-height: 1;
    text-transform: none;
    white-space: nowrap;
    box-shadow: none;
    transition: background var(--fm-btn-ease), border-color var(--fm-btn-ease), color var(--fm-btn-ease),
                box-shadow var(--fm-btn-ease), transform var(--fm-btn-ease);
}
.rz-button:not(.fm-ph .rz-button) .rz-button-box { gap: .45rem; align-items: center; }
.rz-button:not(.fm-ph .rz-button) .rz-button-text { font-weight: inherit; font-size: inherit; letter-spacing: inherit; text-transform: none; }
.rz-button:not(.fm-ph .rz-button) .rzi { font-size: 1.2em; margin: 0; }

/* ---------- Sizes ---------- */
.rz-button.rz-button-sm:not(.fm-ph .rz-button),
.btn-sm:not(.fm-ph .btn) { min-height: var(--fm-btn-h-sm); padding: 0 .85rem; font-size: .78rem; border-radius: 10px; }
.rz-button.rz-button-xs:not(.fm-ph .rz-button) { min-height: var(--fm-btn-h-xs); padding: 0 .6rem; font-size: .72rem; border-radius: 9px; }
.rz-button.rz-button-lg:not(.fm-ph .rz-button) { min-height: 46px; padding: 0 1.4rem; font-size: .9rem; }

/* Icon-only buttons are square, same height as their size */
.rz-button.rz-button-icon-only:not(.fm-ph .rz-button),
.btn-icon:not(.fm-ph .btn) { padding: 0; width: var(--fm-btn-h-md); min-width: var(--fm-btn-h-md); border-radius: 11px; }
.rz-button.rz-button-icon-only.rz-button-sm:not(.fm-ph .rz-button) { width: var(--fm-btn-h-sm); min-width: var(--fm-btn-h-sm); }
.rz-button.rz-button-icon-only.rz-button-xs:not(.fm-ph .rz-button) { width: var(--fm-btn-h-xs); min-width: var(--fm-btn-h-xs); }

/* ---------- Primary (navy) ---------- */
.rz-button.rz-primary:not(.fm-ph .rz-button),
.btn-primary:not(.fm-ph .btn):not(.fm-login__submit),
.btn-dark:not(.fm-ph .btn) {
    background: linear-gradient(135deg, #1c2d52, var(--fm-navy-950));
    border-color: var(--fm-navy-950);
    color: #fff;
}
.rz-button.rz-primary:not(.fm-ph .rz-button) .rzi,
.rz-button.rz-primary:not(.fm-ph .rz-button) .rz-button-text { color: #fff; }
.rz-button.rz-primary:hover:not(.rz-state-disabled):not(.fm-ph .rz-button),
.btn-primary:hover:not(.fm-ph .btn):not(.fm-login__submit),
.btn-dark:hover:not(.fm-ph .btn) {
    background: linear-gradient(135deg, #2a4380, #14264f);
    border-color: #14264f;
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(11, 20, 38, .22);
}

/* ---------- Secondary / Warning (champagne gold) ---------- */
.rz-button.rz-secondary:not(.fm-ph .rz-button),
.rz-button.rz-warning:not(.fm-ph .rz-button),
.btn-secondary:not(.fm-ph .btn),
.btn-warning:not(.fm-ph .btn) {
    background: linear-gradient(135deg, var(--fm-gold-1), var(--fm-gold-2));
    border-color: transparent;
    color: #241a00;
}
.rz-button.rz-secondary:not(.fm-ph .rz-button) .rzi,
.rz-button.rz-secondary:not(.fm-ph .rz-button) .rz-button-text,
.rz-button.rz-warning:not(.fm-ph .rz-button) .rzi,
.rz-button.rz-warning:not(.fm-ph .rz-button) .rz-button-text { color: #241a00; }
.rz-button.rz-secondary:hover:not(.rz-state-disabled):not(.fm-ph .rz-button),
.rz-button.rz-warning:hover:not(.rz-state-disabled):not(.fm-ph .rz-button),
.btn-secondary:hover:not(.fm-ph .btn),
.btn-warning:hover:not(.fm-ph .btn) {
    background: linear-gradient(135deg, #f7e3ab, #dcb24d);
    color: #241a00;
    transform: translateY(-1px);
    box-shadow: 0 8px 18px rgba(211, 169, 66, .35);
}

/* ---------- Light / Base (white outline) ---------- */
.rz-button.rz-light:not(.fm-ph .rz-button),
.rz-button.rz-base:not(.fm-ph .rz-button),
.btn-light:not(.fm-ph .btn),
.btn-outline-secondary:not(.fm-ph .btn) {
    background: var(--fm-surface);
    border-color: var(--fm-line-solid);
    color: var(--fm-ink);
}
.rz-button.rz-light:not(.fm-ph .rz-button) .rzi,
.rz-button.rz-light:not(.fm-ph .rz-button) .rz-button-text,
.rz-button.rz-base:not(.fm-ph .rz-button) .rzi,
.rz-button.rz-base:not(.fm-ph .rz-button) .rz-button-text { color: var(--fm-ink); }
.rz-button.rz-light:hover:not(.rz-state-disabled):not(.fm-ph .rz-button),
.rz-button.rz-base:hover:not(.rz-state-disabled):not(.fm-ph .rz-button),
.btn-light:hover:not(.fm-ph .btn),
.btn-outline-secondary:hover:not(.fm-ph .btn) {
    background: var(--fm-amber-tint);
    border-color: var(--fm-gold-2);
    color: var(--fm-gold-ink);
    transform: translateY(-1px);
}
.rz-button.rz-light:hover:not(.rz-state-disabled):not(.fm-ph .rz-button) .rzi,
.rz-button.rz-light:hover:not(.rz-state-disabled):not(.fm-ph .rz-button) .rz-button-text,
.rz-button.rz-base:hover:not(.rz-state-disabled):not(.fm-ph .rz-button) .rzi,
.rz-button.rz-base:hover:not(.rz-state-disabled):not(.fm-ph .rz-button) .rz-button-text { color: var(--fm-gold-ink); }

/* ---------- Success / Info / Danger (soft tints) ---------- */
.rz-button.rz-success:not(.fm-ph .rz-button), .btn-success:not(.fm-ph .btn) { background: var(--fm-green-tint); border-color: transparent; color: #2b6a0d; }
.rz-button.rz-info:not(.fm-ph .rz-button)                                   { background: var(--fm-blue-tint);  border-color: transparent; color: #0d4d8c; }
.rz-button.rz-danger:not(.fm-ph .rz-button), .btn-danger:not(.fm-ph .btn)   { background: var(--fm-red-tint);   border-color: transparent; color: #a92e46; }
.rz-button.rz-success:not(.fm-ph .rz-button) .rzi, .rz-button.rz-success:not(.fm-ph .rz-button) .rz-button-text { color: #2b6a0d; }
.rz-button.rz-info:not(.fm-ph .rz-button) .rzi,    .rz-button.rz-info:not(.fm-ph .rz-button) .rz-button-text    { color: #0d4d8c; }
.rz-button.rz-danger:not(.fm-ph .rz-button) .rzi,  .rz-button.rz-danger:not(.fm-ph .rz-button) .rz-button-text  { color: #a92e46; }
.rz-button.rz-success:hover:not(.rz-state-disabled):not(.fm-ph .rz-button), .btn-success:hover:not(.fm-ph .btn) { background: #d4ebc4; color: #2b6a0d; transform: translateY(-1px); }
.rz-button.rz-info:hover:not(.rz-state-disabled):not(.fm-ph .rz-button)                                        { background: #d7e5f6; transform: translateY(-1px); }
.rz-button.rz-danger:hover:not(.rz-state-disabled):not(.fm-ph .rz-button), .btn-danger:hover:not(.fm-ph .btn)  { background: #f7ccd5; color: #a92e46; transform: translateY(-1px); }

/* ---------- Text variant (borderless) ---------- */
.rz-button.rz-variant-text:not(.fm-ph .rz-button) { background: transparent; border-color: transparent; box-shadow: none; }
.rz-button.rz-variant-text:hover:not(.rz-state-disabled):not(.fm-ph .rz-button) { background: var(--fm-amber-tint); transform: none; box-shadow: none; }
.rz-button.rz-variant-text.rz-danger:hover:not(.rz-state-disabled):not(.fm-ph .rz-button) { background: var(--fm-red-tint); }

/* ---------- Focus / active / disabled ---------- */
.rz-button:focus-visible:not(.fm-ph .rz-button),
.btn:focus-visible:not(.fm-ph .btn) { outline: none; box-shadow: var(--fm-btn-ring); }
.rz-button:active:not(.rz-state-disabled):not(.fm-ph .rz-button),
.btn:active:not(.fm-ph .btn) { transform: translateY(0); box-shadow: none; }
.rz-button.rz-state-disabled:not(.fm-ph .rz-button),
.btn:disabled:not(.fm-ph .btn) { opacity: .55; cursor: not-allowed; transform: none; box-shadow: none; filter: saturate(.7); }

/* ---------- Full-width form submit buttons keep the same height ---------- */
.rz-button.w-100:not(.fm-ph .rz-button) { width: 100%; }

/* ---------- Table row actions: tighter, uniform square icon buttons ---------- */
.rz-data-grid .rz-button.rz-button-icon-only:not(.fm-ph .rz-button) { width: var(--fm-btn-h-sm); min-width: var(--fm-btn-h-sm); min-height: var(--fm-btn-h-sm); border-radius: 10px; }
.rz-data-grid .rz-button.rz-button-icon-only + .rz-button { margin-left: .35rem; }

/* ---------- Chat send button ---------- */
.chat-send-btn { min-height: var(--fm-btn-h-md); min-width: var(--fm-btn-h-md); border: 0; border-radius: var(--fm-btn-radius); font-weight: 800; transition: transform var(--fm-btn-ease), box-shadow var(--fm-btn-ease); }
.chat-send-btn:hover { transform: translateY(-1px); box-shadow: 0 8px 18px rgba(211, 169, 66, .35); }

/* ---------- Dark theme ---------- */
[data-bs-theme="dark"] .rz-button.rz-light:not(.fm-ph .rz-button),
[data-bs-theme="dark"] .rz-button.rz-base:not(.fm-ph .rz-button),
[data-bs-theme="dark"] .btn-light:not(.fm-ph .btn) { background: var(--fm-surface); color: var(--fm-ink); }
[data-bs-theme="dark"] .rz-button.rz-light:not(.fm-ph .rz-button) .rzi,
[data-bs-theme="dark"] .rz-button.rz-light:not(.fm-ph .rz-button) .rz-button-text { color: var(--fm-ink); }

@media (prefers-reduced-motion: reduce) {
    .rz-button, .btn, .chat-send-btn { transition: none !important; transform: none !important; }
}

/* ---------- Login: "Sign in with Google" keeps its own full-width outline style ---------- */
.fm-login .rz-button.fm-login__google:not(#a):not(#b),
.fm-login .rz-button.fm-login__google.rz-primary:not(#a):not(#b) {
    width: 100%; min-height: 46px; padding: 0 1rem; gap: .5rem;
    background: var(--fm-surface, #fff); color: var(--fm-ink, #16283b);
    border: 1px solid var(--fm-line-solid, #e1e7f0); box-shadow: none; transform: none;
}
.fm-login .rz-button.fm-login__google:hover:not(.rz-state-disabled):not(#a):not(#b) {
    background: var(--fm-amber-tint); border-color: var(--fm-gold-2); box-shadow: 0 4px 14px rgba(211, 169, 66, .2); transform: none;
}
.fm-login .rz-button.fm-login__google .rz-button-box,
.fm-login .rz-button.fm-login__google .rz-button-text { color: var(--fm-ink, #16283b); white-space: nowrap; }
.fm-login .rz-button.fm-login__google .rzi { display: none; } /* the Google "G" icon inside the button replaces the Material icon */
