.production-screen {
  --se-blue: #0878c9; --se-blue-deep: #07528b; --se-green: #18ae50;
  --se-orange: #f28a19; --se-red: #e8444f; --se-ink: #123d5f;
  --se-muted: #66839a; --se-line: #d7e7ef; --se-bg: #eef7fc;
}
body.screen-open { overflow: hidden; background: #eef7fc; }
body.screen-open .app-shell, body.screen-open .mobile-bottom-nav { visibility: hidden; }
.production-screen {
  position:fixed; inset:0; z-index:200; display:grid; width:100vw; height:100vh;
  grid-template-columns:minmax(0,1fr); grid-template-rows:minmax(0,1fr);
  place-items:center; padding:0; overflow:hidden;
  color:var(--se-ink); background:var(--se-bg);
  font-family: "PingFang SC","Microsoft YaHei",Arial,sans-serif; font-variant-numeric: tabular-nums;
  transform:none;
  contain:strict;
}
.production-screen[hidden] { display: none; }
.production-screen::before,.production-screen::after { content:none; }
.production-stage {
  position:relative; display:grid; width:1680px; height:945px; flex:0 0 auto;
  padding:0 34px; grid-template-rows:126px minmax(0,1fr); overflow:hidden;
  color:var(--se-ink); background-color:#eef7fc; background-image:linear-gradient(rgba(242,249,253,.58),rgba(242,249,253,.58)),url("./assets/production-header-campus-v1.png"); background-position:center top; background-size:100% 190px; background-repeat:no-repeat;
  transform:scale(var(--screen-scale,1)); transform-origin:center;
  contain:layout paint;
}
.production-stage::before { position:absolute; inset:100px 0 0; z-index:-1; content:""; background:linear-gradient(180deg,rgba(238,247,252,.18),rgba(246,251,254,.9) 26%,#f3f9fc 100%); pointer-events:none; }
.production-screen .screen-head { position:relative; display:grid; grid-template-columns:475px minmax(500px,1fr) 520px; align-items:start; gap:20px; min-width:0; border:0; }
.production-screen .screen-head::after { position:absolute; right:-34px; bottom:0; left:-34px; height:1px; content:""; background:rgba(118,175,207,.28); }
.screen-brand-lockup { position:absolute; top:20px; left:0; width:178px; }
.screen-brand-lockup img { display:block; width:100%; height:auto; object-fit:contain; mix-blend-mode:multiply; }
.production-screen .screen-tagline { position:absolute; top:29px; left:206px; display:block; color:#3384b6; font-size:13px; font-weight:600; letter-spacing:.12em; }
.production-screen .screen-tagline::after { display:block; margin-top:4px; color:#83a7bd; content:"CREATE A BETTER TOMORROW WITH GREEN ENERGY"; font-size:7px; font-weight:500; letter-spacing:.06em; }
.production-screen .screen-scope { display:none; }
.production-screen .screen-title { position:relative; grid-column:2; padding:17px 62px 0; text-align:center; }
.production-screen .screen-title::before,.production-screen .screen-title::after { position:absolute; top:33px; width:46px; height:13px; content:""; background:url("./assets/icon-production-chain.svg") center/contain no-repeat; opacity:.58; }
.production-screen .screen-title::before { left:0; } .production-screen .screen-title::after { right:0; transform:scaleX(-1); }
.production-screen .screen-head h1 { margin:0; color:var(--se-blue-deep); font-size:38px; font-weight:800; line-height:1.12; letter-spacing:.055em; }
.production-screen .screen-title span { display:block; margin-top:8px; color:#4f7896; font-size:16px; letter-spacing:.11em; }
.production-screen .screen-vision { position:absolute; inset:78px 10px auto auto; z-index:1; display:block; width:218px; color:#1a76b9; font-size:14px; font-weight:700; line-height:1.45; text-align:right; }
.production-screen .screen-controls { position:relative; inset:auto; z-index:2; display:grid; grid-column:3; grid-template-columns:minmax(0,1fr) 84px 96px 100px; align-items:start; gap:8px; padding-top:20px; isolation:isolate; }
.production-screen .screen-controls>span { min-height:48px; padding-right:8px; color:#49748f; font-size:12px; font-weight:600; line-height:1.25; text-align:right; white-space:pre-line; }
.production-screen .screen-controls button { display:inline-flex; height:40px; align-items:center; justify-content:center; gap:6px; padding:0 9px; overflow:hidden; color:var(--se-blue-deep); border:1px solid #bedbea; border-radius:7px; background:#f7fbfe; box-shadow:0 3px 12px rgba(42,94,123,.07); font-size:13px; font-weight:750; white-space:nowrap; cursor:pointer; }
.production-screen .screen-controls button::before { position:static; inset:auto; display:none; flex:0 0 auto; margin:0; content:none; transform:none; }
.production-screen .screen-controls button[data-action="toggle-screen-fullscreen"]::before,.production-screen .screen-controls button[data-action="close-screen"]::before { display:block; width:16px; height:16px; content:""; background:var(--se-blue); mask:url("./assets/icon-fullscreen.svg") center/contain no-repeat; }
.production-screen .screen-controls button[data-action="close-screen"]::before { mask-image:url("./assets/icon-exit.svg"); }
.production-screen .screen-controls button::after { content:none!important; }
.production-screen .screen-body { min-height:0; padding:0 0 10px; overflow:hidden; }
.promotion-display { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(450px,.65fr); gap:20px; height:100%; min-height:0; padding:18px 0; }
.promotion-hero { position:relative; display:flex; flex-direction:column; justify-content:center; min-width:0; padding:70px; overflow:hidden; isolation:isolate; color:#fff; border-radius:18px; background:#07527f linear-gradient(125deg,#08304c,#0878a9); background-size:cover; background-position:center; }
.promotion-hero::before { position:absolute; inset:0; z-index:-1; content:""; background:linear-gradient(90deg,rgba(7,43,69,.9),rgba(9,82,128,.25)); }
.promotion-video { position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; }
.promotion-hero-copy { position:relative; max-width:100%; pointer-events:none; }
.promotion-preview-modal .promotion-hero-copy { pointer-events:auto; }
.promotion-preview-modal .promotion-video { z-index:0; }
.promotion-preview-modal .promotion-hero::before { z-index:1; pointer-events:none; }
.promotion-preview-modal .promotion-hero-copy { z-index:2; }
.promotion-hero span { font-size:20px; letter-spacing:.16em; opacity:.8; }
.promotion-hero h2 { margin:30px 0 12px; color:#fff; font-size:62px; line-height:1.15; }
.promotion-hero strong { font-size:32px; line-height:1.4; }
.promotion-hero p { max-width:750px; margin:28px 0 0; font-size:21px; line-height:1.7; opacity:.88; }
.promotion-news { min-width:0; padding:35px; overflow:hidden; border:1px solid #d3e4ed; border-radius:18px; background:#fff; }
.promotion-news h3 { margin:0 0 22px; color:#07527f; font-size:29px; }
.promotion-news article { display:flex; gap:18px; padding:19px 0; border-top:1px solid #e1edf3; }
.promotion-news time { flex:0 0 94px; color:#5383a0; font-size:16px; }
.promotion-news b { display:block; color:#174462; font-size:19px; line-height:1.35; }
.promotion-news p { margin:7px 0 0; color:#66839a; font-size:15px; line-height:1.45; }
.promotion-preview-modal .modal-body { max-height:70vh; padding:16px; }
.promotion-preview-modal .promotion-display { height:480px; grid-template-columns:minmax(0,1.2fr) minmax(310px,.8fr); }
.promotion-preview-modal .promotion-hero { padding:30px; }
.promotion-preview-modal .promotion-hero h2 { font-size:30px; }
.promotion-preview-modal .promotion-hero strong { font-size:20px; }
.promotion-preview-modal .promotion-hero p { font-size:14px; }
.promotion-preview-modal .promotion-hero span { font-size:12px; }
.promotion-preview-modal .promotion-news { padding:20px; }
.promotion-preview-modal .promotion-news h3 { font-size:20px; }
.promotion-preview-modal .promotion-news article { padding:10px 0; }
.promotion-preview-modal .promotion-news time { flex-basis:65px; font-size:11px; }
.promotion-preview-modal .promotion-news b { font-size:13px; }
.promotion-preview-modal .promotion-news p { font-size:11px; }
.production-stage[hidden],.external-screen-player[hidden] { display:none; }
.external-screen-player { position:absolute; inset:0; z-index:5; display:grid; min-width:0; min-height:0; grid-template-rows:64px minmax(0,1fr); color:#173f60; background:#f4f9fc; }
.external-screen-toolbar { display:grid; min-width:0; grid-template-columns:minmax(360px,1fr) minmax(220px,auto) auto; align-items:center; gap:24px; padding:0 24px; border-bottom:1px solid #cfe2ec; background:#fff; box-shadow:0 4px 18px rgba(28,76,104,.08); }
.external-screen-brand { display:flex; min-width:0; align-items:center; gap:18px; }
.external-screen-brand img { width:148px; height:44px; object-fit:contain; }
.external-screen-brand span,.external-screen-brand strong,.external-screen-brand small { display:block; min-width:0; }
.external-screen-brand strong { overflow:hidden; color:var(--se-blue-deep); font-size:18px; text-overflow:ellipsis; white-space:nowrap; }
.external-screen-brand small { max-width:620px; margin-top:3px; overflow:hidden; color:#738c9d; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.external-screen-state { display:grid; justify-items:end; }
.external-screen-state span { color:#6a8799; font-size:10px; }
.external-screen-state strong { margin-top:2px; color:var(--se-blue); font-size:13px; }
.external-screen-state small { min-height:14px; color:#7b929f; font-size:9px; }
.external-screen-actions { display:flex; align-items:center; gap:8px; }
.external-screen-actions button { height:34px; padding:0 12px; color:var(--se-blue-deep); border:1px solid #bedbea; border-radius:6px; background:#f7fbfd; font-size:12px; font-weight:700; cursor:pointer; }
.external-screen-actions button:hover,.external-screen-actions button:focus-visible { color:#fff; border-color:var(--se-blue); background:var(--se-blue); outline:none; }
.external-screen-frame-wrap { position:relative; min-width:0; min-height:0; overflow:hidden; background:#fff; }
.external-screen-frame-wrap iframe { display:block; width:100%; height:100%; border:0; background:#fff; }
.external-screen-loading,.external-screen-fallback { position:absolute; inset:0; display:grid; place-content:center; justify-items:center; gap:9px; color:#607d90; background:linear-gradient(180deg,#f8fcfe,#edf6fb); text-align:center; }
.external-screen-loading span { width:30px; height:30px; border:3px solid #cce4f0; border-top-color:var(--se-blue); border-radius:50%; animation:external-screen-loading .9s linear infinite; }
.external-screen-loading strong,.external-screen-fallback strong { color:var(--se-blue-deep); font-size:20px; }
.external-screen-loading small,.external-screen-fallback p { margin:0; font-size:12px; }
.external-screen-fallback button { margin-top:8px; padding:8px 18px; color:#fff; border:0; border-radius:6px; background:var(--se-blue); cursor:pointer; }
.external-screen-loading[hidden],.external-screen-fallback[hidden] { display:none; }
@keyframes external-screen-loading { to { transform:rotate(360deg); } }

.p2-screen { display:grid; height:100%; min-height:0; grid-template-rows:126px 110px minmax(0,1fr) 50px; gap:10px; }
.p2-screen button { font:inherit; } .p2-screen button:focus-visible { outline:2px solid var(--se-blue); outline-offset:2px; }
.p2-empty { display:grid; height:100%; place-items:center; color:#8297a4; font-size:12px; }
.p2-overview { display:grid; min-width:0; grid-template-columns:380px 230px minmax(570px,1fr) 330px; overflow:hidden; border:1px solid #c7dfeb; border-radius:12px; background:rgba(255,255,255,.91); box-shadow:0 8px 24px rgba(51,103,132,.06); }
.p2-project-identity { position:relative; display:grid; min-width:0; align-content:center; padding:14px 22px; border-right:1px solid #dbe9f0; }
.p2-project-identity>div { display:flex; align-items:center; gap:12px; color:var(--se-muted); font-size:12px; }
.p2-demo-badge,.p2-source-badge { display:inline-flex; height:28px; align-items:center; padding:0 11px; color:#12823a; border:1px solid #8fd7a7; border-radius:6px; background:#eefaf2; font-size:12px; font-weight:750; }
.p2-demo-badge { color:#a7630b; border-color:#f0c67c; background:#fff8e9; }
.p2-project-identity h2 { margin:8px 0 4px; overflow:hidden; color:var(--se-blue-deep); font-size:27px; line-height:1.05; text-overflow:ellipsis; white-space:nowrap; }
.p2-project-identity p { margin:0; padding-right:74px; overflow:hidden; color:#66829a; font-size:13px; text-overflow:ellipsis; white-space:nowrap; }
.p2-project-identity>.p2-project-switch { position:absolute; right:14px; bottom:15px; display:grid; width:62px; height:24px; grid-template-columns:20px 22px 20px; align-items:center; padding:0; overflow:hidden; border:1px solid #cde2ed; border-radius:5px; background:#f5fbfe; }
.p2-project-identity>.p2-project-switch::before,.p2-project-identity>.p2-project-switch::after { content:none!important; }
.p2-project-identity>.p2-project-switch button { width:20px; height:22px; padding:0; color:var(--se-blue); border:0; background:transparent; font-size:17px; line-height:1; cursor:pointer; }
.p2-project-identity>.p2-project-switch button:disabled { opacity:.35; }
.p2-project-identity>.p2-project-switch span { display:block; padding:0; color:#6e899a; font-size:9px; line-height:22px; text-align:center; }
.p2-model-summary { display:flex; min-width:0; align-items:center; gap:13px; padding:0 23px; border-right:1px solid #dbe9f0; }
.p2-model-summary>img,.p2-plan-summary img { width:48px; height:48px; padding:12px; border-radius:50%; background:#eaf6fd; object-fit:contain; }
.p2-model-summary span,.p2-model-summary strong { display:block; }
.p2-model-summary span { color:var(--se-muted); font-size:12px; }
.p2-model-summary strong { margin-top:7px; overflow:hidden; color:#173f60; font-size:17px; text-overflow:ellipsis; white-space:nowrap; }
.p2-plan-summary { display:grid; min-width:0; grid-template-columns:repeat(3,minmax(0,1fr)); margin:0; }
.p2-plan-summary>div { display:flex; min-width:0; align-items:center; gap:11px; padding:0 16px; border-right:1px solid #dbe9f0; }
.p2-plan-summary>div:last-child { padding:0 16px; background:transparent; }
.p2-plan-summary>div:last-child::before { content:none!important; }
.p2-plan-summary img { width:42px; height:42px; padding:10px; }
.p2-plan-summary dt { color:var(--se-muted); font-size:11px; white-space:nowrap; }
.p2-plan-summary dt b { margin-left:3px; color:var(--se-blue); }
.p2-plan-summary dd { margin:7px 0 0; color:var(--se-blue); font-size:19px; font-weight:800; white-space:nowrap; }
.p2-pending { color:#8094a1; font-size:.72em; font-weight:650; }
.p2-progress-summary { display:flex; min-width:0; align-items:center; justify-content:center; gap:16px; padding:10px 20px; background:linear-gradient(135deg,rgba(236,248,252,.78),rgba(240,250,244,.86)); }
.p2-progress-ring { position:relative; display:grid; width:74px; aspect-ratio:1; flex:0 0 74px; place-items:center; border-radius:50%; background:conic-gradient(var(--se-green) var(--progress),#dce9ee 0); }
.p2-progress-ring::after { position:absolute; width:75%; aspect-ratio:1; content:""; border-radius:50%; background:#fff; }
.p2-progress-ring span { position:relative; z-index:1; color:var(--se-blue); font-size:22px; font-weight:800; }
.p2-progress-ring span small { font-size:11px; }
.p2-progress-summary>div:last-child { min-width:0; width:170px; }
.p2-progress-summary>div:last-child>span { color:var(--se-muted); font-size:12px; }
.p2-progress-summary>div:last-child>strong { display:block; margin-top:6px; color:#274d66; font-size:16px; }
.p2-progress-summary>div:last-child>i { display:block; height:6px; margin-top:10px; overflow:hidden; border-radius:9px; background:#dce9ee; }
.p2-progress-summary>div:last-child>i b { display:block; height:100%; border-radius:inherit; background:var(--se-green); }

.p2-unit-section { position:relative; min-width:0; padding-right:32px; }
.p2-unit-strip { display:grid; height:100%; min-width:0; grid-template-columns:repeat(7,minmax(0,1fr)); gap:12px; }
.p2-unit-card { position:relative; display:grid; min-width:0; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:27px 35px 22px; align-items:center; padding:9px 14px 8px; overflow:hidden; color:var(--se-ink); border:1px solid #d5e6ee; border-radius:9px; background:rgba(255,255,255,.92); box-shadow:0 5px 15px rgba(50,101,129,.055); cursor:pointer; text-align:left; }
.p2-unit-card::after { content:none!important; }
.p2-unit-card>span { padding-right:0; }
.p2-unit-card.selected { border-color:#70b5dc; background:#f7fcff; box-shadow:0 7px 19px rgba(2,106,184,.11); }
.p2-unit-station { z-index:1; grid-column:1/-1; grid-row:1; justify-self:start; max-width:100px; padding:3px 7px; overflow:hidden; color:var(--se-blue); border-radius:4px; background:#eaf6fd; font-size:10px; font-weight:750; text-overflow:ellipsis; white-space:nowrap; }
.p2-unit-card>.p2-unit-name { z-index:1; grid-column:1; grid-row:2; padding:0; overflow:hidden; color:#173e5d; font-size:16px; text-overflow:ellipsis; white-space:nowrap; }
.p2-unit-status { z-index:1; grid-column:2; grid-row:2; justify-self:end; padding:3px 7px; color:var(--se-blue); border-radius:4px; background:#e8f5fd; font-size:10px; font-weight:750; }
.p2-unit-card.done .p2-unit-status { color:#14813a; background:#edf9f1; } .p2-unit-card.review .p2-unit-status { color:#b5650b; background:#fff1df; }
.p2-unit-card.danger .p2-unit-status { color:#b8323d; background:#fff0f1; } .p2-unit-card.muted .p2-unit-status { color:#748791; background:#f1f5f6; }
.p2-unit-card>.p2-unit-progress { z-index:1; display:grid; min-width:0; grid-column:1/-1; grid-row:3; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:9px; padding:0; }
.p2-unit-progress>i { height:6px; overflow:hidden; border-radius:8px; background:#dfeaed; } .p2-unit-card>.p2-unit-progress>i>b { position:static; inset:auto; display:block; height:100%; padding:0; border-radius:inherit; background:var(--se-blue); }
.p2-unit-card.done .p2-unit-progress>i b { background:var(--se-green); } .p2-unit-card.review .p2-unit-progress>i b { background:var(--se-orange); } .p2-unit-card.danger .p2-unit-progress>i b { background:var(--se-red); }
.p2-unit-progress em { color:#4e7894; font-size:10px; font-style:normal; }
.p2-unit-card>.p2-unit-progress>em { position:static; inset:auto; max-width:none; padding:0; border:0; background:transparent; }
.p2-unit-card>.p2-rotor { position:absolute; top:7px; right:8px; display:grid; width:50px; height:50px; padding:0!important; place-items:center; color:var(--se-blue); background:transparent!important; opacity:.55; }
.p2-unit-card>.p2-rotor>i { display:block; width:46px; height:46px; background:linear-gradient(to top,currentColor 0 var(--rotor-progress),rgba(144,164,176,.3) var(--rotor-progress) 100%); mask:url("./assets/icon-windmill.svg") center/contain no-repeat; transform-origin:center; }
.p2-rotor b { display:none; } .p2-rotor.active i { animation:p2-rotor-spin 9s linear infinite; } .p2-rotor.done { color:var(--se-green); }
.p2-rotor.review { color:var(--se-orange); } .p2-rotor.danger { color:var(--se-red); } .p2-rotor.muted { color:#9baeb8; opacity:.28; }
.p2-unit-card .p2-unit-station { padding-right:7px; }
.p2-project-next { position:absolute; top:39px; right:0; z-index:2; width:28px; height:36px; padding:0; color:#fff; border:0; border-radius:18px; background:#77b5da; font-size:25px; line-height:1; cursor:pointer; }
.p2-project-next:disabled { opacity:.35; }
@keyframes p2-rotor-spin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion:reduce) { .p2-rotor.active i { animation:none; } }

.p2-main-grid { display:grid; min-height:0; grid-template-columns:repeat(12,minmax(0,1fr)); grid-template-rows:minmax(0,1fr) 180px; gap:16px 12px; }
.p2-panel { min-width:0; min-height:0; overflow:hidden; border:1px solid #d3e4ed; border-radius:11px; background:rgba(255,255,255,.94); box-shadow:0 8px 22px rgba(46,93,118,.055); }
.p2-chain-panel { display:grid; grid-column:1/10; grid-row:1; grid-template-rows:62px minmax(0,1.55fr) minmax(0,1fr); }
.p2-alert-panel { display:grid; grid-column:10/13; grid-row:1; grid-template-rows:62px minmax(0,1fr); }
.p2-daily-panel { grid-column:1/5; grid-row:2; } .p2-labor-panel { grid-column:5/9; grid-row:2; } .p2-material-panel { grid-column:9/13; grid-row:2; }
.p2-panel-head { display:flex; min-height:58px; align-items:center; justify-content:space-between; gap:16px; padding:11px 17px; border-bottom:1px solid #e1ebf0; }
.p2-panel-head>div { display:flex; min-width:0; align-items:center; gap:11px; } .p2-panel-head>div>img { display:block; width:30px; height:30px; padding:6px; border-radius:50%; background:#eaf6fd; object-fit:contain; }
.p2-alert-panel .p2-panel-head>div>img { background:#fff2e6; }
.p2-panel-head h2 { margin:0; color:#123f61; font-size:20px; line-height:1.1; } .p2-panel-head p { margin:4px 0 0; color:#8296a4; font-size:10px; }
.p2-panel .p2-panel-head h2::before { content:none!important; }
.p2-panel-head>small { color:#6e8da3; font-size:10px; }
.p2-chain-panel .p2-panel-head aside { min-width:160px; padding-left:15px; border-left:1px solid #dbe8ee; text-align:right; }
.p2-chain-panel .p2-panel-head aside small { display:block; color:#728b9b; font-size:10px; } .p2-chain-panel .p2-panel-head aside strong { display:block; margin-top:3px; color:var(--se-blue); font-size:14px; }
.p2-state-legend { display:flex; align-items:center; gap:18px; margin-left:auto; color:#668297; font-size:10px; }
.p2-state-legend span::before { display:inline-block; width:9px; height:9px; margin-right:6px; border-radius:50%; content:""; background:#9fb1bc; }
.p2-state-legend .done::before { background:var(--se-green); } .p2-state-legend .active::before { background:var(--se-blue); } .p2-state-legend .review::before { background:var(--se-orange); }
.p2-chain-lane { display:grid; min-height:0; grid-template-columns:86px minmax(0,1fr); align-items:stretch; padding:12px 16px; }
.p2-chain-lane+.p2-chain-lane { border-top:1px solid #e1ebf0; } .p2-chain-lane.hub { grid-template-columns:86px minmax(0,1fr) 205px; background:linear-gradient(90deg,rgba(239,250,243,.64),rgba(255,255,255,.25)); }
.p2-lane-label { display:flex; flex-direction:column; justify-content:center; } .p2-lane-label b { color:var(--se-blue-deep); font-size:12px; } .p2-lane-label small { margin-top:3px; color:#4e88b3; font-size:9px; }
.p2-chain-lane.hub .p2-lane-label b,.p2-chain-lane.hub .p2-lane-label small { color:#16813f; }
.p2-chain-lane.hub>p { align-self:end; margin:0 0 0 18px; color:#6f8999; font-size:9px; line-height:1.5; }
.p2-chain-row { display:flex; min-width:0; min-height:0; align-items:stretch; }
.p2-chain-node { position:relative; display:grid; min-width:0; flex:1 1 0; grid-template-rows:22px 24px 1fr auto; justify-items:center; align-items:center; padding:8px 7px 7px; border:1px solid #d7e3e9; border-radius:7px; background:#f6f9fa; text-align:center; }
.p2-chain-node.done { border-color:#bae0c5; background:#f0faf4; } .p2-chain-node.active { border-color:#68b5eb; background:#eef8fe; } .p2-chain-node.review { border-color:#f1ca96; background:#fff9ef; }
.p2-chain-node.danger { border-color:#e9a9af; background:#fff3f4; } .p2-chain-node.current { border:2px solid #168fe2; background:#edf8ff; box-shadow:0 6px 15px rgba(2,106,184,.12); }
.p2-chain-node.current::before { position:absolute; top:-2px; left:25%; width:50%; height:3px; content:""; border-radius:0 0 4px 4px; background:var(--se-blue); }
.p2-chain-node>strong { align-self:end; width:100%; overflow:hidden; color:#163e5a; font-size:11px; text-overflow:ellipsis; white-space:nowrap; }
.p2-node-state { display:inline-flex; min-height:18px; align-items:center; align-self:start; padding:2px 7px; color:#718895; border-radius:4px; background:#e9eff2; font-size:9px; font-weight:750; line-height:1; white-space:nowrap; }
.p2-chain-node.done .p2-node-state { color:#16813d; background:#dff4e6; } .p2-chain-node.active .p2-node-state { color:var(--se-blue); background:#dceffa; } .p2-chain-node.review .p2-node-state { color:#b86a0e; background:#fff0dc; } .p2-chain-node.danger .p2-node-state { color:var(--se-red); background:#ffe4e6; }
.p2-node-percent { color:#597a8e; font-size:11px; } .p2-chain-node>small { color:#6f8796; font-size:9px; }
.p2-chain-arrow { position:relative; display:grid; width:28px; flex:0 0 28px; place-items:center; } .p2-chain-arrow::before { width:13px; height:1px; content:""; background:#138cda; }
.p2-chain-arrow::after { position:absolute; right:7px; width:6px; height:6px; content:""; border-top:1px solid #138cda; border-right:1px solid #138cda; transform:rotate(45deg); } .p2-chain-arrow i { display:none; }
.p2-chain-lane.hub .p2-chain-node { grid-template-columns:1fr 80px 70px; grid-template-rows:1fr; justify-items:start; padding:9px 16px; text-align:left; }
.p2-chain-lane.hub .p2-chain-node .p2-node-state { display:none; } .p2-chain-lane.hub .p2-chain-node .p2-node-percent { justify-self:center; } .p2-chain-lane.hub .p2-chain-node>small { justify-self:end; }
.p2-chain-lane.hub .p2-chain-arrow { width:36px; flex-basis:36px; }

.p2-alert-panel .p2-panel-head>strong { color:var(--se-orange); font-size:22px; } .p2-alert-panel .p2-panel-head>strong small { margin-left:4px; color:#8ba0ad; font-size:10px; }
.p2-alert-list { min-height:0; padding:2px 16px 0; overflow:hidden; }
.p2-alert-row { position:relative; display:grid; width:100%; min-width:0; grid-template-columns:90px minmax(0,1fr) 76px; grid-template-rows:25px 25px; align-items:center; gap:0 10px; padding:13px 0 13px 11px; color:inherit; border:0; border-bottom:1px solid #e4edf1; background:transparent; cursor:pointer; text-align:left; }
.p2-alert-row::before { position:absolute; top:14px; bottom:14px; left:0; width:3px; content:""; border-radius:4px; background:var(--se-orange); } .p2-alert-row.danger::before { background:var(--se-red); }
.p2-alert-row>span { grid-row:1/3; justify-self:start; padding:5px 8px; color:#b9680d; border-radius:4px; background:#fff2e1; font-size:10px; } .p2-alert-row.danger>span { color:#bc333d; background:#fff0f1; }
.p2-alert-row strong { overflow:hidden; color:#244961; font-size:12px; text-overflow:ellipsis; white-space:nowrap; } .p2-alert-row small { overflow:hidden; color:#768e9d; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.p2-alert-row time { align-self:end; color:#8098a7; font-size:9px; text-align:right; } .p2-alert-row em { align-self:start; justify-self:end; padding:5px 8px; color:var(--se-blue); border:1px solid #8cc8ea; border-radius:4px; font-size:9px; font-style:normal; }

.p2-daily-panel,.p2-labor-panel,.p2-material-panel { display:grid; grid-template-rows:60px minmax(0,1fr); }
.p2-bottom-kpis { display:grid; min-height:0; grid-template-columns:repeat(3,minmax(0,1fr)); padding:13px 20px 12px; }
.p2-bottom-kpis>div { display:grid; min-width:0; align-content:center; padding:0 17px; border-right:1px solid #e0eaf0; } .p2-bottom-kpis>div:last-child { border-right:0; }
.p2-bottom-kpis span { color:#65839a; font-size:10px; } .p2-bottom-kpis strong { margin-top:8px; color:#0874c8; font-size:24px; line-height:1; }
.p2-bottom-kpis small { margin-top:8px; overflow:hidden; color:#718a9a; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }
.p2-material-panel .p2-panel-head>strong { color:var(--se-blue); font-size:18px; } .p2-material-panel { grid-template-rows:60px 38px minmax(0,1fr); }
.p2-material-panel::after { content:none!important; }
.p2-material-bar { display:grid; align-items:center; padding:0 22px; } .p2-material-bar i { display:block; height:10px; overflow:hidden; border-radius:8px; background:#e1ecef; } .p2-material-bar i b { display:block; height:100%; border-radius:inherit; background:var(--se-green); }
.p2-picking-kpis { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); padding:8px 14px 12px; } .p2-picking-kpis>div { display:grid; align-content:center; justify-items:center; border-right:1px solid #e0eaf0; }
.p2-picking-kpis>div:last-child { border:0; } .p2-picking-kpis span { color:#66839a; font-size:10px; } .p2-picking-kpis strong { margin-top:8px; color:#0874c8; font-size:20px; }
.p2-data-foot { display:flex; min-width:0; align-items:center; justify-content:space-between; padding:0 12px; color:#7290a4; font-size:10px; } .p2-data-foot>span:first-child { display:flex; align-items:center; } .p2-data-foot img { width:19px; height:19px; margin-right:7px; object-fit:contain; } .p2-data-foot small { margin-left:8px; color:#8ba5b5; font-size:8px; }

/* 04 生产大屏：全项目台套分页、动态工艺链与缺口优先展示。 */
.p2-screen-v4 { grid-template-rows:112px 170px minmax(0,1fr) 36px; gap:10px; }
.p2-screen-v4 .p2-overview { grid-template-columns:365px 175px minmax(570px,1fr) 300px; }
.p2-screen-v4 .p2-project-identity { padding:12px 20px; }
.p2-screen-v4 .p2-project-identity h2 { max-width:315px; margin:7px 0 4px; font-size:25px; }
.p2-screen-v4 .p2-project-identity>div { gap:8px; font-size:11px; }
.p2-screen-v4 .p2-demo-badge,.p2-screen-v4 .p2-source-badge { height:24px; padding:0 9px; font-size:10px; }
.p2-screen-v4 .p2-model-summary { padding:0 17px; }
.p2-screen-v4 .p2-model-summary>img { width:42px; height:42px; }
.p2-screen-v4 .p2-plan-summary>div { gap:8px; padding:0 12px; }
.p2-screen-v4 .p2-plan-summary img { width:36px; height:36px; padding:8px; }
.p2-screen-v4 .p2-plan-summary dd { margin-top:5px; font-size:17px; }
.p2-screen-v4 .p2-progress-summary { gap:12px; padding:8px 14px; }
.p2-screen-v4 .p2-progress-ring { width:64px; flex-basis:64px; }
.p2-screen-v4 .p2-progress-summary>div:last-child { width:165px; }
.p2-screen-v4 .p2-progress-summary>div:last-child>button { margin-top:6px; padding:0; color:var(--se-blue); border:0; background:transparent; font-size:10px; font-weight:750; cursor:pointer; }
.p2-screen-v4 .p2-unit-section { display:grid; min-height:0; grid-template-rows:34px minmax(0,1fr); padding:0; }
.p2-screen-v4 .p2-unit-section>header { display:flex; min-width:0; align-items:center; justify-content:space-between; gap:18px; }
.p2-screen-v4 .p2-unit-section>header>div { display:flex; min-width:0; align-items:center; gap:14px; }
.p2-screen-v4 .p2-unit-section>header>div>strong { color:#154668; font-size:14px; }
.p2-screen-v4 .p2-unit-section>header>div>span { display:flex; align-items:center; gap:7px; overflow:hidden; color:#69869a; font-size:10px; white-space:nowrap; }
.p2-screen-v4 .p2-unit-section>header>div>span span { padding:3px 7px; border:1px solid #d5e6ee; border-radius:4px; background:rgba(255,255,255,.7); }
.p2-screen-v4 .p2-unit-section>header>div>span b { color:#1b5e88; }
.p2-screen-v4 .p2-unit-section>header nav { display:flex; align-items:center; gap:7px; }
.p2-screen-v4 .p2-unit-section>header nav button { width:26px; height:25px; padding:0; color:var(--se-blue-deep); border:1px solid #bcd9e8; border-radius:4px; background:#fff; font-size:18px; cursor:pointer; }
.p2-screen-v4 .p2-unit-section>header nav button:disabled { opacity:.35; cursor:default; }
.p2-screen-v4 .p2-unit-section>header nav b { min-width:38px; color:#174f74; font-size:11px; text-align:center; }
.p2-screen-v4 .p2-unit-section>header nav small { min-width:122px; color:#68869a; font-size:10px; text-align:right; }
.p2-screen-v4 .p2-unit-strip { grid-template-columns:repeat(6,minmax(0,1fr)); gap:10px; }
.p2-screen-v4 .p2-unit-card { grid-template-columns:1fr; grid-template-rows:26px 23px 20px 24px; align-content:center; gap:3px; padding:9px 12px; border-left:4px solid #8ebdd8; border-radius:8px; }
.p2-screen-v4 .p2-unit-card.active { border-left-color:var(--se-blue); }
.p2-screen-v4 .p2-unit-card.done { border-left-color:var(--se-green); }
.p2-screen-v4 .p2-unit-card.review { border-left-color:var(--se-orange); }
.p2-screen-v4 .p2-unit-card.danger { border-left-color:var(--se-red); }
.p2-screen-v4 .p2-unit-card.selected { border-color:#188bd3; border-left-width:4px; box-shadow:0 6px 18px rgba(2,106,184,.16); }
.p2-screen-v4 .p2-unit-card-top { display:flex; min-width:0; align-items:center; justify-content:space-between; gap:8px; }
.p2-screen-v4 .p2-unit-card-top strong { overflow:hidden; color:#173e5d; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }
.p2-screen-v4 .p2-unit-card-top b { flex:0 0 auto; padding:3px 6px; color:#0b6cae; border-radius:4px; background:#e7f4fc; font-size:9px; }
.p2-screen-v4 .p2-unit-card.done .p2-unit-card-top b { color:#147a39; background:#e6f6eb; }
.p2-screen-v4 .p2-unit-card.review .p2-unit-card-top b { color:#a85e08; background:#fff1dc; }
.p2-screen-v4 .p2-unit-card.danger .p2-unit-card-top b { color:#b92d38; background:#ffebed; }
.p2-screen-v4 .p2-unit-card.muted .p2-unit-card-top b { color:#627a88; background:#edf2f4; }
.p2-screen-v4 .p2-unit-card-detail { min-width:0; overflow:hidden; color:#365f78; font-size:10px; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }
.p2-screen-v4 .p2-unit-card-detail.secondary { color:#708a9b; font-weight:500; }
.p2-screen-v4 .p2-unit-card>.p2-unit-progress { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; }
.p2-screen-v4 .p2-main-grid { grid-template-rows:minmax(0,1fr) 156px; gap:10px 12px; }
.p2-screen-v4 .p2-chain-panel { grid-column:1/10; grid-template-rows:62px minmax(0,1fr); }
.p2-screen-v4 .p2-alert-panel { grid-column:10/13; grid-template-rows:62px 28px minmax(0,1fr); }
.p2-screen-v4 .p2-daily-panel,.p2-screen-v4 .p2-labor-panel,.p2-screen-v4 .p2-material-panel { grid-template-rows:52px minmax(0,1fr); }
.p2-screen-v4 .p2-panel-head { min-height:52px; padding:9px 14px; }
.p2-screen-v4 .p2-panel-head h2 { font-size:17px; }
.p2-screen-v4 .p2-panel-head p { max-width:470px; overflow:hidden; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.p2-screen-v4 .p2-chain-panel .p2-panel-head aside { min-width:205px; }
.p2-screen-v4 .p2-chain-panel .p2-panel-head aside strong { max-width:220px; overflow:hidden; font-size:12px; text-overflow:ellipsis; white-space:nowrap; }
.p2-screen-v4 .p2-state-legend { gap:10px; }
.p2-chain-grid { display:grid; min-height:0; grid-template-columns:repeat(7,minmax(0,1fr)); grid-auto-rows:minmax(0,1fr); gap:7px; padding:8px 10px 10px; }
.p2-screen-v4 .p2-chain-node { display:grid; min-height:0; grid-template-columns:minmax(0,1fr) auto; grid-template-rows:18px 20px 17px 15px 14px; align-content:center; justify-items:start; padding:6px 8px; text-align:left; }
.p2-screen-v4 .p2-chain-node>strong { grid-column:1; grid-row:2; align-self:center; font-size:12px; }
.p2-screen-v4 .p2-chain-node>.p2-node-state { grid-column:1; grid-row:1; align-self:start; min-height:16px; padding:2px 5px; font-size:9px; }
.p2-screen-v4 .p2-chain-node>.p2-node-percent { grid-column:2; grid-row:1/3; align-self:center; font-size:11px; }
.p2-screen-v4 .p2-chain-node>small { grid-column:1/-1; grid-row:3; width:100%; overflow:hidden; color:#5f7b8e; font-size:9px; text-overflow:ellipsis; white-space:nowrap; }
.p2-screen-v4 .p2-chain-node>em,.p2-screen-v4 .p2-chain-node>i { grid-column:1/-1; width:100%; overflow:hidden; color:#718b9b; font-size:9px; font-style:normal; text-overflow:ellipsis; white-space:nowrap; }
.p2-screen-v4 .p2-chain-node>em { grid-row:4; }
.p2-screen-v4 .p2-chain-node>i { grid-row:5; color:#9a6a22; }
.p2-screen-v4 .p2-chain-node.current::before { left:15%; width:70%; }
.p2-alert-types { display:flex; align-items:center; gap:4px; padding:3px 10px; overflow:hidden; border-bottom:1px solid #e4edf1; }
.p2-alert-types button { flex:1 1 auto; padding:2px 3px; color:#5f7b8d; border:0; border-radius:3px; background:#edf4f7; font-size:8px; text-align:center; white-space:nowrap; cursor:pointer; }
.p2-alert-types button:hover,.p2-alert-types button:focus-visible { color:#fff; background:var(--se-blue); outline:none; }
.p2-screen-v4 .p2-alert-list { padding:0 10px; }
.p2-screen-v4 .p2-alert-row { grid-template-columns:78px minmax(0,1fr) 61px; grid-template-rows:20px 20px; gap:0 7px; padding:6px 0 6px 8px; }
.p2-screen-v4 .p2-alert-row::before { top:7px; bottom:7px; }
.p2-screen-v4 .p2-alert-row>span { padding:4px 5px; font-size:8px; }
.p2-screen-v4 .p2-alert-row.candidate>span { color:#8a611b; background:#f4efe3; }
.p2-screen-v4 .p2-alert-row.candidate::before { background:#9f7b36; }
.p2-screen-v4 .p2-alert-row strong { font-size:10px; }
.p2-screen-v4 .p2-alert-row small,.p2-screen-v4 .p2-alert-row time,.p2-screen-v4 .p2-alert-row em { font-size:8px; }
.p2-screen-v4 .p2-alert-row em { padding:3px 5px; }
.p2-screen-v4 .p2-bottom-kpis { padding:9px 13px; }
.p2-screen-v4 .p2-bottom-kpis>div { padding:0 12px; }
.p2-screen-v4 .p2-bottom-kpis strong { margin-top:6px; font-size:20px; }
.p2-screen-v4 .p2-bottom-kpis small { margin-top:6px; font-size:9px; }
.p2-screen-v4 .p2-material-panel { grid-template-rows:52px minmax(0,1fr); }
.p2-screen-v4 .p2-material-panel .p2-panel-head>button { flex:0 0 auto; padding:4px 6px; color:var(--se-blue); border:0; background:transparent; font-size:9px; font-weight:750; cursor:pointer; }
.p2-material-risk-list { display:grid; min-height:0; grid-template-columns:repeat(3,minmax(0,1fr)); gap:6px; padding:7px 9px 9px; }
.p2-material-risk { display:grid; min-width:0; align-content:center; gap:3px; padding:6px 7px; overflow:hidden; color:inherit; border:1px solid #f0cf9c; border-radius:5px; background:#fffaf1; cursor:pointer; text-align:left; }
.p2-material-risk strong,.p2-material-risk span,.p2-material-risk small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.p2-material-risk strong { color:#70480d; font-size:9px; }
.p2-material-risk span { color:#8a5e1b; font-size:8px; }
.p2-material-risk small { color:#8d8170; font-size:7px; }
.p2-screen-v4 .p2-data-foot { gap:12px; padding:0 7px; }
.p2-screen-v4 .p2-data-foot>span { display:flex; min-width:0; align-items:center; gap:10px; overflow:hidden; white-space:nowrap; }
.p2-screen-v4 .p2-data-foot>span:last-child { display:block; overflow:hidden; text-overflow:ellipsis; }
.p2-screen-v4 .p2-data-foot .p2-demo-badge,.p2-screen-v4 .p2-data-foot .p2-source-badge { height:20px; }
.p2-screen-v4 .p2-data-foot b { color:#4a7188; font-size:9px; }
.p2-screen-v4 .p2-data-foot small { margin:0; color:#6f8999; font-size:8px; }
