/* Shared, non-blocking loading feedback. Existing controllers own requests. */
:is(button, .btn, [role="button"]).is-loading {
    position: relative;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
    padding-inline: 16px !important;
}
:is(button, .btn, [role="button"]).is-loading:not(:has(.sahi-pilot-tab-spinner))::before {
    content: "";
    display: inline-block;
    position: static;
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    box-sizing: border-box;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: ak-loading-spin .75s linear infinite;
    pointer-events: none;
}
:is(button, .btn, [role="button"]).is-loading::after { content: none !important; }
:is(button, .btn, [role="button"]).is-loading svg { display: none !important; }
:is(button, .btn)[data-ak-native-busy] { pointer-events: none; }
.ak-loading-icon.is-loading { gap: 0 !important; padding-inline: 0 !important; }
.ak-loading-bar {
    position: fixed;
    inset: 0 0 auto;
    height: 3px;
    z-index: 2147483000;
    overflow: hidden;
    pointer-events: none;
    background: rgba(8, 118, 185, .1);
}
.ak-loading-bar::after {
    content: "";
    display: block;
    width: 40%;
    height: 100%;
    background: linear-gradient(90deg, #59c2f1, #0876b9);
    animation: ak-loading-travel 1.1s ease-in-out infinite;
}
.ak-loading-note {
    position: fixed;
    inset: auto 16px 20px;
    width: max-content;
    max-width: calc(100% - 32px);
    margin-inline: auto;
    padding: 10px 14px;
    box-sizing: border-box;
    border: 1px solid #d7e5ef;
    border-radius: 12px;
    background: #fff;
    color: #12344b;
    box-shadow: 0 4px 16px rgba(11, 20, 55, .12);
    font: 500 13px/1.5 system-ui, sans-serif;
    z-index: 2147482999;
    pointer-events: none;
}
.ak-loading-bar[hidden], .ak-loading-note[hidden] { display: none !important; }
.ak-loading-field { position: relative; }
.ak-loading-field::after {
    content: "";
    position: absolute;
    inset-inline-end: 38px;
    top: calc(50% - 7px);
    width: 14px;
    height: 14px;
    border: 2px solid #0876b9;
    border-right-color: transparent;
    border-radius: 50%;
    box-sizing: border-box;
    animation: ak-loading-spin .75s linear infinite;
    pointer-events: none;
}
.plan-panel-loading::before {
    content: "";
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-inline-end: 8px;
    vertical-align: -2px;
    border: 2px solid #0876b9;
    border-right-color: transparent;
    border-radius: 50%;
    box-sizing: border-box;
    animation: ak-loading-spin .75s linear infinite;
}
.ak-loading-skeleton { padding: 12px 0; }
.ak-loading-skeleton__label { color: inherit; font: inherit; }
.ak-loading-skeleton__row {
    height: 10px;
    margin-top: 12px;
    width: 86%;
    border-radius: 6px;
    background: #e4eaf0;
}
.ak-loading-skeleton__row:nth-child(3) { width: 58%; }
.ak-loading-skeleton__row:nth-child(4) { width: 74%; }
@keyframes ak-loading-spin { to { transform: rotate(360deg); } }
@keyframes ak-loading-travel { from { transform: translateX(-100%); } to { transform: translateX(350%); } }
@media (prefers-reduced-motion: reduce) {
    .ak-loading-bar::after, .ak-loading-field::after, .plan-panel-loading::before,
    :is(button, .btn, [role="button"]).is-loading::before { animation: none !important; }
    .ak-loading-bar::after { width: 100%; opacity: .65; }
}
