/* Shared visual foundation for application pages; public/PDF/TV layouts are independent. */
.app-body { --app-ink:#1c3554; --app-muted:#64748b; --app-line:#e2e8f1; --bs-primary:#1763d4; --bs-link-color:#2463b9; --bs-link-hover-color:#174b91; --bs-border-color:#e2e8f1; margin:0; color:var(--app-ink); background:#f5f7fb!important; font-family:system-ui,-apple-system,"Segoe UI",sans-serif; }
.app-topbar { position:sticky; top:0; z-index:1020; display:flex; align-items:center; gap:20px; min-height:78px; margin-left:260px; padding:14px 32px; border-bottom:1px solid var(--app-line); background:#ffffffed; backdrop-filter:blur(14px); }
.app-breadcrumb { display:flex; align-items:center; gap:13px; font-size:.79rem; min-width:0; }
.app-breadcrumb > span { color:var(--app-muted); }
.app-breadcrumb > strong { font-weight:550; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.app-breadcrumb > span::after { content:"/"; padding-left:13px; color:#acb8c8; }
.app-breadcrumb > .app-mobile-center { display:none; }
.app-account { margin-left:auto; display:flex; align-items:center; gap:10px; color:var(--app-ink); text-decoration:none; min-width:0; }
.app-account strong { display:block; font-weight:600; font-size:.82rem; max-width:220px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.app-account small { display:block; color:var(--app-muted); font-size:.7rem; margin-top:2px; }
.app-avatar { display:grid; place-items:center; width:37px; height:37px; border-radius:12px; flex-shrink:0; color:#2864b7; background:#eaf1fc; font-size:.85rem; font-weight:650; }
.app-sidebar { position:fixed; inset:0 auto 0 0; z-index:1040; width:260px; display:flex; flex-direction:column; color:#d8e4f3; background:linear-gradient(170deg,#173655,#142a45); border-right:1px solid #203e5e; }
.app-sidebar-brand { padding:29px 23px 24px; }
.app-sidebar-brand > a { display:flex; align-items:center; gap:11px; color:#fff; text-decoration:none; }
.app-sidebar-brand strong { display:block; font-size:.91rem; font-weight:550; line-height:1.5; }
.app-sidebar-brand small { display:block; margin-top:4px; color:#acbfd7; font-size:.67rem; }
.app-brand-symbol { display:grid; place-items:center; flex-shrink:0; width:38px; height:38px; border-radius:12px; background:#ffffff12; color:#e0d1a6; font-size:1.7rem; }
.app-brand-symbol svg { width:27px; height:27px; }
.app-nav { padding:0 14px 22px; overflow-y:auto; overscroll-behavior:contain; scrollbar-width:thin; scrollbar-color:#50647d transparent; }
.app-nav h2 { margin:5px 14px 12px; color:#a7bcd5; font-size:.62rem; font-weight:650; letter-spacing:.1em; text-transform:uppercase; }
.app-nav-link { display:flex; align-items:center; gap:11px; min-height:43px; padding:10px 13px; margin:3px 0; border-radius:10px; color:#c5d4e7; text-decoration:none; font-size:.8rem; line-height:1.4; }
.app-nav-link i,.app-nav-group summary > i { font-size:1rem; width:20px; flex-shrink:0; text-align:center; }
.app-nav-link:hover { color:#fff; background:#ffffff0c; }
.app-nav-link.is-active { color:#fff; background:#ffffff15; box-shadow:inset 3px 0 #94bdfb; font-weight:600; }
.app-nav-group { margin-top:9px; padding-top:7px; border-top:1px solid #ffffff0e; }
.app-nav-group summary { display:flex; align-items:center; gap:11px; min-height:45px; padding:10px 13px; border-radius:10px; color:#d4e0f0; font-size:.8rem; font-weight:550; cursor:pointer; list-style:none; }
.app-nav-group summary::-webkit-details-marker { display:none; }
.app-nav-group summary:hover { background:#ffffff0c; color:#fff; }
.app-nav-group summary svg { width:14px; height:14px; margin-left:auto; color:#91a8c3; transition:transform .15s; }
.app-nav-group[open] summary svg { transform:rotate(90deg); }
.app-nav-group > div { padding:1px 0 5px 10px; }
.app-nav-group .app-nav-link { min-height:38px; font-size:.76rem; }
.app-sidebar-footer { margin-top:auto; padding:17px 24px; border-top:1px solid #ffffff14; display:flex; align-items:center; gap:8px; }
.app-sidebar-footer > span { color:#94abc7; font-size:.65rem; }
.app-sidebar-footer form { margin-left:auto; }
.app-sidebar-footer button { display:flex; align-items:center; gap:7px; min-height:38px; padding:5px 0; color:#cfdaea; background:none; border:0; font-size:.72rem; }
.app-menu-toggle,.app-menu-close { display:none; }
.app-nav-backdrop[hidden] { display:none; }
.app-skip-link { position:fixed; top:-100px; left:280px; z-index:1100; padding:12px 18px; border-radius:8px; background:#fff; color:#174b91; }
.app-skip-link:focus { top:12px; }
.app-main.container { width:auto; max-width:none; margin:0 0 0 260px; padding:30px 32px 40px!important; min-height:calc(100vh - 78px); }
.app-main > main.container { width:100%; max-width:none; padding:0!important; }
.app-main > .container { max-width:100%; padding-left:0; padding-right:0; }
.app-main h1 { color:var(--app-ink); font-size:1.75rem; font-weight:600; letter-spacing:-.035em; line-height:1.3; }
.app-main h2,.app-main h3 { letter-spacing:-.02em; }
.page-eyebrow { display:block; margin-bottom:7px; color:#4771ac; font-size:.64rem; font-weight:650; letter-spacing:.1em; text-transform:uppercase; }
.page-description { margin:8px 0 0; color:#64748b; font-size:.83rem; line-height:1.6; max-width:680px; }
.app-main .text-muted { color:var(--app-muted)!important; }
.app-main .card { border-color:var(--app-line); border-radius:17px!important; box-shadow:0 3px 14px -9px #193b6530!important; }
.app-main .card-header { padding:17px 21px; border-color:var(--app-line); border-radius:17px 17px 0 0!important; background:#fff!important; }
.app-main .card-header.text-white { color:var(--app-ink)!important; }
.app-main .card-header.bg-danger { color:#a73343!important; background:#fff1f3!important; }
.app-main .card-header.bg-success { color:#226c48!important; background:#edf8f2!important; }
.app-main .card-header.bg-primary { color:#245fae!important; background:#edf3fd!important; }
.app-main .card-body { padding:22px; }
.app-main .card-footer { padding:16px 21px; border-color:var(--app-line); background:#fbfcfe!important; border-radius:0 0 17px 17px!important; }
.app-main .card.border-4 { border-width:1px!important; border-color:var(--app-line)!important; }
.app-main .card.border-start { border-left-width:3px!important; }
.app-main .card.border-start.border-primary { border-left-color:#90b4e7!important; }
.app-main .card.border-start.border-success { border-left-color:#7ec7a1!important; }
.app-main .card.border-start.border-danger { border-left-color:#e4a6b1!important; }
.app-main .card.border-start.border-info { border-left-color:#99c7d4!important; }
.app-main .card.border-start.border-warning { border-left-color:#e2ce87!important; }
.app-main .card:has(>table) { overflow-x:auto; }
.app-main .btn { display:inline-flex; align-items:center; justify-content:center; gap:5px; min-height:42px; border-radius:10px!important; padding:9px 15px; font-size:.84rem; font-weight:550; line-height:1.4; }
.app-main .btn-sm { min-height:34px; padding:6px 10px; font-size:.75rem; }
.app-main .btn-primary { background:#1763d4; border-color:#1763d4; box-shadow:0 3px 7px #1763d414; }
.app-main .btn-primary:hover { background:#1054b9; border-color:#1054b9; }
.app-main .btn-light { background:#edf2f8; border-color:#edf2f8; color:#3c5678; }
.app-main .btn-outline-secondary,.app-main .btn-outline-dark { color:#506580; border-color:#d8e1ed; background:#fff; }
.app-main .btn-outline-secondary:hover,.app-main .btn-outline-dark:hover { background:#edf2f8; border-color:#b9c8dc; color:#243f64; }
.app-main .btn-group > .btn:not(:first-child) { border-top-left-radius:0!important; border-bottom-left-radius:0!important; }
.app-main .btn-group > .btn:not(:last-child) { border-top-right-radius:0!important; border-bottom-right-radius:0!important; }
.app-main .form-control,.app-main .form-select { min-height:45px; border:1px solid #dce4ee; border-radius:10px; color:#263f5e; background-color:#fdfdff; font-size:.94rem; padding:10px 13px; }
.app-main .form-select { padding-right:35px; }
.app-main .form-control-sm,.app-main .form-select-sm { min-height:38px; padding-top:7px; padding-bottom:7px; font-size:.8rem; }
.app-main .form-control:focus,.app-main .form-select:focus { border-color:#6598df; box-shadow:0 0 0 4px #1763d412; background-color:#fff; }
.app-main .form-label { color:#3c516c; font-size:.83rem; font-weight:550; margin-bottom:8px; }
.app-main .form-text { color:var(--app-muted); font-size:.75rem; line-height:1.6; }
.app-main .form-check-label { font-size:.88rem; }
.app-main input[type=file] { font-size:.84rem; }
.app-main textarea.form-control { min-height:105px; }
.app-main .table { --bs-table-striped-bg:#f7f9fc; --bs-table-hover-bg:#edf3fc; --bs-table-border-color:#e8edf4; color:#2a415e; font-size:.85rem; }
.app-table-scroll-hint { margin:0; padding:9px 16px; color:#60728a; background:#f7f9fc; border-bottom:1px solid #e4eaf3; font-size:.7rem; }
.app-table-scroll-hint[hidden] { display:none; }
.app-main .table-responsive:focus-visible { outline:3px solid #8bb8f5; outline-offset:-3px; }
.app-main .table-responsive { position:relative; }
.app-main .table .text-end,.app-main .display-6 { font-variant-numeric:tabular-nums; }
.app-main .table > thead > tr > th { padding:13px 16px; background:#f7f9fc; color:#60728a; border-bottom-color:#e3eaf3; font-size:.72rem; font-weight:650; letter-spacing:.015em; white-space:nowrap; }
.app-main .table > tbody > tr > td { padding:13px 16px; vertical-align:middle; }
.app-main .table > tbody > tr:last-child > td { border-bottom-width:0; }
.app-main .table td[colspan].text-center { padding-top:38px!important; padding-bottom:38px!important; color:#64748b; }
.app-main .table a:not(.btn) { text-decoration:none; }
.app-main .table a:not(.btn):hover { text-decoration:underline; text-underline-offset:3px; }
.app-main .table .badge { white-space:normal; line-height:1.35; }
.app-main .badge { border-radius:7px; padding:5px 8px; font-size:.68rem; font-weight:600; }
.app-main .badge.bg-success,.app-main .badge.text-bg-success { color:#166444!important; background:#e7f5ed!important; }
.app-main .badge.bg-danger,.app-main .badge.text-bg-danger { color:#a73343!important; background:#fcecef!important; }
.app-main .badge.bg-primary,.app-main .badge.text-bg-primary { color:#245fae!important; background:#eaf1fe!important; }
.app-main .alert { border-radius:13px; padding:17px 20px; font-size:.88rem; line-height:1.6; }
.app-main .alert-info { background:#edf6fc; border-color:#dcecf7; color:#265f82; }
.app-main .alert-warning { background:#fff7e8; border-color:#f0e0bb; color:#896323; }
.app-main .alert-danger { background:#fff0f2; border-color:#efd5da; color:#9f3447; }
.app-main .alert-success { background:#ebf8f0; border-color:#d1eadc; color:#226c48; }
.app-main details:not(.app-nav-group) { padding:13px 16px; border:1px solid #e5ebf3; border-radius:11px; background:#fcfdff; }
.app-main details:not(.app-nav-group) > summary { cursor:pointer; color:#405d82; font-size:.84rem; font-weight:550; line-height:1.5; }
.app-main details[open]:not(.app-nav-group) > summary { margin-bottom:12px; }
.app-main .pagination { gap:5px; }
.app-main .page-link { border:1px solid #e1e8f2; border-radius:8px!important; color:#496b9a; font-size:.82rem; padding:8px 12px; }
.app-main .active > .page-link { background:#1763d4; border-color:#1763d4; color:#fff; }
.app-main footer { color:var(--app-muted); font-size:.73rem; }
.app-main a:focus-visible,.app-main button:focus-visible,.app-sidebar a:focus-visible,.app-sidebar summary:focus-visible,.app-sidebar button:focus-visible { outline:3px solid #8bb8f5; outline-offset:3px; }
.app-public .public-app-header { padding:22px 30px; background:#fff; border-bottom:1px solid #e3eaf3; display:flex; justify-content:space-between; gap:20px; }
@media(min-width:1700px) { .app-main.container { padding-left:48px!important; padding-right:48px!important; } }
@media(max-width:1099.98px) {
  .app-topbar { margin-left:0; min-height:68px; padding:12px 22px; }
  .app-main.container { margin-left:0; padding:25px 22px 35px!important; min-height:calc(100vh - 68px); }
  .app-sidebar { position:static; width:auto; max-height:60vh; margin:15px 22px; border-radius:17px; }
  .app-nav-enhanced .app-sidebar { position:fixed; inset:0 auto 0 0; width:min(300px,calc(100vw - 42px)); max-height:100dvh; margin:0; border-radius:0; transform:translateX(-100%); transition:transform .2s ease; visibility:hidden; }
  .app-nav-enhanced.app-menu-open .app-sidebar { transform:translateX(0); visibility:visible; }
  .app-nav-enhanced .app-menu-toggle { display:grid; place-items:center; width:44px; height:44px; flex-shrink:0; border:1px solid #dfe6f0; border-radius:11px; background:#fff; color:#345781; }
  .app-menu-toggle svg { width:22px; height:22px; }
  .app-nav-enhanced .app-menu-close { display:block; position:absolute; top:12px; right:10px; width:40px; height:40px; border:0; border-radius:10px; background:#ffffff0e; color:#d4e1f1; font-size:1.6rem; line-height:1; }
  .app-nav-enhanced .app-sidebar-brand { padding-top:60px; }
  .app-nav-backdrop { position:fixed; inset:0; z-index:1030; background:#152b4880; border:0; backdrop-filter:blur(3px); }
  .app-menu-open { overflow:hidden; }
  .app-skip-link { left:20px; }
}
@media(max-width:575.98px) {
  .app-topbar { gap:12px; padding:10px 16px; }
  .app-breadcrumb { display:block; line-height:1.5; font-size:.76rem; }
  .app-breadcrumb > span { display:none; }
  .app-breadcrumb > .app-mobile-center { display:block; font-size:.61rem; max-width:calc(100vw - 140px); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .app-breadcrumb > .app-mobile-center::after { display:none; }
  .app-breadcrumb > strong { display:block; max-width:calc(100vw - 140px); }
  .app-account > span:not(.app-avatar) { display:none; }
  .app-main.container { padding:23px 16px 30px!important; }
  .app-main h1 { font-size:1.45rem; }
  .app-main .card-body { padding:18px; }
  .app-main .card-header,.app-main .card-footer { padding:15px 18px; }
  .app-main .form-control,.app-main .form-select { font-size:1rem; }
  .app-main .table > thead > tr > th,.app-main .table > tbody > tr > td { padding:12px; }
  .app-main .d-flex:has(>h1),.app-main .d-flex:has(>div>h1) { flex-wrap:wrap; gap:14px; }
}
@media(prefers-reduced-motion:reduce) { .app-sidebar,.app-nav-group summary svg { transition:none!important; } }

/* Desktop rail has its own saved preference; the phone drawer stays independent. */
.app-sidebar-toggle { display:none; place-items:center; flex-shrink:0; width:38px; height:38px; border:1px solid var(--app-line); border-radius:11px; background:white; color:#4a6586; }
.app-nav-enhanced .app-sidebar-toggle { display:grid; }
.app-sidebar-toggle:hover { background:#eef4fd; color:#1763d4; }
@media (min-width:1100px) {
  .app-sidebar-collapsed .app-sidebar { width:78px; }
  .app-sidebar-collapsed .app-topbar,.app-sidebar-collapsed .app-main.container { margin-left:78px; }
  .app-sidebar-collapsed .app-sidebar-brand { padding:27px 19px; }
  .app-sidebar-collapsed .app-sidebar-brand a > span:not(.app-brand-symbol),
  .app-sidebar-collapsed .app-nav-label,.app-sidebar-collapsed .app-nav h2,
  .app-sidebar-collapsed .app-nav-group summary > span,.app-sidebar-collapsed .app-nav-group summary > svg,
  .app-sidebar-collapsed .app-nav-group > div,.app-sidebar-collapsed .app-sidebar-footer > span { display:none; }
  .app-sidebar-collapsed .app-nav { padding:0 10px 18px; }
  .app-sidebar-collapsed .app-nav-link,.app-sidebar-collapsed .app-nav-group summary { justify-content:center; padding:12px; }
  .app-sidebar-collapsed .app-sidebar-footer { padding:16px 28px; }
  .app-sidebar-collapsed .app-sidebar-footer form { margin:0; }
  .app-sidebar-collapsed .app-sidebar-footer button { font-size:1.1rem; }
}
@media (max-width:1099.98px) { .app-nav-enhanced .app-sidebar-toggle { display:none; } }
