/* ========================================
   Bee × Galaxy primitives
   按下 / 开关 / 勾选 / 加载 / 过渡
   来源见 static/vendor/galaxy/SOURCES.md
   映射到现有 .btn / .form-switch / .form-check-input
   ======================================== */

:root {
    --press-scale: 0.97;
    --press-lift: -1px;
    --press-duration: 180ms;
    --switch-width: 2.75rem;
    --switch-height: 1.5rem;
    --switch-thumb: 1.125rem;
    --loader-size: 2.25rem;
    --loader-size-sm: 1rem;
    --loader-size-lg: 4.5rem;
    --loader-track: rgba(37, 99, 235, 0.16);
    --gx-press-ease: var(--ease-spring, cubic-bezier(0.175, 0.885, 0.32, 1.15));
    --gx-ease: var(--ease, cubic-bezier(0.4, 0, 0.2, 1));
}

/* ----- 按下物理：悬停抬起 + 按下压实 ----- */
.btn,
.btn-solid,
button.btn,
a.btn,
.btn-header-outline,
.btn-submit,
.sd-btn,
.btn-ghost,
.page-link,
.m-submit-btn,
.m-btn-primary,
.m-primary-btn,
button.m-submit,
.app-icon,
.disassembly-card,
.reason-chip {
    transition:
        transform var(--press-duration) var(--gx-press-ease),
        box-shadow var(--transition-base, 0.25s var(--gx-ease)),
        background var(--transition-base, 0.25s var(--gx-ease)),
        color 0.2s var(--gx-ease),
        border-color 0.2s var(--gx-ease),
        opacity 0.2s var(--gx-ease);
}

.btn:hover:not(:disabled):not(.disabled):not(.is-loading),
.btn-solid:hover:not(:disabled):not(.disabled):not(.is-loading),
.btn-header-outline:hover,
.btn-submit:hover:not([data-busy]):not(.is-loading),
.sd-btn:hover:not(:disabled),
.page-link:hover,
.m-submit-btn:hover:not(:disabled):not(.is-loading),
.m-btn-primary:hover:not(:disabled):not(.is-loading),
.disassembly-card:hover,
.reason-chip:hover {
    transform: translateY(var(--press-lift));
}

.btn-gradient:hover:not(:disabled):not(.is-loading),
.btn-warning-gradient:hover:not(:disabled),
.btn-gradient-primary:hover:not(:disabled),
.btn-gradient-success:hover:not(:disabled),
.btn-gradient-warning:hover:not(:disabled),
.btn-gradient-danger:hover:not(:disabled),
.btn-gradient-purple:hover:not(:disabled),
.btn-gradient-cyan:hover:not(:disabled),
.btn-hero-primary:hover:not(:disabled),
.btn-hero-warning:hover:not(:disabled),
.btn-hero-outline:hover:not(:disabled),
.btn-warm:hover:not(:disabled),
.btn-warm-gradient:hover:not(:disabled),
.btn-info:not(.no-gradient):hover:not(:disabled) {
    transform: translateY(var(--press-lift));
}

.btn:active:not(:disabled):not(.disabled):not(.is-loading),
.btn-solid:active:not(:disabled):not(.disabled):not(.is-loading),
.btn-header-outline:active,
.btn-submit:active:not(.is-loading),
.sd-btn:active:not(:disabled),
.page-link:active,
.m-submit-btn:active:not(:disabled),
.m-btn-primary:active:not(:disabled),
button.m-submit:active,
.app-icon:active,
.disassembly-card:active,
.reason-chip:active,
.btn-gradient:active:not(:disabled):not(.is-loading),
.btn-warning-gradient:active:not(:disabled),
.btn-gradient-primary:active:not(:disabled),
.btn-gradient-success:active:not(:disabled),
.btn-gradient-warning:active:not(:disabled),
.btn-gradient-danger:active:not(:disabled),
.btn-warm-gradient:active:not(:disabled) {
    transform: translateY(0) scale(var(--press-scale));
}

.btn:disabled,
.btn.disabled,
.btn.is-loading,
.page-link.disabled {
    transform: none;
    cursor: not-allowed;
}

.btn:disabled,
.btn.disabled {
    opacity: 0.5;
}

/* 表格行内按钮：只压实，不抬起，避免行高抖动 */
.table .btn:hover:not(:disabled):not(.is-loading),
.dataTable .btn:hover:not(:disabled):not(.is-loading) {
    transform: none;
}
.table .btn:active:not(:disabled):not(.is-loading),
.dataTable .btn:active:not(:disabled):not(.is-loading) {
    transform: scale(var(--press-scale));
}

/* 按钮组内成员保持齐平 */
.btn-group > .btn:hover:not(:disabled):not(.is-loading),
.check-option-group > .btn:hover:not(:disabled) {
    transform: none;
}
.btn-group > .btn:active:not(:disabled):not(.is-loading),
.check-option-group > .btn:active:not(:disabled) {
    transform: scale(0.98);
}

