/* 智控中枢：共享桌面外壳与水务工业界面基础。 */
:root{
  color-scheme:dark;
  --ui-bg:#070e19;
  --ui-bg-deep:#050a13;
  --ui-surface:#0d1a2a;
  --ui-surface-raised:#112236;
  --ui-surface-muted:#0a1522;
  --ui-surface-hover:#14283d;
  --ui-border:#1b2c40;
  --ui-border-strong:#27405a;
  --ui-text:#e6eef5;
  --ui-muted:#8fa3b5;
  --ui-faint:#5e7386;
  --ui-action:#2fd2dc;
  --ui-action-hover:#5fe0e7;
  --ui-action-soft:rgba(47,210,220,.10);
  --ui-normal:#62d7ab;
  --ui-info:#74b9f0;
  --ui-warning:#f5b83d;
  --ui-fault:#ff5a5f;
  --ui-maintenance:#a69bf4;
  --ui-value-normal:#9fb2c3;
  --ui-value-near:#f5b83d;
  --ui-value-over:#ff5a5f;
  --ui-value-missing:#5e7386;
  --ui-focus:0 0 0 3px rgba(47,210,220,.22);
  --ui-shadow-sm:0 8px 24px rgba(2,8,15,.18);
  --ui-shadow-lg:0 24px 72px rgba(1,6,12,.38);
  --ui-radius-sm:6px;
  --ui-radius-md:10px;
  --ui-radius-lg:14px;
  --ui-radius-xl:18px;
  --ui-space-1:4px;
  --ui-space-2:8px;
  --ui-space-3:12px;
  --ui-space-4:16px;
  --ui-space-5:20px;
  --ui-space-6:24px;

  /* Stable aliases used by current and legacy page modules. */
  --bg:var(--ui-bg);
  --bg-dark:var(--ui-bg-deep);
  --background:var(--ui-bg);
  --sidebar:#09121f;
  --surface:var(--ui-surface);
  --surface-2:var(--ui-surface-raised);
  --panel:var(--ui-surface);
  --panel-2:var(--ui-surface-raised);
  --card:var(--ui-surface);
  --card2:var(--ui-surface-raised);
  --line:var(--ui-border);
  --line-soft:rgba(126,151,181,.14);
  --border:var(--ui-border);
  --border-strong:var(--ui-border-strong);
  --text:var(--ui-text);
  --text1:var(--ui-text);
  --text2:var(--ui-muted);
  --text-dim:var(--ui-muted);
  --text-strong:var(--ui-text);
  --muted:var(--ui-muted);
  --faint:var(--ui-faint);
  --primary:var(--ui-action);
  --accent:var(--ui-action);
  --accent-2:var(--ui-normal);
  --green:var(--ui-normal);
  --blue:var(--ui-info);
  --warn:var(--ui-warning);
  --warning:var(--ui-warning);
  --orange:var(--ui-warning);
  --danger:var(--ui-fault);
  --red:var(--ui-fault);
  --shadow:var(--ui-shadow-lg);
}

