/* Vizir-specific composition. Palette, type, controls and tables come from Roy.
   No parallel theme tokens or copies of Roy component rules belong here. */
/* Roy templates/file_search.html: the same tab component. */
.file-search-tabs{display:flex;flex-wrap:wrap;gap:.35rem;align-items:center;border-bottom:1px solid var(--border-subtle)}
.file-search-tabs::-webkit-scrollbar{display:none}
.file-search-tab{border:0;border-bottom:2px solid transparent;background:transparent;color:var(--text-muted);padding:.65rem .4rem .7rem;font-weight:800;white-space:nowrap;scroll-snap-align:start;min-height:44px;text-decoration:none}
.file-search-tab.active{color:var(--text-main);border-bottom-color:var(--accent)}
.file-search-tab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:560px){.file-search-tabs{margin-inline:-.35rem;padding-inline:.35rem .9rem}.file-search-tab{font-size:.86rem}}
:root{--bg-primary:var(--bg-main);--bg-card:var(--bg-elevated);--bg-secondary:var(--bg-elevated-soft);--text-primary:var(--text-main);--text-secondary:var(--text-muted);--accent-solid:var(--accent);--accent-hover:var(--accent-soft);--danger:var(--bs-danger);--warning:var(--bs-warning);--success:var(--bs-success);--status-up:var(--bs-success);--status-down:var(--bs-danger)}
.main-wrapper{display:flex;flex:1;flex-direction:column;min-width:0;margin-left:260px}
#appSidebar{position:fixed;inset:0 auto 0 0;height:100dvh;max-height:100dvh;display:flex;flex-direction:column;overflow:hidden;z-index:1040}
#appSidebar>.brand{flex-shrink:0}
#appSidebar>nav{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain}
#appSidebar>.sidebar-collapse-btn{flex-shrink:0;margin-top:auto}
.app-sidebar .nav{flex-direction:column;flex-wrap:nowrap}
.app-topbar,.topbar-left,.topbar-right{display:flex;align-items:center;gap:.75rem}
.app-topbar{justify-content:space-between;padding-inline:16px}
.topbar-meta{display:none}
.app-content{padding:24px;min-width:0}
.spk-page-title{margin:0}
.sidebar-collapse-btn{flex-shrink:0}
.sidebar-mobile-close,.sidebar-backdrop,.admin-menu-toggle,#sidebarToggle{display:none}
.workspace-select{max-width:220px}
.topbar-right>.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;white-space:nowrap;min-height:40px}
.card-kpi>h3,.kpi-card>h4{font-size:.8rem;font-weight:500;color:var(--text-muted);margin:0 0 .6rem}
.card-kpi>.kpi{font-size:2rem;font-weight:600;line-height:1.2;font-variant-numeric:tabular-nums;margin-bottom:.5rem}
.workspace-form{display:grid;gap:1rem;max-width:600px}
.workspace-form label,.form-group{display:grid;gap:.5rem}
.workspace-actions,.header-actions,.gallery-actions{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}
.workspace-section,.form-card,.panel{padding:1.5rem;margin-bottom:1.5rem}
.workspace-section h2,.panel-title{font-size:1.1rem;margin-bottom:1.25rem}
.workspace-role{max-width:180px}
.workspace-notice{white-space:pre-wrap;overflow-wrap:anywhere}
.workspace-empty,.empty,.empty-state,.widget-empty,.table-empty,.vizir-search-empty{padding:2rem;text-align:center;color:var(--text-muted)}
:is(.form-card,.panel,.widget-card,.card-kpi,.stat-card,.kpi-card,.service,.screenshot-card,.command-card,.table-wrapper,.table-wrap,.service-hero){background:var(--bg-elevated);border:1px solid var(--border-subtle);border-radius:var(--radius-md,12px)}
:is(.widget-head,.panel-title,.gallery-head){border-bottom:1px solid var(--border-subtle)}
:is(.widget-title,.command-card-title,.service-name){font-weight:600}
:is(.stat-value,.kpi-value,.card-kpi .value){font-size:2rem;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.2}
:is(.stat-label,.kpi-caption,.command-card-desc,.muted,.caption,.desc,.label,.service-stats,.service-hero-visual-caption){color:var(--text-muted);font-size:.85rem}
.widget-item{border:1px solid var(--border-subtle);background:var(--bg-elevated-soft);border-radius:6px}
.widget-item-meta{color:var(--text-muted);font-size:.75rem}
.widget-badge,.status-badge,.service-status,.counter-chip,.tab-count{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .55rem;background:var(--bg-chip);border:1px solid var(--border-subtle);border-radius:999px;font-size:.75rem;font-weight:500}
:is(.ok,.up,.good,.status-up){color:var(--bs-success)}
:is(.bad,.down,.danger,.critical,.status-down){color:var(--bs-danger)}
:is(.warn,.warning,.medium){color:var(--bs-warning)}
.high{color:var(--bs-danger)}
.low{color:var(--text-muted)}
.service-tabs,.audit-tabs{display:flex;gap:.5rem;flex-wrap:wrap;border-bottom:1px solid var(--border-subtle);padding-bottom:.75rem;margin-bottom:1rem}
.audit-tab.active,.evidence-tab.active,.endpoint-filter-btn.active{border-color:var(--accent);color:var(--accent);background:var(--bg-chip-active)}
.tab-pane{display:none}.tab-pane.active{display:block}
.hidden{display:none!important}
.checkbox-group,.notify-toggle{display:flex;align-items:center;gap:.5rem}
.form-row{display:flex;flex-wrap:wrap;gap:1rem}.form-row>.form-group{flex:1;min-width:180px}
.filters,.filters-row,.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}
.toolbar>.form-control,.toolbar>.form-select,.filters>.form-control,.filters>.form-select{width:auto;flex:0 1 190px;min-width:140px}
.toolbar>input[type=search]{flex:1 1 260px}
.filter-item{min-width:160px}.search-wrap{flex:1;min-width:200px}
.divider{height:1px;background:var(--border-subtle);margin:1.5rem 0}
.progress-track{height:6px;background:var(--bg-elevated-soft);overflow:hidden;border-radius:999px}
.progress-bar{height:100%;background:var(--accent)}
.modal:not(.roy-command-modal){background:rgba(0,0,0,.65);align-items:center;justify-content:center;padding:24px;overflow-y:auto}
.modal:not(.roy-command-modal).show{display:flex}
.modal>.modal-content{width:min(900px,100%);max-height:calc(100dvh - 48px);overflow:hidden;background:var(--bg-elevated-soft);color:var(--text-main);border:1px solid var(--border-subtle)}
body[data-theme] .modal>.modal-content{background:var(--bg-elevated-soft)!important}
.modal-body{overflow:auto;min-height:0}.modal-header,.modal-footer{border-color:var(--border-subtle)}
.modal:not(.roy-command-modal) .modal-header{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.modal:not(.roy-command-modal) .modal-header h2,.modal:not(.roy-command-modal) .modal-header h3{font-size:1.1rem;margin:0}
.lightbox,.dropdown-overlay,.sites-backdrop{background:rgba(0,0,0,.72)}
.dropdown-menu,.sites-panel{background:var(--bg-elevated);color:var(--text-main);border:1px solid var(--border-subtle)}
.kiosk-header{background:var(--bg-elevated);border-bottom:1px solid var(--border-subtle)}
.kiosk-container{background:var(--bg-main);color:var(--text-main)}
body.kiosk-immersive .kiosk-header{transform:translateY(-100%);opacity:0;max-height:0;padding-top:0;padding-bottom:0;border-bottom:0;pointer-events:none}
body.kiosk-immersive .iframe-container{border-top:0}
body.kiosk-immersive .immersive-toggle{opacity:.18}
body.kiosk-immersive .immersive-toggle:hover{opacity:1}
.spinner.spinner-border{animation:spinner-border .85s linear infinite}
.error-overlay{background:var(--bg-main);color:var(--text-main)}
.timer{font-family:'IBM Plex Mono',monospace;font-variant-numeric:tabular-nums}
.admin-shell .main-wrapper>.container{max-width:none;padding:24px}
.admin-shell .page-head{display:flex;justify-content:space-between;gap:1rem;margin-bottom:1.5rem}
@media(max-width:1199.98px){
 .main-wrapper,html.sidebar-collapsed .main-wrapper{margin-left:0;width:100%}
 #appSidebar{width:280px;transform:translateX(-100%)}#appSidebar.show{transform:translateX(0)}
 .sidebar-mobile-close,.admin-menu-toggle,#sidebarToggle{display:inline-flex}.sidebar-mobile-close{margin-left:auto}
 .sidebar-backdrop.show{display:block;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:1039}
 .app-content{padding:16px}.topbar-right{flex-wrap:wrap;justify-content:flex-end}.workspace-select{max-width:160px}
}
@media(max-width:575.98px){.app-topbar{flex-wrap:wrap}.modal:not(.roy-command-modal){padding:12px}.modal>.modal-content{max-height:calc(100dvh - 24px)}.form-row{display:grid;grid-template-columns:1fr}.workspace-select{max-width:140px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

.incident-notification-panel[hidden],.incident-notification-panel [hidden],.entity-view [hidden]{display:none!important}
.incident-notification-panel{z-index:1080}
