/* V128 buttons and controls */
button, .tool-button, .primary-button, .system-tab, .title-selector, .image-open-button {
    border: 1px solid var(--border);
    border-radius: var(--radius-control);
    background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.025)), var(--surface-control);
    color: var(--text);
    min-height: 34px;
    min-width: 34px;
    padding: 0 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    line-height: 1;
    font-weight: 850;
    text-decoration: none;
    transition: transform var(--transition), background var(--transition), border-color var(--transition), color var(--transition), box-shadow var(--transition);
    -webkit-tap-highlight-color: transparent;
}
button:hover, .tool-button:hover, .primary-button:hover, .system-tab:hover, .image-open-button:hover { transform: translateY(-1px); border-color: color-mix(in srgb, var(--gold) 38%, var(--border-strong)); background: var(--surface-control-hover); }
button:active, .tool-button:active, .primary-button:active, .system-tab:active { transform: translateY(0); }
.primary-button, .tool-button.active, .system-tab.active, .system-tab[aria-selected="true"] { border-color: color-mix(in srgb, var(--gold) 60%, transparent); color: var(--gold); background: color-mix(in srgb, var(--gold) 14%, var(--surface-control)); }
.danger-button { border-color: color-mix(in srgb, var(--danger) 54%, transparent); color: #ffc2bb; }
.card-titlebar button, .card-tools .tool-button, .map-controls button, .entity-modal-header .modal-actions button, .modal-actions .modal-close-button, .modal-actions .modal-edit-button, .common-icon-control, .icon-action-button {
    width: 34px !important; height: 34px !important; min-width: 34px !important; min-height: 34px !important; max-width: 34px !important; max-height: 34px !important;
    padding: 0 !important; font-size: .92rem !important; letter-spacing: 0 !important; text-transform: none !important; overflow: hidden !important;
}
.map-controls button { width: 42px !important; max-width: 42px !important; }
.card-titlebar button::before, .map-controls button::before, .modal-actions button::before { content: none !important; }

/* =========================================================
   V132 BUTTON PRIMITIVES
   Shared visual grammar for icon and icon+label command buttons.
========================================================= */
.button-primitive {
    position: relative;
    white-space: nowrap;
}
.button-primitive-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1em;
    height: 1.1em;
    line-height: 1;
    font-size: .98rem;
    font-weight: 950;
    flex: 0 0 auto;
}
.button-primitive-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}
.button-icon-only {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    max-height: 34px !important;
    padding: 0 !important;
    gap: 0 !important;
}
.button-icon-only .button-primitive-label {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    overflow: hidden !important;
    clip-path: inset(50%) !important;
    white-space: nowrap !important;
}
.button-icon-label {
    gap: 7px;
}
.app-navigation .button-icon-only {
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    max-width: 42px !important;
    max-height: 42px !important;
}
.entity-modal-header .button-icon-only,
.modal-actions .button-icon-only,
.card-tools .button-icon-only {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
}
.ai-assistant-section .button-icon-label,
.conversation-actions .button-icon-label,
.conversation-import-export .button-icon-label,
.system-data-tools .button-icon-label,
.system-collection .button-icon-label {
    min-height: 34px;
    padding-inline: 10px;
}
.modal-close-button .button-primitive-icon,
.button-primitive[data-button-role="close"] .button-primitive-icon {
    font-size: 1.15rem;
}
.button-primitive[data-button-role="play"] .button-primitive-icon {
    transform: translateX(1px);
}
.button-primitive[data-button-role^="export"] .button-primitive-icon,
.button-primitive[data-button-role^="import"] .button-primitive-icon {
    font-size: 1rem;
}

/* =========================================================
   PATCH 022 - BUTTON PRIMITIVE FINAL PASS
   Keep command buttons visually unified without changing behavior.
========================================================= */
.app-navigation {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.app-navigation .tool-button,
.app-navigation .button-primitive {
    border-radius: 14px;
}

.app-navigation .tool-button.active,
.app-navigation .tool-button[aria-pressed="true"] {
    box-shadow:
        0 0 0 1px color-mix(in srgb, var(--gold) 46%, transparent),
        0 0 18px color-mix(in srgb, var(--gold) 18%, transparent);
}

.map-controls .button-primitive,
.map-controls .tool-button {
    width: 42px !important;
    height: 42px !important;
    min-width: 42px !important;
    min-height: 42px !important;
    max-width: 42px !important;
    max-height: 42px !important;
    padding: 0 !important;
}

.map-controls .button-primitive-icon {
    font-size: 1rem;
    line-height: 1;
}

.entity-modal-header .modal-actions {
    width: 42px;
    max-width: 42px;
    flex: 0 0 42px;
}

.entity-modal-header .modal-close-button.button-primitive,
.entity-modal-header .modal-close-button {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    max-width: 34px !important;
    max-height: 34px !important;
}

.title-selector.button-primitive,
.title-selector.button-icon-label {
    justify-content: flex-start;
    max-width: 100%;
}

.title-selector .button-primitive-icon {
    opacity: .72;
    color: var(--gold);
}

.button-primitive-icon svg {
    width: 1em;
    height: 1em;
    display: block;
}

.button-primitive[data-button-role="fit"] .button-primitive-icon,
.button-primitive[data-button-role="fullscreen"] .button-primitive-icon,
.button-primitive[data-button-role="full"] .button-primitive-icon {
    font-size: 1.05rem;
}