*{box-sizing:border-box;scrollbar-width:thin;scrollbar-color:#33485f #0b1522}
*::-webkit-scrollbar{width:9px;height:9px}
*::-webkit-scrollbar-track{background:#0b1522}
*::-webkit-scrollbar-thumb{background:#33485f;border:2px solid #0b1522;border-radius:99px}
*::-webkit-scrollbar-thumb:hover{background:#466078}
html{min-height:100%;background:var(--ui-bg)}
body{
  margin:0;
  min-height:100vh;
  display:flex;
  background:
    radial-gradient(circle at 76% -20%,rgba(45,113,139,.09),transparent 38rem),
    var(--ui-bg);
  color:var(--ui-text);
  font:14px/1.55 "Microsoft YaHei UI","Microsoft YaHei","Segoe UI",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit}
button,input,select,textarea{font:inherit}
::selection{background:rgba(83,216,208,.25);color:#fff}
:focus-visible{outline:2px solid var(--ui-action);outline-offset:2px}

.ui-status[data-tone="normal"]{color:var(--ui-normal)}
.ui-status[data-tone="warning"]{color:var(--ui-warning)}
.ui-status[data-tone="fault"]{color:var(--ui-fault)}
.ui-status[data-tone="maintenance"]{color:var(--ui-maintenance)}
.ui-icon{width:1.25em;height:1.25em;display:inline-block;flex:0 0 auto;fill:none;stroke:currentColor;vertical-align:-.2em}
i.fas[data-ui-icon-upgraded="true"],i.far[data-ui-icon-upgraded="true"]{display:inline-flex;align-items:center;justify-content:center;font-style:normal;line-height:1}
.ui-legacy-icon-symbol{width:1em;height:1em;pointer-events:none;vertical-align:0}
i.fa-spin .ui-legacy-icon-symbol{animation:ui-icon-spin 1s linear infinite}
@keyframes ui-icon-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}

.skip-link{position:fixed;left:12px;top:10px;z-index:100;transform:translateY(-150%);padding:8px 12px;border-radius:7px;background:var(--ui-action);color:#06201f;text-decoration:none;font-weight:700}
.skip-link:focus{transform:none}
.sidebar{
  width:224px;
  position:fixed;
  inset:0 auto 0 0;
  background:linear-gradient(180deg,#0b1624 0%,#09121f 100%);
  border-right:1px solid var(--ui-border);
  display:flex;
  flex-direction:column;
  z-index:10;
  box-shadow:10px 0 34px rgba(1,7,13,.14);
}
.brand{padding:17px 15px 13px;border-bottom:1px solid rgba(126,151,181,.13)}
.brand-main{display:flex;align-items:center;gap:11px}
.brand-mark{
  width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;
  border:1px solid rgba(101,226,218,.23);border-radius:10px;
  color:var(--ui-action);
  background:linear-gradient(145deg,rgba(83,216,208,.15),rgba(73,133,178,.05));
  box-shadow:0 8px 22px rgba(1,9,16,.24),inset 0 1px rgba(255,255,255,.045);
}
.brand-mark .ui-icon{width:23px;height:23px}
.brand-copy{min-width:0}
.brand-copy strong{display:block;font-size:17px;line-height:1.25;letter-spacing:.06em;color:#f2f7fc}
.brand-copy strong span{color:var(--ui-action)}
.brand-copy small{display:block;margin-top:3px;color:var(--ui-faint);font:600 10px/1.2 "Segoe UI",sans-serif;letter-spacing:.15em;text-transform:uppercase}
.brand-status{display:flex;align-items:center;gap:7px;margin-top:11px;color:var(--ui-muted);font-size:12px}
.brand-status .ui-icon{width:14px;height:14px;color:#77a9c7}
.nav{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:8px 9px 14px}
.nav .section{padding:12px 9px 5px;color:#718198;font-size:11px;font-weight:700;letter-spacing:.09em}
.nav a{
  min-height:36px;display:flex;align-items:center;gap:10px;padding:7px 10px;margin:1px 0;
  color:#9daabc;text-decoration:none;border:1px solid transparent;border-radius:8px;position:relative;
  transition:background-color .15s ease,color .15s ease,border-color .15s ease;
}
.nav a i,.nav a .ui-icon{width:17px;height:17px;text-align:center;color:#7f91a7}
.nav a:hover{color:var(--ui-text);background:rgba(255,255,255,.035);border-color:rgba(126,151,181,.09)}
.nav a:hover .ui-icon,.nav a.active .ui-icon{color:var(--ui-action)}
.nav a.active{color:#f2f7fb;background:rgba(83,216,208,.085);border-color:rgba(83,216,208,.12)}
.nav a.active::before{content:"";position:absolute;left:-10px;top:9px;bottom:9px;width:2px;border-radius:2px;background:var(--ui-action)}
.nav-exit{margin-top:8px!important;border-top-color:rgba(126,151,181,.1)!important}
.main{margin-left:224px;min-height:100vh;width:calc(100% - 224px);display:flex;flex-direction:column;min-width:0}
.topbar{
  min-height:60px;background:rgba(10,19,31,.9);border-bottom:1px solid rgba(126,151,181,.16);
  backdrop-filter:blur(14px);display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:10px 22px;position:sticky;top:0;z-index:8;
}
.search{position:relative;width:min(440px,48vw)}
.search input{
  width:100%;height:36px;padding:0 14px 0 38px;border:1px solid var(--ui-border);border-radius:9px;
  background:#0b1623;color:var(--ui-text);outline:none;box-shadow:inset 0 1px 2px rgba(0,0,0,.2);
  transition:border-color .15s ease,background .15s ease,box-shadow .15s ease;
}
.search input::placeholder{color:#6f8095}
.search input:hover{border-color:#2e435b}
.search input:focus{border-color:rgba(83,216,208,.65);background:#0d1927;box-shadow:var(--ui-focus)}
.search i,.search>.ui-icon{position:absolute;left:12px;top:9px;color:#7d8da2}
.search-results{
  display:none;position:absolute;inset:43px 0 auto 0;max-height:340px;overflow:auto;
  background:rgba(15,29,44,.98);border:1px solid var(--ui-border-strong);border-radius:11px;
  box-shadow:var(--ui-shadow-lg);z-index:20;padding:5px;
}
.search-results a{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:14px;row-gap:2px;padding:9px 10px;text-decoration:none;border-radius:7px}
.search-results a:hover,.search-results a.active{background:var(--ui-surface-hover)}
.search-results .search-title{grid-column:1;grid-row:1;color:var(--ui-text);font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-results .search-context{grid-column:1;grid-row:2;color:var(--ui-faint);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.search-results .type{grid-column:2;grid-row:1;color:#88a3b8;font-size:11px}
.search-results .search-state{grid-column:2;grid-row:2;color:var(--ui-muted);font-size:11px;text-align:right}
.system-state{display:flex;align-items:center;justify-content:flex-end;gap:8px;color:var(--ui-muted);font-size:12px;white-space:nowrap}
.system-pill{display:inline-flex;align-items:center;gap:7px;min-height:30px;padding:0 10px;border:1px solid rgba(126,151,181,.16);border-radius:999px;background:rgba(255,255,255,.018)}
.system-pill .ui-icon{width:14px;height:14px;color:#8ab6ce}
.content{flex:1;padding:22px clamp(16px,2vw,28px) 28px;min-width:0}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.page-head h1{margin:0;font-size:22px;line-height:1.25;font-weight:700;letter-spacing:.01em;color:#f1f6fb}
.page-head p{margin:5px 0 0;color:var(--ui-muted);font-size:13px}
.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.grid-4,.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.panel,.card,.metric-card,.stat{background:linear-gradient(180deg,rgba(17,31,47,.98),rgba(14,27,42,.98));border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);box-shadow:inset 0 1px rgba(255,255,255,.025),var(--ui-shadow-sm)}
.panel,.card{padding:18px;margin-bottom:16px}
.panel h2,.card h2{margin:0 0 14px;display:flex;align-items:center;gap:8px;font-size:15px;color:#eaf1f8}
.panel h2 i,.card h2 i,.panel h2 .ui-icon,.card h2 .ui-icon{color:var(--ui-action)}
.metric-card,.stat{padding:16px;min-height:98px}
.metric-card .label,.stat .label{color:var(--ui-muted);font-size:13px}
.metric-card .num,.stat .num{margin-top:7px;font-size:27px;line-height:1.2;font-weight:750;color:#f0f6fb}
.metric-card .meta{color:var(--ui-faint);font-size:12px;margin-top:5px}
.health-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.health-item{padding:13px;border:1px solid var(--line-soft);border-radius:8px;background:rgba(8,16,26,.33)}
.health-item .label{color:var(--ui-muted);font-size:13px}.health-item .value{margin-top:6px;font-size:20px;font-weight:750}
.pipeline-card{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.pipeline-step{position:relative;min-height:94px;padding:14px;border:1px solid var(--line-soft);border-radius:8px;background:linear-gradient(180deg,rgba(83,216,208,.055),rgba(8,16,26,.22))}
.pipeline-step i,.pipeline-step .ui-icon{color:var(--ui-action);font-size:18px}.pipeline-step strong{display:block;margin-top:10px}.pipeline-step small{display:block;color:var(--ui-muted);margin-top:3px;font-size:12px}
.pipeline-step:not(:last-child)::after{content:"";position:absolute;top:46px;right:-10px;width:10px;height:1px;background:#3f6d78}
.accent{color:var(--ui-action)}.green{color:var(--ui-normal)}.blue{color:var(--ui-info)}.orange{color:var(--ui-warning)}.red{color:var(--ui-fault)}
table,.industrial-table{width:100%;border-collapse:collapse}
th,td{padding:10px 11px;border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:middle}
th{color:var(--ui-muted);font-size:13px;font-weight:650;letter-spacing:.015em}tr:hover td{background:rgba(255,255,255,.018)}
.badge{display:inline-flex;align-items:center;min-height:21px;padding:2px 9px;border-radius:999px;font-size:12px;border:1px solid transparent}
.badge-green{color:#79dfb7;background:rgba(98,215,171,.1);border-color:rgba(98,215,171,.2)}
.badge-red{color:#f28b91;background:rgba(240,113,120,.1);border-color:rgba(240,113,120,.2)}
.badge-orange{color:#edc17f;background:rgba(232,180,103,.1);border-color:rgba(232,180,103,.2)}
.badge-blue{color:#8ac6f4;background:rgba(116,185,240,.1);border-color:rgba(116,185,240,.2)}
.badge-gray{color:var(--ui-muted);background:rgba(160,174,192,.08);border-color:rgba(160,174,192,.14)}
.btn{
  min-height:34px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:0 13px;
  border:1px solid var(--ui-border-strong);border-radius:8px;background:#15263a;color:var(--ui-text);
  cursor:pointer;text-decoration:none;font:inherit;line-height:1.2;box-shadow:inset 0 1px rgba(255,255,255,.025);
  transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease;
}
.btn:hover{border-color:#426079;background:#1a2d43}.btn:active{transform:translateY(1px)}
.btn:focus-visible{outline:none;box-shadow:var(--ui-focus)}
.btn:disabled,.btn[aria-disabled="true"]{opacity:.48;cursor:not-allowed;transform:none}
.btn-primary{background:var(--ui-action);color:#05201f;border-color:var(--ui-action);font-weight:700}
.btn-primary:hover{background:var(--ui-action-hover);border-color:var(--ui-action-hover)}
.btn-success{background:#5dcea4;color:#071b14;border-color:#5dcea4;font-weight:700}.btn-success:hover{background:#75ddb7;border-color:#75ddb7}
.btn-danger{background:#bf5761;color:#fff;border-color:#d0656e}.btn-danger:hover{background:#cd606a;border-color:#dc747c}
.btn-outline{background:transparent}.btn-sm{min-height:29px;padding:0 10px;font-size:12px}
.form-group{margin-bottom:14px}.form-group label,label{color:var(--ui-muted)}.form-group label{display:block;margin-bottom:6px;font-size:13px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
input,select,textarea{width:100%;min-height:36px;border:1px solid var(--ui-border);border-radius:8px;background:#0b1623;color:var(--ui-text);padding:7px 10px;outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}
input:hover,select:hover,textarea:hover{border-color:#30475f}input:focus,select:focus,textarea:focus{border-color:rgba(83,216,208,.68);background:#0d1927;box-shadow:var(--ui-focus)}
input::placeholder,textarea::placeholder{color:#697a8e}select{color-scheme:dark}
input[type="checkbox"],input[type="radio"]{width:15px;height:15px;min-height:15px;padding:0;margin:0 5px 0 0;flex:0 0 15px;vertical-align:-2px;accent-color:var(--ui-action)}
.modal{display:none;position:fixed;inset:0;background:rgba(1,6,12,.72);backdrop-filter:blur(3px);z-index:50;align-items:center;justify-content:center;padding:20px}.modal.active{display:flex}
.modal-content{width:min(92vw,640px);max-height:84vh;overflow:auto;background:var(--ui-surface);border:1px solid var(--ui-border-strong);border-radius:var(--ui-radius-lg);box-shadow:var(--ui-shadow-lg);padding:22px}.modal-content h3{margin:0 0 16px}
.empty{min-height:96px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--ui-faint)}.chart-box{height:300px;width:100%}.flex{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

/* Public authentication surfaces share the same restrained product identity. */
.auth-body{min-height:100vh;display:grid;place-items:center;padding:28px;background:radial-gradient(circle at 18% 12%,rgba(49,126,153,.15),transparent 34rem),radial-gradient(circle at 84% 86%,rgba(83,216,208,.07),transparent 30rem),#070e18}
.auth-shell{width:min(92vw,430px);position:relative}
.auth-brand{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 0 18px}
.auth-brand-mark{width:44px;height:44px;display:grid;place-items:center;border:1px solid rgba(83,216,208,.26);border-radius:12px;color:var(--ui-action);background:linear-gradient(145deg,rgba(83,216,208,.16),rgba(40,91,122,.07));box-shadow:0 14px 32px rgba(1,7,14,.3)}
.auth-brand-mark img{display:block;width:27px;height:27px;color:inherit}
.auth-brand-copy strong{display:block;color:#f1f7fc;font-size:19px;line-height:1.2;letter-spacing:.08em}.auth-brand-copy strong span{color:var(--ui-action)}
.auth-brand-copy small{display:block;margin-top:4px;color:var(--ui-faint);font:600 10px/1.2 "Segoe UI",sans-serif;letter-spacing:.16em;text-transform:uppercase}
.auth-card{padding:30px;background:linear-gradient(180deg,rgba(17,31,47,.98),rgba(13,25,39,.98));border:1px solid var(--ui-border);border-radius:var(--ui-radius-xl);box-shadow:var(--ui-shadow-lg),inset 0 1px rgba(255,255,255,.035)}
.auth-card h1{margin:0;color:#f0f6fb;font-size:20px;line-height:1.35;text-align:center}.auth-card>p,.auth-subtitle{margin:8px 0 24px;color:var(--ui-muted);font-size:13px;line-height:1.7;text-align:center}
.auth-card .form-group{margin-bottom:16px}.auth-card .form-control,.auth-card input{height:42px;margin:0}.auth-card .btn{min-height:40px}.auth-submit{width:100%;margin-top:3px}
.auth-card form .form-control{margin:6px 0 15px}
.auth-footnote{display:flex;align-items:center;justify-content:center;gap:7px;margin:18px 0 0;color:var(--ui-faint);font-size:12px}.auth-footnote .ui-icon{width:14px;height:14px}
.auth-link{display:block;margin-top:15px;text-align:center;color:#7fded9;font-size:13px;text-decoration:none}.auth-link:hover{color:#a1eee9;text-decoration:underline;text-underline-offset:3px}
.auth-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-top:4px}.auth-actions .btn{flex:1 1 auto}
.message{padding:12px 13px;border:1px solid rgba(83,216,208,.16);border-radius:9px;background:rgba(83,216,208,.075);color:#c8ece9;font-size:13px;line-height:1.6;margin:15px 0}.error{color:#f3969b;font-size:13px}.auth-error{text-align:center;margin:11px 0 0;display:none}

@media (max-width:920px){
  .sidebar{width:64px}.brand-copy,.brand-status,.nav .section,.nav a span{display:none}.brand{padding:14px 12px}.brand-main{justify-content:center}.brand-mark{width:40px;height:40px;flex-basis:40px}
  .nav{padding-inline:8px}.nav a{justify-content:center;padding:0}.nav a.active::before{left:-8px}.main{margin-left:64px;width:calc(100% - 64px)}
  .grid-4,.kpi-grid,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}.pipeline-card,.health-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-2{grid-template-columns:1fr}.search{width:44vw}
}
@media (max-width:620px){
  .topbar{padding:9px 12px}.content{padding:16px 13px 22px}.page-head{align-items:flex-start;flex-direction:column}.grid-4,.kpi-grid,.grid-3,.pipeline-card,.health-grid{grid-template-columns:1fr}.pipeline-step::after{display:none}.form-row{grid-template-columns:1fr}.system-state .system-pill:first-child{display:none}.system-pill span{display:none}.search{width:100%}.auth-body{padding:18px}.auth-card{padding:25px 21px}
}

/* ===== Delivery build =====
   Explanatory small print is hidden across pages: page subtitles under the title,
   eyebrow labels, footnotes, provenance notes and usage hints. Data, controls,
   live statuses (role="status" elements that report results) and errors stay. */
#main_content h1 + p,
.iw-eyebrow, .woq-eyebrow, .wr-eyebrow, .ds-eyebrow, .eyebrow,
.iw-footnote, .woq-footnote, .oc-footnote, .dp-table-note, .eq-tree-note,
.source-policy-warning, .oc-source,
.oc-muted:not([role]):not(#oc_editor_empty),
h2[aria-label="设备台账"] + .eq-sub,
#equipment_provenance, #equipment_scope, #pud_source_notice,
.viewport-footer, .inspector > .hint, .inspector .scope,
#reference-info > p:not([id]),
.ds-kicker, #ds_health_context, #ds_acquisition_hint,
.rs-heading small, #rs_form small, #rs_selection_help small,
#pr_equipment_status small, #stats { display: none !important; }

/* Redesign step 2: member tabs sit above each page's own heading. */
.page-tabs{margin-bottom:14px}
a.system-pill{text-decoration:none;color:inherit}

/* Big-screen mode (?screen=1): the page fills the display; one exit control remains. */
body.is-screen .sidebar,body.is-screen .topbar,body.is-screen .page-tabs{display:none}
body.is-screen .main{margin-left:0;width:100%}
.screen-exit{position:fixed;right:16px;bottom:16px;z-index:60;display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border:1px solid var(--ui-border-strong);border-radius:10px;background:rgba(7,14,25,.88);color:var(--ui-muted);text-decoration:none;font-size:13px;opacity:.55;transition:opacity .15s}
.screen-exit:hover,.screen-exit:focus-visible{opacity:1;color:var(--ui-text)}