/* 工单操作列 / 窄屏操作条 / 预填卡片脚部：一体表面，只压实不抬起 */
a.btn-icon-text,
button.btn-icon-text,
a.mobile-btn,
button.mobile-btn,
a.pf-act,
button.pf-act {
    --gx-blob: rgba(255, 255, 255, 0.28);
    position: relative;
    overflow: hidden;
    isolation: isolate;
    cursor: pointer;
    transition:
        transform var(--press-duration) var(--gx-press-ease),
        box-shadow var(--transition-base, 0.25s var(--gx-ease)),
        background var(--transition-base, 0.25s var(--gx-ease)),
        color 0.2s var(--gx-ease),
        border-color 0.2s var(--gx-ease),
        opacity 0.2s var(--gx-ease);
}

.btn-icon-text:hover:not(:disabled):not(.is-loading),
.mobile-btn:hover:not(:disabled):not(.is-loading),
.pf-act:hover:not(:disabled):not(.is-loading) {
    transform: none;
}

.btn-icon-text:active:not(:disabled):not(.is-loading),
.mobile-btn:active:not(:disabled):not(.is-loading),
.pf-act:active:not(:disabled):not(.is-loading) {
    transform: scale(var(--press-scale));
}

.btn-icon-text:disabled,
.mobile-btn:disabled,
.pf-act:disabled {
    transform: none;
    cursor: not-allowed;
}

.btn-icon-text::after,
.mobile-btn::after,
.pf-act::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 0;
    height: 0;
    z-index: 0;
    pointer-events: none;
    border-radius: 999px;
    background: var(--gx-blob);
    transform: translate(-50%, -50%);
    transition:
        width 500ms cubic-bezier(0, 0, 0.2, 1),
        height 500ms cubic-bezier(0, 0, 0.2, 1);
}

.btn-icon-text:hover:not(:disabled):not(.is-loading)::after,
.mobile-btn:hover:not(:disabled):not(.is-loading)::after,
.pf-act:hover:not(:disabled):not(.is-loading)::after {
    width: 14em;
    height: 14em;
}

.btn-icon-text > i,
.btn-icon-text > span,
.mobile-btn > i,
.mobile-btn > span,
.pf-act > i,
.pf-act > span {
    position: relative;
    z-index: 1;
}

.btn-icon-text.btn-soft-primary,
.btn-icon-text.btn-soft-info,
.mobile-btn-primary,
.pf-act:not(.pf-act--build):not(.pf-act--del) {
    --gx-blob: rgba(37, 99, 235, 0.12);
}

.pf-act--del {
    --gx-blob: rgba(239, 68, 68, 0.14);
}

