:root {
  --v2-bg: #031523;
  --v2-panel: rgba(5, 31, 46, .94);
  --v2-line: rgba(50, 177, 190, .34);
  --v2-green: #35d48a;
  --v2-blue: #3d95ff;
  --v2-amber: #f4a62a;
  --v2-red: #f04f55;
  --v2-text: #eefcff;
  --v2-muted: #8fb2bd;
  --v2-sidebar-width: 118px;
  --v2-topbar-height: 72px;
}

/* 市政绿地：公园、绿地、行道树统一工作台 */
.municipal-heading { margin-bottom: 12px; }
.municipal-context { align-self: center; padding: 8px 12px; border: 1px solid rgba(76, 175, 123, .28); border-radius: 999px; color: #83d9a8; background: rgba(47, 158, 100, .1); }
.municipal-readonly, .municipal-actions { margin: 0 0 12px; min-height: 42px; display: flex; align-items: center; gap: 8px; }
.municipal-readonly { padding: 10px 14px; border: 1px solid rgba(255, 179, 71, .22); border-radius: 10px; color: #e6c789; background: rgba(255, 179, 71, .06); }
.municipal-actions button, .municipal-tabs button { border: 1px solid rgba(101, 198, 143, .28); color: #dceee4; background: rgba(16, 42, 32, .82); border-radius: 8px; padding: 9px 13px; cursor: pointer; }
.municipal-actions button:first-child, .municipal-tabs button.is-active { color: #071f14; background: #65c68f; border-color: #65c68f; }
.municipal-kpis { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 10px; margin-bottom: 12px; }
.municipal-kpis article { padding: 14px; border: 1px solid rgba(125, 179, 151, .16); border-radius: 12px; background: linear-gradient(145deg, rgba(21, 52, 40, .94), rgba(8, 26, 19, .96)); }
.municipal-kpis b { display: block; color: #8ee0b1; font-size: 25px; }
.municipal-kpis span { color: #9eb3a7; font-size: 12px; }
.municipal-workspace { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(340px, .72fr); gap: 12px; }
.municipal-main, .municipal-detail { border: 1px solid rgba(125, 179, 151, .16); border-radius: 14px; background: rgba(7, 24, 17, .92); overflow: hidden; }
.municipal-tabs { display: flex; gap: 8px; padding: 12px; border-bottom: 1px solid rgba(125, 179, 151, .13); }
.municipal-tabs button span { margin-left: 8px; opacity: .7; }
.municipal-content { display: grid; grid-template-columns: 170px minmax(280px, 1fr) minmax(270px, .82fr); min-height: 520px; }
.municipal-filters { padding: 12px; border-right: 1px solid rgba(125, 179, 151, .13); }
.municipal-filters label { display: grid; gap: 6px; margin-bottom: 14px; color: #9eb3a7; font-size: 12px; }
.municipal-filters input, .municipal-filters select { width: 100%; padding: 9px; border: 1px solid rgba(125, 179, 151, .22); border-radius: 7px; color: #e7f2eb; background: #102b20; }
.municipal-map { position: relative; min-height: 400px; background: radial-gradient(circle at 40% 45%, rgba(61, 141, 96, .2), transparent 42%), linear-gradient(135deg, #102c20, #071811); }
.municipal-map-placeholder { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; color: #86a995; pointer-events: none; }
.municipal-map-placeholder b { color: #bfe5cf; font-size: 18px; }
.municipal-map-placeholder p, .municipal-map-placeholder small { margin: 5px 0 0; }
.municipal-list { border-left: 1px solid rgba(125, 179, 151, .13); overflow: auto; }
.municipal-list > header, .municipal-detail > header { display: flex; justify-content: space-between; align-items: center; padding: 13px; border-bottom: 1px solid rgba(125, 179, 151, .13); }
.municipal-row { width: 100%; display: grid; grid-template-columns: 1.35fr 1fr .65fr .65fr; gap: 8px; align-items: center; padding: 11px 12px; border: 0; border-bottom: 1px solid rgba(125, 179, 151, .1); color: #dfece4; text-align: left; background: transparent; cursor: pointer; }
.municipal-row:hover, .municipal-row.is-selected { background: rgba(73, 174, 116, .12); }
.municipal-row span:first-child { display: grid; gap: 3px; }
.municipal-row small, .municipal-row span:not(:first-child) { color: #8ea99a; font-size: 11px; }
.municipal-detail { max-height: 680px; overflow: auto; }
.municipal-detail > header small { color: #77c999; }
.municipal-detail > header h2 { margin: 3px 0 0; }
.municipal-state { padding: 5px 8px; border-radius: 99px; background: rgba(75, 182, 122, .12); color: #8ee0b1; }
.municipal-detail-grid { display: grid; gap: 10px; padding: 10px; }
.municipal-detail-block { padding: 11px; border: 1px solid rgba(125, 179, 151, .12); border-radius: 9px; background: rgba(18, 48, 35, .45); }
.municipal-detail-block header { display: flex; justify-content: space-between; margin-bottom: 8px; color: #bfe5cf; }
.municipal-detail-block header span { color: #75ca9a; }
.municipal-detail-block p { margin: 6px 0; color: #9eb3a7; font-size: 12px; }
.municipal-detail-block p b, .municipal-detail-block p span { margin-right: 8px; color: #dceee4; }
.municipal-detail-block a { display: inline-block; margin: 3px 6px 3px 0; color: #8ddfb0; }
.municipal-detail-archive dl { display: grid; grid-template-columns: 76px 1fr; gap: 6px 10px; margin: 0; font-size: 12px; }
.municipal-detail-archive dt { color: #789586; }
.municipal-detail-archive dd { margin: 0; color: #dceee4; }
.municipal-empty { padding: 24px; color: #7f9b8b; text-align: center; }
.municipal-error { padding: 9px 12px; color: #ffc1b7; background: rgba(181, 62, 47, .12); border-radius: 8px; }
@media (max-width: 1500px) { .municipal-workspace { grid-template-columns: 1fr; } .municipal-content { min-height: 450px; } .municipal-detail { max-height: none; } }
@media (max-width: 980px) { .municipal-kpis { grid-template-columns: repeat(2, 1fr); } .municipal-content { grid-template-columns: 1fr; } .municipal-filters, .municipal-list { border: 0; border-bottom: 1px solid rgba(125, 179, 151, .13); } .municipal-map { min-height: 320px; } }

* { box-sizing: border-box; }

html,
body {
  margin: 0;
  min-height: 100%;
  overflow-x: hidden;
  background: var(--v2-bg);
  color: var(--v2-text);
  font-family: "Microsoft YaHei", "PingFang SC", sans-serif;
}

button,
select { font: inherit; }

.v2-topbar {
  position: fixed;
  inset: 0 0 auto;
  height: var(--v2-topbar-height);
  display: grid;
  grid-template-columns: minmax(300px, 1fr) auto minmax(300px, 1fr);
  align-items: center;
  border-bottom: 1px solid rgba(57, 190, 183, .4);
  background: linear-gradient(180deg, rgba(3, 22, 34, .99), rgba(3, 19, 31, .96));
  box-shadow: 0 10px 28px rgba(0, 0, 0, .28);
  z-index: 50;
}

.v2-brand {
  grid-column: 2;
  display: flex;
  align-items: center;
  gap: 12px;
  justify-self: center;
  white-space: nowrap;
  color: inherit;
  text-decoration: none;
}

.v2-brand img { width: 32px; height: 32px; object-fit: cover; border-radius: 8px; }
.v2-brand span { display: grid; }
.v2-brand b { font-size: 20px; letter-spacing: .08em; }
.v2-brand small { color: var(--v2-muted); font-size: 9px; letter-spacing: .16em; }
.v2-context { justify-self: start; display: flex; gap: 8px; padding-left: 18px; }
.v2-context label { display: flex; align-items: center; gap: 6px; color: var(--v2-muted); font-size: 12px; }
.v2-tools { justify-self: end; display: flex; align-items: center; gap: 12px; padding-right: 18px; }
.v2-context select,
.v2-tools button,
.v2-direct-select select,
.v2-camera-overlay select {
  min-height: 32px;
  border: 1px solid var(--v2-line);
  border-radius: 7px;
  background: rgba(7, 38, 51, .94);
  color: var(--v2-text);
  outline: none;
}
.v2-context select { max-width: 188px; padding: 0 28px 0 10px; }
.v2-tools { color: #b9d4da; font-size: 12px; }
.v2-tools button { padding: 0 10px; }
.v2-tools i { color: var(--v2-amber); font-style: normal; }

.v2-sidebar {
  position: fixed;
  top: var(--v2-topbar-height);
  bottom: 0;
  left: 0;
  width: var(--v2-sidebar-width);
  border-right: 1px solid var(--v2-line);
  background: rgba(3, 21, 35, .98);
  z-index: 40;
}

.v2-sidebar nav { display: grid; gap: 4px; padding: 10px 8px; }
.v2-nav-item {
  min-height: 58px;
  display: grid;
  grid-template-columns: 24px minmax(0, 1fr);
  align-items: center;
  gap: 6px;
  padding: 7px 8px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: #a8c2ca;
  cursor: pointer;
  text-align: left;
}
.v2-nav-item:hover,
.v2-nav-item.is-active { border-color: rgba(53, 212, 138, .45); background: rgba(35, 157, 106, .18); color: #f2fffa; }
.v2-nav-item.is-active { box-shadow: inset 3px 0 var(--v2-green); }
.v2-nav-icon { width: 22px; height: 22px; display: grid; place-items: center; border-radius: 7px; background: rgba(52, 211, 139, .16); box-shadow: inset 0 0 0 1px rgba(79, 221, 157, .48); font-style: normal; }
.v2-nav-icon::before { font-family: "Segoe MDL2 Assets"; color: #83f4ba; font-size: 12px; line-height: 1; }
.v2-nav-icon--overview::before { content: "\E80F"; }
.v2-nav-icon--projects::before { content: "\E8A5"; }
.v2-nav-icon--orders::before { content: "\E77F"; }
.v2-nav-icon--inspections::before { content: "\E707"; }
.v2-nav-icon--iot::before { content: "\E950"; }
.v2-nav-icon--analytics::before { content: "\E9D2"; }
.v2-nav-icon--reports::before { content: "\E8A5"; }
.v2-nav-icon--enterprise::before { content: "\E713"; }
.v2-nav-item span { font-size: 12px; white-space: nowrap; }
.v2-sidebar-foot { position: absolute; inset: auto 12px 16px; display: grid; gap: 3px; color: var(--v2-green); font-size: 11px; }
.v2-sidebar-foot small { color: var(--v2-muted); font-size: 9px; }

.v2-main {
  margin: var(--v2-topbar-height) 0 0 var(--v2-sidebar-width);
  min-height: calc(100vh - var(--v2-topbar-height));
}

.v2-loading { min-height: 50vh; display: grid; place-content: center; color: var(--v2-muted); }
.v2-toast { position: fixed; right: 20px; bottom: 20px; z-index: 100; max-width: 360px; padding: 12px 16px; border: 1px solid var(--v2-line); border-radius: 8px; background: #083044; opacity: 0; transform: translateY(12px); pointer-events: none; transition: .2s ease; }
.v2-toast.is-visible { opacity: 1; transform: translateY(0); }
.v2-fatal-error { margin: 24px; padding: 28px; border: 1px solid rgba(240, 79, 85, .45); border-radius: 10px; background: rgba(82, 20, 29, .3); }

body.v2-modal-open { overflow: hidden; }
.v2-drilldown-root { position: fixed; inset: 0; z-index: 600; pointer-events: none; }
.v2-drilldown-layer { position: absolute; inset: 0; display: grid; place-items: center; padding: 5vh 5vw; background: rgba(0, 10, 18, .78); pointer-events: auto; }
.v2-drilldown-backdrop { position: absolute; inset: 0 0 auto; height: max(5vh, 16px); border: 0; background: transparent; cursor: default; }
.v2-drilldown-dialog { position: relative; z-index: 1; width: 90vw; height: 90vh; max-width: calc(100vw - 32px); max-height: calc(100vh - 32px); display: grid; grid-template-rows: auto minmax(0, 1fr); overflow: hidden; border: 1px solid rgba(78, 210, 188, .48); border-radius: 12px; background: linear-gradient(155deg, #082d3d, #031823); box-shadow: 0 28px 72px rgba(0, 0, 0, .54); }
.v2-drilldown-dialog > header { min-height: 58px; display: flex; align-items: center; justify-content: space-between; gap: 18px; padding: 12px 18px; border-bottom: 1px solid rgba(73, 172, 175, .24); background: rgba(6, 38, 49, .92); }
.v2-drilldown-dialog h2 { margin: 0; font-size: 18px; font-weight: 600; }
.v2-drilldown-dialog [data-drilldown-close="x"] { width: 32px; height: 32px; border: 1px solid var(--v2-line); border-radius: 7px; background: rgba(6, 30, 42, .78); color: var(--v2-text); font-size: 23px; line-height: 1; cursor: pointer; }
.v2-drilldown-dialog [data-drilldown-close="x"]:hover { border-color: var(--v2-green); color: #91f7c3; }
.v2-drilldown-content { min-width: 0; min-height: 0; overflow: auto; padding: 18px; }

.v2-project-workspace { display: grid; grid-template-columns: minmax(320px, .84fr) minmax(0, 1.7fr); gap: 14px; padding: 0 18px 18px; }
.v2-project-directory, .v2-site-directory { min-width: 0; overflow: hidden; }
.v2-project-directory > header, .v2-site-directory > header { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 16px 18px; border-bottom: 1px solid var(--v2-line); }
.v2-project-directory h2, .v2-site-directory h2 { max-width: 620px; margin: 3px 0 0; overflow: hidden; font-size: 16px; text-overflow: ellipsis; white-space: nowrap; }
.v2-project-directory > header > span, .v2-site-directory > header > span { color: var(--v2-green); font-size: 11px; white-space: nowrap; }
.v2-project-rows { max-height: calc(100vh - 405px); overflow: auto; padding: 10px; }
.v2-project-directory__row { width: 100%; display: grid; grid-template-columns: 8px minmax(0, 1fr); gap: 10px; align-items: center; padding: 11px 10px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--v2-text); cursor: pointer; text-align: left; }
.v2-project-directory__row:hover, .v2-project-directory__row.is-selected { border-color: rgba(53, 212, 138, .42); background: rgba(31, 136, 98, .14); }
.v2-project-directory__row > i { width: 8px; height: 34px; border-radius: 999px; background: var(--project-color); box-shadow: 0 0 12px color-mix(in srgb, var(--project-color) 48%, transparent); }
.v2-project-directory__row > span { min-width: 0; display: grid; gap: 4px; }
.v2-project-directory__row b { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.v2-project-directory__row small { overflow: hidden; color: var(--v2-muted); font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.v2-project-filters { display: grid; gap: 9px; padding: 14px; border-top: 1px solid rgba(74, 162, 172, .2); background: rgba(4, 26, 37, .54); }
.v2-project-filters label { display: grid; gap: 5px; color: var(--v2-muted); font-size: 10px; }
.v2-project-filters input, .v2-project-filters select { min-width: 0; height: 32px; padding: 0 9px; border: 1px solid var(--v2-line); border-radius: 6px; background: rgba(4, 33, 45, .9); color: var(--v2-text); outline: none; }
.v2-project-filters input:focus, .v2-project-filters select:focus { border-color: var(--v2-green); box-shadow: 0 0 0 2px rgba(53, 212, 138, .12); }
.v2-directory-meta { display: flex; flex-wrap: wrap; gap: 8px 16px; padding: 11px 18px; border-bottom: 1px solid rgba(74, 162, 172, .16); color: var(--v2-muted); font-size: 10px; }
.v2-catalog-row, .v2-feature-row, .v2-feature-chips { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; padding: 10px 18px 0; }
.v2-catalog-row > span, .v2-feature-row > span { min-width: 28px; color: var(--v2-muted); font-size: 10px; }
.v2-catalog-row button, .v2-feature-row button, .v2-feature-chips span { padding: 5px 8px; border: 1px solid rgba(70, 170, 173, .3); border-radius: 999px; background: rgba(20, 96, 88, .16); color: #b8dbd7; font-size: 10px; }
.v2-catalog-row button, .v2-feature-row button { cursor: pointer; }
.v2-catalog-row button:hover, .v2-feature-row button:hover, .v2-catalog-row button.is-selected, .v2-feature-row button.is-selected { border-color: var(--v2-green); background: rgba(43, 167, 112, .22); color: #b7ffd5; }
.v2-catalog-row em, .v2-feature-row em { color: var(--v2-muted); font-size: 10px; font-style: normal; }
.v2-admin-tree { min-height: 0; max-height: calc(100vh - 350px); overflow: auto; margin: 12px 18px 18px; padding: 13px 14px; border: 1px solid rgba(68, 153, 163, .2); border-radius: 8px; background: rgba(3, 27, 40, .5); }
.v2-admin-tree ul { display: grid; gap: 6px; margin: 0; padding: 0 0 0 18px; list-style: none; }
.v2-admin-tree [data-tree-children][hidden] { display: none !important; }
.v2-admin-tree > ul { padding: 0; }
.v2-tree-node { position: relative; display: grid; gap: 6px; color: #cae3e2; font-size: 11px; }
.v2-tree-node:not(.v2-tree-node--city)::before { position: absolute; top: 9px; left: -12px; width: 7px; height: 1px; background: rgba(86, 180, 180, .42); content: ''; }
.v2-tree-label { font-weight: 600; }
.v2-tree-label--city { color: #96f3c0; }
.v2-tree-label--district { color: #d8f6f0; }
.v2-tree-label--street { color: #a8c9ce; font-weight: 500; }
.v2-tree-label[data-tree-summary] { width: max-content; max-width: 100%; padding: 0; border: 0; background: transparent; cursor: pointer; font: inherit; font-weight: 500; text-align: left; }
.v2-tree-label[data-tree-summary]:hover { color: #98f8c5; }
.v2-tree-node--site button { width: max-content; max-width: 100%; overflow: hidden; padding: 0; border: 0; background: transparent; color: #c7e6e2; cursor: pointer; font: inherit; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.v2-tree-node--site button:hover { color: #98f8c5; text-decoration: underline; }
.v2-site-empty { margin: 18px; color: var(--v2-muted); font-size: 11px; }
.v2-site-detail { display: grid; gap: 16px; }
.v2-site-detail__facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.v2-site-detail__facts span { display: grid; gap: 5px; padding: 11px; border: 1px solid rgba(70, 160, 166, .24); border-radius: 8px; color: #c8dcde; font-size: 11px; }
.v2-site-detail__facts b { color: var(--v2-muted); font-size: 10px; font-weight: 500; }
.v2-feature-chips { padding: 0; }
.v2-site-detail section > header { display: grid; gap: 4px; padding: 0 0 10px; border-bottom: 1px solid rgba(70, 160, 166, .2); }
.v2-site-detail h3 { margin: 0; font-size: 15px; }
.v2-site-order-workspace { min-width: 0; display: grid; grid-template-columns: minmax(0, 7fr) minmax(260px, 3fr); gap: 12px; }
.v2-site-order-list, .v2-site-order-calendar { min-width: 0; padding: 13px; border: 1px solid rgba(70, 160, 166, .24); border-radius: 9px; background: rgba(3, 28, 40, .5); }
.v2-site-order-list > header { grid-template-columns: minmax(0, 1fr) auto; align-items: end; }
.v2-site-order-list > header > button { padding: 6px 10px; border: 1px solid rgba(53, 212, 138, .5); border-radius: 6px; background: rgba(33, 126, 95, .16); color: #aaf5d0; cursor: pointer; }
.v2-site-order-list table { width: 100%; border-collapse: collapse; }
.v2-site-order-list th, .v2-site-order-list td { padding: 10px 8px; border-bottom: 1px solid rgba(70, 160, 166, .18); color: #c8dcde; font-size: 11px; text-align: left; }
.v2-site-order-list th { color: var(--v2-muted); font-size: 10px; font-weight: 500; }
.v2-site-order-list td:first-child { width: 48px; color: var(--v2-muted); text-align: center; }
.v2-site-order-list td:nth-child(2) { width: 132px; }
.v2-site-order-list td:nth-child(3) { width: 100px; white-space: nowrap; }
.v2-site-order-list td button { padding: 0; border: 0; background: transparent; color: #aaf5d0; cursor: pointer; font: inherit; }
.v2-site-order-list td button:hover { color: #fff; text-decoration: underline; }
.v2-site-order-empty { padding: 24px !important; color: var(--v2-muted) !important; text-align: center !important; }
.v2-site-order-calendar { align-content: start; display: grid; gap: 10px; }
.v2-site-order-calendar .v2-month-calendar { gap: 4px; }
.v2-site-order-calendar .v2-month-calendar button { min-height: 42px; padding: 5px; font-size: 10px; }
.v2-order-fallback p { color: var(--v2-muted); font-size: 10px; }
.v2-order-fallback h3 { margin: 7px 0 14px; }

.v2-orders-workspace { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 14px; padding: 0 18px 18px; }
.v2-order-projects { display: grid; align-content: start; gap: 6px; padding: 12px; }
.v2-order-projects header { display: grid; gap: 5px; padding: 5px 4px 12px; border-bottom: 1px solid var(--v2-line); }
.v2-order-projects h2 { margin: 0; font-size: 16px; }
.v2-order-projects > button, .v2-owner-two-pane aside button { width: 100%; display: grid; gap: 4px; padding: 10px; border: 1px solid rgba(70, 160, 166, .22); border-radius: 7px; background: rgba(5, 34, 45, .58); color: var(--v2-text); text-align: left; cursor: pointer; }
.v2-order-projects > button small, .v2-owner-two-pane aside small { color: var(--v2-muted); }
.v2-order-projects > button:hover, .v2-order-projects > button.is-selected, .v2-owner-two-pane aside button.is-selected { border-color: var(--v2-green); background: rgba(33, 126, 95, .16); }
.v2-orders-main { min-width: 0; display: grid; gap: 14px; }
.business-panel td button { border: 0; padding: 0; background: transparent; color: #aaf5d0; font: inherit; text-align: left; cursor: pointer; }
.business-panel td button:hover { color: #fff; text-decoration: underline; }
.v2-orders-empty { padding: 24px !important; color: var(--v2-muted); text-align: center !important; }
.v2-order-log { display: grid; gap: 10px; padding: 18px; }
.v2-order-log__head { padding-bottom: 10px; border-bottom: 1px solid var(--v2-line); }
.v2-order-log h3, .v2-order-log h4 { margin: 6px 0; }
.v2-order-log section { padding: 10px 12px; border: 1px solid rgba(70, 160, 166, .2); border-radius: 7px; background: rgba(3, 27, 40, .46); }
.v2-order-log p { margin: 0; color: #bcd5d9; font-size: 12px; line-height: 1.7; }
.v2-site-order-detail { display: grid; gap: 14px; padding: 18px; }
.v2-site-order-detail__head h3, .v2-site-order-detail h4 { margin: 6px 0; }
.v2-month-calendar { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.v2-month-calendar button { min-height: 58px; display: grid; align-content: space-between; padding: 7px; border: 1px solid rgba(70, 160, 166, .24); border-radius: 6px; background: rgba(5, 34, 45, .62); color: var(--v2-text); cursor: pointer; text-align: left; }
.v2-month-calendar button:hover { border-color: var(--v2-green); }.v2-month-calendar button.is-outside { opacity: .38; }.v2-month-calendar small { color: #83f4ba; }
.v2-calendar-day-list, .v2-calendar-month-list { display: grid; gap: 6px; }
.v2-calendar-day-list button, .v2-calendar-month-list button { padding: 9px; border: 1px solid rgba(70, 160, 166, .2); border-radius: 6px; background: rgba(5, 34, 45, .58); color: var(--v2-text); text-align: left; cursor: pointer; }
.v2-order-source-detail { display: grid; grid-template-columns: 150px minmax(0, 1fr); align-items: center; gap: 22px; padding: 22px; }
.v2-order-source-detail .v2-ring { justify-self: center; }.v2-order-source-detail .v2-ring b, .v2-order-source-detail .v2-ring small { position: relative; z-index: 1; }.v2-order-source-detail .v2-ring small { font-size: 9px; color: var(--v2-muted); }
.v2-owner-two-pane { display: grid; grid-template-columns: 220px minmax(0, 1fr); min-height: 360px; }.v2-owner-two-pane aside { display: grid; align-content: start; gap: 7px; padding: 14px; border-right: 1px solid var(--v2-line); }.v2-owner-two-pane article { padding: 18px; }.v2-owner-two-pane h3 { margin: 6px 0 14px; }.v2-owner-two-pane ul { display: grid; gap: 7px; margin: 0; padding-left: 18px; list-style: none; }.v2-owner-node { color: #c8dcde; font-size: 12px; }.v2-owner-node--site { color: #88f4b9; }
.v2-site-order-detail__facts, .v2-order-status-summary { display: grid; grid-template-columns: repeat(auto-fit, minmax(116px, 1fr)); gap: 7px; }
.v2-site-order-detail__facts span, .v2-order-status-summary span { display: grid; gap: 3px; padding: 8px; border: 1px solid rgba(70, 160, 166, .2); border-radius: 6px; color: #c8dcde; font-size: 10px; }
.v2-site-order-detail__facts b, .v2-order-status-summary b { color: var(--v2-muted); font-size: 9px; }
.v2-calendar-toolbar { display: flex; align-items: center; justify-content: space-between; }.v2-calendar-toolbar button { width: 28px; height: 28px; border: 1px solid var(--v2-line); border-radius: 5px; background: rgba(5, 34, 45, .7); color: var(--v2-text); cursor: pointer; }.v2-month-calendar button.is-selected { border-color: var(--v2-green); background: rgba(33, 126, 95, .25); }
.v2-calendar-day-list button, .v2-calendar-month-list button, .v2-owner-site-orders button { display: grid; gap: 3px; }.v2-calendar-day-list small, .v2-calendar-month-list small, .v2-owner-site-orders small { color: var(--v2-muted); }
.v2-owner-site-orders { display: grid; gap: 5px; margin: 6px 0 4px; }.v2-owner-site-orders button { width: 100%; padding: 7px; border: 1px solid rgba(70, 160, 166, .2); border-radius: 5px; background: rgba(5, 34, 45, .5); color: var(--v2-text); text-align: left; cursor: pointer; }


.v2-login-gate { position: fixed; inset: 0; z-index: 500; display: none; place-items: center; padding: 24px; background: radial-gradient(circle at 50% 28%, rgba(18, 114, 99, .24), transparent 34%), rgba(2, 17, 28, .98); }
.v2-login-gate.is-visible { display: grid; }
.v2-login-card { width: min(430px, 92vw); display: grid; gap: 15px; padding: 32px; border: 1px solid rgba(68, 211, 160, .4); border-radius: 14px; background: linear-gradient(155deg, rgba(7, 41, 52, .98), rgba(3, 24, 37, .98)); box-shadow: 0 26px 70px rgba(0, 0, 0, .42); }
.v2-login-card[hidden] { display: none; }
.v2-login-card > img { width: 48px; height: 48px; border-radius: 10px; object-fit: cover; }
.v2-login-card > span { color: var(--v2-green); font-size: 10px; letter-spacing: .16em; }
.v2-login-card h1 { margin: -8px 0 0; font-size: 22px; }
.v2-login-card p { margin: 0; color: var(--v2-muted); font-size: 12px; line-height: 1.7; }
.v2-login-card label { display: grid; gap: 7px; color: #bdd7d8; font-size: 12px; }
.v2-login-card input { height: 42px; padding: 0 12px; border: 1px solid var(--v2-line); border-radius: 8px; background: rgba(3, 26, 38, .88); color: var(--v2-text); outline: none; }
.v2-login-card input:focus { border-color: var(--v2-green); box-shadow: 0 0 0 3px rgba(53, 212, 138, .1); }
.v2-login-card button { height: 42px; border: 0; border-radius: 8px; background: linear-gradient(135deg, #2ed489, #12806c); color: #031d1b; font-weight: 700; cursor: pointer; }
.v2-login-card output { min-height: 18px; color: #ff8589; font-size: 11px; }

.v2-enterprise-layout { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 14px; padding: 0 18px 18px; }
.v2-personnel-panel { min-width: 0; }
.v2-personnel-panel > header { display: flex; align-items: center; justify-content: space-between; padding: 16px 18px; border-bottom: 1px solid var(--v2-line); }
.v2-personnel-panel > header div { display: grid; gap: 4px; }
.v2-personnel-panel > header h2 { margin: 0; }
.v2-personnel-panel > header > span { color: var(--v2-muted); font-size: 11px; }
.v2-personnel-toolbar { display: flex; flex-wrap: wrap; align-items: end; gap: 10px; padding: 14px 18px; border-bottom: 1px solid rgba(67, 141, 152, .16); }
.v2-personnel-toolbar label { display: grid; gap: 5px; color: var(--v2-muted); font-size: 10px; }
.v2-personnel-toolbar input { width: 190px; color: #bcd5d9; font-size: 10px; }
.v2-personnel-toolbar button { min-height: 34px; padding: 0 13px; border: 1px solid var(--v2-line); border-radius: 7px; background: rgba(11, 61, 70, .78); color: var(--v2-text); cursor: pointer; }
.v2-personnel-toolbar button:hover:not(:disabled) { border-color: var(--v2-green); color: #9ff8c8; }
.v2-personnel-toolbar button:disabled { opacity: .42; cursor: not-allowed; }
.personnel-readonly { color: var(--v2-muted); font-size: 11px; }
.personnel-import-result { display: block; min-height: 36px; padding: 10px 18px; color: #89eeb7; font-size: 11px; }
.v2-personnel-panel .table-wrap { max-height: calc(100vh - 345px); overflow: auto; }
.v2-personnel-panel table { width: 100%; border-collapse: collapse; }
.v2-personnel-panel th, .v2-personnel-panel td { padding: 11px 14px; border-bottom: 1px solid rgba(71, 143, 154, .13); text-align: left; font-size: 11px; }
.v2-personnel-panel th { position: sticky; top: 0; background: #082d3b; color: #8fb1b7; }
.personnel-state { display: inline-flex; padding: 4px 8px; border-radius: 999px; background: rgba(124, 151, 157, .16); color: #b6c8cc; font-size: 9px; }
.personnel-state--active { background: rgba(53, 212, 138, .16); color: #83f4ba; }
.personnel-state--pending { background: rgba(244, 166, 42, .16); color: #ffd083; }
.personnel-empty { color: var(--v2-muted); text-align: center !important; }
.v2-enterprise-side { align-self: start; padding: 18px; }
.v2-enterprise-side h2 { margin: 8px 0 14px; }
.v2-enterprise-side ul { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.v2-enterprise-side li { display: grid; gap: 4px; padding: 11px; border: 1px solid rgba(71, 143, 154, .18); border-radius: 8px; background: rgba(5, 31, 43, .56); }
.v2-enterprise-side li span, .v2-enterprise-side p { color: var(--v2-muted); font-size: 10px; line-height: 1.6; }
.v2-enterprise-side p { margin: 15px 0 0; }

.v2-dashboard {
  height: calc(100vh - var(--v2-topbar-height));
  min-height: 640px;
  display: grid;
  grid-template-rows: minmax(0, 1fr) 224px;
  gap: 12px;
  padding: 12px;
  overflow: hidden;
  background: radial-gradient(circle at 40% 18%, rgba(20, 103, 99, .13), transparent 34%), var(--v2-bg);
}
.v2-panel {
  min-width: 0;
  min-height: 0;
  border: 1px solid var(--v2-line);
  border-radius: 8px;
  background: linear-gradient(155deg, rgba(7, 38, 52, .96), rgba(4, 25, 38, .94));
  box-shadow: inset 0 1px rgba(142, 244, 224, .035), 0 12px 28px rgba(0, 0, 0, .15);
  overflow: hidden;
}
.v2-panel header { min-height: 52px; display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 9px 12px; border-bottom: 1px solid rgba(74, 162, 172, .18); }
.v2-panel header > div { display: grid; gap: 2px; }
.v2-panel header small { color: var(--v2-green); font-size: 10px; letter-spacing: .08em; }
.v2-panel header strong { font-size: 14px; font-weight: 600; }
.v2-top-grid {
  display: grid;
  grid-template-columns: minmax(0, 2.4fr) minmax(320px, 1fr);
  gap: 12px;
  min-height: 0;
}
.v2-bottom-grid {
  display: grid;
  grid-template-columns: 1.18fr 1.05fr .86fr 1.05fr 1.14fr;
  gap: 12px;
  min-height: 0;
}

.v2-map-card { position: relative; }
.v2-card-head { position: absolute; z-index: 12; inset: 8px 8px auto; min-height: 40px; padding: 0; border: 0; background: transparent; align-items: stretch; }
.v2-card-head > div:first-child { flex: 0 0 auto; display: grid; align-content: center; gap: 1px; padding: 5px 9px; border: 1px solid rgba(74, 162, 172, .28); border-radius: 7px; background: rgba(3, 24, 36, .9); backdrop-filter: blur(8px); }
.v2-card-head > div:first-child small { font-size: 8px; }
.v2-card-head > div:first-child strong { font-size: 12px; }
.v2-map-filters { min-width: 0; display: grid; align-items: center; gap: 5px; padding: 5px; border: 1px solid rgba(74, 162, 172, .28); border-radius: 7px; background: rgba(3, 24, 36, .9); backdrop-filter: blur(8px); }
.v2-map-toolbar { flex: 1; grid-template-columns: minmax(120px, 1.35fr) 72px 72px 94px 94px minmax(130px, 1.5fr); }
.v2-map-filters label { min-width: 0; display: block; color: var(--v2-muted); font-size: 8px; }
.v2-map-filters label > span { display: none; }
.v2-map-filters select { width: 100%; height: 28px; padding: 0 24px 0 7px; font-size: 9px; }
.v2-map-stage { position: absolute; inset: 0; background: #071a24; }
.v2-map-popover { position: absolute; z-index: 11; top: 58px; left: 14px; width: min(350px, calc(100% - 28px)); padding: 13px; border: 1px solid rgba(56, 210, 139, .48); border-radius: 9px; background: rgba(4, 32, 43, .94); box-shadow: 0 16px 32px rgba(0, 0, 0, .36); }
.v2-map-popover > strong { display: block; margin: 8px 0 3px; font-size: 16px; }
.v2-map-popover > p { margin: 0 0 10px; color: var(--v2-muted); font-size: 10px; }
.v2-project-badge { display: flex; align-items: center; gap: 6px; color: #c5ddd8; font-size: 10px; }
.v2-project-badge i { width: 8px; height: 8px; border-radius: 50%; background: var(--project-color); box-shadow: 0 0 9px var(--project-color); }
.v2-popover-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.v2-popover-grid span,
.v2-popover-grid button { min-width: 0; display: grid; gap: 2px; padding: 0; border: 0; background: transparent; color: #789ba5; font: inherit; font-size: 9px; text-align: left; }
.v2-popover-grid button { cursor: pointer; }
.v2-popover-grid button:hover b,
.v2-popover-grid button:focus-visible b { color: var(--v2-green); text-decoration: underline; }
.v2-popover-grid b { color: #eafff7; font-size: 11px; font-weight: 500; }
.v2-popover-grid small { color: #71929c; font-size: 8px; }
.v2-map-legend { position: absolute; z-index: 10; right: 12px; bottom: 11px; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 7px 11px; max-width: calc(100% - 24px); padding: 7px 9px; border: 1px solid rgba(77, 148, 160, .26); border-radius: 7px; background: rgba(3, 26, 38, .88); color: #a8c2ca; font-size: 8px; }
.v2-map-legend span { display: flex; align-items: center; gap: 5px; }
.v2-map-legend i { width: 9px; height: 9px; display: inline-block; }
.v2-legend-roof { border: 1px solid #fff; border-radius: 2px; background: #2196f3; box-shadow: 0 0 6px #2196f3; transform: rotate(45deg); }
.v2-legend-wall { border: 1px solid #fff; border-radius: 2px; background: #00e676; box-shadow: 0 0 6px #00e676; }
.v2-legend-construction { background: #ffc107; clip-path: polygon(25% 7%, 75% 7%, 100% 50%, 75% 93%, 25% 93%, 0 50%); }
.v2-legend-water { border-radius: 70% 40% 65% 45%; background: #4dd0e1; transform: rotate(45deg); }
.v2-legend-iot { border: 1px solid #eaffff; border-radius: 50%; background: #19e6df; box-shadow: 0 0 6px #19e6df; }
.v2-legend-auto { border-radius: 50%; background: var(--v2-red); box-shadow: 0 0 6px var(--v2-red); }
.v2-legend-manual { border-radius: 50%; background: #ffd43b; box-shadow: 0 0 6px #ffd43b; }

.v2-side-stack { min-width: 0; min-height: 0; display: grid; grid-template-rows: 1.15fr .85fr; gap: 12px; }
.v2-summary-card,
.v2-project-matrix { padding-bottom: 10px; }
.v2-summary-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; padding: 10px 12px; }
.v2-metric { min-height: 74px; display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 2px 8px; padding: 10px; border: 1px solid rgba(69, 136, 148, .24); border-radius: 7px; background: rgba(7, 31, 43, .64); }
.v2-metric span { grid-column: 1 / -1; color: var(--v2-muted); font-size: 10px; }
.v2-metric strong { color: var(--metric-color, var(--v2-green)); font-size: 25px; line-height: 1; }
.v2-metric small { color: #89a8b0; font-size: 9px; }
.v2-metric--green { --metric-color: var(--v2-green); }
.v2-metric--blue { --metric-color: var(--v2-blue); }
.v2-metric--amber { --metric-color: var(--v2-amber); }
.v2-metric--red { --metric-color: var(--v2-red); }
.v2-feature-metric-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; padding: 0 12px; }
.v2-feature-metric { min-width: 0; display: grid; grid-template-columns: 1fr auto; gap: 1px 5px; padding: 5px 7px; border-left: 2px solid var(--feature-color, var(--v2-green)); background: rgba(7, 31, 43, .58); }
.v2-feature-metric span { overflow: hidden; color: var(--v2-muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.v2-feature-metric strong { color: var(--feature-color, var(--v2-green)); font-size: 11px; }
.v2-feature-metric small { grid-column: 1 / -1; overflow: hidden; color: #6f929b; font-size: 7px; text-overflow: ellipsis; white-space: nowrap; }
.v2-feature-metric--blue { --feature-color: var(--v2-blue); }
.v2-feature-metric--amber { --feature-color: var(--v2-amber); }
.v2-feature-metric--red { --feature-color: var(--v2-red); }
.v2-progress-line { display: grid; grid-template-columns: 1fr auto; gap: 6px; padding: 0 12px; color: var(--v2-muted); font-size: 9px; }
.v2-progress-line b { color: var(--v2-green); }
.v2-progress-line i { grid-column: 1 / -1; height: 5px; overflow: hidden; border-radius: 999px; background: linear-gradient(90deg, var(--v2-green) calc(var(--value) * 1%), rgba(127, 165, 173, .16) 0); }
.v2-project-matrix > div { padding: 8px 12px; }
.v2-project-row { width: 100%; min-height: 138px; display: grid; gap: 9px; padding: 9px; border: 1px solid rgba(68, 141, 153, .2); border-radius: 7px; background: rgba(7, 31, 43, .64); color: inherit; text-align: left; cursor: pointer; }
.v2-project-row-head { min-width: 0; display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: center; gap: 8px; }
.v2-project-row-head > i { width: 17px; height: 17px; border-radius: 6px; background: var(--project-color); box-shadow: 0 0 12px color-mix(in srgb, var(--project-color) 70%, transparent); }
.v2-project-row-head > span { min-width: 0; display: grid; gap: 4px; }
.v2-project-row-head b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 11px; }
.v2-project-row-head small { color: var(--v2-muted); font-size: 9px; }
.v2-project-rings { display: flex; align-items: center; justify-content: space-around; gap: 10px; }
.v2-project-rings .v2-ring > div { width: 58px; }
.v2-project-rings .v2-ring > div::before { width: 44px; }
.v2-project-rings .v2-ring strong { font-size: 12px; }
.v2-project-matrix footer { display: flex; justify-content: space-between; margin: 0 12px; padding-top: 8px; border-top: 1px solid rgba(63, 143, 153, .18); color: var(--v2-muted); font-size: 10px; }
.v2-project-matrix footer strong { color: var(--v2-text); }

.v2-camera-card { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.v2-camera-body { position: relative; min-height: 0; overflow: hidden; background: #07141c; }
.v2-camera-media { width: 100%; height: 100%; display: block; object-fit: cover; }
.v2-camera-overlay { position: absolute; inset: auto 8px 8px; display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 7px; border: 1px solid rgba(75, 173, 174, .28); border-radius: 7px; background: rgba(3, 24, 34, .8); backdrop-filter: blur(8px); }
.v2-camera-overlay select { min-width: 0; max-width: 78%; padding: 0 28px 0 9px; font-size: 10px; }
.v2-camera-overlay span,
.v2-status { padding: 4px 7px; border-radius: 999px; background: rgba(53, 212, 138, .18); color: #83f4ba; font-size: 9px; white-space: nowrap; }

.v2-status-card { display: grid; grid-template-rows: auto minmax(0, 1fr) 34px; }
.v2-status-card > * { width: 100%; min-width: 0; }
.v2-ring-row { min-height: 0; display: flex; align-items: center; justify-content: space-evenly; gap: 4px; padding: 9px 5px 4px; }
.v2-ring { --ring-color: var(--v2-green); display: grid; place-items: center; gap: 7px; color: var(--v2-muted); text-align: center; font-size: 9px; }
.v2-ring--blue { --ring-color: var(--v2-blue); }
.v2-ring--amber { --ring-color: var(--v2-amber); }
.v2-ring--red { --ring-color: var(--v2-red); }
.v2-ring > div { width: 72px; aspect-ratio: 1; display: grid; place-items: center; border-radius: 50%; background: conic-gradient(var(--ring-color) calc(var(--progress) * 1%), rgba(116, 155, 164, .18) 0); box-shadow: 0 0 18px color-mix(in srgb, var(--ring-color) 18%, transparent); }
.v2-ring > div::before { content: ''; grid-area: 1 / 1; width: 54px; aspect-ratio: 1; border-radius: 50%; background: #062333; }
.v2-ring strong { position: relative; z-index: 1; grid-area: 1 / 1; color: var(--v2-text); font-size: 14px; }
.v2-status-card .v2-ring { min-width: 0; flex: 1; }
.v2-status-card .v2-ring > div { width: 52px; }
.v2-status-card .v2-ring > div::before { width: 38px; }
.v2-status-card .v2-ring strong { font-size: 11px; }
.v2-status-card ul { display: grid; gap: 6px; margin: 0; padding: 8px 12px 12px; list-style: none; }
.v2-status-card li { display: flex; justify-content: space-between; padding-top: 6px; border-top: 1px solid rgba(66, 136, 147, .15); color: var(--v2-muted); font-size: 9px; }
.v2-status-card li b { color: var(--v2-text); }
.v2-card-foot { border: 0; border-top: 1px solid rgba(66, 136, 147, .18); background: rgba(5, 32, 44, .58); color: var(--v2-green); font-size: 9px; cursor: pointer; }
.v2-card-foot:hover { background: rgba(25, 102, 83, .22); }

.v2-requirements-card { display: grid; grid-template-rows: auto minmax(0, 1fr); }
.v2-requirement-grid { min-height: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); padding: 10px 6px; }
.v2-requirement { min-width: 0; display: grid; place-items: center; align-content: center; gap: 9px; padding: 6px 4px; border: 0; border-right: 1px solid rgba(65, 136, 147, .15); background: transparent; color: inherit; text-align: center; cursor: pointer; }
.v2-requirement:last-child { border-right: 0; }
.v2-requirement-icon { width: 42px; height: 42px; display: grid; place-items: center; border-radius: 11px; background: linear-gradient(145deg, rgba(52, 212, 139, .34), rgba(17, 88, 80, .24)); box-shadow: inset 0 0 0 1px rgba(64, 213, 155, .38), 0 0 18px rgba(53, 212, 138, .1); font-style: normal; }
.v2-requirement-icon::before { font-family: "Segoe MDL2 Assets"; color: #90f7c3; font-size: 22px; line-height: 1; }
.v2-requirement-icon--plan::before { content: "\E9D5"; }
.v2-requirement-icon--material::before { content: "\E7C3"; }
.v2-requirement-icon--safety::before { content: "\E83D"; }
.v2-requirement-icon--environment::before { content: "\E774"; }
.v2-requirement--material .v2-requirement-icon,
.v2-requirement--environment .v2-requirement-icon { background: linear-gradient(145deg, rgba(244, 166, 42, .32), rgba(96, 60, 14, .25)); box-shadow: inset 0 0 0 1px rgba(244, 166, 42, .4), 0 0 18px rgba(244, 166, 42, .08); }
.v2-requirement--material .v2-requirement-icon::before,
.v2-requirement--environment .v2-requirement-icon::before { color: #ffd488; }
.v2-requirement > span { min-width: 0; display: grid; justify-items: center; gap: 5px; }
.v2-requirement b { color: #effff8; font-size: 9px; line-height: 1.4; }
.v2-requirement em { color: var(--v2-green); font-size: 8px; font-style: normal; }
.v2-requirement:hover { background: rgba(36, 143, 105, .1); }

.v2-bottom-grid .v2-panel > header { min-height: 44px; padding: 6px 9px; }
.v2-bottom-grid .v2-summary-card { padding-bottom: 4px; }
.v2-bottom-grid .v2-summary-grid { gap: 4px; padding: 4px 7px; }
.v2-bottom-grid .v2-metric { min-height: 46px; padding: 5px 6px; }
.v2-bottom-grid .v2-metric span { font-size: 8px; }
.v2-bottom-grid .v2-metric strong { font-size: 19px; }
.v2-bottom-grid .v2-metric small { font-size: 7px; }
.v2-bottom-grid .v2-feature-metric-grid { gap: 3px; padding: 0 7px; }
.v2-bottom-grid .v2-feature-metric { padding: 2px 4px; }
.v2-bottom-grid .v2-ring-row { padding-top: 4px; }
.v2-bottom-grid .v2-requirement-grid { padding: 5px 4px; }
.v2-bottom-grid .v2-requirement { gap: 5px; padding: 3px; }
.v2-bottom-grid .v2-requirement-icon { width: 36px; height: 36px; }
.v2-bottom-grid .v2-requirement-icon::before { font-size: 19px; }

.v3-map-marker { position: relative; width: 22px; height: 22px; cursor: pointer; }
.v3-marker-project-ring { position: absolute; inset: 0; border: 2px solid var(--project-color, #68849a); border-radius: 50%; box-shadow: 0 0 8px color-mix(in srgb, var(--project-color, #68849a) 70%, transparent); }
.v3-marker-base { position: absolute; inset: 5px; display: block; border: 1.5px solid #fff; box-shadow: 0 0 8px currentColor; }
.v3-marker-roof { color: #2196f3; background: #2196f3; transform: rotate(45deg); border-radius: 2px; }
.v3-marker-wall { color: #00e676; background: #00e676; border-radius: 2px; }
.v3-marker-construction { color: #ffc107; background: #ffc107; clip-path: polygon(25% 7%, 75% 7%, 100% 50%, 75% 93%, 25% 93%, 0 50%); }
.v3-marker-water { color: #4dd0e1; background: #4dd0e1; border-radius: 70% 40% 65% 45%; transform: rotate(45deg); }
.v3-marker-in-progress { color: #ff5252; background: #ff5252; clip-path: polygon(50% 0, 100% 100%, 0 100%); }
.v3-marker-other { color: #78909c; background: #78909c; border-radius: 50%; }
.v3-marker-iot,
.v3-marker-alarm { position: absolute; z-index: 3; width: 7px; height: 7px; border: 1px solid #eaffff; border-radius: 50%; }
.v3-marker-iot { left: -2px; top: -2px; background: #19e6df; box-shadow: 0 0 6px #19e6df; }
.v3-marker-iot--camera::after { content: ''; position: absolute; inset: 2px 1px; border: 1px solid #002733; }
.v3-marker-alarm { right: -2px; top: -2px; }
.v3-marker-alarm--automatic { background: #ff4d5f; box-shadow: 0 0 7px #ff4d5f; animation: v3-alarm-pulse 1.4s ease-in-out infinite; }
.v3-marker-alarm--manual { background: #ffd43b; box-shadow: 0 0 7px #ffd43b; }
.v3-map-marker.is-highlighted { transform: scale(1.28); }
.v3-map-marker.is-highlighted .v3-marker-project-ring { border-color: #fff; box-shadow: 0 0 14px #fff; }
@keyframes v3-alarm-pulse { 50% { opacity: .48; transform: scale(.75); } }
@media (prefers-reduced-motion: reduce) { .v3-marker-alarm--automatic { animation: none; } }
.v3-map-popup { min-width: 230px; display: grid; gap: 4px; padding: 4px; color: #29413c; font-family: "Microsoft YaHei UI", sans-serif; }
.v3-map-popup strong { margin-bottom: 4px; color: #126d4e; font-size: 14px; }
.v3-map-popup span { font-size: 11px; }
.v3-map-fallback { background: radial-gradient(circle at 50% 45%, rgba(17, 92, 91, .28), transparent 35%), linear-gradient(145deg, #0b252e, #071820); }
.fallback-grid { position: absolute; inset: 0; opacity: .35; background-image: linear-gradient(25deg, transparent 48%, rgba(102, 163, 157, .15) 49%, transparent 50%), linear-gradient(120deg, transparent 48%, rgba(102, 163, 157, .12) 49%, transparent 50%); background-size: 85px 67px, 110px 82px; }
.fallback-marker { position: absolute; width: 18px; height: 18px; padding: 0; border: 0; background: transparent; transform: translate(-50%, -50%); }
.fallback-marker > span { display: none; position: absolute; z-index: 20; left: 22px; top: -20px; padding: 10px; border: 1px solid var(--v2-line); border-radius: 8px; background: #eafff8; }
.fallback-marker:hover > span { display: block; }
.map-fallback-notice { position: absolute; right: 12px; bottom: 38px; color: #6b9492; font-size: 9px; }

@media (max-width: 1600px) {
  .v2-dashboard { grid-template-rows: minmax(0, 1fr) 210px; }
  .v2-summary-grid { gap: 6px; padding: 7px 10px; }
  .v2-metric { min-height: 68px; padding: 8px; }
  .v2-bottom-grid .v2-summary-grid { gap: 4px; padding: 4px 7px; }
  .v2-bottom-grid .v2-metric { min-height: 44px; padding: 4px 6px; }
}

@media (max-width: 1366px) {
  :root { --v2-sidebar-width: 104px; }
  .v2-topbar { grid-template-columns: 260px auto 360px; }
  .v2-dashboard { gap: 8px; padding: 8px; grid-template-rows: minmax(0, 1fr) 190px; }
  .v2-top-grid,
  .v2-bottom-grid,
  .v2-side-stack { gap: 8px; }
  .v2-side-stack { grid-template-rows: 1.15fr .85fr; }
  .v2-summary-grid { gap: 4px; padding: 4px 8px; }
  .v2-metric { min-height: 52px; padding: 6px; }
  .v2-metric span { font-size: 8px; }
  .v2-metric strong { font-size: 20px; }
  .v2-metric small { font-size: 7px; }
  .v2-feature-metric-grid { gap: 3px; padding: 0 8px; }
  .v2-feature-metric { padding: 3px 5px; }
  .v2-feature-metric span { font-size: 7px; }
  .v2-feature-metric strong { font-size: 9px; }
  .v2-feature-metric small { font-size: 6px; }
  .v2-bottom-grid .v2-panel > header { min-height: 40px; padding: 4px 7px; }
  .v2-bottom-grid .v2-summary-grid { gap: 3px; padding: 3px 6px; }
  .v2-bottom-grid .v2-metric { min-height: 42px; padding: 4px 5px; }
  .v2-bottom-grid .v2-feature-metric-grid { gap: 2px; padding: 0 6px; }
  .v2-bottom-grid .v2-feature-metric { padding: 1px 4px; }
  .v2-project-matrix > div { padding: 5px 8px; }
  .v2-project-row { min-height: 110px; gap: 5px; padding: 6px; }
  .v2-project-rings { gap: 5px; }
  .v2-project-rings .v2-ring { gap: 3px; font-size: 7px; }
  .v2-project-rings .v2-ring > div { width: 42px; }
  .v2-project-rings .v2-ring > div::before { width: 30px; }
  .v2-project-rings .v2-ring strong { font-size: 9px; }
  .v2-bottom-grid { grid-template-columns: 1.1fr 1fr 1fr 1fr 1.1fr; }
  .v2-ring > div { width: 58px; }
  .v2-ring > div::before { width: 44px; }
  .v2-status-card .v2-ring > div { width: 42px; }
  .v2-status-card .v2-ring > div::before { width: 30px; }
  .v2-status-card .v2-ring strong { font-size: 9px; }
  .v2-popover-grid span:nth-child(n + 3) { display: none; }
}

@media (max-width: 1280px) {
  :root { --v2-sidebar-width: 92px; }
  .v2-main { overflow-y: auto; }
  .v2-dashboard { height: auto; min-height: calc(100vh - var(--v2-topbar-height)); grid-template-rows: 560px auto; overflow: visible; }
  .v2-top-grid { grid-template-columns: minmax(0, 2fr) minmax(300px, .9fr); }
  .v2-bottom-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 250px; }
  .v2-bottom-grid > :last-child { grid-column: 1 / -1; }
}

@media (max-width: 1100px) {
  .v2-context { display: none; }
  .v2-topbar { grid-template-columns: 1fr auto 1fr; }
  .v2-tools #v2Weather,
  .v2-tools button { display: none; }
  .v2-enterprise-layout { grid-template-columns: 1fr; }
  .v2-project-workspace { grid-template-columns: 1fr; }
  .v2-project-rows { max-height: 260px; }
  .v2-admin-tree { max-height: none; }
  .v2-card-head > div:first-child { display: none; }
}

.v2-inspections-workspace { display: grid; grid-template-columns: 250px minmax(0, 1fr); gap: 14px; padding: 0 18px 18px; }
.v2-inspection-controls { display: grid; align-content: start; gap: 12px; padding: 12px; }
.v2-inspection-controls header { display: grid; gap: 5px; padding: 5px 4px 12px; border-bottom: 1px solid var(--v2-line); }
.v2-inspection-controls h2 { margin: 0; font-size: 16px; }
.v2-inspection-projects, .v2-inspection-catalogs { display: grid; gap: 6px; }
.v2-inspection-projects > button, .v2-inspection-catalogs > button { width: 100%; padding: 9px; border: 1px solid rgba(70, 160, 166, .22); border-radius: 7px; background: rgba(5, 35, 47, .56); color: var(--v2-text); text-align: left; cursor: pointer; }
.v2-inspection-projects > button small { display: block; margin-top: 4px; color: var(--v2-muted); font-size: 10px; }
.v2-inspection-catalogs > span { color: var(--v2-muted); font-size: 10px; }
.v2-inspection-projects > button:hover, .v2-inspection-projects > button.is-selected, .v2-inspection-catalogs > button:hover, .v2-inspection-catalogs > button.is-selected { border-color: var(--v2-green); background: rgba(33, 126, 95, .16); color: #a6f5cc; }
.v2-inspections-main { min-width: 0; display: grid; gap: 14px; }
.v2-inspections-main .street-summary { padding: 0; background: transparent; }
.v2-inspections-main .street-summary > button { min-width: 0; display: grid; gap: 4px; padding: 14px; border: 1px solid rgba(70, 160, 166, .22); border-radius: 8px; background: rgba(5, 35, 47, .56); color: var(--v2-text); text-align: left; cursor: pointer; }
.v2-inspections-main .street-summary > button:hover { border-color: var(--v2-green); background: rgba(33, 126, 95, .16); }
.v2-inspections-main .street-summary > button span, .v2-inspections-main .street-summary > button small { color: var(--v2-muted); }
.v2-street-inspection-detail, .v2-inspection-detail { display: grid; gap: 14px; }
.v2-street-inspection-detail > p { margin: 0; color: var(--v2-muted); }
.v2-inspection-site-group { overflow: hidden; border: 1px solid rgba(70, 160, 166, .24); border-radius: 8px; }
.v2-inspection-site-group > header { display: flex; align-items: start; justify-content: space-between; gap: 12px; padding: 13px 15px; border-bottom: 1px solid rgba(70, 160, 166, .2); background: rgba(6, 41, 52, .62); }
.v2-inspection-site-group h3, .v2-inspection-detail h3 { margin: 5px 0 0; font-size: 15px; }
.v2-inspection-site-group small { color: var(--v2-muted); }
.v2-inspection-site-group > header > span { color: #94f5bf; font-size: 11px; }
.v2-inspection-site-group .table-wrap { margin: 0; }
.v2-inspection-detail__head { padding-bottom: 12px; border-bottom: 1px solid var(--v2-line); }
.v2-inspection-detail dl { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 0; }
.v2-inspection-detail dl > div { display: grid; gap: 5px; min-height: 72px; padding: 11px; border: 1px solid rgba(70, 160, 166, .22); border-radius: 7px; background: rgba(5, 35, 47, .42); }
.v2-inspection-detail dt { color: var(--v2-muted); font-size: 10px; }
.v2-inspection-detail dd { display: grid; gap: 4px; margin: 0; color: var(--v2-text); font-size: 12px; line-height: 1.55; }
.v2-inspection-detail dd small { color: var(--v2-muted); }
.v2-inspection-detail dd button { width: fit-content; border: 0; padding: 0; background: transparent; color: #aaf5d0; font: inherit; text-align: left; cursor: pointer; }
.v2-inspection-detail dd button:hover { color: #fff; text-decoration: underline; }

@media (max-width: 1100px) {
  .v2-inspections-workspace { grid-template-columns: 1fr; }
  .v2-inspection-projects, .v2-inspection-catalogs { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }
}

@media (max-width: 640px) {
  .v2-inspection-detail dl { grid-template-columns: 1fr; }
}

.v2-iot-workspace { display: grid; grid-template-columns: minmax(240px, .8fr) minmax(0, 1.2fr); gap: 14px; padding: 0 18px 18px; }
.v2-iot-mini, .v2-iot-rules, .v2-iot-devices, .v2-iot-rings { padding: 16px; }
.v2-iot-workspace header { display: flex; align-items: start; justify-content: space-between; gap: 12px; }
.v2-iot-workspace header small { display: block; color: var(--v2-muted); font-size: 9px; letter-spacing: .08em; }
.v2-iot-workspace header strong { display: block; margin-top: 5px; font-size: 16px; }
.v2-iot-sync, .v2-iot-workspace header > span { color: var(--v2-amber); font-size: 10px; }
.v2-iot-sync.is-ready { color: var(--v2-green); }
.v2-iot-mini { display: grid; align-content: start; gap: 12px; }
.v2-iot-mini p { margin: 0; color: var(--v2-muted); font-size: 12px; line-height: 1.65; }
.v2-iot-mini p b { color: var(--v2-text); }
.v2-iot-mini__project { padding: 8px 10px; border: 1px solid rgba(53, 212, 138, .22); border-radius: 6px; background: rgba(53, 212, 138, .06); }
.v2-iot-mini__project code { color: #94efbb; font-family: Consolas, monospace; }
.v2-iot-rule-note { padding: 10px; border-left: 2px solid var(--v2-amber); background: rgba(244, 166, 42, .08); }
.v2-iot-upload { display: grid; gap: 7px; color: var(--v2-text); font-size: 12px; }.v2-iot-upload input { width: 100%; color: var(--v2-muted); font-size: 11px; }
.v2-iot-mini__actions { display: flex; flex-wrap: wrap; gap: 8px; }.v2-iot-mini__actions button { padding: 8px 10px; border: 1px solid rgba(53, 212, 138, .45); border-radius: 6px; background: rgba(29, 129, 92, .18); color: var(--v2-text); cursor: pointer; }.v2-iot-mini__actions button:disabled { border-color: rgba(143, 178, 189, .25); background: rgba(143, 178, 189, .08); color: var(--v2-muted); cursor: not-allowed; }
.v2-iot-right { display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 14px; min-width: 0; }
.v2-iot-policy-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 13px; }.v2-iot-policy-grid label, .v2-iot-policy-assignee { display: grid; gap: 6px; color: var(--v2-muted); font-size: 10px; }.v2-iot-policy-grid label > div { display: flex; align-items: center; gap: 6px; }.v2-iot-policy-grid input, .v2-iot-policy-grid select, .v2-iot-policy-assignee select { width: 100%; height: 32px; padding: 0 9px; border: 1px solid rgba(70, 160, 166, .3); border-radius: 5px; background: rgba(3, 28, 40, .76); color: var(--v2-text); }.v2-iot-policy-grid span { color: var(--v2-muted); white-space: nowrap; }
.v2-iot-safety-toggles { display: flex; flex-wrap: wrap; gap: 9px 22px; margin-top: 11px; }.v2-iot-policy-toggle { display: flex; align-items: center; gap: 7px; margin: 0; color: var(--v2-text); font-size: 11px; }.v2-iot-dispatch-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px 12px; margin-top: 9px; }.v2-iot-dispatch-options label { display: flex; align-items: center; gap: 7px; color: #bdd4d7; font-size: 10px; }.v2-iot-policy-note { margin: 10px 0 0; padding: 7px 9px; border-left: 2px solid var(--v2-green); background: rgba(53, 212, 138, .06); color: #a9c9ce; font-size: 9px; line-height: 1.55; }.v2-iot-policy-assignee { margin-top: 10px; }.v2-iot-policy-save { margin-top: 10px; padding: 8px 11px; border: 1px solid rgba(53, 212, 138, .42); border-radius: 6px; background: rgba(29, 129, 92, .18); color: #98f3be; cursor: pointer; }.v2-iot-policy-save:hover:not(:disabled) { border-color: var(--v2-green); background: rgba(29, 129, 92, .3); }.v2-iot-policy-save:disabled { border-color: rgba(143, 178, 189, .22); background: rgba(143, 178, 189, .07); color: var(--v2-muted); cursor: not-allowed; }
.v2-iot-devices { min-height: 240px; }.v2-iot-devices ul { max-height: 225px; margin: 12px 0 0; overflow: auto; padding: 0; list-style: none; }.v2-iot-device { display: grid; grid-template-columns: 9px minmax(120px, 1fr) 35px 112px minmax(76px, auto); align-items: center; gap: 9px; padding: 8px 0; border-top: 1px solid rgba(70, 160, 166, .18); font-size: 10px; }.v2-iot-device b, .v2-iot-device small { display: block; }.v2-iot-device small, .v2-iot-device time { color: var(--v2-muted); font-size: 9px; }.v2-iot-device > span { color: var(--v2-green); }.v2-iot-device__controls { display: flex; justify-content: flex-end; gap: 5px; }.v2-iot-device__controls button { padding: 4px 7px; border: 1px solid rgba(53, 212, 138, .35); border-radius: 4px; background: rgba(29, 129, 92, .14); color: #a5efc4; font-size: 9px; cursor: pointer; }.v2-iot-device__controls button:last-child { border-color: rgba(244, 166, 42, .35); color: #ffd18a; }.v2-iot-device__readonly { color: var(--v2-muted) !important; text-align: right; }.v2-iot-device__dot { width: 7px; height: 7px; border-radius: 50%; background: var(--v2-green); box-shadow: 0 0 8px var(--v2-green); }.v2-iot-device__dot--offline { background: var(--v2-red); box-shadow: 0 0 8px var(--v2-red); }.v2-iot-device__dot--alarm { background: var(--v2-amber); box-shadow: 0 0 8px var(--v2-amber); }.v2-iot-empty { padding: 12px 0; color: var(--v2-muted); font-size: 11px; }
.v2-iot-rings { grid-column: 1 / -1; }.v2-iot-ring-grid { min-height: 112px; display: flex; align-items: center; justify-content: space-evenly; gap: 4px; padding: 9px 5px 4px; }.v2-iot-rings .v2-ring { min-width: 110px; }
.v2-iot-pilot { grid-column: 1 / -1; display: grid; gap: 12px; padding: 16px; }
.v2-iot-pilot__flow { display: flex; align-items: center; justify-content: center; gap: 7px; padding: 9px 12px; border: 1px solid rgba(61, 149, 255, .2); border-radius: 7px; background: rgba(11, 54, 72, .48); }.v2-iot-pilot__flow span { padding: 4px 8px; border-radius: 999px; background: rgba(61, 149, 255, .1); color: #a8cfff; font-size: 9px; white-space: nowrap; }.v2-iot-pilot__flow i { color: rgba(143, 178, 189, .65); font-size: 10px; font-style: normal; }
.v2-iot-pilot__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; }
.v2-iot-pilot__site { min-width: 0; display: grid; gap: 8px; padding: 12px; border: 1px solid rgba(70, 160, 166, .24); border-radius: 8px; background: rgba(3, 27, 40, .58); }.v2-iot-pilot__site--ready { border-color: rgba(53, 212, 138, .45); }.v2-iot-pilot__site--partial { border-color: rgba(244, 166, 42, .38); }.v2-iot-pilot__site--alarm { border-color: rgba(240, 79, 85, .58); box-shadow: inset 3px 0 rgba(240, 79, 85, .78); }
.v2-iot-pilot__site > header { align-items: center; }.v2-iot-pilot__site > header small { color: var(--v2-green); }.v2-iot-pilot__site > header b { display: block; margin-top: 3px; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }.v2-iot-pilot__site > header em { padding: 3px 6px; border-radius: 999px; background: rgba(143, 178, 189, .1); color: var(--v2-muted); font-size: 8px; font-style: normal; white-space: nowrap; }.v2-iot-pilot__site > p { margin: 0; overflow: hidden; color: var(--v2-muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.v2-iot-pilot__status { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }.v2-iot-pilot__status strong { color: #dffdf0; font-size: 11px; }.v2-iot-pilot__status span { color: var(--v2-muted); font-size: 8px; white-space: nowrap; }
.v2-iot-pilot__capabilities { display: flex; flex-wrap: wrap; gap: 5px; }.v2-iot-pilot__capabilities span { display: inline-flex; align-items: center; gap: 4px; padding: 3px 6px; border-radius: 999px; font-size: 8px; }.v2-iot-pilot__capabilities span i { width: 5px; height: 5px; border-radius: 50%; }.v2-iot-pilot__capabilities .is-ready { background: rgba(53, 212, 138, .1); color: #9cefc0; }.v2-iot-pilot__capabilities .is-ready i { background: var(--v2-green); box-shadow: 0 0 6px rgba(53, 212, 138, .8); }.v2-iot-pilot__capabilities .is-pending { background: rgba(143, 178, 189, .08); color: #7f9da5; }.v2-iot-pilot__capabilities .is-pending i { background: #627b83; }
.v2-iot-pilot__site .v2-iot-pilot__missing { min-height: 28px; overflow: visible; padding: 6px 8px; border-radius: 5px; background: rgba(244, 166, 42, .06); color: #d8b774; line-height: 1.45; text-overflow: clip; white-space: normal; }.v2-iot-pilot__site footer { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 5px 9px; padding-top: 7px; border-top: 1px solid rgba(70, 160, 166, .16); color: #9bbec5; font-size: 8px; }
@media (max-width: 1100px) { .v2-iot-workspace { grid-template-columns: 1fr; }.v2-iot-rings, .v2-iot-pilot { grid-column: auto; }.v2-iot-pilot__grid { grid-template-columns: 1fr; }.v2-iot-pilot__flow { justify-content: flex-start; flex-wrap: wrap; } }
@media (max-width: 640px) { .v2-iot-policy-grid, .v2-iot-dispatch-options { grid-template-columns: 1fr; }.v2-iot-device { grid-template-columns: 9px 1fr auto; }.v2-iot-device time, .v2-iot-device__controls, .v2-iot-device__readonly { grid-column: 2 / -1; justify-content: flex-start; text-align: left; }.v2-iot-rings .v2-ring { min-width: 0; } }

/* Standards library */
.v2-standards-library { min-height: 100%; display: grid; grid-template-columns: 250px minmax(0, 1fr); background: rgba(2, 24, 34, .35); color: var(--v2-text); }
.v2-standards-directory { border-right: 1px solid var(--v2-line); background: rgba(3, 29, 40, .78); }
.v2-standards-directory > header { padding: 20px 18px 16px; border-bottom: 1px solid var(--v2-line); }
.v2-standards-directory > header small, .v2-company-process header small, .v2-standards-heading small, .v2-standard-document header small { color: var(--v2-green); font-size: 9px; letter-spacing: .12em; }
.v2-standards-directory h3, .v2-standards-heading h2, .v2-standard-document h3, .v2-company-process h3 { margin: 5px 0 0; }
.v2-standards-directory h3 { font-size: 17px; }
.v2-standards-directory p { margin: 8px 0 0; color: var(--v2-muted); font-size: 10px; line-height: 1.65; }
.v2-standards-directory nav { display: grid; gap: 6px; padding: 10px; }
.v2-standards-directory button { display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 11px; border: 1px solid transparent; border-radius: 7px; background: transparent; color: var(--v2-text); text-align: left; cursor: pointer; }
.v2-standards-directory button span { min-width: 0; display: grid; gap: 4px; }
.v2-standards-directory button b { font-size: 12px; }
.v2-standards-directory button small { overflow: hidden; color: var(--v2-muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.v2-standards-directory button i { min-width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; background: rgba(113, 156, 166, .13); color: var(--v2-muted); font-style: normal; font-size: 9px; }
.v2-standards-directory button:hover, .v2-standards-directory button.is-active { border-color: rgba(53, 212, 138, .48); background: rgba(29, 129, 92, .17); }
.v2-standards-directory button.is-active b, .v2-standards-directory button.is-active i { color: #a7f5ca; }
.v2-standards-content { min-width: 0; display: grid; align-content: start; gap: 14px; padding: 18px; overflow: auto; }
.v2-standards-heading { display: flex; justify-content: space-between; gap: 18px; padding: 0 2px 4px; }
.v2-standards-heading h2 { font-size: 18px; }
.v2-standards-heading > span { height: fit-content; padding: 6px 10px; border: 1px solid rgba(53, 212, 138, .28); border-radius: 999px; color: #9cf1c2; font-size: 10px; }
.v2-standard-document, .v2-company-process { padding: 16px; border: 1px solid rgba(70, 160, 166, .24); border-radius: 9px; background: rgba(4, 36, 48, .7); box-shadow: inset 0 1px rgba(255, 255, 255, .025); }
.v2-standard-document > header, .v2-company-process > header { display: flex; align-items: start; justify-content: space-between; gap: 16px; }
.v2-standard-document h3, .v2-company-process h3 { font-size: 15px; }
.v2-standard-document header p { margin: 5px 0 0; color: var(--v2-muted); font-size: 10px; }
.v2-standard-status { flex: 0 0 auto; padding: 5px 8px; border: 1px solid rgba(133, 167, 174, .3); border-radius: 999px; color: var(--v2-muted); font-size: 9px; }
.v2-standard-status--current { border-color: rgba(53, 212, 138, .38); color: #90efba; }
.v2-standard-status--draft { border-color: rgba(244, 166, 42, .5); color: #ffd083; background: rgba(244, 166, 42, .08); }
.v2-standard-summary { margin: 13px 0; padding: 10px 12px; border-left: 2px solid var(--v2-green); background: rgba(53, 212, 138, .06); color: #c4dfe0; font-size: 11px; line-height: 1.65; }
.v2-standard-applicable, .v2-process-roles, .v2-company-process > footer { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; color: var(--v2-muted); font-size: 9px; }
.v2-standard-applicable b, .v2-process-roles b, .v2-company-process > footer b { margin-right: 4px; color: var(--v2-text); }
.v2-standard-applicable span, .v2-process-roles span, .v2-company-process > footer span { padding: 4px 7px; border-radius: 999px; background: rgba(86, 136, 148, .12); color: #afd0d2; }
.v2-standard-sections { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-top: 13px; }
.v2-standard-sections section { padding: 11px; border: 1px solid rgba(70, 160, 166, .16); border-radius: 7px; background: rgba(2, 26, 36, .45); }
.v2-standard-sections h4 { margin: 0 0 7px; color: #91efba; font-size: 11px; }
.v2-standard-sections ul { display: grid; gap: 5px; margin: 0; padding-left: 17px; color: #b9d1d3; font-size: 10px; line-height: 1.55; }
.v2-standard-document > footer { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 13px; padding-top: 11px; border-top: 1px solid rgba(70, 160, 166, .16); color: var(--v2-muted); font-size: 9px; }
.v2-standard-document > footer a { flex: 0 0 auto; padding: 6px 9px; border: 1px solid rgba(53, 212, 138, .38); border-radius: 5px; color: #9bf0c0; text-decoration: none; }
.v2-standard-document > footer a:hover { border-color: var(--v2-green); color: #fff; }
.v2-company-process { border-color: rgba(53, 212, 138, .35); background: linear-gradient(145deg, rgba(20, 92, 69, .16), rgba(4, 36, 48, .76)); }
.v2-company-process > header > span { padding: 5px 8px; border-radius: 999px; background: rgba(53, 212, 138, .13); color: #9df0c2; font-size: 9px; }
.v2-process-roles { margin-top: 12px; }
.v2-company-process ol { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; margin: 14px 0; padding: 0; list-style: none; }
.v2-company-process li { display: grid; grid-template-columns: 25px 1fr; align-items: center; gap: 8px; padding: 9px; border: 1px solid rgba(53, 212, 138, .14); border-radius: 6px; background: rgba(2, 28, 37, .46); color: #c5ddde; font-size: 10px; line-height: 1.45; }
.v2-company-process li i { width: 23px; height: 23px; display: grid; place-items: center; border-radius: 50%; background: rgba(53, 212, 138, .15); color: #94efba; font-style: normal; font-size: 9px; }
.v2-standard-empty { padding: 30px; border: 1px dashed rgba(70, 160, 166, .3); border-radius: 8px; color: var(--v2-muted); text-align: center; }
@media (max-width: 900px) { .v2-standards-library { grid-template-columns: 1fr; }.v2-standards-directory { border-right: 0; border-bottom: 1px solid var(--v2-line); }.v2-standards-directory nav { grid-template-columns: repeat(2, minmax(0, 1fr)); }.v2-standard-sections, .v2-company-process ol { grid-template-columns: 1fr; } }
@media (max-width: 1100px) { .v2-site-order-workspace { grid-template-columns: 1fr; }.v2-site-order-calendar { max-width: 620px; } }
@media (max-width: 640px) { .v2-site-detail__facts { grid-template-columns: 1fr; }.v2-site-order-list .table-wrap { overflow-x: auto; }.v2-site-order-list table { min-width: 580px; } }

/* Operational closure workspaces */
.v2-mode-badge { padding: 4px 7px; border: 1px solid rgba(53,212,138,.35); border-radius: 999px; color: #9cefc0; font-size: 9px; white-space: nowrap; }
.v2-mode-badge--demo { border-color: rgba(244,166,42,.55); background: rgba(244,166,42,.1); color: #ffd083; }
.v2-mode-badge--live { background: rgba(53,212,138,.08); }
.v2-source-badge { display: inline-flex; align-items: center; width: max-content; padding: 3px 6px; border: 1px solid rgba(100,153,166,.3); border-radius: 999px; color: #b8d2d4; font-size: 8px; font-weight: 500; line-height: 1; white-space: nowrap; }
.v2-source-badge--verified { border-color: rgba(53,212,138,.42); color: #9df0c2; }
.v2-source-badge--field { border-color: rgba(52,150,255,.48); color: #9bc9ff; }
.v2-source-badge--simulation { border-color: rgba(244,166,42,.5); color: #ffd083; }
.v2-source-badge--pending { border-style: dashed; color: #9cb4ba; }
.v2-analytics-kpis, .v2-report-kpis { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 8px; margin-bottom: 8px; }
.v2-analytics-kpis article, .v2-report-kpis article { min-height: 102px; padding: 12px; }
.v2-analytics-kpis header, .v2-report-kpis article { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.v2-analytics-kpis strong, .v2-report-kpis strong { display: block; margin: 9px 0 4px; color: #64e3a1; font-size: 25px; }
.v2-analytics-kpis small, .v2-report-kpis small { color: var(--v2-muted); line-height: 1.45; }
.v2-analytics-funnel, .v2-analytics-workspace > .panel, .v2-pilot-panel, .v2-deferred-analysis > .panel, .v2-report-toolbar, .v2-report-layout > .panel, .v2-report-layout aside > .panel, .v2-formal-log-list { padding: 13px; }
.v2-analytics-funnel > header, .v2-analytics-workspace article > header, .v2-pilot-panel > header, .v2-report-layout article > header, .v2-formal-log-list > header, .v2-security-status > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }
.v2-analytics-funnel > div { display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); gap: 8px; margin-top: 12px; }
.v2-analytics-funnel article { position: relative; display: grid; gap: 4px; min-height: 92px; padding: 10px; border: 1px solid rgba(63,148,159,.2); border-radius: 7px; background: rgba(1,25,34,.52); }
.v2-analytics-funnel article:not(:last-child)::after { content: "›"; position: absolute; right: -8px; top: 30px; z-index: 2; color: #55d897; font-size: 18px; }
.v2-analytics-funnel article b { color: #65e3a2; font-size: 21px; }
.v2-analytics-funnel article small { color: var(--v2-muted); }
.v2-analytics-workspace { display: grid; grid-template-columns: minmax(0,1.35fr) minmax(320px,.85fr); gap: 8px; margin-top: 8px; }
.v2-analytics-risks { display: grid; gap: 7px; }
.v2-analytics-risks > div { display: grid; grid-template-columns: minmax(0,1fr) auto auto; align-items: center; gap: 8px; padding: 9px; border-bottom: 1px solid rgba(70,160,166,.14); }
.v2-analytics-risks span:first-child, .v2-analytics-recommendation { display: grid; gap: 3px; }
.v2-analytics-risks small, .v2-analytics-recommendation p { margin: 0; color: var(--v2-muted); font-size: 9px; }
.v2-analytics-risks button, .v2-report-output button, .v2-export-formats button { padding: 6px 9px; border: 1px solid rgba(53,212,138,.42); border-radius: 5px; background: rgba(53,212,138,.08); color: #a0efc2; }
.v2-analytics-recommendation { margin-top: 8px; padding: 10px; border: 1px solid rgba(70,160,166,.17); border-radius: 6px; }
.v2-effectiveness-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin-top: 10px; }
.v2-effectiveness-grid > span { display: grid; gap: 4px; padding: 10px; border-radius: 7px; background: rgba(1,25,34,.52); }
.v2-effectiveness-grid b { color: #64e3a1; font-size: 18px; }
.v2-data-quality { display: grid; gap: 8px; margin-top: 10px; }
.v2-data-quality > div { display: grid; grid-template-columns: minmax(120px,1fr) auto auto; align-items: center; gap: 8px; }
.v2-data-quality i { grid-column: 1/-1; height: 4px; overflow: hidden; border-radius: 999px; background: rgba(95,136,147,.18); }
.v2-data-quality em { display: block; height: 100%; background: #35d48a; }
.v2-pilot-panel { margin-top: 8px; }
.v2-pilot-selectors { display: grid !important; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; margin: 10px 0; }
.v2-pilot-selectors label { display: grid; gap: 4px; color: var(--v2-muted); font-size: 9px; }
.v2-pilot-selectors select, .v2-report-toolbar select, .v2-report-toolbar input { min-width: 0; padding: 7px; border: 1px solid var(--v2-line); border-radius: 5px; background: #052a36; color: var(--v2-text); }
.v2-pilot-panel > div:last-child { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.v2-pilot-panel article { display: grid; gap: 6px; padding: 10px; border: 1px solid rgba(70,160,166,.18); border-radius: 7px; }
.v2-pilot-panel article small { color: var(--v2-muted); }
.v2-pilot-panel article div { display: flex; flex-wrap: wrap; gap: 5px; }
.v2-pilot-panel article span { padding: 3px 6px; border-radius: 999px; background: rgba(111,139,148,.13); color: #8fa8ad; font-size: 8px; }
.v2-pilot-panel article span.is-complete { background: rgba(53,212,138,.12); color: #99efbd; }
.v2-deferred-analysis { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 8px; margin-top: 8px; }
.v2-deferred-analysis strong { display: block; margin: 10px 0; color: #89a3aa; font-size: 24px; }
.v2-deferred-analysis p, .v2-deferred-analysis small { color: var(--v2-muted); }
.v2-report-toolbar { display: grid; grid-template-columns: minmax(260px,.8fr) 180px minmax(300px,1.4fr); align-items: end; gap: 10px; margin-bottom: 8px; }
.v2-report-toolbar label { display: grid; gap: 4px; color: var(--v2-muted); font-size: 9px; }
.v2-report-toolbar > span { padding: 8px; border-left: 2px solid #35d48a; color: #bed7d9; font-size: 10px; }
.v2-report-kpis { grid-template-columns: repeat(4,minmax(0,1fr)); }
.v2-report-layout { display: grid; grid-template-columns: minmax(0,1.45fr) minmax(300px,.55fr); gap: 8px; }
.v2-report-layout aside { display: grid; gap: 8px; }
.v2-report-calendar { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 5px; margin-top: 10px; }
.v2-report-calendar button { min-height: 52px; display: grid; align-content: center; gap: 2px; padding: 5px; border: 1px solid rgba(70,160,166,.14); border-radius: 5px; background: rgba(1,25,34,.42); color: #b9d2d4; text-align: left; }
.v2-report-calendar button.has-records { border-color: rgba(53,212,138,.38); background: rgba(53,212,138,.07); }
.v2-report-calendar small { color: var(--v2-muted); font-size: 8px; }
.v2-report-output { display: grid; align-content: start; gap: 8px; }
.v2-report-output p { color: var(--v2-muted); line-height: 1.55; }
.v2-formal-log-list { margin-top: 8px; }
.v2-export-formats { display: flex; align-items: center; flex-wrap: wrap; gap: 7px; margin: 10px 0; }
.v2-export-formats small { margin-left: auto; color: var(--v2-muted); }
.v2-formal-log-list ul { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 6px; margin: 0; padding: 0; list-style: none; }
.v2-formal-log-list li { display: flex; justify-content: space-between; gap: 8px; padding: 9px; border: 1px solid rgba(70,160,166,.14); border-radius: 6px; }
.v2-formal-log-list li span:first-child { display: grid; gap: 3px; }
.v2-formal-log-list li small { color: var(--v2-muted); }
.v2-enterprise-layout { grid-template-columns: minmax(0,1.5fr) minmax(280px,.5fr); }
.v2-security-status { grid-column: 2; padding: 13px; }
.v2-security-status ul { display: grid; gap: 7px; padding: 0; list-style: none; }
.v2-security-status li { display: flex; justify-content: space-between; gap: 8px; color: var(--v2-muted); }
.v2-security-status p { color: #ffd083; font-size: 9px; line-height: 1.5; }
.v2-enterprise-layout { grid-template-columns: minmax(0, 1fr) 320px; align-items: start; }
.v2-enterprise-main { min-width: 0; display: grid; gap: 10px; }
.v2-enterprise-main > .panel > header, .v2-personnel-summary > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 15px; border-bottom: 1px solid rgba(70,160,166,.18); }
.v2-enterprise-main > .panel > header > div, .v2-personnel-summary > header > div { display: grid; gap: 3px; text-align: left; }
.v2-enterprise-main h2, .v2-personnel-summary h2 { margin: 0; font-size: 15px; }
.v2-enterprise-main > .panel > header > span, .v2-personnel-summary > header > span { color: var(--v2-muted); font-size: 9px; }
.v2-enterprise-organization ol, .v2-enterprise-workflow ol, .v2-enterprise-capabilities ul { margin: 0; padding: 12px; list-style: none; }
.v2-enterprise-organization ol { display: grid; grid-template-columns: repeat(4,minmax(0,1fr)); gap: 12px; }
.v2-enterprise-organization li { position: relative; min-width: 0; display: grid; grid-template-columns: 30px minmax(0,1fr); gap: 8px; padding: 11px; border: 1px solid rgba(70,160,166,.22); border-radius: 8px; background: linear-gradient(145deg,rgba(16,72,75,.34),rgba(4,31,43,.72)); }
.v2-enterprise-organization li > span { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 7px; background: rgba(53,212,138,.15); color: #8df0b9; font-size: 10px; font-weight: 700; }
.v2-enterprise-organization li div { min-width: 0; display: grid; gap: 4px; }
.v2-enterprise-organization li b { font-size: 12px; }
.v2-enterprise-organization li strong { overflow: hidden; color: #9fd5d4; font-size: 9px; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
.v2-enterprise-organization li p, .v2-enterprise-workflow li p, .v2-enterprise-capabilities li p { margin: 0; color: var(--v2-muted); font-size: 9px; line-height: 1.55; }
.v2-enterprise-organization li > i { position: absolute; right: -10px; top: 50%; color: var(--v2-green); font-size: 13px; font-style: normal; transform: translateY(-50%) rotate(-90deg); }
.v2-enterprise-workflow ol { display: grid; grid-template-columns: repeat(6,minmax(0,1fr)); gap: 8px; }
.v2-enterprise-workflow li { min-width: 0; padding: 10px; border-top: 2px solid rgba(53,212,138,.7); border-radius: 0 0 7px 7px; background: rgba(5,36,48,.65); }
.v2-enterprise-workflow li > span { color: var(--v2-green); font-size: 9px; }
.v2-enterprise-workflow li b { display: block; margin: 4px 0 6px; font-size: 11px; }
.v2-enterprise-capabilities ul { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 8px; }
.v2-enterprise-capabilities li { min-width: 0; display: grid; grid-template-columns: 34px minmax(0,1fr); gap: 9px; align-items: center; padding: 10px; border: 1px solid rgba(70,160,166,.16); border-radius: 7px; background: rgba(4,29,42,.56); }
.v2-enterprise-capabilities li > span { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 8px; background: rgba(61,149,255,.13); color: #80bdff; font-size: 11px; font-weight: 700; }
.v2-enterprise-capabilities li div { min-width: 0; display: grid; gap: 4px; }
.v2-enterprise-capabilities li b { font-size: 11px; }
.v2-enterprise-source-note { margin: 0; padding: 0 13px 12px; color: #789ba4; font-size: 8px; line-height: 1.5; }
.v2-enterprise-rail { display: grid; gap: 10px; align-content: start; }
.v2-personnel-summary { width: 100%; padding: 0; overflow: hidden; color: var(--v2-text); cursor: pointer; text-align: left; }
.v2-personnel-summary:hover { border-color: rgba(53,212,138,.68); box-shadow: inset 3px 0 var(--v2-green), 0 12px 28px rgba(0,0,0,.2); }
.v2-personnel-summary__metrics { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 7px; padding: 12px; }
.v2-personnel-summary__metrics span { display: grid; gap: 3px; padding: 9px; border: 1px solid rgba(70,160,166,.17); border-radius: 7px; background: rgba(5,31,43,.56); color: var(--v2-muted); font-size: 9px; }
.v2-personnel-summary__metrics b { color: #8ef0ba; font-size: 18px; }
.v2-personnel-summary > p { margin: 0; padding: 0 12px 12px; color: var(--v2-muted); font-size: 9px; line-height: 1.55; }
.v2-enterprise-rail .v2-enterprise-side, .v2-enterprise-rail .v2-security-status { grid-column: auto; }
.v2-drilldown-content > .v2-personnel-panel { min-height: 100%; border: 1px solid rgba(70,160,166,.18); border-radius: 8px; overflow: hidden; }
.v2-drilldown-content > .v2-personnel-panel .table-wrap { max-height: calc(90vh - 205px); }
.v2-main button:focus-visible, .v2-main select:focus-visible, .v2-main input:focus-visible { outline: 2px solid #65e3a2; outline-offset: 2px; }

@media (max-width:1366px) {
  .v2-analytics-kpis { grid-template-columns: repeat(3,minmax(0,1fr)); }
  .v2-analytics-workspace { grid-template-columns: minmax(0,1.25fr) minmax(280px,.75fr); }
  .v2-analytics-kpis article { min-height: 88px; }
  .v2-report-calendar button { min-height: 46px; }
  .v2-enterprise-layout { grid-template-columns: minmax(0,1fr) 280px; }
  .v2-enterprise-organization ol { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .v2-enterprise-organization li > i { display: none; }
  .v2-enterprise-workflow ol { grid-template-columns: repeat(3,minmax(0,1fr)); }
}
@media (max-width:1100px) {
  .v2-analytics-workspace, .v2-report-layout, .v2-report-toolbar, .v2-enterprise-layout { grid-template-columns: 1fr; }
  .v2-analytics-funnel > div { grid-template-columns: 1fr; }
  .v2-analytics-funnel article:not(:last-child)::after { display:none; }
  .v2-pilot-panel > div:last-child, .v2-pilot-selectors, .v2-deferred-analysis, .v2-formal-log-list ul { grid-template-columns:1fr; }
}
