/* One responsive matrix. Permission fill and live activity remain separate. */
.routing-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 18px 8px}
.routing-media-switch{display:inline-flex;padding:3px;border:1px solid var(--adm-border-strong);border-radius:5px;background:var(--adm-surface-2)}
.routing-media-switch button{appearance:none;border:0;background:transparent;color:var(--adm-text-dim);padding:7px 11px;font:inherit;font-size:12px;border-radius:3px;cursor:pointer}
.routing-media-switch button[aria-pressed="true"]{background:var(--adm-text-mid);color:var(--adm-bg)}
.admin-page .routing-search{display:block;flex:1 1 160px;max-width:320px;margin-left:auto}
.routing-search input{width:100%;min-width:0;font-size:12px;padding:8px 10px}
.admin-page .routing-online-filter{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--adm-text-dim)}
.routing-view-options{margin:4px 18px 10px;font-size:12px;color:var(--adm-text-dim)}
.routing-view-options summary{cursor:pointer;width:max-content;padding:6px 0}
.routing-options-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:8px 0}
.routing-options-grid fieldset{border:0;padding:0;margin:0;min-width:0}
.routing-options-grid legend{color:var(--adm-text);margin-bottom:7px}
.admin-page .routing-options-grid label{display:flex;align-items:center;gap:6px;padding:4px 0;font-size:12px}
.routing-channel-options{display:flex;flex-wrap:wrap;gap:0 13px}
.routing-options-grid input,.routing-online-filter input{width:15px;height:15px;accent-color:var(--adm-accent)}
.routing-result-summary{padding:0 18px 9px;font-size:11px;color:var(--adm-text-dim)}
.routing-empty{padding:22px 18px;text-align:center;font-size:13px;color:var(--adm-text-dim)}
.routing-empty[hidden]{display:none}
.admin-page .unified-routing-shell{display:block;max-width:100%;overflow-x:auto}
.admin-page #tbl_users.unified-routing{min-width:0;max-width:none;width:max-content;border-collapse:separate;border-spacing:0;table-layout:fixed}
.admin-page #tbl_users.unified-routing .routing-col-user{width:190px}
.admin-page #tbl_users.unified-routing .routing-col-media{width:52px}
.admin-page #tbl_users.unified-routing .routing-col-channel{width:100px}
.admin-page #tbl_users.unified-routing .routing-col-camera{width:128px}
.admin-page #tbl_users.unified-routing .routing-col-output{width:76px}
.admin-page #tbl_users.unified-routing .routing-col-actions{width:180px}
.admin-page #tbl_users.unified-routing td{vertical-align:middle;padding:4px 6px;text-align:center}
.admin-page #tbl_users.unified-routing .td-user{width:190px;min-width:190px;max-width:190px;text-align:left;white-space:normal;overflow:visible}
.admin-page #tbl_users.unified-routing .routing-user-head{position:sticky;left:24px;text-align:left}
.admin-page #tbl_users.unified-routing .routing-channel-cell{width:100px;min-width:100px;border-left:1px solid var(--adm-border-strong)}
.routing-user-line{display:flex;flex-wrap:nowrap;gap:4px;align-items:center;min-width:0}
.routing-user-detail{padding:3px 0;min-width:56px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;border:0;background:transparent;color:var(--adm-text);font:inherit;font-size:12.5px;cursor:pointer}
.routing-user-detail:hover{text-decoration:underline}
.admin-page .routing-user-line .battery-badge{flex:none;margin:0;font-size:10px}
.admin-page .routing-user-line .user-drag-handle{flex:none;margin:0}
.routing-user-line .status-dot{margin:0;flex:none}
.routing-user-video{display:flex;flex:0 1 auto;min-width:0;flex-wrap:nowrap;gap:4px;margin:0;align-items:center}
.routing-user-video[hidden]{display:none}
.routing-mode-badges{display:flex;gap:3px;min-width:0;flex-wrap:nowrap}
.routing-mode-badges .video-mode-badge{padding-inline:4px;font-size:9px;letter-spacing:0}
.routing-user-video .video-runtime-dot{font-size:10px}
.routing-limit-badge{font-size:10px;color:var(--adm-error)}
.routing-user-line .managed-badge,.routing-user-line .routing-limit-badge{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-page #tbl_users.unified-routing .ptt-live-summary{display:block;max-width:100%;white-space:normal;font-size:10px;margin:4px 0 0 20px}
.admin-page #tbl_users.unified-routing .ptt-live-summary[hidden]{display:none}
.admin-page #tbl_users.unified-routing tr[data-routing-media="video"] .ptt-live-summary{display:none}
.routing-audio-line,.routing-video-line{display:flex;align-items:center;justify-content:center;gap:4px;min-height:34px;position:relative}
.routing-video-line{color:var(--adm-video)}
.routing-audio-line + .routing-video-line{border-top:1px solid var(--adm-border-soft)}
.routing-media-cell{font-size:10px;color:var(--adm-text-dim)}
.routing-header-lanes{margin-top:5px}
.admin-page #tbl_users.unified-routing .routing-header-lanes .column-toggle{min-height:23px;min-width:31px;padding:3px 5px}
.admin-page #tbl_users.unified-routing .column-toggle--videoTx{color:var(--adm-warn)}
.admin-page #tbl_users.unified-routing .column-toggle--videoRx{color:var(--adm-accent)}
.admin-page #tbl_users.unified-routing .tl,.routing-detail-table .tl{display:flex;align-items:center;justify-content:center;gap:4px}
.admin-page #tbl_users.unified-routing .tl-i,.routing-detail-table .tl-i{display:inline-flex;align-items:center;justify-content:center;position:relative;width:34px;height:28px;margin:0;padding:0;border:0}
.admin-page #tbl_users.unified-routing .tl-i input,.routing-detail-table .tl-i input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.admin-page #tbl_users.unified-routing .tl-k,.routing-detail-table .tl-k{display:flex;align-items:center;justify-content:center;width:100%;height:100%;border:1px solid var(--adm-border-strong);border-radius:4px;color:var(--adm-text-dim);font-family:var(--adm-mono);font-size:11px}
.admin-page #tbl_users.unified-routing .tl-t input:checked + .tl-k,.routing-detail-table .tl-t input:checked + .tl-k{background:rgba(250,204,21,.14);border-color:var(--adm-warn);color:var(--adm-warn)}
.admin-page #tbl_users.unified-routing .tl-l input:checked + .tl-k,.routing-detail-table .tl-l input:checked + .tl-k{background:rgba(59,130,246,.16);border-color:var(--adm-accent);color:var(--adm-accent)}
.tl-i input:focus-visible + .tl-k{outline:2px solid var(--adm-accent);outline-offset:2px}
.unified-routing .video-permission,.routing-detail-table .video-permission{min-width:34px;min-height:28px;border-radius:4px;font:11px var(--adm-mono);padding:3px 4px;background:transparent;color:var(--adm-text-dim);border-color:var(--adm-border-strong)}
.unified-routing .video-permission--tx[aria-pressed="true"],.routing-detail-table .video-permission--tx[aria-pressed="true"]{background:rgba(250,204,21,.14);color:var(--adm-warn);border-color:var(--adm-warn)}
.unified-routing .video-permission--rx[aria-pressed="true"],.routing-detail-table .video-permission--rx[aria-pressed="true"]{background:rgba(59,130,246,.16);color:var(--adm-accent);border-color:var(--adm-accent)}
.admin-page #tbl_users.unified-routing .video-cam-cell{width:128px;min-width:128px;white-space:nowrap}
.unified-routing .video-cam-group{display:flex;flex-wrap:nowrap;justify-content:center;align-items:center;gap:4px}
.admin-page #tbl_users.unified-routing .video-cam-group > button{flex:none;min-width:30px;min-height:28px;padding:3px 5px;font-size:10px;line-height:1.2;white-space:nowrap}
.unified-routing .video-camera-toggle,.unified-routing .video-out-toggle{font-size:10px}
.admin-page #tbl_users.unified-routing .td-actions{white-space:nowrap}
.unified-routing .routing-video-line.video-permission-cell--live{box-shadow:inset 0 0 0 2px var(--adm-video);background:rgba(139,92,246,.1)}
.admin-page #tbl_users.unified-routing .routing-audio-line.ptt-live-cell{box-shadow:inset 0 0 0 1px var(--adm-error);background:rgba(240,87,76,.08)}
.admin-page #tbl_users.unified-routing .routing-audio-line.audio-live-cell{box-shadow:inset 0 0 0 2px var(--adm-error);background:rgba(240,87,76,.18)}
.unified-routing .ptt-live-marker{position:absolute;bottom:0;right:0;font-size:8px;line-height:1;background:var(--adm-error);color:var(--adm-text);padding:1px 2px}
.unified-routing tr[data-camera="false"] .video-permission--tx{opacity:.5}
.unified-routing.is-painting,.unified-routing.is-painting *{user-select:none}
.routing-detail-scroll{max-width:100%;overflow-x:auto}
.routing-detail-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px}
.routing-detail-table th,.routing-detail-table td{text-align:center;padding:8px 4px;border-bottom:1px solid var(--adm-border-strong)}
.routing-detail-table th{font-weight:400;color:var(--adm-text-dim)}
.routing-detail-table th:first-child{width:34%;text-align:left}
.routing-detail-table th span{display:block;overflow-wrap:anywhere;font-size:11px;margin-top:3px}
.routing-detail-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.routing-detail-status{margin-top:10px;display:flex;gap:8px;flex-wrap:wrap}
.routing-detail-status .video-cam-cell,.routing-detail-status .video-out-cell{display:block}
#userDetailDialog{width:min(720px,calc(100vw - 24px));max-width:720px}
#userDetailDialog .user-sheet__card{max-width:none}
#userDetailDialog [hidden]{display:none}
@media(max-width:780px){
  .routing-toolbar{padding:8px 0;gap:9px}
  .admin-page .routing-search{margin-left:0;max-width:none;flex:1 1 100%}
  .routing-view-options{margin:2px 0 8px}
  .routing-options-grid{grid-template-columns:1fr}
  .routing-result-summary{padding:0 0 8px}
  .admin-page .unified-routing-shell{display:block;margin-inline:-13px;width:calc(100% + 26px);max-width:calc(100% + 26px)}
  .admin-page #tbl_users.unified-routing .routing-col-user,.admin-page #tbl_users.unified-routing .td-user{width:134px;min-width:134px;max-width:134px}
  .admin-page #tbl_users.unified-routing .routing-col-media{width:43px}
  .routing-user-detail{min-width:32px}
  .routing-mode-badges .video-mode-badge:not(.video-mode-badge--preview){display:none}
  .routing-mode-badges .video-mode-badge--preview{font-size:0;min-width:18px;padding-inline:3px}
  .routing-mode-badges .video-mode-badge--preview::before{content:'👁';font-size:10px}
  .routing-user-line .user-drag-handle{display:none}
  .routing-user-line .battery-badge{font-size:10px}
  .admin-page .routing-legend > span{display:inline-flex;font-size:10px}
  .admin-page .routing-legend .routing-legend__hint{display:none}
  #userDetailDialog{width:100%;max-width:100%}
}
@media(pointer:coarse){
  .routing-audio-line,.routing-video-line{min-height:50px}
  .routing-media-switch button,.routing-user-detail,.routing-view-options summary{min-height:44px}
  .admin-page .routing-options-grid label,.admin-page .routing-online-filter{min-height:44px}
  .admin-page #tbl_users.unified-routing .routing-col-channel{width:110px}
  .admin-page #tbl_users.unified-routing .routing-channel-cell{min-width:110px;width:110px}
  .admin-page #tbl_users.unified-routing .routing-col-camera,.admin-page #tbl_users.unified-routing .video-cam-cell{width:156px;min-width:156px}
  .admin-page #tbl_users.unified-routing .video-cam-group > button{min-width:44px;min-height:44px}
  .admin-page #tbl_users.unified-routing .tl-i,.routing-detail-table .tl-i,.unified-routing .video-permission,.routing-detail-table .video-permission{min-width:44px;width:44px;min-height:44px;height:44px}
  .admin-page #tbl_users.unified-routing .routing-header-lanes .column-toggle{min-width:44px;min-height:44px}
  .routing-search input{font-size:16px}
  .routing-detail-table{min-width:300px}
}
.admin-page #tbl_users.unified-routing .tl-t:has(input:checked),
.admin-page #tbl_users.unified-routing .tl-l:has(input:checked),
.routing-detail-table .tl-t:has(input:checked),
.routing-detail-table .tl-l:has(input:checked){background:transparent;box-shadow:none;border:0}
.routing-search .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.admin-page .routing-card .routing-legend{margin:0;padding:10px 18px;gap:8px 14px}
.admin-page #tbl_users.unified-routing tbody tr.is-selected > td{background:var(--adm-surface-selected) !important}
.admin-page #tbl_users.unified-routing tbody tr:focus-within > td{background:var(--adm-surface-hover) !important}
.admin-page #tbl_users.unified-routing tbody tr.is-selected:focus-within > td{background:var(--adm-surface-selected) !important}
@media(hover:hover) and (pointer:fine){.admin-page #tbl_users.unified-routing tbody tr:hover > td{background:var(--adm-surface-hover) !important}}
