@font-face{font-family:Inter;src:url("/static/v2_4/fonts/Inter-Regular.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:Inter;src:url("/static/v2_4/fonts/Inter-Bold.woff2") format("woff2");font-style:normal;font-weight:700;font-display:swap}
@font-face{font-family:"Space Grotesk";src:url("/static/v2_4/fonts/SpaceGrotesk-SemiBold.woff2") format("woff2");font-style:normal;font-weight:600;font-display:swap}
:root{--ot-navy-900:#001c3f;--ot-navy-800:#002f65;--ot-cyan-500:#00a8cb;--ot-cyan-050:#e6f8fb;--ot-bg:#f3f7f8;--ot-surface:#fff;--ot-line:#d9e3e8;--ot-text:#13233a;--ot-muted:#617287;--ot-danger:#c63b31;--ot-warning:#d87500;--ot-success:#168a52;--ot-held:#637083}
html{background:var(--ot-bg);overflow-x:hidden}
html:not(.ot-route-shell-ready) body.ot-route-closure>header[role=banner]{visibility:hidden}
body.ot-route-closure{margin:0;background:var(--ot-bg);color:var(--ot-text);font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;line-height:1.5;overflow-x:hidden}
body.ot-route-closure.ot-assurance-native{--ot-v3-navy:var(--ot-navy-800);--ot-v3-navy-dark:var(--ot-navy-900);--ot-v3-teal:var(--ot-cyan-500);--ot-v3-teal-soft:var(--ot-cyan-050);--ot-v3-surface:var(--ot-surface);--ot-v3-surface-alt:#f7fafb;--ot-v3-rule:var(--ot-line);--ot-v3-rule-soft:#e8eff2;--ot-v3-ink:var(--ot-text);--ot-v3-ink-2:#31445c;--ot-v3-ink-3:var(--ot-muted);--ot-v3-ink-4:#7b8999;--ot-v3-muted:var(--ot-muted);--ot-v3-danger:var(--ot-danger);--ot-v3-warn:var(--ot-warning);background:linear-gradient(180deg,#eaf9fc 0,var(--ot-bg) 390px)}
body.ot-route-closure *,body.ot-route-closure *::before,body.ot-route-closure *::after{box-sizing:border-box}
html body.ot-route-closure :is(h1,h2,h3,h4,h5,h6),html body.ot-route-closure :is([class*="page-title"],[class*="section-title"],[class*="card-title"]){color:var(--ot-navy-900);font-family:"Space Grotesk",Inter,system-ui,sans-serif;font-style:normal;letter-spacing:-.015em}
html body.ot-route-closure :is(.metric-value,[class*="card-value"],[class*="summary-card-value"]){font-family:"Space Grotesk",Inter,system-ui,sans-serif;font-style:normal}
body.ot-route-closure h1{font-size:clamp(1.75rem,2.5vw,2.25rem);line-height:1.1}
body.ot-route-closure h2{font-size:clamp(1.25rem,1.8vw,1.5rem);line-height:1.18}
body.ot-route-closure a{color:var(--ot-navy-800)}
body.ot-route-closure :is(main,[role=main]):not(.ot-shared-page-layout__content){width:min(1540px,calc(100% - 40px));max-width:1540px;min-width:0;margin-inline:auto;padding-top:20px;padding-bottom:36px}
body.ot-route-closure.ef-findings-page main.ef-shell{width:min(2200px,calc(100% - 40px));max-width:2200px}
body.ot-route-closure.ot-assurance-native :is(main,[role=main]):not(.ot-shared-page-layout__content){width:min(2200px,calc(100% - 40px));max-width:2200px}
body.ot-route-closure.ot-assurance-native .main-container{width:min(2200px,calc(100% - 40px));max-width:2200px;margin:0 auto}
body.ot-route-closure.ot-assurance-native .main-container>.content[role=main]{width:100%;max-width:none;margin:0;padding:24px 0 40px}
body.ot-route-closure.ot-assurance-native :where(.ot-v3-page-header,.ot-bg-page-header,.ot-sc-page-header,.ot-sv-page-header,.ot-em-page-header,.ot-context-band,.mi-header){padding:22px 24px;border:1px solid var(--ot-line);border-radius:16px;background:rgba(255,255,255,.94);box-shadow:0 10px 30px -22px rgba(2,20,50,.5)}
body.ot-route-closure.ot-assurance-native :where([class$="-card"],[class*="__card"]){border-color:var(--ot-line);border-radius:14px;box-shadow:0 8px 24px rgba(0,28,63,.055)}
body.ot-route-closure.ot-assurance-native :where([class$="-grid"],[class*="__grid"]),body.ot-route-closure.ot-assurance-native :where([class$="-row"],[class*="__row"]){min-width:0;max-width:100%}
body.ot-route-closure.ot-assurance-native :where([class*="table-wrapper"],[class*="table-wrap"]){max-width:100%;overflow-x:auto}
body.ot-route-closure.ot-assurance-native .ot-context-band:not(:has(h1:not(:empty))){display:none}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__header{display:grid;gap:8px;margin-bottom:10px}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__eyebrow{color:var(--ot-cyan-500);font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__search{display:block;padding:8px 10px;border:1px solid var(--ot-line);border-radius:9px;background:#fff}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__search input{width:100%;min-height:0;padding:0;border:0;border-radius:0;outline:0;font-size:13px}
body.ot-route-closure.ot-assurance-native :where(.ot-shared-hierarchy__status,.ot-shared-hierarchy__hidden){margin:8px 0;color:var(--ot-muted);font-size:11px}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__tree{display:grid;gap:2px}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__tree :is(.ot-tree-node,button){display:flex;align-items:center;gap:6px;width:100%;min-height:28px;padding:4px 6px;border:0;border-radius:6px;background:transparent;color:var(--ot-text);font:inherit;text-align:left;cursor:pointer}
body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__tree :is(.ot-tree-node,button):hover,body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__tree :is(.ot-tree-node,button).is-active{background:var(--ot-cyan-050);color:var(--ot-navy-800)}
body.ot-route-closure.ot-assurance-native .ot-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
body.ot-route-closure.ot-assurance-native .ot-v3-action-strip{margin:14px 0;padding:16px;border:1px solid var(--ot-line);border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(0,28,63,.045)}
body.ot-route-closure.ot-assurance-native .ot-fc-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
body.ot-route-closure.ot-assurance-native .ot-fc-filter-group{display:grid;gap:5px;min-width:0}
body.ot-route-closure.ot-assurance-native .ot-fc-filter-label{color:var(--ot-muted);font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
body.ot-route-closure.ot-assurance-native :is(.ot-fc-input,.ot-fc-select){width:100%;min-height:40px;padding:8px 10px}
body.ot-route-closure.ot-assurance-native .case-card{border-radius:12px;box-shadow:0 6px 18px rgba(0,28,63,.045)}
body.ot-route-closure.ot-assurance-native .case-card-header{padding:14px 16px}
body.ot-route-closure.ot-assurance-native .case-card-title{font-family:"Space Grotesk",Inter,system-ui,sans-serif;font-size:15px}
body.ot-route-closure.ot-assurance-native .ot-v3-footer{display:flex;justify-content:space-between;gap:18px;margin-top:24px;padding:16px 2px;border-top:1px solid var(--ot-line);color:var(--ot-muted);font-size:12px}
body.ot-route-closure.ot-assurance-native :where(.ot-maint__activity-card,.ot-maint__downtime-split,.ot-benchmark__section,.ot-lubrication__stack){border-color:var(--ot-line);border-radius:14px;box-shadow:0 8px 24px rgba(0,28,63,.045)}
@media(max-width:900px){body.ot-route-closure.ot-assurance-native .ot-fc-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){body.ot-route-closure.ot-assurance-native .ot-fc-filter-grid{grid-template-columns:1fr}body.ot-route-closure.ot-assurance-native .ot-v3-footer{display:grid}}
body.ot-route-closure :where(button,input,select,textarea){font:inherit}
body.ot-route-closure :where(input,select,textarea){max-width:100%;border:1px solid var(--ot-line);border-radius:9px;background:#fff;color:var(--ot-text)}
/* The shared release shell owns interactive-control geometry.  Several older
   route sheets still declare square tabs/buttons with higher specificity, so
   keep this one scoped, authoritative radius declaration at the final layer. */
html body.ot-route-closure :is(
  button,
  input[type="button"],
  input[type="submit"],
  input[type="reset"],
  [role="button"],
  .btn,
  .button,
  .ot-btn,
  .tab,
  .ot-tab,
  .ot-tab-strip__btn,
  .ot-maint__tab,
  .ot-lubrication__tab,
  .ot-plant-dashboard__tab,
  button.ot-diagnostic-graphs__harmonic-marker
){border-radius:9px!important}
body.ot-route-closure :where(table){border-collapse:separate;border-spacing:0;background:#fff;color:var(--ot-text)}
body.ot-route-closure :where(th){font-family:Inter,system-ui,sans-serif;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ot-navy-800)}
body.ot-route-closure :where(.card,.panel,.ot-card,.ef-panel,.section-card,.chart-card){border:1px solid var(--ot-line);border-radius:14px;background:var(--ot-surface);box-shadow:0 8px 24px rgba(0,28,63,.055)}
body.ot-route-closure :where(.table-container,.table-wrapper,.ot-table-wrap,.admin-table-wrap,.mi-table-wrap,#sensorTableWrapper){max-width:100%;overflow-x:auto}
body.ot-route-closure :where(canvas,svg,img){max-width:100%}
body.ot-route-closure :where(.main-container,.content,.ot-page){min-width:0;max-width:100%}
body.ot-route-closure.ot-online-systems .main-container{width:min(1540px,calc(100% - 40px));margin:0 auto}
body.ot-route-closure.ot-online-systems .content{width:100%;padding:0}
body.ot-route-closure.ot-online-systems .online-page{padding:26px 0 40px;background:transparent;font-family:Inter,system-ui,sans-serif}
body.ot-route-closure.ot-online-systems :where(.online-header,.panel){border-color:var(--ot-line);border-radius:14px;box-shadow:0 8px 24px rgba(0,28,63,.055)}
body.ot-route-closure.ot-online-systems .warn{margin:8px 0 0;padding:10px 12px;border-color:#e8cf91;background:#fff8e8;color:#664c17;line-height:1.45;overflow-wrap:anywhere}
body.ot-route-closure.ot-online-systems .ot-reach-warnings{margin:12px 0 16px;border:1px solid #e8cf91;border-radius:10px;background:#fffaf0}
body.ot-route-closure.ot-online-systems .ot-reach-warnings>summary{padding:12px 14px;color:#664c17;font-weight:800;cursor:pointer}
body.ot-route-closure.ot-online-systems .ot-reach-warnings>#reach-warnings{padding:0 12px 8px}
body.ot-route-closure.ot-online-systems table{display:block;max-width:100%;overflow-x:auto}
.ot-unified-shell.ot-shell__topbar{position:sticky;top:0;z-index:1000;width:100%;min-height:76px;padding:11px max(20px,calc((100vw - 2200px)/2));display:flex;align-items:center;gap:20px;background:var(--ot-navy-900);border:0;box-shadow:0 8px 24px rgba(0,28,63,.18)}
.ot-unified-shell .ot-shell__brand-link,.ot-unified-shell .brand{display:block;flex:0 0 142px;width:142px;height:44px;background:url("/optimal-logo-white.png") center/contain no-repeat;border:0;text-decoration:none}
.ot-brand-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
html body.ot-route-closure .ot-unified-shell .ot-shell__nav{display:flex;flex-wrap:nowrap;align-items:stretch;gap:4px;min-width:0;overflow-x:auto;scrollbar-width:thin;flex:1;padding:3px}
.ot-unified-shell .ot-shell__nav a{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:9px 11px;border-radius:8px;color:#e8f3fb;background:transparent;border:1px solid transparent;font:700 12px/1.15 Inter,system-ui,sans-serif;letter-spacing:0;text-decoration:none;white-space:nowrap}
.ot-unified-shell .ot-shell__nav a:hover{background:rgba(255,255,255,.1)}
.ot-unified-shell .ot-shell__nav a[aria-current=page]{background:rgba(255,255,255,.13);border-color:rgba(0,168,203,.35);box-shadow:inset 0 -2px 0 var(--ot-cyan-500)}
.ot-unified-shell .ot-shell__utilities{display:flex;align-items:center;gap:9px;flex:0 0 auto;margin-left:auto}
.ot-unified-shell .ot-shell__modules-link{display:inline-flex;align-items:center;min-height:38px;padding:8px 11px;border:1px solid rgba(255,255,255,.24);border-radius:9px;background:rgba(255,255,255,.08);color:#fff;font-size:11px;font-weight:700;text-decoration:none;white-space:nowrap}
.ot-unified-shell .ot-shell__modules-link:hover{background:rgba(255,255,255,.16)}
.ot-unified-shell .ot-user-chip{display:grid;gap:1px;padding:7px 11px;border:1px solid rgba(255,255,255,.18);border-radius:12px;background:rgba(255,255,255,.08);color:#fff;font-size:11px;line-height:1.1}
.ot-unified-shell .ot-user-chip span{color:#fff}
.ot-unified-shell .ot-shell__signout{color:#fff;white-space:nowrap;font-size:12px;font-weight:700;text-decoration:none}
.ot-module-nav{position:sticky;top:76px;z-index:900;width:min(2200px,100%);margin:0 auto;padding:10px 20px;display:flex;gap:12px;overflow-x:auto;background:rgba(243,247,248,.97);border-bottom:1px solid var(--ot-line);box-shadow:0 6px 14px rgba(0,28,63,.04);backdrop-filter:blur(12px)}
.ot-module-nav__group{display:flex;align-items:center;gap:8px;flex:0 0 auto;padding:5px 7px 5px 10px;border:1px solid var(--ot-line);border-radius:12px;background:#fff}
.ot-module-nav__group>span{color:#24728a;font-size:9.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}
.ot-module-nav__group>div{display:flex;gap:3px}
.ot-module-nav a{display:inline-flex;align-items:center;min-height:32px;padding:6px 9px;border-radius:8px;color:var(--ot-navy-800);font-size:11px;font-weight:700;text-decoration:none;white-space:nowrap}
.ot-module-nav a:hover{background:var(--ot-cyan-050)}
.ot-module-nav a[aria-current=page]{background:var(--ot-navy-800);color:#fff}
.ot-module-nav+*{margin-top:16px}
html body.ot-route-closure.ot-assurance-native .mi-header h1{color:var(--ot-navy-900)}
html body.ot-route-closure.ot-assurance-native .mi-header__summary{color:var(--ot-muted)}
html body.ot-route-closure.ot-v3-format.ot-v3-workbench #diagnosticSensorSelect{height:42px;min-height:42px;padding:0 12px}
html body.ot-route-closure.ot-v3-format .ot-context-band h2{font-family:"Space Grotesk",Inter,system-ui,sans-serif;font-style:normal;letter-spacing:-.015em}
.ot-route-directory{width:min(1540px,calc(100% - 40px));margin:0 auto;padding:32px 0 48px}
.ot-directory-hero{display:flex;justify-content:space-between;gap:28px;align-items:end;margin-bottom:24px;padding:28px 30px;border:1px solid var(--ot-line);border-radius:16px;background:linear-gradient(120deg,#fff 0%,#f4fbfc 100%);box-shadow:0 14px 34px rgba(0,28,63,.07)}
.ot-directory-hero p{max-width:740px;margin:8px 0 0;color:var(--ot-muted)}
.ot-directory-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.ot-directory-group{padding:20px;border:1px solid var(--ot-line);border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(0,28,63,.055)}
.ot-directory-group h2{margin:0 0 5px;font-size:1.15rem}
.ot-directory-group>p{margin:0 0 15px;color:var(--ot-muted);font-size:13px}
.ot-directory-links{display:grid;gap:7px}
.ot-directory-links a{display:flex;justify-content:space-between;gap:12px;padding:10px 11px;border:1px solid var(--ot-line);border-radius:10px;text-decoration:none;font-size:13px;font-weight:700}
.ot-directory-links a::after{content:"Open";color:#24728a;font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.ot-directory-links a:hover{border-color:var(--ot-cyan-500);background:var(--ot-cyan-050)}
@media(max-width:1050px){.ot-unified-shell.ot-shell__topbar{flex-wrap:wrap;gap:7px;min-height:104px}.ot-unified-shell .ot-shell__nav{order:3;flex-basis:100%}.ot-module-nav{top:104px}.ot-directory-grid{grid-template-columns:repeat(2,minmax(0,1fr))}body.ot-route-closure :is(main,[role=main]):not(.ot-shared-page-layout__content){width:min(100% - 28px,1540px)}}
@media(max-width:680px){.ot-unified-shell.ot-shell__topbar{padding:6px 12px}.ot-unified-shell .ot-shell__brand-link,.ot-unified-shell .brand{flex-basis:94px;width:94px;height:32px}.ot-unified-shell .ot-user-chip{display:none}.ot-unified-shell .ot-shell__nav a{min-height:36px;padding:6px 9px}.ot-module-nav{padding:8px 12px}.ot-module-nav__group{display:block}.ot-module-nav__group>span{display:block;margin:0 0 4px 4px}.ot-directory-grid{grid-template-columns:1fr}.ot-directory-hero{display:block;padding:22px}.ot-route-directory{width:calc(100% - 24px);padding-top:20px}body.ot-route-closure :is(main,[role=main]):not(.ot-shared-page-layout__content){width:calc(100% - 20px);padding-top:14px}html body.ot-route-closure.ot-v3-format.ot-v3-workbench #diagnosticSensorSelect{flex:0 0 42px;width:100%;height:42px;min-height:42px}}
@media(max-width:680px){body.ot-route-closure.ot-assurance-native :is(main,[role=main]):not(.ot-shared-page-layout__content),body.ot-route-closure.ot-assurance-native .main-container{width:calc(100% - 20px)}body.ot-route-closure.ot-assurance-native .main-container>.content[role=main]{width:100%;padding-top:14px}}
@media print{.ot-unified-shell,.ot-module-nav{display:none}body.ot-route-closure :is(main,[role=main]):not(.ot-shared-page-layout__content){width:100%;max-width:none;padding:0}}

/* RC10 forensic responsive closure: keep route-specific content inside its
   owning surface while preserving horizontal access to dense evidence tables. */
body.ot-route-closure :where(.ot-benchmark,.ot-benchmark__content,.ot-benchmark__stack,.ot-benchmark__section,.ot-toolbar,.ot-card,.past,#history){min-width:0;max-width:100%}
body.ot-route-closure :where(#history,.ot-card__body){overflow-x:auto}
body.ot-route-closure .history{max-width:100%}

@media(max-width:900px){
  body.ot-route-closure .ot-benchmark__info-box--actions{align-items:stretch}
  body.ot-route-closure .ot-benchmark__info-box--actions .ot-btn{width:100%;max-width:100%;min-width:0;white-space:normal}
  body.ot-route-closure.ot-v3-audit .ot-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.ot-route-closure.ot-v3-audit .ot-toolbar>*{min-width:0;max-width:100%}
  body.ot-route-closure.ot-v3-audit .ot-toolbar .ot-btn{width:100%;min-width:0}
}

@media(max-width:680px){
  body.ot-route-closure .ot-notif-badge{right:0}
  body.ot-route-closure .history{min-width:640px}
  body.ot-route-closure .toolbar{align-items:stretch}
  body.ot-route-closure .toolbar>*{min-width:0;max-width:100%}
}

/* RC10F3 shell authority. Route-specific release sheets load in different
   orders, so the shared shell owns its dimensions through specificity. */
html body.ot-route-closure header.ot-unified-shell.ot-shell__topbar[role="banner"]{min-height:76px;padding:11px max(20px,calc((100vw - 2200px)/2));gap:20px}
html body.ot-route-closure header.ot-unified-shell[role="banner"] :is(.ot-shell__brand-link,.brand){display:block;flex:0 0 142px;width:142px;min-width:142px;max-width:142px;height:44px}
html body.ot-route-closure header.ot-unified-shell[role="banner"] :is(.ot-shell__brand-link,.brand)::before,html body.ot-route-closure header.ot-unified-shell[role="banner"] :is(.ot-shell__brand-link,.brand)::after{content:none;background:none}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav{justify-content:flex-start}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a{min-height:42px;padding:9px 11px;font-size:12px}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__modules-link{display:inline-flex;align-items:center;min-height:38px;padding:8px 11px;border:1px solid rgba(255,255,255,.24);border-radius:9px;background:rgba(255,255,255,.08);color:#fff;font-size:11px;font-weight:700;text-decoration:none;white-space:nowrap}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__signout{font-size:12px}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__signout::after{content:none}

@media(max-width:1600px) and (min-width:1051px){
  html body.ot-route-closure header.ot-unified-shell.ot-shell__topbar[role="banner"]{padding:10px 16px;gap:12px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] :is(.ot-shell__brand-link,.brand){flex-basis:120px;width:120px;min-width:120px;max-width:120px;height:40px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav{gap:2px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a{min-height:40px;padding:7px 6px;font-size:11px}
}

@media(max-width:1050px){
  html body.ot-route-closure header.ot-unified-shell.ot-shell__topbar[role="banner"]{min-height:104px;padding:8px 16px;flex-wrap:wrap;gap:7px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav{order:3;flex-basis:100%}
  html body.ot-route-closure .ot-module-nav{top:104px}
}

@media(max-width:680px){
  html body.ot-route-closure header.ot-unified-shell.ot-shell__topbar[role="banner"]{display:grid;grid-template-columns:94px minmax(0,1fr);grid-template-rows:34px 42px;align-items:center;column-gap:7px;row-gap:7px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] :is(.ot-shell__brand-link,.brand){display:block;grid-column:1;grid-row:1;flex:0 0 94px;width:94px;min-width:94px;max-width:94px;height:32px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__utilities{grid-column:2;grid-row:1;justify-self:end;margin-left:0}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav{grid-column:1/-1;grid-row:2;width:100%;min-width:0}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-user-chip{display:none}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a{min-height:36px;padding:6px 9px;font-size:11px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__modules-link{min-height:34px;padding:6px 8px;font-size:10px}
}

/* RC10F4 global responsive boundary. Every retained route owns the same
   centred 2200px canvas with 20px desktop/tablet and 10px mobile gutters.
   Hierarchy routes keep their rail inside that canvas instead of attaching it
   to the viewport edge. */
html body.ot-route-closure{--ot-page-max:2200px;--ot-page-gutter:20px}
html body.ot-route-closure > :is(main,[role="main"],.ot-route-directory),
html body.ot-route-closure > :is(.ot-shared-page-layout,.main-container,.ot-workbench-root){
  width:min(var(--ot-page-max),calc(100% - (2 * var(--ot-page-gutter))));
  max-width:var(--ot-page-max);
  min-width:0;
  margin-inline:auto;
}
html body.ot-route-closure.ot-route-closure :is(main,[role="main"]):not(.ot-shared-page-layout__content){
  width:min(var(--ot-page-max),calc(100% - (2 * var(--ot-page-gutter))));
  max-width:var(--ot-page-max);
  min-width:0;
  margin-inline:auto;
}
html body.ot-route-closure.ot-route-closure > :is(.main-container,.ot-workbench-root){
  width:min(var(--ot-page-max),calc(100% - (2 * var(--ot-page-gutter))));
  max-width:var(--ot-page-max);
  min-width:0;
  margin-inline:auto;
}
html body.ot-route-closure > .ot-shared-page-layout{
  grid-template-columns:minmax(240px,var(--ot-shared-hierarchy-width,300px)) minmax(0,1fr);
}
html body.ot-route-closure .ot-shared-page-layout__content{min-width:0;max-width:100%}
html body.ot-route-closure.ot-route-closure .ot-shared-page-layout__content > :is(main,[role="main"]){width:100%;max-width:none;margin-inline:0}
html body.ot-route-closure.ot-route-closure .ot-shared-page-layout__content > .main-container{width:100%;max-width:none;margin-inline:0}
html body.ot-route-closure.ot-route-closure > .main-container > [role="main"],
html body.ot-route-closure.ot-route-closure > .ot-workbench-root > main{width:100%;max-width:none;margin-inline:0}
html body.ot-route-closure :is(.ot-maint__stack,.ot-lubrication__stack){width:100%;max-width:100%;min-width:0}
html body.ot-route-closure :is(.ot-maint__stack,.ot-lubrication__stack) > *{width:100%;max-width:100%;min-width:0}

@media(max-width:900px){
  html body.ot-route-closure .ot-shared-page-layout__content{padding-inline:0}
  html body.ot-route-closure .ot-shared-page-layout__rail,
  html body.ot-route-closure .ot-shared-page-layout__rail.ot-shared-hierarchy{position:relative;top:auto;height:auto;min-height:0;max-height:260px;overflow-y:auto}
  html body.ot-route-closure .ot-shared-page-layout__rail > .ot-shared-hierarchy{height:auto;max-height:none}
  html body.ot-route-closure .ot-equipment-gallery > .ot-tree-panel{height:auto;min-height:0;max-height:260px;overflow-y:auto}
  html body.ot-route-closure .ot-hierarchy-layout{grid-template-columns:minmax(0,1fr)}
  html body.ot-route-closure .ot-hierarchy-layout > .ot-hierarchy-tree-column{position:relative;top:auto;height:auto;min-height:0;max-height:260px;overflow-y:auto}
  html body.ot-route-closure .ot-hierarchy-layout > .ot-hierarchy-tree-column .ot-shared-hierarchy{height:auto;min-height:0;max-height:none}
}

@media(max-width:680px){
  html body.ot-route-closure{--ot-page-gutter:10px}
  html body.ot-route-closure .ot-maint__import-actions{display:grid;grid-template-columns:minmax(0,1fr);align-items:stretch;min-width:0;max-width:100%}
  html body.ot-route-closure .ot-maint__import-actions > *{width:100%;max-width:100%;min-width:0}
  html body.ot-route-closure .ot-maint__import-actions input[type="file"]{width:100%;max-width:100%;min-width:0}
  html body.ot-route-closure .ot-lubrication__tab-nav{max-width:100%;min-width:0;overflow-x:auto;flex-wrap:nowrap}
  html body.ot-route-closure .ot-lubrication__table-wrapper{max-width:100%;min-width:0;overflow-x:auto}
  html body.ot-route-closure .ot-em-charts-container{grid-template-columns:minmax(0,1fr);width:100%;max-width:100%;min-width:0}
  html body.ot-route-closure .ot-em-charts-container > *{max-width:100%;min-width:0}
}

/* RC10F5 hierarchy restoration. The shared renderer is used by workbenches,
   Engineer Findings and System Configuration, so its structure must not rely
   on a route-scoped legacy sheet for indentation or disclosure affordances. */
html body.ot-route-closure .ot-shared-hierarchy{
  border:1px solid var(--ot-line);
  border-radius:14px;
  background:var(--ot-surface);
  box-shadow:0 8px 24px rgba(0,28,63,.055);
}
html body.ot-route-closure .ot-shared-hierarchy__header{padding:12px 12px 8px}
html body.ot-route-closure .ot-shared-hierarchy__status{padding-inline:12px}
html body.ot-route-closure .ot-shared-hierarchy__tree{
  display:block;
  padding:4px 8px 10px;
}
html body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__tree{
  display:grid;
  grid-auto-rows:minmax(32px,max-content);
  align-content:start;
}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node{
  display:grid;
  grid-template-columns:16px 16px minmax(0,1fr);
  align-items:center;
  gap:5px;
  width:100%;
  min-height:32px;
  margin:1px 0;
  padding-top:4px;
  padding-right:7px;
  padding-bottom:4px;
  border:0;
  border-left:3px solid transparent;
  border-radius:7px;
  background:transparent;
  color:var(--ot-text);
  font:500 12.5px/1.25 Inter,system-ui,sans-serif;
  text-align:left;
  cursor:pointer;
}
html body.ot-route-closure.ot-assurance-native .ot-shared-hierarchy__tree .ot-tree-node{
  align-self:start;
  height:auto;
  min-height:32px;
}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="0"],
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="1"]{padding-left:6px;font-weight:700}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="2"]{padding-left:20px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="3"]{padding-left:34px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="4"]{padding-left:48px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="5"]{padding-left:62px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="6"]{padding-left:76px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="7"]{padding-left:90px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[data-level="8"]{padding-left:104px}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node:hover{background:#f1f8fa}
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node:is(.is-selected,.is-active),
html body.ot-route-closure .ot-shared-hierarchy__tree .ot-tree-node[aria-selected="true"]{
  border-left-color:var(--ot-cyan-500);
  background:var(--ot-cyan-050);
  color:var(--ot-navy-800);
  font-weight:700;
}
html body.ot-route-closure .ot-tree-node__label{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
html body.ot-route-closure .ot-tree-node__expander,
html body.ot-route-closure .ot-tree-node__icon{
  position:relative;
  display:inline-grid;
  place-items:center;
  width:16px;
  height:16px;
}
html body.ot-route-closure .ot-tree-node__expander::before{
  content:"";
  width:0;
  height:0;
  border-top:4px solid transparent;
  border-bottom:4px solid transparent;
  border-left:6px solid #567086;
  transform-origin:45% 50%;
}
html body.ot-route-closure .ot-tree-node__expander--expanded::before{transform:rotate(90deg)}
html body.ot-route-closure .ot-tree-node__expander--leaf::before{
  width:4px;
  height:4px;
  border:0;
  border-radius:50%;
  background:#9db0bf;
}
html body.ot-route-closure .ot-tree-node__icon::before{
  content:"";
  width:9px;
  height:9px;
  border:1.5px solid #2d7086;
  border-radius:3px;
  background:#fff;
}
html body.ot-route-closure .ot-tree-node__icon--company::before{border-radius:50%;background:#dff5fa}
html body.ot-route-closure .ot-tree-node__icon--area::before{border-radius:2px;background:#edf7fa}
html body.ot-route-closure .ot-tree-node__icon--axis::before{width:7px;height:7px;border-radius:50%;background:var(--ot-cyan-500);border-color:var(--ot-cyan-500)}

/* Wide section menus always start at the shared page gutter. */
html body.ot-route-closure .ot-module-nav{
  justify-content:flex-start;
  scroll-padding-inline:20px;
}
html body.ot-route-closure .ot-module-nav > *{flex:0 0 auto}
html body.ot-route-closure .ot-module-nav::after,
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav::after{display:none;content:"";height:1px}
@media(max-width:1050px){
  html body.ot-route-closure .ot-module-nav::after{display:block;flex:0 0 48px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav::after{display:block;flex:0 0 44px}
}

/* Fit the complete retained section map at standard desktop widths. Narrower
   viewports remain horizontally scrollable and reveal their active group. */
@media(min-width:1051px) and (max-width:1600px){
  html body.ot-route-closure .ot-module-nav{gap:7px;padding-inline:14px}
  html body.ot-route-closure .ot-module-nav__group{gap:4px;padding:4px 5px 4px 7px}
  html body.ot-route-closure .ot-module-nav__group>span{font-size:8.75px;letter-spacing:.075em}
  html body.ot-route-closure .ot-module-nav a{min-height:30px;padding:5px 7px;font-size:10.25px}
}

/* Close route-level legacy typography leaks after all scoped sheets. */
html body.ot-route-closure.ot-v3-format :is(h1,h2,h3,h4,h5,h6),
html body.ot-route-closure.ot-v3-format :is(.ot-card__title,.ot-panel__title,.section-title,.metric-value,.ot-status-card__value){
  font-family:"Space Grotesk",Inter,Arial,sans-serif;
  font-style:normal;
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-kpi-card__value{
  font-family:"Space Grotesk",Inter,Arial,sans-serif;
  font-style:normal;
}
html body.ot-route-closure.ot-route-sensor-import .ot-status-card{
  display:flex;
  flex-direction:column;
  gap:7px;
}
html body.ot-route-closure.ot-route-sensor-import .ot-status-card__value{
  display:block;
  font-size:1.45rem;
  line-height:1;
}

/* RC10F5 Administration surface. These selectors deliberately sit in the
   final release layer so the retained admin workflows keep their behaviour
   while sharing one visual system. */
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit,.ot-admin-page,.ot-help-page){
  background:linear-gradient(180deg,#eaf5f8 0,var(--ot-bg) 330px);
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit,.ot-admin-page,.ot-help-page) :is(.ot-page,.wrap,.admin-shell,.ot-help-main){
  width:min(var(--ot-page-max),calc(100% - (2 * var(--ot-page-gutter))));
  max-width:var(--ot-page-max);
  min-width:0;
  margin-inline:auto;
  padding:24px 0 48px;
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-page__header,
html body.ot-route-closure.ot-v3-admin .intro,
html body.ot-route-closure.ot-admin-page .admin-hero,
html body.ot-route-closure.ot-help-page .ot-help-hero{
  position:relative;
  top:auto;
  margin:0 0 18px;
  padding:24px 26px;
  border:1px solid var(--ot-line);
  border-top:4px solid var(--ot-cyan-500);
  border-radius:16px;
  background:linear-gradient(120deg,#fff 0,#f4fbfc 100%);
  box-shadow:0 12px 30px rgba(0,28,63,.07);
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-page__header h1,
html body.ot-route-closure.ot-v3-admin .intro h1,
html body.ot-route-closure.ot-admin-page .admin-hero h1,
html body.ot-route-closure.ot-help-page .ot-help-hero h1{margin:0 0 8px;font-size:clamp(1.65rem,2.2vw,2.15rem)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-page__header p,
html body.ot-route-closure.ot-v3-admin .intro p{max-width:920px;margin:5px 0;color:var(--ot-muted)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-page__header__meta{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-tab-strip{
  position:relative;
  top:auto;
  z-index:1;
  display:flex;
  gap:5px;
  width:100%;
  max-width:100%;
  margin:0 0 16px;
  padding:7px;
  overflow-x:auto;
  border:1px solid var(--ot-line);
  border-radius:13px;
  background:#fff;
  box-shadow:0 8px 22px rgba(0,28,63,.05);
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-tab{
  flex:0 0 auto;
  min-height:36px;
  padding:8px 12px;
  border:1px solid transparent;
  border-radius:8px;
  background:transparent;
  color:var(--ot-navy-800);
  font-size:12px;
  font-weight:700;
  white-space:nowrap;
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-tab:hover{background:var(--ot-cyan-050)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-tab[aria-selected="true"]{
  border-color:var(--ot-navy-800);
  background:var(--ot-navy-800);
  color:#fff;
  box-shadow:inset 0 -3px 0 var(--ot-cyan-500);
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-tab-panel{min-width:0}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-card,
html body.ot-route-closure.ot-v3-admin :is(.card,.empty,.error),
html body.ot-route-closure.ot-admin-page :is(.admin-section,.admin-card,.admin-link-card),
html body.ot-route-closure.ot-help-page :is(.ot-help-section,.ot-help-nav,.ot-help-article,.ot-help-term,.ot-help-step){
  overflow:hidden;
  border:1px solid var(--ot-line);
  border-radius:14px;
  background:#fff;
  box-shadow:0 8px 24px rgba(0,28,63,.05);
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-card{margin:0 0 16px}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-card__header,
html body.ot-route-closure.ot-admin-page .admin-section__head{
  padding:16px 18px;
  border:0;
  border-top:3px solid var(--ot-cyan-500);
  border-bottom:1px solid var(--ot-line);
  background:#f8fbfc;
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-card,.ot-panel,.panel,.card) :is(.ot-card__title,.ot-panel__title,.panel-title,.section-title),
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-card__header,.ot-section__header) :is(h2,h3){
  margin:0;
  font-family:"Space Grotesk",Inter,Arial,sans-serif;
  font-size:1.05rem;
  font-style:normal;
  font-weight:650;
  line-height:1.25;
  letter-spacing:-.01em;
  text-transform:none;
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-card__note{margin:5px 0 0;color:var(--ot-muted);font-size:12px}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-card__body{padding:18px}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-btn,.btn),
html body.ot-route-closure.ot-admin-page .admin-action{
  min-height:38px;
  padding:8px 13px;
  border:1px solid var(--ot-navy-800);
  border-radius:9px;
  background:var(--ot-navy-800);
  color:#fff;
  font-weight:700;
  cursor:pointer;
}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-btn--ghost,.reject),
html body.ot-route-closure.ot-admin-page .admin-action--secondary{background:#fff;color:var(--ot-navy-800)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-btn,.btn):hover,
html body.ot-route-closure.ot-admin-page .admin-action:hover{border-color:var(--ot-cyan-500);box-shadow:0 4px 12px rgba(0,47,101,.12)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(input,select,textarea){min-height:40px;padding:8px 11px;border-color:#cbd9e1;background:#fff}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) textarea{min-height:84px}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-form-grid{gap:14px 18px}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-form-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-audit-table,.history){width:100%;border-collapse:separate;border-spacing:0}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-audit-table,.history) th{padding:11px 12px;border-bottom:1px solid var(--ot-line);background:#eef5f7;text-align:left}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-audit-table,.history) td{padding:11px 12px;border-bottom:1px solid #e9eff2}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) :is(.ot-audit-table,.history) tbody tr:hover{background:#f5fafb}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-kpi-card,
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-status-card{padding:16px;border:1px solid var(--ot-line);border-radius:12px;background:#fff;box-shadow:0 5px 15px rgba(0,28,63,.04)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-kpi-card__value{font:600 1.75rem/1 "Space Grotesk",Inter,sans-serif;color:var(--ot-navy-900)}
html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-toolbar{padding:14px;border:1px solid var(--ot-line);border-radius:12px;background:#fff}
html body.ot-route-closure.ot-v3-admin .toolbar{margin:18px 0 12px}
html body.ot-route-closure.ot-v3-admin .past{margin-top:22px}
html body.ot-route-closure.ot-v3-admin .past>h2{margin-bottom:10px}
html body.ot-route-closure.ot-help-page .ot-help-filters{border-radius:14px;box-shadow:0 8px 22px rgba(0,28,63,.06)}
html body.ot-route-closure.ot-help-page .ot-help-section{padding:20px}
html body.ot-route-closure.ot-help-page .ot-help-section h2{font-family:"Space Grotesk",Inter,sans-serif;font-size:1.35rem}
html body.ot-route-closure.ot-help-page :is(.ot-help-article,.ot-help-term,.ot-help-step){padding:15px;background:#f8fbfc;box-shadow:none}

@media(max-width:900px){
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  html body.ot-route-closure.ot-help-page .ot-help-layout{grid-template-columns:1fr}
  html body.ot-route-closure.ot-help-page .ot-help-nav{position:relative;top:auto;max-height:240px}
}
@media(max-width:680px){
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit,.ot-admin-page,.ot-help-page) :is(.ot-page,.wrap,.admin-shell,.ot-help-main){width:calc(100% - 20px);padding-top:14px}
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-page__header,
  html body.ot-route-closure.ot-v3-admin .intro,
  html body.ot-route-closure.ot-admin-page .admin-hero,
  html body.ot-route-closure.ot-help-page .ot-help-hero{padding:19px 18px;border-radius:13px}
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-kpi-grid{grid-template-columns:1fr}
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-form-grid{grid-template-columns:1fr}
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-form-row>*{grid-column:1}
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-form-actions{justify-content:stretch}
  html body.ot-route-closure:is(.ot-v3-admin,.ot-v3-audit) .ot-form-actions>*{flex:1 1 100%;width:100%}
  html body.ot-route-closure.ot-help-page .ot-help-card-grid{grid-template-columns:1fr}
}

/* ==========================================================================
   RC10F6 release design contract - 20260905RC10F6C1P2
   --------------------------------------------------------------------------
   route_closure.css is the last sheet on every retained route, so it owns the
   shared shell, the page canvas and interactive-control geometry. The legacy
   sheets (optimal-v3-format.css, optimal-density.css, optimal-dark-mode.css)
   previously carried a second implementation of the same shell whose
   `body.ot-v3-format .ot-shell__nav a` selectors out-specified the release
   shell; those selectors have been removed from those sheets so the rules
   below win by ownership rather than by `!important`.
   ========================================================================== */

/* --- 1. Utility cluster ---------------------------------------------------
   Routes that do not load optimal_release.css previously fell back to the
   40px optimal-design-system.css bell/sign-out, so the header utilities were
   two different sizes across the estate. Declared once here at a specificity
   that beats both base sheets. */
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-bell{
  position:relative;display:grid;place-items:center;
  width:34px;height:34px;min-height:34px;padding:0;
  border:1px solid rgba(255,255,255,.22);border-radius:9px;
  background:rgba(255,255,255,.07);color:#fff;cursor:pointer;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-bell:hover,
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-bell:focus-visible{
  background:rgba(255,255,255,.16);outline:0;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-bell__icon{
  position:relative;display:block;width:13px;height:14px;
  border:1.5px solid currentColor;border-bottom:0;border-radius:8px 8px 4px 4px;background:none;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-bell__icon::after{
  content:"";position:absolute;left:4px;right:4px;bottom:-4px;height:2px;border-radius:2px;background:currentColor;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-badge{
  position:absolute;right:-5px;top:-6px;display:grid;place-items:center;
  min-width:18px;height:18px;padding:0 4px;
  border:2px solid var(--ot-navy-900);border-radius:999px;
  background:var(--ot-cyan-500);color:var(--ot-navy-900);
  font:700 10px/1 Inter,system-ui,sans-serif;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-badge[hidden]{display:none}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-user-chip{
  display:grid;gap:1px;min-width:0;padding:7px 11px;
  border:1px solid rgba(255,255,255,.18);border-radius:12px;
  background:rgba(255,255,255,.08);color:#fff;
  font:700 11px/1.1 Inter,system-ui,sans-serif;letter-spacing:0;text-transform:none;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-user-chip span{color:#fff;font-size:11px}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-user-chip span:last-child{
  color:#73dcef;font-size:8px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__signout{
  display:inline-flex;align-items:center;min-height:38px;padding:8px 11px;
  border:1px solid rgba(255,255,255,.24);border-radius:9px;background:rgba(255,255,255,.08);
  color:#fff;font:700 12px/1.15 Inter,system-ui,sans-serif;text-decoration:none;white-space:nowrap;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__signout:hover{background:rgba(255,255,255,.16)}
/* The header light/dark switch is withdrawn from the product (auth-guard.js
   hides it on every page). Keep its geometry neutral so a stale route sheet
   cannot reserve space for a control that never paints. */
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-theme-toggle{
  width:0;min-width:0;height:0;min-height:0;padding:0;border:0;background:none;
}

/* --- 2. Nested page canvas -----------------------------------------------
   `.ot-workbench-root` / `.main-container` already receive the 2200px canvas
   and the release gutter. Their inner <main> re-applied the same inset, so
   Asset Diagnostics rendered 32px further in than every other route. The
   neutraliser is re-declared here with enough specificity to beat the generic
   `:is(main,[role=main])` canvas rule. */
html body.ot-route-closure.ot-route-closure > :is(.main-container,.ot-workbench-root,.ot-shared-page-layout) :is(main,[role="main"]):not(.ot-shared-page-layout__content){
  width:100%;max-width:none;margin-inline:0;
}
html body.ot-route-closure.ot-route-closure > :is(.ot-workbench-root,.main-container){padding-inline:0}

/* --- 3. Interactive control geometry -------------------------------------
   Release radius for text-entry controls. `body.ot-v3-format input:not(...)`
   in the legacy sheet resolves to `--ot-mars-radius` (3px); this rule carries
   the release shape at a higher specificity so no route reverts to a square
   field. Checkboxes, radios, ranges, colour and file pickers keep platform
   geometry. */
html body.ot-route-closure :is(input,select,textarea):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]){
  border-radius:9px;
}
/* Documented exception: the shared hierarchy search field is the inner
   surface of an already-rounded, bordered shell and stays chrome-less. */
html body.ot-route-closure .ot-shared-hierarchy__search :is(input):not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]){
  border-radius:0;
}

/* --- 4. Date-filter component --------------------------------------------
   One component for every date range on the estate. Condition Trend is the
   reference implementation; Executive Summary previously declared its own
   flex / 9px-label variant inside `.rptbar`, so the two surfaces did not match
   in structure, layout, sizing or breakpoints. */
html body.ot-route-closure .datectl{
  display:grid;
  grid-template-columns:repeat(2,minmax(190px,1fr));
  gap:20px;
  margin-top:13px;
  align-items:end;
  text-align:left;
  min-width:0;
  max-width:100%;
}
html body.ot-route-closure .datectl label{display:block;min-width:0;gap:0}
html body.ot-route-closure .datectl label span{
  display:block;margin:0 0 7px;
  color:var(--ot-navy-800);
  font:800 10px/1.2 Inter,system-ui,sans-serif;
  letter-spacing:.13em;text-transform:uppercase;
}
html body.ot-route-closure .datectl input[type="date"]{
  width:100%;min-height:40px;padding:8px 11px;
  border:1px solid var(--ot-line);border-radius:9px;
  background:#fff;color:var(--ot-text);
  font:400 13px/1.2 Inter,system-ui,sans-serif;
}
html body.ot-route-closure .datectl input[type="date"]:focus{
  outline:2px solid rgba(0,168,203,.25);border-color:var(--ot-cyan-500);
}
@media(max-width:560px){
  html body.ot-route-closure .datectl{grid-template-columns:1fr;gap:12px}
}

/* --- 5. Executive Summary report bar --------------------------------------
   The bar carrying the date filter and Export PDF was capped at 1080px while
   the document beneath it used the 2200px release canvas, so the two surfaces
   were visibly misaligned. Align the bar to the canvas and give Export PDF the
   release button geometry. Export PDF is retained. */
html body.ot-route-closure .rptbar{background:#fff;border-bottom:1px solid var(--ot-line);padding:14px 0}
html body.ot-route-closure .rptbar > .in{
  width:min(var(--ot-page-max),calc(100% - (2 * var(--ot-page-gutter))));
  max-width:var(--ot-page-max);
  margin-inline:auto;
  display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;
}
html body.ot-route-closure .rptbar > .in > .k{
  color:var(--ot-muted);font:800 10px/1.2 Inter,system-ui,sans-serif;
  letter-spacing:.13em;text-transform:uppercase;align-self:center;
}
html body.ot-route-closure .rptbar button.p{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:40px;padding:8px 16px;
  border:1px solid var(--ot-navy-800);border-radius:9px;
  background:var(--ot-navy-800);color:#fff;
  font:700 13px/1.2 Inter,system-ui,sans-serif;cursor:pointer;
}
html body.ot-route-closure .rptbar button.p:hover{background:var(--ot-navy-900);border-color:var(--ot-navy-900)}
@media(max-width:560px){
  html body.ot-route-closure .rptbar > .in{gap:12px}
  html body.ot-route-closure .rptbar > .in > .datectl{flex:1 1 100%}
  html body.ot-route-closure .rptbar button.p{width:100%}
}

/* --- 6. Primary navigation ink and rhythm ---------------------------------
   `optimal_release.css` carried a -0.005em nav tracking and the base design
   system coloured the active item pure white, so the seven routes that do not
   load the release sheet drew the primary nav with different tracking and a
   different active ink. Both are declared here so every retained route paints
   the same navigation. */
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a{
  color:#e8f3fb;letter-spacing:-.005em;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a:hover{
  background:rgba(255,255,255,.1);color:#fff;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a[aria-current="page"],
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a.is-active,
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__nav a.active{
  background:rgba(255,255,255,.13);
  border-color:rgba(0,168,203,.35);
  box-shadow:inset 0 -2px 0 var(--ot-cyan-500);
  color:#e8f3fb;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__modules-link{
  font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
}

/* --- 7. Utility cluster does not compress at mobile widths ----------------
   At 390px the utilities row shrank the notification control from 34px to
   ~23px, distorting the icon, and the amount of squeeze differed by route
   depending on which utility elements that route declares. */
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__utilities{
  flex-wrap:nowrap;min-width:0;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__utilities > *{
  flex:0 0 auto;
}
html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-notif-bell{
  flex:0 0 34px;
}

/* --- 8. Shared hierarchy search shell -------------------------------------
   The rounded, bordered search shell was scoped to `.ot-assurance-native`, so
   on Intelligence Console, Equipment gallery, Orbit plot and System
   configuration the rail search rendered as a bare square field. The shell is
   part of the shared hierarchy component, not of one route family. */
html body.ot-route-closure .ot-shared-hierarchy__search{
  display:block;padding:8px 10px;
  border:1px solid var(--ot-line);border-radius:9px;background:#fff;
}
html body.ot-route-closure .ot-shared-hierarchy__search input{
  width:100%;min-height:0;padding:0;border:0;outline:0;background:transparent;
  color:var(--ot-text);font:400 13px/1.3 Inter,system-ui,sans-serif;
}

/* --- 9. Heading typeface authority ----------------------------------------
   `optimal-v3-format.css` re-points headings to the Mars display face
   (YouSheBiaoTiHei). The release counter-rule covered `h1`-`h6` and
   `.ot-context-band h2`, but not `.ot-context-band h1`, so Trend Analysis
   still drew its page title in the legacy display face. */
html body.ot-route-closure :is(.ot-context-band,.ot-v3-page-header,.mi-header,.ot-card,.chart-card,.section-card,.ot-chart-panel) :is(h1,h2,h3,h4,h5,h6),
html body.ot-route-closure :is(.ot-shell-title,.ot-card__title,.chart-title,.config-card-title,.section-title,.page-title,.page-header-title,.header-title){
  font-family:"Space Grotesk",Inter,system-ui,sans-serif;
  font-style:normal;
  letter-spacing:-.015em;
}

/* --- 10. Table header ink -------------------------------------------------
   The release table header contract was declared through `:where()`, so every
   route sheet that coloured `th` won and the estate showed four different
   header inks. */
html body.ot-route-closure :is(table) :is(th){
  color:var(--ot-navy-800);
  font-family:Inter,system-ui,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}

/* --- 11. Card geometry ----------------------------------------------------
   The release card radius was declared through `:where()` and lost to
   `body.ot-v3-format .ot-card{border-radius:var(--ot-mars-radius)}` (3px) and
   to route sheets declaring 0-2px, so square panels returned on several
   routes. Radius and rule colour only - surface colour and elevation stay
   with the owning route sheet. */
html body.ot-route-closure :is(.card,.panel,.ot-card,.ot-panel,.ef-panel,.section-card,.chart-card,.ot-filter-card,.ot-chart-panel,.ot-card--form){
  border-radius:14px;
  border-color:var(--ot-line);
}

/* --- 12. Route card surfaces -------------------------------------------
   Three route sheets name their card surface with a route-specific class,
   so the release card rule in block 11 did not reach them and they still
   painted square panels: Trend Analysis at 0px, Operation statistics at
   2px and Orbit plot / Operation statistics at 3px. */
html body.ot-route-closure :is(.ot-diagnostic-graphs__card,.metric-card,.summary-card,.ot-conduit-card){
  border-radius:14px;
  border-color:var(--ot-line);
}

/* --- 13. Specificity closure for typography and tables -------------------
   Three legacy selectors carried one more class than the release rules above
   and still won:
     body.ot-v3-format.ot-v3-workbench .ot-context-band h1  (Mars display face)
     body.ot-hardware-admin .ot-audit-table th               (slate header ink)
     body.ot-v3-format .ot-ai-console .ot-ai-evidence-table th (cyan on #f6f8fa)
   The release declarations are repeated here with the doubled body class so
   the contract wins on specificity instead of on !important. */
html body.ot-route-closure.ot-route-closure :is(.ot-context-band,.ot-v3-page-header,.mi-header,.ot-card,.chart-card,.section-card,.ot-chart-panel,.ot-panel) :is(h1,h2,h3,h4,h5,h6){
  font-family:"Space Grotesk",Inter,system-ui,sans-serif;
  font-style:normal;
  letter-spacing:-.015em;
}
html body.ot-route-closure.ot-route-closure :is(table,.ot-data-table) :is(th){
  color:var(--ot-navy-800);
  font-family:Inter,system-ui,sans-serif;
  letter-spacing:.08em;
  text-transform:uppercase;
}
html body.ot-route-closure :is(.equipment-card){border-radius:14px;border-color:var(--ot-line)}

/* --- 14. Mobile utility cluster ------------------------------------------
   Block 1 re-declares .ot-user-chip at the same specificity as, but later
   than, the 680px rule that hides it, which put the chip back into the
   mobile header. The utilities row then measured 290px in a 257px grid
   column and, being justify-self:end, overflowed leftwards across the brand.
   Re-assert the mobile suppression after the contract. */
@media(max-width:680px){
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-user-chip{display:none}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__utilities{gap:6px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__signout{padding:6px 9px;min-height:34px;font-size:11px}
  html body.ot-route-closure header.ot-unified-shell[role="banner"] .ot-shell__modules-link{min-height:34px;padding:6px 8px;font-size:10px}
}

/* Production readability closure: Executive Summary and Condition Trend. */
html body.ot-route-closure > main#main-content.doc,
html body.ot-route-closure > main#main-content.wrap {
  width: min(1280px, calc(100% - (2 * var(--ot-page-gutter, 24px)))) !important;
  max-width: 1280px !important;
  margin-inline: auto !important;
}

html body.ot-route-closure .rptbar > .in {
  width: min(1280px, calc(100% - (2 * var(--ot-page-gutter, 24px)))) !important;
  max-width: 1280px !important;
  margin-inline: auto !important;
}

html body.ot-route-closure .rptbar { padding-block: 10px; }
html body.ot-route-closure .rptbar button.p { min-height: 36px; }
html body.ot-route-closure > main#main-content.doc { line-height: 1.35; }
html body.ot-route-closure > main#main-content.doc .mast { padding: 20px 26px 18px; gap: 18px; }
html body.ot-route-closure > main#main-content.doc .mast .sub { margin-top: 6px; line-height: 1.35; }
html body.ot-route-closure > main#main-content.doc .sec { padding: 18px 26px 5px; }
html body.ot-route-closure > main#main-content.doc .sec .lede { margin-bottom: 10px; line-height: 1.35; }
html body.ot-route-closure > main#main-content.doc .dsum { gap: 10px; margin-bottom: 4px; }
html body.ot-route-closure > main#main-content.doc .d { padding: 10px 12px; }
html body.ot-route-closure > main#main-content.doc .d .v { font-size: 28px; margin: 4px 0 2px; }
html body.ot-route-closure > main#main-content.doc .it { margin-bottom: 7px; }
html body.ot-route-closure > main#main-content.doc .it__main { padding: 10px 13px; }
html body.ot-route-closure > main#main-content.doc .gov { margin: 4px 26px 0; }
html body.ot-route-closure > main#main-content.doc .rprov { padding: 10px 26px 18px; }

html body.ot-route-closure > main#main-content.wrap { padding-block: 18px 28px; line-height: 1.35; }
html body.ot-route-closure > main#main-content.wrap .card { margin-top: 14px; }
html body.ot-route-closure > main#main-content.wrap .card__h { padding: 14px 20px 10px; gap: 14px; }
html body.ot-route-closure > main#main-content.wrap .card__h p { margin-top: 4px; line-height: 1.35; }
html body.ot-route-closure > main#main-content.wrap .card__b { padding: 16px 20px 19px; }
html body.ot-route-closure > main#main-content.wrap .note { margin-bottom: 12px; padding: 9px 12px; }
html body.ot-route-closure > main#main-content.wrap .kpis { gap: 10px; margin-bottom: 16px; }
html body.ot-route-closure > main#main-content.wrap .kpi { padding: 10px 12px; }
html body.ot-route-closure > main#main-content.wrap .kpi .k { margin-bottom: 4px; }
html body.ot-route-closure > main#main-content.wrap .kpi .s { margin-top: 4px; line-height: 1.3; }
html body.ot-route-closure > main#main-content.wrap .zboard { gap: 8px; }
html body.ot-route-closure > main#main-content.wrap .zcol { padding-bottom: 6px; }
html body.ot-route-closure > main#main-content.wrap .zhd { padding: 10px 12px 8px; }
html body.ot-route-closure > main#main-content.wrap .chip { padding: 7px 12px 6px; }
html body.ot-route-closure > main#main-content.wrap .hold-panel { margin-top: 10px; }
html body.ot-route-closure > main#main-content.wrap .hold-hd { padding: 10px 12px; }
html body.ot-route-closure > main#main-content.wrap .hchip { padding: 8px 12px; }

@media (max-width: 900px) {
  html body.ot-route-closure > main#main-content.doc .dsum,
  html body.ot-route-closure > main#main-content.wrap .kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}

@media (max-width: 760px) {
  html body.ot-route-closure > main#main-content.doc,
  html body.ot-route-closure > main#main-content.wrap,
  html body.ot-route-closure .rptbar > .in {
    width: calc(100% - 24px) !important;
  }
}

@media (max-width: 560px) {
  html body.ot-route-closure > main#main-content.doc .dsum,
  html body.ot-route-closure > main#main-content.wrap .kpis {
    grid-template-columns: 1fr !important;
  }
}

@media print {
  html body.ot-route-closure > main#main-content.doc,
  html body.ot-route-closure > main#main-content.wrap {
    width: 100% !important;
    max-width: none !important;
  }
}

/* RC10F6C1P2 production visual and data closure.
   This final layer owns computed contrast, heading typography and control
   geometry after every retained route stylesheet has loaded. */
html body.ot-route-closure.trend-oee-skin > main#main-content.doc .mast h1,
html body.ot-route-closure.trend-oee-skin > main#main-content.doc .mast h2,
html body.ot-route-closure.trend-oee-skin > main#main-content.doc .mast h3 {
  color: #fff !important;
}

html body.ot-route-closure :where(
  .ot-eyebrow,
  .eyebrow,
  .admin-eyebrow,
  .ot-reports__eyebrow,
  .ot-shared-hierarchy__eyebrow
) {
  color: #1d6f85 !important;
}

html body.ot-route-closure.trend-oee-skin > main#main-content.doc .mast :where(.eyebrow,.ot-eyebrow),
html body.ot-route-closure header.ot-unified-shell[role="banner"] :where(.eyebrow,.ot-eyebrow) {
  color: #68d5e9 !important;
}

html body.ot-route-closure.ef-findings-page :is(.ef-panel h2,.ef-panel h3,.ef-section-title h3) {
  font-family: "Space Grotesk",Inter,system-ui,sans-serif !important;
  font-style: normal;
  letter-spacing: -.015em;
}

html body.ot-route-closure.ot-alerts-modern .ot-alerts-page .ot-alerts-list .alert-actions .ot-btn,
html body.ot-route-closure.ot-asset-diagnostics #go-live,
html body.ot-route-closure.ot-asset-diagnostics #pause-feed-primary,
html body.ot-route-closure.ot-asset-diagnostics .ot-live-control button,
html body.ot-route-closure.ot-operation-stats .btn {
  border-radius: 9px !important;
}

html body.ot-route-closure.ot-route-operation-stats .summary-card-value {
  color: #002f65;
}
html body.ot-route-closure.ot-route-operation-stats .chart-container {
  min-width: 0;
  max-width: 100%;
  overflow: hidden;
}
html body.ot-route-closure.ot-route-operation-stats .chart-container canvas {
  display: block;
  width: 100% !important;
  max-width: 100% !important;
}
@media (max-width:640px) {
  html body.ot-route-closure.ot-route-operation-stats #uptime-analysis > div[style*="grid-template-columns"] {
    grid-template-columns: minmax(0,1fr) !important;
  }
  html body.ot-route-closure.ot-route-operation-stats #uptime-analysis .summary-card {
    min-width: 0;
  }
}
html body.ot-route-closure.ot-route-operation-stats :is(.status-badge.running,.rag-chip.green) {
  color: #246641;
}
html body.ot-route-closure.ot-route-operation-stats .rag-chip.amber {
  color: #79591a;
}
html body.ot-route-closure.ot-route-operation-stats :is(.status-badge.stopped,.rag-chip.red) {
  color: #9b2c25;
}

html body.ot-route-closure.ot-route-condition-trend :is(.p3,.pp--amber) {
  color: #001c3f;
}
html body.ot-route-closure.ot-route-condition-trend :is(.p1,.pp--green) {
  background: #117642;
  color: #fff;
}

html body.ot-route-closure.ot-route-asset-diagnostics .ot-context-metrics small {
  color: #536875 !important;
}
html body.ot-route-closure.ot-route-maintenance-history .ot-maint__import-status,
html body.ot-route-closure.ot-route-fault-cases .ot-fc-empty,
html body.ot-route-closure:is(.ot-route-spot-check,.ot-route-spot-violations) td,
html body.ot-route-closure.ot-route-online-systems :is(.empty,.footer-meta) {
  color: #617287 !important;
}
html body.ot-route-closure.ot-route-maintenance-history .ot-maint__import-status {
  color: #536875 !important;
}
html body.ot-route-closure.ot-route-orbit-plot .error-message {
  color: #8f241f;
}

html body.ot-route-closure.ot-route-benchmark-metrics :is(
  .ot-benchmark__zone-badge--a,
  .ot-benchmark__zone-badge--b,
  .ot-benchmark__zone-badge--c
) {
  color: #001c3f;
}
html body.ot-route-closure.ot-route-benchmark-metrics .ot-benchmark__status-badge--acceptable {
  color: #1d6f85;
}
html body.ot-route-closure.ot-route-benchmark-metrics .ot-benchmark__summary-count--zone-a {
  color: #0b704d;
}
html body.ot-route-closure.ot-route-benchmark-metrics .ot-benchmark__summary-count--zone-b {
  color: #1d6f85;
}
html body.ot-route-closure.ot-route-benchmark-metrics .ot-benchmark__summary-count--zone-c {
  color: #8a4a04;
}
html body.ot-route-closure.ot-route-ai-console dt {
  color: #1d6f85 !important;
}
html body.ot-route-closure.ot-route-model-improvement .mi-kicker,
html body.ot-route-closure.ot-route-model-improvement .mi-tabs button:not(.active) span {
  color: #1d6f85 !important;
}
html body.ot-route-closure.ot-route-help-knowledgebase .ot-help-nav__title {
  color: #1d6f85;
}
html body.ot-route-closure.trend-oee-skin > main#main-content.doc .mast p.eyebrow {
  color: #68d5e9 !important;
}
html body.ot-route-closure.ot-route-energy-monitoring .ot-em-summary-card-value.is-pending {
  color: #617287 !important;
}
html body.ot-route-closure footer :where(span,p) {
  color: #536875;
}