.btn-icon-text:focus-visible,
.mobile-btn:focus-visible,
.pf-act:focus-visible {
    outline: 2px solid var(--primary, #2563eb);
    outline-offset: 2px;
}

.pf-act--del:focus-visible,
.btn-icon-text.btn-soft-danger:focus-visible {
    outline-color: var(--danger, #ef4444);
}

/* 工单责任人 / 状态：同一套压实，行内不抬起 */
span.avatar-chip,
span.status-badge-pill {
    --gx-blob: rgba(255, 255, 255, 0.22);
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition:
        transform var(--press-duration) var(--gx-press-ease),
        box-shadow var(--transition-base, 0.25s var(--gx-ease)),
        background var(--transition-base, 0.25s var(--gx-ease));
}

span.avatar-chip:hover,
span.status-badge-pill:hover {
    transform: none;
}

span.avatar-chip:active,
span.status-badge-pill:active {
    transform: scale(var(--press-scale));
}

/* 实心语义按钮：中心涟漪（cssbuttons-io / weak-firefox-5） */
.btn-primary:not(.btn-icon-split),
.btn-success:not(.btn-icon-split),
.btn-danger:not(.btn-icon-split),
.btn-warning:not(.btn-icon-split),
.btn-info:not(.btn-icon-split),
.btn-gradient,
.btn-submit {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

/* 一体表面：去掉 SB Admin 图标井（cssbuttons-io / weak-firefox-5） */
.btn-icon-split,
.btn-solid {
    --gx-blob: rgba(255, 255, 255, 0.28);
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

.btn-icon-split {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center;
    gap: 0.5rem;
    padding: 0 1.05rem 0 0.9rem !important;
    min-height: 44px;
    border-radius: var(--radius-md, 12px) !important;
}

.btn-icon-split::before,
.hero-actions .btn-solid.primary::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    border-radius: inherit;
    background-image: linear-gradient(180deg, rgba(255, 255, 255, 0.22), transparent 55%);
}

.btn-icon-split::after,
.hero-actions .btn-solid::after {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 0;
    height: 0;
    z-index: 0;
    pointer-events: none;
    border-radius: 999px;
    background: var(--gx-blob);
    transform: translate(-50%, -50%);
    transition:
        width 500ms cubic-bezier(0, 0, 0.2, 1),
        height 500ms cubic-bezier(0, 0, 0.2, 1);
}

.btn-icon-split:hover:not(:disabled):not(.is-loading)::after,
.hero-actions .btn-solid:hover:not(:disabled):not(.is-loading)::after {
    width: 14em;
    height: 14em;
}

.btn-icon-split .icon,
.btn-icon-split .text,
.btn-icon-split .text-white-50,
.btn-icon-split .icon i {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: center !important;
    background: transparent !important;
    padding: 0 !important;
    margin: 0 !important;
    min-width: 0 !important;
    width: auto !important;
    color: inherit !important;
    opacity: 1 !important;
}

.hero-actions .btn-solid > i {
    position: relative;
    z-index: 1;
}

.btn-icon-split.btn-secondary {
    --gx-blob: rgba(37, 99, 235, 0.12);
    background: var(--bg-surface, #ffffff) !important;
    color: var(--text-muted, #64748b) !important;
    border: 1.5px solid var(--border-soft, #e2e8f0) !important;
}

.btn-icon-split.btn-secondary::before {
    background-image: none;
}

.btn-icon-split.btn-warning {
    background: var(--warning, #f59e0b) !important;
    color: #ffffff !important;
}

.btn-icon-split.btn-info {
    --gx-blob: rgba(14, 165, 233, 0.16);
    background: #ecfeff !important;
    color: #0c4a6e !important;
    border: 1.5px solid rgba(14, 165, 233, 0.28) !important;
}

.btn-icon-split.btn-info::before {
    background-image: none;
}

.btn-icon-split.btn-primary,
.btn-action-diagnosis {
    background: var(--primary, #2563eb) !important;
    color: #ffffff !important;
}

.btn-icon-split.btn-danger {
    background: var(--danger, #ef4444) !important;
    color: #ffffff !important;
}

.btn-icon-split.btn-success {
    background: var(--success, #10b981) !important;
    color: #ffffff !important;
}

.hero-actions .btn-solid.primary {
    background: var(--primary, #2563eb) !important;
    color: #ffffff !important;
    box-shadow: 0 6px 16px var(--primary-shadow, rgba(37, 99, 235, 0.25));
}

.hero-actions .btn-solid.secondary {
    --gx-blob: rgba(37, 99, 235, 0.12);
    background: var(--bg-surface, #ffffff) !important;
    color: var(--text-muted, #64748b) !important;
    border: 1.5px solid var(--border-soft, #e2e8f0) !important;
}

.hero-actions .btn-solid {
    box-sizing: border-box;
    min-height: 44px !important;
    padding: 0.7rem 1.35rem !important;
    font-size: 14px !important;
}

.hero-actions .btn-solid.primary:hover:not(:disabled) {
    background: var(--primary-hover, #1d4ed8) !important;
}

.hero-actions .btn-solid.secondary:hover:not(:disabled) {
    background: var(--bg-muted, #f1f5f9) !important;
    color: var(--text-main, #0f172a) !important;
    border-color: var(--border-hover, #cbd5e1) !important;
}

@media (max-width: 992px) {
    .hero.card-clean {
        align-items: stretch;
    }

    .hero .hero-content {
        width: 100%;
        max-width: 100%;
    }

    .hero .hero-actions {
        width: 100%;
        justify-content: center;
    }
}

@media (max-width: 576px) {
    .hero .hero-actions {
        gap: 0.625rem;
    }

    .hero .hero-actions .btn-solid {
        flex: 1 1 9.5rem !important;
        justify-content: center;
    }
}

.action-buttons-container,
.bee-action-bar {
    flex-wrap: wrap !important;
    overflow: visible;
}

.action-buttons-container > .btn-icon-split,
.bee-action-bar > .btn-icon-split {
    flex: 0 1 auto !important;
    min-width: 0 !important;
}

.table .btn-icon-split,
.dataTable .btn-icon-split,
.btn-group .btn-icon-split {
    min-height: unset;
    padding: 0.35rem 0.7rem !important;
}

.table .btn-icon-split::before,
.table .btn-icon-split::after,
.dataTable .btn-icon-split::before,
.dataTable .btn-icon-split::after,
.btn-group .btn-icon-split::before,
.btn-group .btn-icon-split::after {
    content: none;
}

@media (prefers-reduced-motion: reduce) {
    .btn-icon-split::after,
    .btn-icon-split:hover::after,
    .hero-actions .btn-solid::after,
    .hero-actions .btn-solid:hover::after,
    .btn-icon-text::after,
    .btn-icon-text:hover::after,
    .mobile-btn::after,
    .mobile-btn:hover::after,
    .pf-act::after,
    .pf-act:hover::after {
        width: 0;
        height: 0;
        transition: none;
    }
}

.bee-ripple {
    position: absolute;
    border-radius: 999px;
    pointer-events: none;
    background: rgba(255, 255, 255, 0.35);
    transform: scale(0);
    animation: bee-ripple-out 520ms var(--gx-ease) forwards;
    z-index: 1;
}

@keyframes bee-ripple-out {
    to {
        transform: scale(1);
        opacity: 0;
    }
}

.btn-icon-text.btn-soft-primary .bee-ripple,
.btn-icon-text.btn-soft-info .bee-ripple,
.mobile-btn-primary .bee-ripple,
.pf-act:not(.pf-act--build) .bee-ripple {
    background: rgba(37, 99, 235, 0.22);
}

.pf-act--del .bee-ripple {
    background: rgba(239, 68, 68, 0.22);
}

/* ----- 开关（AbanoubMagdy1 / pink-panda-32 → Bootstrap form-switch） ----- */
.form-check.form-switch {
    min-height: 44px;
    display: flex;
    align-items: center;
    padding-left: 3.35rem;
}

.form-check.form-switch .form-check-input {
    width: var(--switch-width);
    height: var(--switch-height);
    margin-top: 0;
    margin-left: -3.35rem;
    border: 0;
    border-radius: 999px;
    background-color: #cbd5e1;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3.4' fill='%23ffffff'/%3E%3C/svg%3E");
    background-position: left center;
    background-size: var(--switch-thumb) var(--switch-thumb);
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.06);
    cursor: pointer;
    transition:
        background-position 200ms var(--gx-press-ease),
        background-color 200ms var(--gx-ease),
        box-shadow 180ms var(--gx-ease);
}

.form-check.form-switch .form-check-input:checked {
    background-color: var(--primary, #2563eb);
    background-position: right center;
}

.form-check.form-switch .form-check-input:focus {
    box-shadow: 0 0 0 2px var(--bg-surface, #fff), 0 0 0 4px rgba(37, 99, 235, 0.22);
}

.form-check.form-switch .form-check-input:disabled {
    opacity: 0.45;
    cursor: not-allowed;
}

/* ----- 复选 / 单选（mrhyddenn 缩放入场，保留原生 input） ----- */
.form-check:not(.form-switch) .form-check-input[type="checkbox"],
.form-check-input[type="radio"] {
    width: 1.15rem;
    height: 1.15rem;
    margin-top: 0.2em;
    border: 1.5px solid var(--border-hover, #cbd5e1);
    background-color: var(--bg-surface, #fff);
    cursor: pointer;
    transition:
        border-color 180ms var(--gx-ease),
        background-color 180ms var(--gx-ease),
        box-shadow 180ms var(--gx-ease),
        transform 160ms var(--gx-press-ease);
}

.form-check-input[type="radio"] {
    border-radius: 50%;
}

.form-check:not(.form-switch) .form-check-input[type="checkbox"] {
    border-radius: 0.35rem;
}

.form-check:not(.form-switch) .form-check-input[type="checkbox"]:checked,
.form-check-input[type="radio"]:checked {
    background-color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
}

.form-check:not(.form-switch) .form-check-input[type="checkbox"]:active,
.form-check-input[type="radio"]:active {
    transform: scale(0.92);
}

.form-check-input[type="checkbox"]:focus,
.form-check-input[type="radio"]:focus {
    box-shadow: 0 0 0 2px var(--bg-surface, #fff), 0 0 0 4px rgba(37, 99, 235, 0.22);
}

/* ----- 双环加载 ----- */
.bee-spinner {
    --_s: var(--loader-size);
    width: var(--_s);
    height: var(--_s);
    display: inline-block;
    position: relative;
    vertical-align: middle;
    flex: 0 0 var(--_s);
}

.bee-spinner-sm { --_s: var(--loader-size-sm); }
.bee-spinner-lg { --_s: var(--loader-size-lg); }

.bee-spinner::before,
.bee-spinner::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    border-style: solid;
    border-color: transparent;
    animation: bee-spin-ring 1.05s linear infinite;
}

.bee-spinner::before {
    inset: 0;
    border-width: 2.5px;
    border-top-color: var(--primary, #2563eb);
    border-right-color: var(--primary, #2563eb);
}

.bee-spinner::after {
    inset: 22%;
    border-width: 2px;
    border-bottom-color: var(--accent, #0ea5e9);
    border-left-color: var(--accent, #0ea5e9);
    animation-duration: 1.35s;
    animation-direction: reverse;
}

.bee-spinner-sm::before { border-width: 2px; }
.bee-spinner-sm::after { border-width: 1.5px; }

@keyframes bee-spin-ring {
    to { transform: rotate(360deg); }
}

.bee-inline-busy,
.bee-loading-block {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    color: var(--text-muted, #64748b);
}

.bee-loading-block {
    display: flex;
    flex-direction: column;
    width: 100%;
    padding: 1.5rem 0.75rem;
    text-align: center;
}

.bee-loading-text {
    font-size: 0.875rem;
}

/* 按钮 busy：原内容保留，覆盖一层双环 */
.btn.is-loading,
.btn-submit.is-loading,
.m-submit-btn.is-loading,
.m-btn-primary.is-loading {
    position: relative;
    pointer-events: none;
    cursor: wait;
}

.btn.is-loading:has(> .bee-busy-overlay) > :not(.bee-busy-overlay),
.btn-submit.is-loading:has(> .bee-busy-overlay) > :not(.bee-busy-overlay),
.m-submit-btn.is-loading:has(> .bee-busy-overlay) > :not(.bee-busy-overlay) {
    visibility: hidden;
}

.bee-busy-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    z-index: 2;
    color: inherit;
    pointer-events: none;
}

.btn-primary.is-loading .bee-busy-overlay,
.btn-success.is-loading .bee-busy-overlay,
.btn-danger.is-loading .bee-busy-overlay,
.btn-warning.is-loading .bee-busy-overlay,
.btn-info.is-loading .bee-busy-overlay,
.btn-gradient.is-loading .bee-busy-overlay,
.btn-submit.is-loading .bee-busy-overlay,
.m-submit-btn.is-loading .bee-busy-overlay {
    color: #fff;
}

.btn-primary.is-loading .bee-spinner::before,
.btn-success.is-loading .bee-spinner::before,
.btn-danger.is-loading .bee-spinner::before,
.btn-warning.is-loading .bee-spinner::before,
.btn-info.is-loading .bee-spinner::before,
.btn-submit.is-loading .bee-spinner::before {
    border-top-color: #fff;
    border-right-color: #fff;
}

.btn-primary.is-loading .bee-spinner::after,
.btn-submit.is-loading .bee-spinner::after {
    border-bottom-color: rgba(255, 255, 255, 0.55);
    border-left-color: rgba(255, 255, 255, 0.55);
}

/* 残留 FA 转圈：收成同一双环，避免内容区各写各的 */
i.fa-spinner.fa-spin,
i.fa-circle-notch.fa-spin {
    display: inline-block;
    width: 1em;
    height: 1em;
    font-size: inherit;
    line-height: 1;
    color: transparent !important;
    background: none !important;
    position: relative;
    overflow: hidden;
    vertical-align: -0.125em;
}

i.fa-spinner.fa-spin::before,
i.fa-circle-notch.fa-spin::before,
i.fa-spinner.fa-spin::after,
i.fa-circle-notch.fa-spin::after {
    content: "" !important;
    position: absolute;
    border-radius: 50%;
    border-style: solid;
    border-color: transparent;
    animation: bee-spin-ring 1.05s linear infinite;
}

i.fa-spinner.fa-spin::before,
i.fa-circle-notch.fa-spin::before {
    inset: 0;
    border-width: 2px;
    border-top-color: var(--primary, #2563eb);
    border-right-color: var(--primary, #2563eb);
}

i.fa-spinner.fa-spin::after,
i.fa-circle-notch.fa-spin::after {
    inset: 22%;
    border-width: 1.5px;
    border-bottom-color: var(--accent, #0ea5e9);
    border-left-color: var(--accent, #0ea5e9);
    animation-duration: 1.35s;
    animation-direction: reverse;
}

/* Bootstrap spinner → 同一双环 */
.spinner-border {
    width: var(--loader-size);
    height: var(--loader-size);
    border: 0 !important;
    background: none !important;
    animation: none !important;
    position: relative;
    vertical-align: middle;
}

.spinner-border::before,
.spinner-border::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    border-style: solid;
    border-color: transparent;
    animation: bee-spin-ring 1.05s linear infinite;
}

.spinner-border::before {
    inset: 0;
    border-width: 2.5px;
    border-top-color: var(--primary, #2563eb);
    border-right-color: var(--primary, #2563eb);
}

.spinner-border::after {
    inset: 22%;
    border-width: 2px;
    border-bottom-color: var(--accent, #0ea5e9);
    border-left-color: var(--accent, #0ea5e9);
    animation-duration: 1.35s;
    animation-direction: reverse;
}

.spinner-border-sm {
    width: var(--loader-size-sm);
    height: var(--loader-size-sm);
}

.spinner-border-sm::before { border-width: 2px; }
.spinner-border-sm::after { border-width: 1.5px; }

/* 登录遮罩双环与全局令牌对齐 */
.lo-spinner .lo-ring-1 {
    border-top-color: var(--primary, #2563eb);
    border-right-color: var(--primary, #2563eb);
}
.lo-spinner .lo-ring-2 {
    border-bottom-color: var(--accent, #0ea5e9);
    border-left-color: var(--accent, #0ea5e9);
}

.record-loading-overlay .spinner-border,
.record-loading-overlay .bee-spinner {
    color: var(--primary, #2563eb);
}

/* 分页手感 */
.pagination .page-link {
    border-radius: var(--radius-sm, 8px);
}

.pagination .page-item.active .page-link {
    background: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
}

/* 焦点环与输入框同一套 */
.btn:focus-visible,
.page-link:focus-visible,
.btn-header-outline:focus-visible,
.btn-submit:focus-visible,
.form-check-input:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px var(--bg-surface, #fff), 0 0 0 4px rgba(37, 99, 235, 0.28);
}

/* 员工 /m/ 卡片入场：Cards 家族的短位移，无霓虹 */
.gx-card-enter {
    /* backwards：入场前用 0% 态，结束后把 transform 还给 :hover，避免 both 把抬起盖死 */
    animation: gx-card-in 380ms var(--gx-press-ease, cubic-bezier(0.175, 0.885, 0.32, 1.15)) backwards;
}

.ms-kpi-grid .gx-card-enter:nth-child(2) { animation-delay: 40ms; }
.ms-kpi-grid .gx-card-enter:nth-child(3) { animation-delay: 80ms; }
.ms-kpi-grid .gx-card-enter:nth-child(4) { animation-delay: 120ms; }

@keyframes gx-card-in {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: none;
    }
}

.ms-tool,
.ms-copy,
.ms-text-btn {
    transition: transform var(--press-duration, 180ms) var(--gx-press-ease), color 160ms var(--gx-ease);
}

.ms-tool-icon {
    transition: transform var(--press-duration, 180ms) var(--gx-press-ease);
}

.ms-tab {
    transition: transform var(--press-duration, 180ms) var(--gx-press-ease), color 160ms var(--gx-ease);
}

.ms-tab.is-on i {
    transform: translateY(-1px);
}

/* ----- 确认弹窗：拆机选择 + 页脚动作（全站一份） -----
   按下/勾选沿用 weak-firefox-5 与 slippery-bear-64。
   覆盖 base-shell 旧居中卡片、黄底原因区、隐藏勾选。 */

.confirm-modal-footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: stretch;
    align-items: stretch;
    gap: 12px;
    padding: 16px 20px 20px;
}

.confirm-modal-footer > .btn {
    flex: 1 1 8rem;
    min-height: 48px;
    min-width: 0;
    padding: 12px 18px;
    font-size: 1rem;
    border-radius: var(--radius-md, 12px);
}

#disassemblyStatusSection {
    text-align: left;
    padding: 0;
    margin-top: 4px;
}

.disassembly-cards {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 10px;
    margin-top: 4px;
}

.disassembly-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    margin: 0;
    padding: 16px 10px 14px;
    text-align: center;
    cursor: pointer;
    background: var(--bg-surface, #fff);
    border: 1.5px solid var(--border-soft, #e2e8f0);
    border-radius: var(--radius-lg, 16px);
    box-shadow: none;
    overflow: hidden;
}

.disassembly-card::before {
    content: none;
}

.disassembly-card .visually-hidden {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.disassembly-card:hover {
    border-color: var(--border-hover, #cbd5e1);
    background: var(--bg-muted, #f8fafc);
    box-shadow: none;
}

.disassembly-card:focus-within {
    box-shadow: 0 0 0 2px var(--bg-surface, #fff), 0 0 0 4px rgba(37, 99, 235, 0.22);
}

.disassembly-card.active,
.disassembly-card:has(:checked) {
    border-color: var(--primary, #2563eb);
    background: var(--primary-light, #eff6ff);
}

.disassembly-card.active[data-value="1"],
.disassembly-card:has([value="1"]:checked) {
    border-color: var(--success, #10b981);
    background: var(--success-soft, #ecfdf5);
}

.disassembly-card.active[data-value="2"],
.disassembly-card:has([value="2"]:checked) {
    border-color: var(--aftersale, #ea580c);
    background: var(--warning-soft, #fffbeb);
}

.disassembly-card.active[data-value="3"],
.disassembly-card:has([value="3"]:checked) {
    border-color: var(--text-muted, #64748b);
    background: var(--bg-muted, #f1f5f9);
}

.disassembly-card.active[data-value="1"]::before,
.disassembly-card.active[data-value="2"]::before,
.disassembly-card.active[data-value="3"]::before {
    content: none;
}

.disassembly-card .card-icon {
    width: 44px;
    height: 44px;
    margin: 0 auto 10px;
    border-radius: 12px;
    font-size: 1.125rem;
}

.disassembly-card .card-icon.success { background: var(--success-soft, #ecfdf5); color: var(--success-ink, #166534); }
.disassembly-card .card-icon.warning { background: var(--warning-soft, #fffbeb); color: var(--aftersale, #ea580c); }
.disassembly-card .card-icon.secondary { background: var(--border-soft, #e2e8f0); color: var(--text-muted, #64748b); }

.disassembly-card.active[data-value="1"] .card-icon,
.disassembly-card:has([value="1"]:checked) .card-icon {
    background: var(--success, #10b981);
    color: #fff;
}

.disassembly-card.active[data-value="2"] .card-icon,
.disassembly-card:has([value="2"]:checked) .card-icon {
    background: var(--aftersale, #ea580c);
    color: #fff;
}

.disassembly-card.active[data-value="3"] .card-icon,
.disassembly-card:has([value="3"]:checked) .card-icon {
    background: var(--text-muted, #64748b);
    color: #fff;
}

.disassembly-card .card-title {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--text-main, #0f172a);
    margin-bottom: 2px;
}

.disassembly-card .card-desc {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--text-muted, #64748b);
    line-height: 1.35;
}

.disassembly-card .bee-ripple {
    background: rgba(37, 99, 235, 0.16);
}

#disassemblyReasonsSection {
    margin-top: 14px;
    padding: 14px;
    background: var(--bg-muted, #f8fafc);
    border: 1px solid var(--border-soft, #e2e8f0);
    border-radius: var(--radius-lg, 16px);
    animation: none;
}

.reasons-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
    color: var(--text-main, #0f172a);
    font-weight: 700;
    font-size: 0.875rem;
}

.reasons-header i { color: var(--text-muted, #64748b); }
.reasons-header small { font-weight: 500; color: var(--text-muted, #64748b); }

.reasons-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
}

.reason-chip {
    display: flex;
    align-items: center;
    gap: 5px;
    width: 100%;
    min-width: 0;
    min-height: 34px;
    margin: 0;
    padding: 5px 7px;
    background: var(--bg-surface, #fff);
    border: 1.5px solid var(--border-soft, #e2e8f0);
    border-radius: 10px;
    cursor: pointer;
    box-sizing: border-box;
}

.reason-chip > input[type="checkbox"] {
    display: inline-block;
    appearance: none;
    -webkit-appearance: none;
    flex: 0 0 0.95rem;
    width: 0.95rem;
    height: 0.95rem;
    margin: 0;
    border: 1.5px solid var(--border-hover, #cbd5e1);
    border-radius: 0.3rem;
    background-color: var(--bg-surface, #fff);
    background-repeat: no-repeat;
    background-position: center;
    background-size: 0.62rem;
    cursor: pointer;
}

.reason-chip > input[type="checkbox"]:checked {
    background-color: var(--aftersale, #ea580c);
    border-color: var(--aftersale, #ea580c);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2.4' d='M3.4 8.4 6.5 11.4 12.6 4.6'/%3E%3C/svg%3E");
}

.reason-chip > i {
    flex: 0 0 auto;
    width: 0.85rem;
    font-size: 0.75rem;
    line-height: 1;
    text-align: center;
    color: var(--text-muted, #64748b);
}

.reason-chip > span {
    flex: 1 1 auto;
    min-width: 0;
    display: block;
    padding: 0;
    background: none;
    border: 0;
    box-shadow: none;
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.25;
    color: var(--text-main, #0f172a);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.reason-chip:hover {
    border-color: var(--border-hover, #cbd5e1);
    background: var(--bg-muted, #f8fafc);
}

.reason-chip:hover > span {
    background: none;
    border: 0;
    color: inherit;
}

.reason-chip:has(:checked) {
    border-color: var(--aftersale, #ea580c);
    background: var(--warning-soft, #fffbeb);
}

.reason-chip:has(:checked) > i {
    color: var(--aftersale, #ea580c);
}

.reason-chip:has(:checked) > span,
.reason-chip input[type="checkbox"]:checked + span,
.reason-chip input[type="checkbox"]:checked + i + span {
    background: none;
    border: 0;
    box-shadow: none;
    color: var(--warning-ink, #7c2d12);
}

@media (max-width: 576px) {
    .disassembly-cards { grid-template-columns: 1fr; }
    .reasons-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .confirm-modal-footer > .btn { flex-basis: 100%; }
}

/* ----- 客户登记向导（/prefill/quick）：同一套瓦片 / 芯片 / 勾选物理 -----
   瓦片沿用 .disassembly-card 的抬起 + 压实 + 涟漪；芯片沿用 .reason-chip 的压实；
   「稍后补填」勾选沿用 slippery-bear-64 的可见勾选。颜色与圆角由 prefill_quick.css 令牌决定。 */
.pq-app .choice-tile,
.pq-app .ship-mode,
.pq-app .courier,
.pq-app .pay-opt,
.pq-app .choice-cell,
.pq-app .sn-toggle-pill {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    transition:
        transform var(--press-duration) var(--gx-press-ease),
        box-shadow 0.2s var(--gx-ease),
        background-color 0.2s var(--gx-ease),
        border-color 0.2s var(--gx-ease),
        color 0.2s var(--gx-ease),
        opacity 0.2s var(--gx-ease);
}

.pq-app .choice-tile:hover,
.pq-app .ship-mode:hover,
.pq-app .courier:hover,
.pq-app .pay-opt:not(.disabled):hover,
.pq-app .choice-cell:hover {
    transform: translateY(var(--press-lift));
}

.pq-app .choice-tile:active,
.pq-app .ship-mode:active,
.pq-app .courier:active,
.pq-app .pay-opt:not(.disabled):active,
.pq-app .choice-cell:active,
.pq-app .sn-toggle-pill:active {
    transform: translateY(0) scale(var(--press-scale));
}

.pq-app .chip,
.pq-app .svc-add,
.pq-app .courier-more,
.pq-app .addr-warn-btn,
.pq-app .dev-add {
    transition:
        transform var(--press-duration) var(--gx-press-ease),
        background-color 0.18s var(--gx-ease),
        border-color 0.18s var(--gx-ease),
        color 0.18s var(--gx-ease),
        opacity 0.18s var(--gx-ease);
}

.pq-app .chip:active,
.pq-app .svc-add:active:not(:disabled),
.pq-app .courier-more:active,
.pq-app .addr-warn-btn:active,
.pq-app .dev-add:active:not(:disabled) {
    transform: scale(var(--press-scale));
}

.pq-app .choice-tile .bee-ripple,
.pq-app .ship-mode .bee-ripple,
.pq-app .courier .bee-ripple,
.pq-app .pay-opt .bee-ripple,
.pq-app .choice-cell .bee-ripple,
.pq-app .sn-skip .bee-ripple {
    background: rgba(37, 99, 235, 0.16);
}

.pq-app .btn-ghost .bee-ripple {
    background: rgba(37, 99, 235, 0.14);
}

.pq-app .btn-ghost {
    position: relative;
    overflow: hidden;
    isolation: isolate;
}

.pq-app .chip:focus-visible,
.pq-app .choice-cell:focus-visible,
.pq-app .courier:focus-within,
.pq-app .pay-opt:focus-within {
    outline: none;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(37, 99, 235, 0.22);
}

/* 「还没寄出，稍后补填」：隐藏原生外观，可见勾选 + 缩放入场 */
.pq-app .inline-check input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    margin: 0;
    flex: 0 0 18px;
    border: 1.5px solid var(--border-hover, #cbd5e1);
    border-radius: 5px;
    background-color: #ffffff;
    background-repeat: no-repeat;
    background-position: center;
    background-size: 0.7rem;
    cursor: pointer;
    transition:
        border-color 180ms var(--gx-ease),
        background-color 180ms var(--gx-ease),
        box-shadow 180ms var(--gx-ease),
        transform 160ms var(--gx-press-ease);
}

.pq-app .inline-check input[type="checkbox"]:checked {
    background-color: var(--primary, #2563eb);
    border-color: var(--primary, #2563eb);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='2.4' d='M3.4 8.4 6.5 11.4 12.6 4.6'/%3E%3C/svg%3E");
}

.pq-app .inline-check input[type="checkbox"]:active { transform: scale(0.9); }

.pq-app .inline-check input[type="checkbox"]:focus-visible {
    outline: none;
    box-shadow: 0 0 0 2px #ffffff, 0 0 0 4px rgba(37, 99, 235, 0.22);
}

@media (prefers-reduced-motion: reduce) {
    .btn,
    .btn-solid,
    .btn-header-outline,
    .btn-submit,
    .sd-btn,
    .page-link,
    .m-submit-btn,
    .app-icon,
    .btn-icon-text,
    .mobile-btn,
    .pf-act,
    .form-check.form-switch .form-check-input,
    .form-check-input,
    .disassembly-card,
    .reason-chip {
        transition: none;
    }

    .btn:hover,
    .btn:active,
    .btn-submit:active,
    .app-icon:active,
    .page-link:hover,
    .page-link:active,
    .btn-icon-text:hover,
    .btn-icon-text:active,
    .mobile-btn:hover,
    .mobile-btn:active,
    .pf-act:hover,
    .pf-act:active,
    .avatar-chip:hover,
    .avatar-chip:active,
    .status-badge-pill:hover,
    .status-badge-pill:active,
    .disassembly-card:hover,
    .disassembly-card:active,
    .reason-chip:hover,
    .reason-chip:active {
        transform: none;
    }

    .gx-card-enter {
        animation: none;
    }

    .ms-tab.is-on i,
    .ms-tool:active .ms-tool-icon,
    .ms-copy:active {
        transform: none;
    }

    .pq-app .choice-tile,
    .pq-app .ship-mode,
    .pq-app .courier,
    .pq-app .pay-opt,
    .pq-app .choice-cell,
    .pq-app .sn-toggle-pill,
    .pq-app .chip,
    .pq-app .svc-add,
    .pq-app .courier-more,
    .pq-app .addr-warn-btn,
    .pq-app .dev-add,
    .pq-app .inline-check input[type="checkbox"] {
        transition: none;
    }

    .pq-app .choice-tile:hover,
    .pq-app .choice-tile:active,
    .pq-app .ship-mode:hover,
    .pq-app .ship-mode:active,
    .pq-app .courier:hover,
    .pq-app .courier:active,
    .pq-app .pay-opt:hover,
    .pq-app .pay-opt:active,
    .pq-app .choice-cell:hover,
    .pq-app .choice-cell:active,
    .pq-app .sn-toggle-pill:active,
    .pq-app .chip:active,
    .pq-app .svc-add:active,
    .pq-app .courier-more:active,
    .pq-app .addr-warn-btn:active,
    .pq-app .dev-add:active,
    .pq-app .inline-check input[type="checkbox"]:active {
        transform: none;
    }

    .bee-ripple,
    .bee-spinner::before,
    .bee-spinner::after,
    .spinner-border::before,
    .spinner-border::after,
    i.fa-spinner.fa-spin::before,
    i.fa-spinner.fa-spin::after,
    i.fa-circle-notch.fa-spin::before,
    i.fa-circle-notch.fa-spin::after,
    .lo-spinner .lo-ring {
        animation: none !important;
    }

    .bee-spinner::before,
    .spinner-border::before {
        border-color: var(--primary, #2563eb) transparent transparent transparent;
        transform: rotate(45deg);
    }
}
