/* BCIT Portal V2 shared interface layer.
   Loaded after the legacy base styles so existing module templates keep their
   utility classes while receiving the redesigned application shell. */

.portal-v2 {
  --primary: #c5223d;
  --primary-dark: #a91731;
  --primary-light: #df6579;
  --primary-lightest: #fcecef;
  --gray-900: #17202b;
  --gray-800: #26313d;
  --gray-700: #495565;
  --gray-600: #5f6c7b;
  --gray-500: #748092;
  --gray-400: #a4adb8;
  --gray-300: #d7dde4;
  --gray-200: #e3e7ec;
  --gray-100: #f0f2f4;
  --gray-50: #f8f9fa;
  --success: #1f8f68;
  --success-light: #e8f7f1;
  --warning: #c77b14;
  --warning-light: #fff4df;
  --danger: #c5223d;
  --danger-light: #fcecef;
  --info: #3972c9;
  --info-light: #eaf2ff;
  --sidebar-width: 248px;
  background: #f5f6f8;
  color: #17202b;
  font-size: 14px;
}

.portal-v2 .app-header.v2-topbar {
  position: fixed;
  z-index: 1030;
  top: 0;
  right: 0;
  left: var(--sidebar-width);
  height: 74px;
  padding: 0 34px;
  border: 0;
  border-bottom: 1px solid #e3e7ec;
  background: rgba(255,255,255,.96);
  backdrop-filter: blur(12px);
}

