/* LawMate adaptation of Cosmos UI 1.5.1's default blue shell.
 * Source: cosmos-ui-thymeleaf/META-INF/resources/cosmos-ui/css/cosmos-ui.css.
 * Copyright (c) 2026 Md. Ahsan Habib. See docs/licenses/COSMOS-UI.txt.
 * Bootstrap variable mappings preserve the existing LawMate components.
 */
.app-body {
    --lm-primary: #438eb9;
    --lm-primary-dark: #357ca5;
    --lm-border: #d5d5d5;
    --lm-bg: #e4e6e9;
    --lm-text: #393939;
    --lm-radius: 3px;
    --lm-sidebar-width: 235px;
    --lm-navbar-height: 52px;
    --lm-shadow-sm: 0 1px 2px rgb(0 0 0 / 8%);
    --bs-primary-rgb: 67, 142, 185;
    background: var(--lm-bg);
}
.app-navbar {
    left: 0;
    padding: 0 1rem 0 0;
    z-index: 1040;
    color: #fff;
    background: var(--lm-primary);
    border: 0;
    box-shadow: 0 1px 0 rgb(0 0 0 / 15%);
}
.app-navbar > .app-brand {
    width: var(--lm-sidebar-width);
    min-height: var(--lm-navbar-height);
    padding: .5rem 1rem;
    border: 0;
    background: rgb(0 0 0 / 5%);
}
.app-brand-mark { width: 30px; height: 30px; border-radius: 50%; background: rgb(255 255 255 / 12%); box-shadow: none; }
.app-navbar-button, .app-user-button, .app-menu-toggle { color: #fff; }
.app-navbar-button:hover, .app-user-button:hover, .app-menu-toggle:hover { color: #fff; background: rgb(0 0 0 / 9%); }
.app-avatar { background: rgb(0 0 0 / 15%); }
.app-sidebar { top: var(--lm-navbar-height); color: var(--lm-text); background: #f2f2f2; border-right: 1px solid var(--lm-border); }
.app-sidebar-nav { gap: 0; padding: 0; }
.app-nav-link { min-height: 44px; padding: .65rem 1rem; border-radius: 0; border-bottom: 1px solid #e5e5e5; color: #585858; }
.app-nav-link:hover { color: var(--lm-primary-dark); background: #fff; }
.app-nav-link.active { color: var(--lm-primary-dark); background: #fff; font-weight: 700; box-shadow: inset -3px 0 var(--lm-primary); }
.app-main { background: #fff; }
.app-panel { box-shadow: var(--lm-shadow-sm); }
.app-page-header h1 { color: #2679b5; font-size: 1.4rem; font-weight: 500; }
.app-page-header::after { background: #e5e5e5; }
.administration-links { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: .75rem; }
.administration-links a { display: block; padding: 1rem; border: 1px solid var(--lm-border); border-radius: var(--lm-radius); text-decoration: none; }
.administration-links a:hover { background: #f5f9fc; }
.case-context { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1.25rem; position: sticky; top: var(--lm-navbar-height); z-index: 21; }
.case-workspace-nav { top: calc(var(--lm-navbar-height) + 5rem); border-radius: 3px; }
.case-workspace-nav a.active { color: #fff; background: var(--lm-primary-dark); }
[data-case-panel][hidden] { display: none !important; }
[data-case-panel] > .app-panel { margin-bottom: 1rem; }
.official-timeline thead { --bs-table-bg: #508d15; --bs-table-color: #fff; }
.official-timeline td { white-space: normal; }
@media (max-width: 991.98px) {
    .app-navbar > .app-brand { width: auto; margin-right: .5rem; }
    .app-menu-toggle { display: inline-flex; }
    .case-context { position: static; }
    .case-workspace-nav { top: var(--lm-navbar-height); }
}
@media (prefers-reduced-motion: reduce) {
    .app-sidebar { transition: none; }
}
.ajax-loading {
    position: fixed;
    bottom: 1.25rem;
    right: 1.25rem;
    z-index: 1090;
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .8rem 1rem;
    color: #fff;
    background: #14263d;
    border-radius: .6rem;
    box-shadow: 0 4px 20px #0003;
    pointer-events: none;
}
.ajax-loading[hidden] { display: none; }
.calendar-event { flex-direction: column; }
.calendar-event small { overflow-wrap: anywhere; }
@media (prefers-reduced-motion: reduce) {
    .ajax-loading .spinner-border { animation: none; }
}

.app-body .btn[aria-busy=true] { display:inline-flex; align-items:center; gap:.5rem; cursor:wait; }
.app-body .btn[aria-busy=true]::before { content:''; width:.85rem; height:.85rem; border:2px solid currentColor; border-right-color:transparent; border-radius:50%; animation:button-wait .65s linear infinite; }
.page-loading .app-main { cursor:progress; }
.page-enter { animation:page-appear .18s ease-out; }
[data-navigation-error] { border-radius:10px; border-left:4px solid #bd4545; }
.app-validation-summary { border-radius:10px; }
@keyframes button-wait { to {transform:rotate(360deg);} }
@keyframes page-appear { from {opacity:.6; transform:translateY(4px);} to {opacity:1; transform:translateY(0);} }
@media(prefers-reduced-motion:reduce) { .app-body .btn {transition:none;} .page-enter {animation:none;} .app-body .btn[aria-busy=true]::before {animation:none;} }
