
:root{--bg:#f3f4f6;--panel:#fff;--line:#d9dde3;--text:#111;--muted:#666;--hover:#f0f1f2;--sel:#e6e8ea}
*{box-sizing:border-box}html,body{height:100%;margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--text);background:var(--bg);overflow:hidden}
button,input,select{font:inherit;color:inherit}.app{height:100%;display:grid;grid-template-rows:76px 1fr 27px}.ribbon{background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:stretch;gap:5px;padding:5px 7px;overflow-x:auto}.group{display:flex;align-items:center;gap:3px;padding-right:6px;border-right:1px solid var(--line);position:relative}.group:last-child{border-right:0}.tool{height:64px;min-width:54px;border:1px solid transparent;background:#fff;border-radius:5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;cursor:pointer;font-size:9px;white-space:nowrap;padding:2px 5px}.tool:hover,.tool.active{background:var(--hover);border-color:#c9cdd2}.tool.study{min-width:57px}.tool.hub{background:#fafafa;border-color:#eceff1}.tool.designTool{background:#f7f8f9;border-color:#dfe3e7;font-weight:700}.ico{font-size:18px;line-height:20px}.libHubGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.libTile{border:1px solid #cfd6de;background:#fff;border-radius:6px;padding:10px;text-align:left;cursor:pointer;min-height:74px}.libTile:hover{background:#f4f7fa;border-color:#94a3b8}.libTile b{display:block;font-size:11px;color:#17324d;margin-bottom:4px}.libTile span{font-size:9px;color:#5b6775;line-height:1.35}.libBadge{float:right;font-size:8px;background:#eaf2ff;color:#154a7a;border:1px solid #c9dcf2;border-radius:10px;padding:2px 6px}.libToolbar{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 9px}.libEditorGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.libJson{font-family:Consolas,monospace;font-size:9px;min-height:68px;width:100%;resize:vertical;border:1px solid #cfd3d8;border-radius:4px;padding:6px;background:#fff;color:#111}.libOriginBuilt{color:#475569}.libOriginUser{color:#0b6b39;font-weight:700}.main{display:grid;grid-template-columns:195px 1fr 280px;min-height:0}.panel{background:#fff;min-height:0;overflow:auto}.left{border-right:1px solid var(--line)}.right{border-left:1px solid var(--line)}.ptitle{font-size:11px;font-weight:700;padding:9px;border-bottom:1px solid var(--line)}.library{padding:7px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.equip{height:61px;background:#fff;border:1px solid #cfd3d8;border-radius:5px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:10px}.equip:hover,.equip.active{background:var(--hover);border-color:#999}.librarySection{grid-column:1/-1;display:flex;align-items:center;gap:7px;margin:5px 0 1px;padding:6px 7px 5px;border-bottom:1px solid #cfd3d8;font-size:9px;font-weight:800;letter-spacing:.08em;color:#44515d;background:#f7f8fa}.librarySection:first-child{margin-top:0}.librarySection .sectionTag{font-size:8px;font-weight:700;letter-spacing:.04em;border:1px solid #c6ccd2;border-radius:9px;padding:1px 6px;background:#fff;color:#586574}body.darkMode .librarySection{background:#1d2b37;color:#dbe6ef;border-color:#465867}body.darkMode .librarySection .sectionTag{background:#263847;color:#c8d6e2;border-color:#526779}.sym{height:27px;width:46px;display:flex;align-items:center;justify-content:center;font-size:16px}.props{padding:9px}.section{border:1px solid #ddd;border-radius:5px;margin-bottom:9px}.section h3{margin:0;padding:7px 8px;font-size:10px;background:#f7f7f7;border-bottom:1px solid #ddd}.section .body{padding:8px}.row{margin-bottom:8px}.row:last-child{margin-bottom:0}.row label{display:block;font-size:9px;color:#555;margin-bottom:3px}.row input,.row select{width:100%;height:27px;border:1px solid #cfd3d8;border-radius:4px;padding:3px 6px;background:#fff;font-size:10px}.row2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.applybar{display:flex;gap:5px;position:sticky;bottom:0;background:#fff;padding:7px 0 2px}.applybar .btn{flex:1}.readiness{font-size:9px;line-height:1.5}.smallnote{font-size:9px;color:#666;margin-top:4px}.sourcebadge{font-size:9px;border:1px solid #cfd3d8;padding:4px 6px;border-radius:4px;background:#fafafa;margin:4px 0 8px}.row input[readonly]{background:#f5f5f5;color:#333}.canvas-wrap{position:relative;overflow:hidden;background:#fff}.canvas{width:100%;height:100%;display:block;background:#fff;touch-action:none}.hint{position:absolute;left:10px;bottom:10px;border:1px solid #ddd;background:rgba(255,255,255,.95);padding:5px 7px;border-radius:4px;font-size:9px;color:#555;pointer-events:none}.status{background:#fff;border-top:1px solid var(--line);display:flex;align-items:center;gap:17px;padding:0 9px;font-size:9px;color:#555;position:relative}.statusBrand{position:absolute;left:50%;transform:translateX(-50%);font-weight:600;letter-spacing:.02em;white-space:nowrap;pointer-events:none;color:inherit}.spacer{flex:1}.modalBack{position:fixed;inset:0;background:rgba(0,0,0,.18);display:none;align-items:center;justify-content:center;z-index:20}.modal{width:min(950px,92vw);max-height:84vh;background:#fff;border:1px solid #999;box-shadow:0 8px 30px rgba(0,0,0,.2);display:grid;grid-template-rows:42px 1fr 42px;position:relative}.modalHead{display:flex;align-items:center;padding:0 12px;border-bottom:1px solid #ddd;font-size:12px;font-weight:700;cursor:move;user-select:none}.modalBody{overflow:auto;padding:12px}.modalFoot{display:flex;justify-content:flex-end;gap:6px;padding:7px 10px;border-top:1px solid #ddd}.btn{height:28px;padding:0 12px;border:1px solid #aaa;background:#fff;border-radius:4px;cursor:pointer;font-size:10px}.btn:hover{background:#f2f2f2}.tabs{display:flex;gap:2px;border-bottom:1px solid #ccc;margin-bottom:8px}.tab{border:1px solid #ccc;border-bottom:0;background:#f7f7f7;padding:6px 10px;font-size:10px;cursor:pointer}.tab.active{background:#fff;font-weight:700}.table{width:100%;border-collapse:collapse;font-size:9px}.table th,.table td{border:1px solid #d5d5d5;padding:5px 6px;text-align:right;white-space:nowrap}.table th:first-child,.table td:first-child{text-align:left}.table th{background:#f4f4f4}.msg{padding:6px 8px;border:1px solid #ddd;margin-bottom:5px;font-size:10px}.studyGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.checkgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 12px;font-size:10px}.checkgrid label{display:flex;align-items:center;gap:6px;min-height:22px;margin:0;color:#333;line-height:1.25;cursor:pointer}.checkgrid input[type="checkbox"]{width:13px;height:13px;min-width:13px;margin:0;padding:0;border:1px solid #9aa0a6;border-radius:2px;vertical-align:middle;cursor:pointer;box-sizing:border-box}.badge{display:inline-block;border:1px solid #777;padding:1px 5px;border-radius:3px;font-size:9px}.faultBanner{position:absolute;right:10px;top:10px;max-width:min(560px,calc(100% - 20px));border:1px solid #111;background:#fff;padding:6px 8px;font-size:10px;line-height:1.35;display:none;z-index:7;box-shadow:0 2px 8px rgba(0,0,0,.08);pointer-events:none}.systemTree{position:absolute;left:10px;top:10px;width:300px;max-height:calc(100% - 20px);background:rgba(255,255,255,.98);border:1px solid #aeb4ba;border-radius:6px;box-shadow:0 5px 18px rgba(0,0,0,.14);z-index:8;display:none;grid-template-rows:auto auto 1fr;overflow:hidden}.systemTree.open{display:grid}.treeHead{height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 8px;border-bottom:1px solid #d9dde3;font-size:11px;font-weight:700;background:#f7f7f7}.treeHead button{border:0;background:transparent;cursor:pointer;font-size:16px;padding:2px 5px}.treeSearch{padding:7px;border-bottom:1px solid #e2e5e8}.treeSearch input{width:100%;height:28px;border:1px solid #cfd3d8;border-radius:4px;padding:4px 7px;font-size:10px}.treeBody{overflow:auto;padding:5px 4px 8px}.treeSystem{margin:3px 0 7px}.treeSystemTitle{font-size:9px;font-weight:700;color:#555;padding:4px 6px;text-transform:uppercase}.treeRow{display:flex;align-items:center;gap:5px;min-height:25px;padding:3px 6px;border-radius:4px;cursor:pointer;font-size:10px;white-space:nowrap;overflow:hidden}.treeRow:hover{background:#f0f1f2}.treeRow.sel{background:#fff1f1;outline:2px solid #d32f2f;outline-offset:-2px}.treeRow .twisty{width:12px;min-width:12px;text-align:center;color:#666}.treeRow .treeIcon{width:18px;min-width:18px;text-align:center;font-size:11px}.treeRow .treeName{overflow:hidden;text-overflow:ellipsis}.treeRow .treeType{margin-left:auto;font-size:8px;color:#777;padding-left:7px}.treeChildren.collapsed{display:none}.treeEmpty{padding:14px 9px;font-size:10px;color:#777}.treeFlash{position:absolute;pointer-events:none;border:2px solid #111;border-radius:8px;z-index:7;animation:treePulse .75s ease-out 2}@keyframes treePulse{0%{opacity:1;transform:scale(.92)}100%{opacity:0;transform:scale(1.18)}}
.treeToolbar{display:flex;gap:5px;padding:6px 7px;border-bottom:1px solid #e2e5e8;background:#fbfcfd}.treeViewBtn{flex:1;height:25px;border:1px solid #c7cdd4;background:#fff;border-radius:4px;cursor:pointer;font-size:9px;font-weight:700}.treeViewBtn:hover{background:#f0f3f5}.treeViewBtn.active{background:#e7edf3;border-color:#9ba8b4;color:#17212b}.treeCategory{margin:4px 0 8px}.treeCategoryTitle{display:flex;align-items:center;gap:6px;padding:5px 6px;border-radius:4px;font-size:9px;font-weight:700;color:#394957;background:#f3f6f8;cursor:pointer;user-select:none}.treeCategoryTitle:hover{background:#e9eef2}.treeCategoryTitle .treeCatCount{margin-left:auto;font-size:8px;font-weight:700;color:#6b7783;background:#fff;border:1px solid #d5dbe1;border-radius:9px;padding:1px 6px}.treeCategoryTitle .twisty{width:12px}.treeCategoryChildren.collapsed{display:none}.treeSummary{padding:5px 7px 1px;font-size:8px;color:#687888}.treeRow .treeType{font-weight:600;text-transform:capitalize}.treeRow.treeFeeder .treeType{color:#697783}.treeSystemTitle{display:flex;align-items:center;gap:5px}.treeSystemTitle .treeSysCount{margin-left:auto;font-size:8px;font-weight:400}.systemTree{width:330px;grid-template-rows:auto auto auto 1fr}.treeSearch{display:flex;gap:5px}.treeSearch input{flex:1}.treeClearBtn{width:28px;height:28px;border:1px solid #cfd3d8;border-radius:4px;background:#fff;cursor:pointer;font-size:13px}.treeClearBtn:hover{background:#f0f1f2}

/* Report selector contrast hardening: stay readable regardless of browser/OS dark-form preferences. */
#modalBody [id^="rpt_"]{color-scheme:light}
#modalBody input[id^="rpt_"]{background:#fff!important;color:#111827!important;border-color:#b9c4d0!important}
#modalBody input[id^="rpt_sel_"]{background:#fff!important}


/* Professional light-mode typography/status palette. Mirrors dark mode by semantic role. */
body:not(.darkMode){color:#1F2933}
body:not(.darkMode) .tool,body:not(.darkMode) .panel,body:not(.darkMode) .props,body:not(.darkMode) .status,body:not(.darkMode) .equip,body:not(.darkMode) .modal,body:not(.darkMode) .modalFoot,body:not(.darkMode) .btn,body:not(.darkMode) input,body:not(.darkMode) select,body:not(.darkMode) textarea,body:not(.darkMode) .table,body:not(.darkMode) .table td,body:not(.darkMode) .libTile{color:#1F2933}
body:not(.darkMode) .ptitle,body:not(.darkMode) .modalHead,body:not(.darkMode) .table th,body:not(.darkMode) .treeHead{color:#1F2933}
body:not(.darkMode) .smallnote,body:not(.darkMode) .sourcebadge,body:not(.darkMode) .msg,body:not(.darkMode) .libTile span,body:not(.darkMode) .treeSystemTitle,body:not(.darkMode) .treeType,body:not(.darkMode) .twisty,body:not(.darkMode) .libReadonly,body:not(.darkMode) .libCountLine{color:#5B6773}
body:not(.darkMode) .status-pass,body:not(.darkMode) .pill.ok,body:not(.darkMode) .pass,body:not(.darkMode) [data-status="PASS"]{color:#2E7D32!important}
body:not(.darkMode) .status-warn,body:not(.darkMode) .pill.warn,body:not(.darkMode) .review,body:not(.darkMode) [data-status="REVIEW"],body:not(.darkMode) [data-status="DATA REQUIRED"]{color:#A86100!important}
body:not(.darkMode) .status-fail,body:not(.darkMode) .pill.err,body:not(.darkMode) .fail,body:not(.darkMode) [data-status="FAIL"]{color:#C62828!important}

/* === Library visibility + Dark UI mode === */
:root{color-scheme:light}
body.darkMode{--bg:#0f1720;--panel:#16212c;--line:#344352;--text:#e8edf3;--muted:#aab6c2;--hover:#22303d;--sel:#2a3b4b;color-scheme:dark}
body.darkMode .ribbon{background:#121c26;border-color:#344352}
body.darkMode .tool{background:#121c26;color:#e8edf3}
body.darkMode .tool.hub{background:#182531;border-color:#344352}
body.darkMode .tool:hover,body.darkMode .tool.active{background:#263746;border-color:#52677a}
body.darkMode .panel,body.darkMode .props,body.darkMode .status{background:#16212c;color:#e8edf3;border-color:#344352}
body.darkMode .ptitle{background:#111b25;color:#bcd0e2;border-color:#344352}
body.darkMode .equip{background:#182531;color:#e8edf3;border-color:#344352}
body.darkMode .equip:hover{background:#243646}
body.darkMode input,body.darkMode select,body.darkMode textarea{background:#0f1923;color:#edf3f8;border-color:#435568}
body.darkMode .modalBack{background:rgba(0,0,0,.72)}
body.darkMode .modal{background:#15212c;color:#e8edf3;border:1px solid #3b4d5e}
body.darkMode .modalHead{background:#101a24;color:#dceaf5;border-color:#344352}
body.darkMode .modalFoot{background:#111b25;border-color:#344352}
body.darkMode .btn{background:#20303e;color:#e8edf3;border-color:#486074}
body.darkMode .btn:hover{background:#2b4052}
body.darkMode .msg,body.darkMode .sourcebadge,body.darkMode .smallnote{color:#c4d0da}
body.darkMode .msg{background:#142434;border-color:#35506a}
body.darkMode .table{color:#e8edf3}
body.darkMode .table th{background:#1b2b39;color:#d9e8f5;border-color:#415567}
body.darkMode .table td{border-color:#334554;background:#16212c}
body.darkMode .table tr:nth-child(even) td{background:#192733}
body.darkMode .libTile{background:#182531;border-color:#405365;color:#e8edf3}
body.darkMode .libTile:hover{background:#223545;border-color:#668099}
body.darkMode .libTile b{color:#a9d3ff}
body.darkMode .libTile span{color:#b9c7d4}
body.darkMode .libBadge{background:#193451;color:#a9d3ff;border-color:#315b80}
body.darkMode .libOriginUser{background:#143a27;color:#90e3ab;border-color:#2b7145}
body.darkMode .canvas-wrap,body.darkMode .canvas{background:#0b1118}
body.darkMode .hint{background:rgba(15,24,33,.94);color:#c7d5e2;border-color:#415465}
body.darkMode .faultBanner{background:#14212c;color:#eef5fb;border-color:#5b7185}
body.darkMode .systemTree{background:rgba(18,29,39,.98);color:#e8f0f7;border-color:#405365}
body.darkMode .treeHead{background:#111c26;color:#dce8f2;border-color:#344352}
body.darkMode .treeRow:hover{background:#223342}.darkMode .treeRow.sel{background:#3a2023;outline:2px solid #ff5252;outline-offset:-2px}
body.darkMode .treeSystemTitle,body.darkMode .treeType,body.darkMode .twisty{color:#aebdca}
body.darkMode .treeToolbar{background:#111c26;border-color:#344352}.darkMode .treeViewBtn{background:#16212c;color:#dce7f1;border-color:#405365}.darkMode .treeViewBtn:hover{background:#223342}.darkMode .treeViewBtn.active{background:#29465a;border-color:#5f829c;color:#fff}.darkMode .treeCategoryTitle{background:#1a2936;color:#dce7f1}.darkMode .treeCategoryTitle:hover{background:#223545}.darkMode .treeCategoryTitle .treeCatCount{background:#111c26;color:#aebdca;border-color:#405365}.darkMode .treeClearBtn{background:#16212c;color:#dce7f1;border-color:#405365}.darkMode .treeClearBtn:hover{background:#223342}.darkMode .treeSummary{color:#9fb0c0}
/* Professional dark-mode typography palette. Green is reserved for PASS/acceptable status rather than normal UI text. */
body.darkMode{color:#DCE7F1}
body.darkMode .tool,body.darkMode .panel,body.darkMode .props,body.darkMode .status,body.darkMode .equip,body.darkMode .modal,body.darkMode .modalFoot,body.darkMode .btn,body.darkMode input,body.darkMode select,body.darkMode textarea,body.darkMode .table,body.darkMode .table td,body.darkMode .libTile{color:#DCE7F1}
body.darkMode .ptitle,body.darkMode .modalHead,body.darkMode .table th,body.darkMode .treeHead{color:#EAF2F8}
body.darkMode .smallnote,body.darkMode .sourcebadge,body.darkMode .msg,body.darkMode .libTile span,body.darkMode .treeSystemTitle,body.darkMode .treeType,body.darkMode .twisty,body.darkMode .libReadonly,body.darkMode .libCountLine{color:#9FB0C0}
body.darkMode .libTile b{color:#8FD3FF}
body.darkMode input::placeholder,body.darkMode textarea::placeholder{color:#748595}
body.darkMode .status-pass,body.darkMode .pill.ok,body.darkMode .pass,body.darkMode [data-status="PASS"]{color:#72D98B!important}
body.darkMode .status-warn,body.darkMode .pill.warn,body.darkMode .review,body.darkMode [data-status="REVIEW"]{color:#F0C36A!important}
body.darkMode .status-fail,body.darkMode .pill.err,body.darkMode .fail,body.darkMode [data-status="FAIL"]{color:#FF8582!important}

.libOriginBuilt{display:inline-block;font-size:8px;font-weight:700;background:#e8f1fb;color:#1e527d;border:1px solid #bfd2e5;border-radius:9px;padding:2px 6px}
body.darkMode .libOriginBuilt{background:#18324b;color:#9dcefb;border-color:#315b80}
.libReadonly{font-size:8px;color:#687888;font-style:italic}
body.darkMode .libReadonly{color:#9eb0c0}
.libSearchBar{display:flex;gap:7px;align-items:center;margin:8px 0}.libSearchBar input{flex:1;min-width:160px;padding:6px 8px;border:1px solid #b8c2cc;border-radius:4px}
.libCountLine{font-size:9px;color:#5c6874;margin:5px 0 8px}body.darkMode .libCountLine{color:#a9b7c5}
/* Keep the engineering drawing sheet white in Dark UI mode for black one-line/result legibility. */
body.darkMode .canvas-wrap{background:#0c141d}.canvas{background:#fff}


/* === Light-mode Properties panel contrast hardening === */
body:not(.darkMode) .right,
body:not(.darkMode) .right .props{
  background:#FFFFFF!important;
  color:#1F2933!important;
}
body:not(.darkMode) .right .ptitle{
  background:#F5F7F9!important;
  color:#17212B!important;
  border-color:#D7DEE5!important;
}
body:not(.darkMode) .right .section{
  background:#FFFFFF!important;
  border-color:#D4DBE2!important;
  color:#1F2933!important;
}
body:not(.darkMode) .right .section h3{
  background:#F4F6F8!important;
  color:#17212B!important;
  border-color:#D7DEE5!important;
}
body:not(.darkMode) .right .section .body,
body:not(.darkMode) .right .row,
body:not(.darkMode) .right .row2,
body:not(.darkMode) .right .readiness,
body:not(.darkMode) .right .applybar,
body:not(.darkMode) .right .props div{
  color:#1F2933;
}
body:not(.darkMode) .right .row label{
  color:#394957!important;
  font-weight:600;
}
body:not(.darkMode) .right .smallnote,
body:not(.darkMode) .right .sourcebadge,
body:not(.darkMode) .right .libReadonly{
  color:#5B6773!important;
}
body:not(.darkMode) .right .sourcebadge{
  background:#F7F9FB!important;
  border-color:#D1D9E0!important;
}
body:not(.darkMode) .right input,
body:not(.darkMode) .right select,
body:not(.darkMode) .right textarea{
  background:#FFFFFF!important;
  color:#17212B!important;
  border-color:#AEB9C4!important;
  color-scheme:light!important;
}
body:not(.darkMode) .right input::placeholder,
body:not(.darkMode) .right textarea::placeholder{
  color:#7A8793!important;
  opacity:1;
}
body:not(.darkMode) .right input[readonly],
body:not(.darkMode) .right input:disabled,
body:not(.darkMode) .right select:disabled,
body:not(.darkMode) .right textarea:disabled{
  background:#EEF2F5!important;
  color:#465563!important;
  -webkit-text-fill-color:#465563!important;
  opacity:1!important;
}
body:not(.darkMode) .right select option{
  background:#FFFFFF!important;
  color:#17212B!important;
}
body:not(.darkMode) .right .applybar{
  background:#FFFFFF!important;
}
body:not(.darkMode) .right .btn{
  background:#FFFFFF!important;
  color:#1F2933!important;
  border-color:#AAB5BF!important;
}
body:not(.darkMode) .right .btn:hover{
  background:#EEF3F7!important;
}
/* Handle inline legacy gray text used by the empty-selection message. */
body:not(.darkMode) .right .props > div[style*="color:#666"],
body:not(.darkMode) .right .props div[style*="color: #666"]{
  color:#5B6773!important;
}

/* === Properties pane heading contrast: explicit light/dark header treatment === */
body:not(.darkMode) .right .section > h3,
body:not(.darkMode) .right .props h1,
body:not(.darkMode) .right .props h2,
body:not(.darkMode) .right .props h3,
body:not(.darkMode) .right .props h4,
body:not(.darkMode) .right .props h5,
body:not(.darkMode) .right .props h6{
  background:#F4F6F8!important;
  color:#17212B!important;
  border-color:#D7DEE5!important;
}
body.darkMode .right,
body.darkMode .right .props{
  background:#16212C!important;
  color:#DCE7F1!important;
}
body.darkMode .right .section{
  background:#16212C!important;
  color:#DCE7F1!important;
  border-color:#3A4B5B!important;
}
body.darkMode .right .section > h3,
body.darkMode .right .props h1,
body.darkMode .right .props h2,
body.darkMode .right .props h3,
body.darkMode .right .props h4,
body.darkMode .right .props h5,
body.darkMode .right .props h6{
  background:#223545!important;
  color:#F2F7FB!important;
  border-color:#496074!important;
}
body.darkMode .right .section .body{background:#16212C!important;color:#DCE7F1!important}
body.darkMode .right .row label{color:#C5D2DE!important}
body.darkMode .right .smallnote,body.darkMode .right .sourcebadge{color:#9FB0C0!important}


/* Study/result heading contrast fix: light heading bars always use dark text. */
body:not(.darkMode) .modal .section > h3,
body:not(.darkMode) .modalBody .section > h3 {
  background:#F4F6F8 !important;
  color:#17212B !important;
  border-color:#D7DEE5 !important;
}
body.darkMode .modal .section > h3,
body.darkMode .modalBody .section > h3 {
  background:#F4F6F8 !important;
  color:#17212B !important;
  border-color:#C9D2DB !important;
  text-shadow:none !important;
}
/* Keep general light-background study headers legible in result dialogs. */
.modalBody .studyHeadingLight,
.modalBody .lightHeading,
.modalBody .resultHeadingLight {
  background:#F4F6F8 !important;
  color:#17212B !important;
}

/* SC/modal dark-mode contrast: fault-type labels and field labels must remain readable */
body.darkMode .modal .checkgrid label,
body.darkMode .modal .row > label,
body.darkMode .modal .row label {
  color:#FFFFFF !important;
}
body.darkMode .modal .checkgrid input[type="checkbox"] {
  accent-color:#8FD3FF;
}

/* Max Window / true browser full-screen mode.
   Keep the complete application UI visible: ribbon, study buttons, palette,
   properties panel, status bar and canvas all remain on screen. */
html,body{width:100%;height:100%}
body.maxWindowMode{width:100vw!important;height:100vh!important;overflow:hidden!important}
body.maxWindowMode .app{width:100vw!important;height:100vh!important;max-width:none!important;max-height:none!important}
/* Full-screen keeps the complete application chrome. Do not collapse or convert
   ribbon/panel display modes; individual Ribbon Manager visibility choices remain
   authoritative through their own inline display rules. */
body.maxWindowMode .ribbon{display:flex!important}
body.maxWindowMode .status{display:flex!important}
body.maxWindowMode .left,body.maxWindowMode .right{display:block!important}
body.maxWindowMode .app{height:100vh;width:100vw}
body.maxWindowMode .main{min-height:0}
#maxWindowRestore{display:none!important}

/* === Floating / draggable engineering dialogs ===
   Dialogs are modeless so the one-line remains visible and interactive. */
.modalBack{background:transparent!important;pointer-events:none!important;align-items:center;justify-content:center}
.modalBack .modal{pointer-events:auto!important;box-shadow:0 10px 34px rgba(0,0,0,.28);resize:both;overflow:hidden;min-width:360px;min-height:220px;max-width:96vw;max-height:94vh}
.modalHead{cursor:move!important;touch-action:none}
.modalHead::after{content:'  •  drag to move';margin-left:auto;font-size:8px;font-weight:400;opacity:.55;white-space:nowrap}
body.darkMode .modalBack{background:transparent!important}
.systemTree .treeHead{cursor:move;touch-action:none;user-select:none}


/* Equipment Evaluation status palette */
.eqStatus{font-weight:700;white-space:nowrap}
.eqStatus.pass{color:#2E7D32!important}
.eqStatus.review{color:#C27A00!important}
.eqStatus.fail{color:#C62828!important}
.eqStatus.datarequired{color:#1565C0!important}
body.darkMode .eqStatus.pass{color:#72D98B!important}
body.darkMode .eqStatus.review{color:#F0C36A!important}
body.darkMode .eqStatus.fail{color:#FF8582!important}
body.darkMode .eqStatus.datarequired{color:#8FD3FF!important}

/* === CRISP_RESULT_DIALOGS_2026: pixel-snapped floating dialogs and sharper engineering tables === */
.modal{backface-visibility:hidden;-webkit-font-smoothing:auto;font-smooth:auto}
.modalBody{font-size:10px;line-height:1.35}
.modal .table{font-size:10px;line-height:1.3;border-collapse:collapse;transform:none!important}
.modal .table th,.modal .table td{border:1px solid #9aa4ad;padding:5px 7px;text-rendering:geometricPrecision}
.modal .table th{font-weight:700}
.modal .msg{font-size:10px;line-height:1.4}
#panelScheduleTable td,#panelScheduleTable th{vertical-align:middle}
#panelScheduleTable .panelSpanCovered{background:#f0f2f4!important;color:#65717d!important}
#panelScheduleTable .panelSpanCovered input,#panelScheduleTable .panelSpanCovered select{visibility:hidden}
#panelScheduleTable .panelSpanCovered.panelCkt{font-weight:700;color:#394957!important}
#panelScheduleTable .panelSpanCovered.panelBreaker{visibility:visible!important}
#panelScheduleTable .panelSpanCovered.panelBreaker .panelSpanLabel{display:block;visibility:visible;font-size:9px;font-weight:700;line-height:1.15;text-align:center;white-space:normal}
#panelScheduleTable .panelSpanMaster.panelBreaker{outline:2px solid #5b6773;outline-offset:-2px}
body.darkMode #panelScheduleTable .panelSpanCovered{background:#24313d!important;color:#aebcca!important}
body.darkMode #panelScheduleTable .panelSpanMaster.panelBreaker{outline-color:#9fb0c0}


/* PFC_SHARP_RENDERING_20260914: crisp UI/canvas/SVG rendering across browser zoom, DPR changes, and Max Screen. */
html,body,.app,.ribbon,.panel,.modal,.modalBody,.table,.section,.msg,.btn,.tool,.equip,.status,.systemTree{
  -webkit-font-smoothing:auto;
  -moz-osx-font-smoothing:auto;
  text-rendering:geometricPrecision;
}
.canvas{
  image-rendering:auto;
  transform:none !important;
  filter:none !important;
  backface-visibility:hidden;
}
.pfcSvgIcon,svg{
  shape-rendering:geometricPrecision;
  text-rendering:geometricPrecision;
}
.modal,.modalBody,.table,.section,.msg{
  filter:none !important;
  backface-visibility:hidden;
}
.table th,.table td,.row input,.row select,.btn,.tool,.equip,.smallnote,.msg{
  text-shadow:none !important;
}