.v2-search-shell { position: relative; width: min(470px, 48vw); }
.v2-global-search {
  width: 100%;
  height: 40px;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 0 12px;
  border: 1px solid #e1e5ea;
  border-radius: 9px;
  background: #f8f9fa;
  color: #8792a0;
  text-transform: none;
  letter-spacing: 0;
}
.v2-global-search:focus-within { border-color: #aab5c2; background: #fff; box-shadow: 0 0 0 3px rgba(57,114,201,.08); }
.v2-global-search input[type=search] { min-width: 0; flex: 1; padding: 0; border: 0; outline: 0; background: transparent; color: #17202b; font-size: 12.5px; }
.v2-global-search input[type=search]::placeholder { color: #8d97a4; }
.v2-global-search kbd { padding: 2px 6px; border: 1px solid #d8dde3; border-bottom-width: 2px; border-radius: 5px; background: #fff; color: #8a95a3; font-family: inherit; font-size: 9px; }
.v2-search-results {
  position:absolute;
  z-index:1060;
  top:calc(100% + 8px);
  left:0;
  width:min(520px,calc(100vw - 2rem));
  max-height:min(68vh,560px);
  overflow-y:auto;
  padding:7px;
  border:1px solid #d7dde4;
  border-radius:11px;
  background:#fff;
  box-shadow:0 18px 50px rgba(15,23,42,.18);
}
.v2-search-results[hidden] { display:none; }
.v2-search-status { padding:18px 14px; color:#748092; font-size:12px; text-align:center; }
.v2-search-group + .v2-search-group { margin-top:6px; padding-top:6px; border-top:1px solid #edf0f3; }
.v2-search-group-title { padding:5px 8px; color:#8a95a3; font-size:9px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.v2-search-result { display:grid; grid-template-columns:32px minmax(0,1fr) auto; gap:9px; align-items:center; padding:8px; border-radius:8px; color:#26313d !important; text-decoration:none; }
.v2-search-result:hover, .v2-search-result.active { background:#f5f7f9; }
.v2-search-result-icon { display:grid; width:32px; height:32px; place-items:center; border-radius:8px; background:#fcecef; color:#c5223d; }
.v2-search-result.customer .v2-search-result-icon { background:#eaf2ff; color:#3972c9; }
.v2-search-result-copy { min-width:0; }
.v2-search-result-copy strong, .v2-search-result-copy small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.v2-search-result-copy strong { font-size:11.5px; }
.v2-search-result-copy small { margin-top:2px; color:#748092; font-size:10px; }
.v2-search-result-meta { color:#748092; font-size:9.5px; white-space:nowrap; }
.v2-search-all { display:flex; justify-content:center; margin-top:6px; padding:9px; border-top:1px solid #edf0f3; color:#c5223d !important; font-size:10.5px; font-weight:750; text-decoration:none; }
.v2-icon-button { position: relative; width: 39px; height: 39px; display: grid; place-items: center; border: 0; border-radius: 9px; background: transparent; color: #586575; cursor: pointer; }
.v2-icon-button:hover { background: #f1f3f5; }
.v2-icon-button[aria-expanded="true"] { background:#fcecef; color:#c5223d; }
.v2-attention-shell { position:relative; }
.v2-attention-badge { position:absolute; top:-4px; right:-5px; min-width:19px; height:19px; display:grid; place-items:center; padding:0 5px; border:2px solid #fff; border-radius:10px; background:#c5223d; color:#fff; font-size:8.5px; font-weight:850; line-height:1; }
.v2-attention-badge[hidden] { display:none; }
.v2-attention-panel { position:absolute; z-index:1080; top:calc(100% + 11px); right:0; width:min(410px,calc(100vw - 24px)); max-height:min(78vh,650px); overflow:hidden; border:1px solid #d7dde4; border-radius:13px; background:#fff; box-shadow:0 22px 60px rgba(15,23,42,.2); }
.v2-attention-panel[hidden] { display:none; }
.v2-attention-head { min-height:70px; display:flex; align-items:center; justify-content:space-between; gap:16px; padding:13px 15px; border-bottom:1px solid #e7eaee; background:linear-gradient(135deg,#fff7f8,#fff); }
.v2-attention-head span { color:#c5223d; font-size:8.5px; font-weight:800; letter-spacing:.09em; text-transform:uppercase; }
.v2-attention-head h2 { margin:2px 0 0; color:#17202b; font-size:16px; font-weight:760; }
.v2-attention-close { width:38px; height:38px; display:grid; place-items:center; flex:0 0 auto; border:0; border-radius:9px; background:transparent; color:#748092; cursor:pointer; }
.v2-attention-close:hover { background:#f0f2f4; color:#17202b; }
.v2-attention-sound { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 10px; padding:12px 15px; border-bottom:1px solid #e7eaee; background:#f8f9fa; }
.v2-attention-sound label { min-width:0; margin:0; color:#5f6c7b; font-size:9px; font-weight:700; letter-spacing:.03em; text-transform:none; }
.v2-attention-sound label > span { display:block; margin-bottom:5px; }
.v2-attention-sound select { width:100%; height:36px; padding:0 28px 0 9px; border:1px solid #d7dde4; border-radius:8px; background:#fff; color:#26313d; font-size:11px; }
.v2-attention-test { align-self:end; min-height:36px; padding:0 11px; border:1px solid #d7dde4; border-radius:8px; background:#fff; color:#4f5c6c; cursor:pointer; font-size:10.5px; font-weight:700; white-space:nowrap; }
.v2-attention-test:hover { border-color:#aeb8c4; color:#17202b; }
.v2-attention-sound p { grid-column:1 / -1; min-height:14px; margin:0; color:#748092; font-size:9.5px; }
.v2-attention-list { max-height:390px; overflow-y:auto; overscroll-behavior:contain; }
.v2-attention-item { min-height:72px; display:grid; grid-template-columns:36px minmax(0,1fr) 13px; gap:10px; align-items:center; padding:10px 14px; border-bottom:1px solid #edf0f3; color:#26313d !important; text-decoration:none; }
.v2-attention-item:hover { background:#fafbfc; }
.v2-attention-item-icon { width:36px; height:36px; display:grid; place-items:center; border-radius:9px; background:#eaf2ff; color:#3972c9; }
.v2-attention-item.customer_reply .v2-attention-item-icon { background:#e8f7f1; color:#1f8f68; }
.v2-attention-item.critical .v2-attention-item-icon { background:#fcecef; color:#c5223d; }
.v2-attention-item.follow_up .v2-attention-item-icon,
.v2-attention-item.note_reminder .v2-attention-item-icon { background:#fff4df; color:#c77b14; }
.v2-attention-item.unassigned .v2-attention-item-icon,
.v2-attention-item.overdue .v2-attention-item-icon { background:#f0f2f4; color:#657181; }
.v2-attention-copy { min-width:0; }
.v2-attention-copy > span { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.v2-attention-copy strong { color:#26313d; font-size:11px; font-weight:750; }
.v2-attention-copy time { flex:0 0 auto; color:#8a95a3; font-size:8.5px; }
.v2-attention-copy p { overflow:hidden; margin:3px 0 2px; color:#17202b; font-size:11.5px; font-weight:620; text-overflow:ellipsis; white-space:nowrap; }
.v2-attention-copy small { display:block; overflow:hidden; color:#748092; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.v2-attention-item > i { color:#b2bac4; font-size:9px; }
.v2-attention-empty { min-height:150px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; padding:25px; color:#8a95a3; font-size:11px; text-align:center; }
.v2-attention-empty i { color:#b6bec8; font-size:19px; }
.v2-attention-foot { min-height:47px; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:8px 14px; border-top:1px solid #e7eaee; background:#fbfcfd; }
.v2-attention-foot button { border:0; background:transparent; color:#748092; cursor:pointer; font-size:9.5px; }
.v2-attention-foot a { color:#3972c9; font-size:9.5px; font-weight:700; text-decoration:none; }
.v2-create-button { height: 39px; display: inline-flex; align-items: center; gap: 7px; padding: 0 14px; border-radius: 9px; background: #c5223d; color: #fff !important; box-shadow: 0 4px 10px rgba(197,34,61,.18); text-decoration: none; font-size: 11.5px; font-weight: 680; }
.v2-create-button:hover { background: #a91731; }

.portal-v2 .app-layout { display: block; max-width: none; min-height: 100vh; margin: 0; padding: 0; }
.portal-v2 .side-nav {
  position: fixed;
  z-index: 1040;
  inset: 0 auto 0 0;
  height: 100vh;
  height: 100dvh;
  width: var(--sidebar-width);
  display: flex;
  flex-direction: column;
  overflow-x: hidden;
  overflow-y: hidden;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: #141920;
  box-shadow: none;
}
.v2-sidebar-brand { height: 74px; display: flex; align-items: center; gap: 11px; flex: 0 0 74px; margin: 0 14px 17px; padding: 0 8px; border-bottom: 1px solid rgba(255,255,255,.07); color: #fff !important; text-decoration: none; }
.v2-brand-logo { position: relative; width: 42px; height: 42px; overflow: hidden; flex: 0 0 auto; border-radius: 50%; background: #fff; box-shadow: 0 0 0 1px rgba(255,255,255,.2), 0 4px 12px rgba(0,0,0,.25); }
.v2-brand-logo img { position: absolute; width: 75px; height: 75px; max-width: none; inset: 50% auto auto 50%; transform: translate(-50%, -50%); object-fit: contain; }
.v2-brand-copy { min-width: 0; display: flex; flex-direction: column; line-height: 1.25; }
.v2-brand-copy strong { color: #fff; font-size: 13.5px; font-weight: 720; }
.v2-brand-copy small { margin-top: 2px; color: #7f8a99; font-size: 9.5px; font-weight: 650; letter-spacing: .07em; text-transform: uppercase; }
.v2-sidebar-scroll {
  min-height: 0;
  flex: 1 1 auto;
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: contain;
  touch-action: pan-y;
  padding: 0 14px 18px;
  scrollbar-gutter: stable;
  scrollbar-width: thin;
  scrollbar-color: #465263 transparent;
}
.v2-sidebar-scroll:focus-visible { outline: 2px solid #f05570; outline-offset: -2px; }
.v2-sidebar-scroll::-webkit-scrollbar { width: 8px; }
.v2-sidebar-scroll::-webkit-scrollbar-track { background: transparent; }
.v2-sidebar-scroll::-webkit-scrollbar-thumb { border: 2px solid #141920; border-radius: 999px; background: #465263; }
.v2-sidebar-scroll::-webkit-scrollbar-thumb:hover { background: #647184; }
.portal-v2 .nav-section-header { padding: 4px 10px 7px; color: #687484; font-size: 9.5px; font-weight: 750; letter-spacing: .12em; }
.portal-v2 .nav-link { position: relative; width: auto; min-height: 39px; display: flex; align-items: center; gap: 11px; margin: 2px 0; padding: 0 10px; border: 0; border-radius: 8px; background: transparent; color: #98a4b3; font-size: 12.5px; font-weight: 570; text-decoration: none; transition: color .15s, background .15s; }
.portal-v2 .nav-link:hover { background: rgba(255,255,255,.045); color: #edf1f5; }
.portal-v2 .nav-link i { width: 17px; color: #778495; font-size: 15px; opacity: 1; text-align: center; }
.portal-v2 .nav-link span { min-width: 0; flex: 1; }
.portal-v2 .nav-link.active { background: rgba(197,34,61,.15); color: #fff; font-weight: 620; }
.portal-v2 .nav-link.active::before { content: ""; position: absolute; left: -14px; width: 3px; height: 23px; border-radius: 0 4px 4px 0; background: #c5223d; }
.portal-v2 .nav-link.active i { color: #f05570; }
.v2-nav-count { min-width: 23px; height: 20px; display: grid; place-items: center; padding: 0 6px; border-radius: 10px; background: rgba(255,255,255,.09); color: #cbd2dc; font-size: 9px; }
.v2-nav-button { cursor: pointer; text-align: left; }
.v2-nav-disclosure { margin-top: 17px; }
.v2-nav-disclosure summary { height: 27px; display: flex; align-items: center; justify-content: space-between; padding: 0 10px; color: #687484; cursor: pointer; list-style: none; font-size: 9.5px; font-weight: 750; letter-spacing: .12em; text-transform: uppercase; }
.v2-nav-disclosure summary::-webkit-details-marker { display: none; }
.v2-nav-disclosure summary i { font-size: 9px; transition: transform .18s; }
.v2-nav-disclosure[open] summary i { transform: rotate(90deg); }
.v2-nav-admin { padding-bottom: 12px; }
.v2-sidebar-footer { position: static; z-index: 2; width: 100%; min-height: 70px; display: grid; grid-template-columns: 32px 1fr 24px; align-items: center; gap: 9px; flex: 0 0 auto; padding: 10px 18px; border-top: 1px solid rgba(255,255,255,.07); background: #141920; }
.v2-profile-avatar { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 9px; background: #293342; color: #fff; font-size: 9px; font-weight: 750; }
.v2-sidebar-footer > span:nth-child(2) { display: flex; flex-direction: column; }
.v2-sidebar-footer strong { color: #dfe4e9; font-size: 10px; }
.v2-sidebar-footer small { color: #727e8e; font-size: 8.5px; }
.v2-sidebar-footer > a { color: #778392; text-align: center; }
.v2-sidebar-footer > a:hover { color: #fff; }

.portal-v2 .content-wrapper { min-height: 100vh; margin-left: var(--sidebar-width); padding: 105px 34px 48px; }
.portal-v2 .content-card, .portal-v2 .card, .portal-v2 .stat-card { border-color: #e3e7ec; border-radius: 12px; box-shadow: 0 1px 2px rgba(21,29,40,.04), 0 4px 12px rgba(21,29,40,.035); }
.portal-v2 .btn { border-radius: 8px; font-size: .8125rem; }
.portal-v2 .btn-primary { background: #c5223d; color: #fff !important; }
.portal-v2 .btn-primary:hover, .portal-v2 .btn-primary:focus { background: #a91731; color: #fff !important; }
.portal-v2 table th { color: #7c8794; font-size: .7rem; }
.portal-v2 table td { color: #4e5a68; font-size: .8125rem; }
.portal-v2 tr:hover td { background: #fafbfc; }
.portal-v2 a { color: #3972c9; }
.portal-v2 a:hover { color: #285da9; }
.portal-v2 .flash-container { top: 86px; }
.v2-local-banner { position: fixed; z-index: 1035; top: 74px; right: 0; left: var(--sidebar-width); height: 27px; display: flex; align-items: center; justify-content: center; gap: 7px; border-bottom: 1px solid #eedaa6; background: #fff7df; color: #86601c; font-size: 9.5px; font-weight: 680; letter-spacing: .02em; }
.portal-v2:has(.v2-local-banner) .content-wrapper { padding-top: 124px; }

/* Operations Home */
.ops-home { max-width: 1460px; margin: 0 auto; }
.ops-page-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; margin-bottom: 24px; }
.ops-eyebrow { color: #c5223d; font-size: 9.5px; font-weight: 780; letter-spacing: .115em; text-transform: uppercase; }
.ops-page-head h1 { margin: 2px 0 4px; color: #17202b; font-size: 27px; font-weight: 740; letter-spacing: -.035em; line-height: 1.2; }
.ops-page-head p { margin: 0; color: #748092; font-size: 12.5px; }
.ops-head-actions { display: flex; gap: 8px; }
.ops-button { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; gap: 7px; padding: 0 13px; border: 1px solid #d7dde4; border-radius: 8px; background: #fff; color: #4a5664 !important; cursor: pointer; font-size: 11px; font-weight: 680; text-decoration: none; }
.ops-button.primary { border-color: #c5223d; background: #c5223d; color: #fff !important; }
.ops-attention { min-height: 74px; display: flex; align-items: center; gap: 22px; margin-bottom: 18px; padding: 12px 15px 12px 17px; border: 1px solid #edd4d8; border-radius: 12px; background: linear-gradient(92deg,#fff7f8 0%,#fff 50%); box-shadow: 0 1px 2px rgba(21,29,40,.04); }
.ops-attention-title { min-width: 245px; display: flex; align-items: center; gap: 13px; }
.ops-pulse { width: 31px; height: 31px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; background: #fcecef; }
.ops-pulse i { width: 10px; height: 10px; border-radius: 50%; background: #c5223d; box-shadow: 0 0 0 5px rgba(197,34,61,.10); }
.ops-attention-title div { display: flex; flex-direction: column; }
.ops-attention-title strong { font-size: 12px; }
.ops-attention-title small { margin-top: 2px; color: #748092; font-size: 9.5px; }
.ops-attention-links { flex: 1; display: flex; gap: 8px; }
.ops-attention-links a { height: 37px; display: flex; align-items: center; gap: 8px; padding: 0 11px; border: 1px solid #e3e7ec; border-radius: 8px; background: #fff; color: #485565; font-size: 10.5px; font-weight: 600; text-decoration: none; white-space: nowrap; }
.ops-chip { min-width: 21px; height: 21px; display: grid; place-items: center; border-radius: 6px; font-size: 9px; font-weight: 800; }
.ops-chip.red { background: #fcecef; color: #c5223d; }
.ops-chip.amber { background: #fff4df; color: #c77b14; }
.ops-chip.blue { background: #eaf2ff; color: #3972c9; }
.ops-kpis { display: grid; grid-template-columns: repeat(4,1fr); gap: 13px; margin-bottom: 18px; }
.ops-kpi { padding: 16px 17px 13px; border: 1px solid #e3e7ec; border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(21,29,40,.04),0 4px 12px rgba(21,29,40,.035); }
.ops-kpi-top { display: flex; align-items: center; justify-content: space-between; }
.ops-kpi-icon { width: 31px; height: 31px; display: grid; place-items: center; border-radius: 8px; }
.ops-kpi-icon.red { background: #fcecef; color: #c5223d; }
.ops-kpi-icon.blue { background: #eaf2ff; color: #3972c9; }
.ops-kpi-icon.green { background: #e8f7f1; color: #1f8f68; }
.ops-kpi-icon.gold { background: #fff4df; color: #c77b14; }
.ops-trend { padding: 3px 7px; border-radius: 999px; background: #e8f7f1; color: #1f8f68; font-size: 8.5px; font-weight: 700; }
.ops-trend.neutral { background: #f0f2f4; color: #697584; }
.ops-kpi-value { margin-top: 10px; font-size: 23px; font-weight: 750; letter-spacing: -.035em; line-height: 1.1; }
.ops-kpi-label { margin-top: 3px; color: #576372; font-size: 10px; font-weight: 570; }
.ops-kpi-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 13px; padding-top: 10px; border-top: 1px solid #eef0f2; color: #84909e; font-size: 8.5px; }
.ops-kpi-foot a { color: #5d6877; font-weight: 680; text-decoration: none; }
.ops-main-grid { display: grid; grid-template-columns: minmax(0,1.82fr) minmax(280px,.8fr); gap: 18px; }
.ops-panel { overflow: hidden; border: 1px solid #e3e7ec; border-radius: 12px; background: #fff; box-shadow: 0 1px 2px rgba(21,29,40,.04),0 4px 12px rgba(21,29,40,.035); }
.ops-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 18px 19px 14px; }
.ops-panel-head h2 { margin: 0; font-size: 13.5px; font-weight: 720; }
.ops-panel-head p { margin: 2px 0 0; color: #748092; font-size: 10px; }
.ops-panel-head a { display: flex; align-items: center; gap: 5px; color: #3972c9; font-size: 10.5px; font-weight: 650; text-decoration: none; }
.ops-queue { border-top: 1px solid #edf0f2; }
.ops-queue-row { position: relative; min-height: 76px; display: grid; grid-template-columns: 3px 36px minmax(0,1fr) auto 18px; align-items: center; gap: 12px; padding: 10px 15px 10px 0; border-bottom: 1px solid #edf0f2; color: inherit !important; text-decoration: none; }
.ops-queue-row:last-child { border-bottom: 0; }
.ops-queue-row:hover { background: #fafbfc; }
.ops-priority-bar { align-self: stretch; width: 3px; border-radius: 0 3px 3px 0; background: #3972c9; }
.ops-priority-bar.critical { background: #c5223d; }
.ops-priority-bar.overdue { background: #c77b14; }
.ops-priority-bar.proposal { background: #3972c9; }
.ops-queue-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 9px; background: #eaf2ff; color: #3972c9; }
.ops-queue-icon.critical { background: #fcecef; color: #c5223d; }
.ops-queue-icon.overdue { background: #fff4df; color: #c77b14; }
.ops-queue-main { min-width: 0; display: flex; flex-direction: column; }
.ops-queue-main > span { display: flex; align-items: center; gap: 7px; }
.ops-queue-main b { color: #697484; font-size: 8.5px; letter-spacing: .03em; }
.ops-queue-main strong { margin-top: 3px; overflow: hidden; color: #17202b; font-size: 11.5px; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.ops-queue-main small { margin-top: 2px; color: #748092; font-size: 9px; }
.ops-status { padding: 2px 6px; border-radius: 999px; background: #eaf2ff; color: #3972c9; font-size: 7.5px; font-style: normal; font-weight: 720; }
.ops-status.critical, .ops-status.overdue { background: #fcecef; color: #c5223d; }
.ops-queue-value { color: #657181; font-size: 9px; font-weight: 650; white-space: nowrap; }
.ops-right { display: flex; flex-direction: column; gap: 18px; }
.ops-schedule { padding: 0 18px 12px; }
.ops-schedule-row { min-height: 56px; display: grid; grid-template-columns: 42px 2px 1fr; align-items: center; gap: 10px; }
.ops-schedule-time { display: flex; flex-direction: column; align-items: flex-end; font-size: 8px; }
.ops-schedule-time b { font-size: 9.5px; }
.ops-schedule-line { align-self: stretch; margin: 6px 0; border-radius: 2px; background: #3972c9; }
.ops-schedule-row > div:last-child { min-width: 0; display: flex; flex-direction: column; }
.ops-schedule-row strong { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.ops-schedule-row small { margin-top: 2px; overflow: hidden; color: #748092; font-size: 8.5px; text-overflow: ellipsis; white-space: nowrap; }
.ops-team { padding: 0 18px 13px; }
.ops-team-row { display: grid; grid-template-columns: 27px 1fr 16px; align-items: center; gap: 9px; padding: 6px 0; }
.ops-team-avatar { width: 27px; height: 27px; display: grid; place-items: center; border-radius: 8px; background: #f2dbe0; color: #c5223d; font-size: 8px; font-weight: 750; }
.ops-team-row > div { display: flex; flex-direction: column; gap: 4px; }
.ops-team-row strong { font-size: 9.5px; }
.ops-load { height: 4px; overflow: hidden; border-radius: 3px; background: #edf0f2; }
.ops-load i { display: block; height: 100%; border-radius: 3px; background: #8694a4; }
.ops-team-row > b { font-size: 10px; }
.ops-empty { padding: 30px 18px; color: #8a95a2; font-size: 10px; text-align: center; }

@media (max-width: 1180px) {
  .ops-kpis { grid-template-columns: repeat(2,1fr); }
  .ops-attention-links { overflow-x: auto; }
}

@media (max-width: 900px) {
  .portal-v2 .side-nav { display: flex; transform: translateX(-100%); transition: transform .2s; }
  .portal-v2 .side-nav.open { transform: translateX(0); }
  .portal-v2 .app-header.v2-topbar { left: 0; padding: 0 20px; }
  .portal-v2 .content-wrapper { margin-left: 0; padding: 101px 20px 40px; }
  .v2-local-banner { left: 0; }
  .portal-v2:has(.v2-local-banner) .content-wrapper { padding-top: 124px; }
  .portal-v2 .mobile-menu-toggle { display: flex; }
  .portal-v2 .sidebar-overlay { top: 0; z-index: 1038; }
  .v2-search-shell { width:auto; min-width:0; flex:1; }
  .v2-global-search { width:100%; }
  .ops-main-grid { grid-template-columns: 1fr; }
  .ops-right { display: grid; grid-template-columns: repeat(2,1fr); }
  .ops-attention { align-items: flex-start; flex-wrap: wrap; }
  .ops-attention-links { order: 3; flex-basis: 100%; }
}

@media (max-width: 620px) {
  .v2-icon-button { width:44px; height:44px; }
  .v2-search-shell { width:auto; min-width:0; flex:1; }
  .v2-global-search { width:100%; }
  .v2-global-search input[type=search] { font-size:16px; }
  .v2-global-search kbd { display: none; }
  .v2-search-results { position:fixed; top:70px; right:10px; left:10px; width:auto; max-height:calc(100dvh - 85px); }
  .v2-create-button { width:44px; height:44px; justify-content:center; padding:0; font-size:0; }
  .v2-create-button i { font-size: 13px; }
  .v2-attention-panel { position:fixed; inset:auto 0 auto 0; bottom:calc(74px - 100vh); bottom:calc(74px - 100dvh); width:auto; max-height:88dvh; border-width:1px 0 0; border-radius:17px 17px 0 0; padding-bottom:env(safe-area-inset-bottom,0); }
  .v2-attention-head { min-height:64px; padding:11px 15px; border-radius:17px 17px 0 0; }
  .v2-attention-close { width:44px; height:44px; }
  .v2-attention-sound { padding:11px 14px; }
  .v2-attention-sound select { min-height:44px; font-size:16px; }
  .v2-attention-test { min-height:44px; }
  .v2-attention-list { max-height:calc(88dvh - 226px); }
  .v2-attention-item { min-height:72px; padding:10px 14px; }
  .v2-attention-foot { min-height:52px; }
  .ops-page-head { align-items: flex-start; flex-direction: column; }
  .ops-kpis { grid-template-columns: 1fr; }
  .ops-right { grid-template-columns: 1fr; }
}
