:root {
  font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  color: #182126;
  background: #f4f7f8;
  --surface: #ffffff; --surface-2: #f7faf9; --border: #dce5e5; --text: #182126; --text-muted:#65747b;
  --accent:#166f62; --accent-soft:#e9f4f1; --accent-strong:#0f574d; --danger:#b44040; --warning:#b97816;
  --chart-grid:#e5ecee; --chart-fill:rgba(22,111,98,.10); --shadow:0 14px 38px rgba(24,33,38,.07);
}
* { box-sizing:border-box; }
body { margin:0; min-height:100vh; background:#f4f7f8; color:var(--text); }
a { color:inherit; }
.card { width:min(820px,calc(100% - 48px)); margin:7vh auto; background:var(--surface); border:1px solid var(--border); border-radius:20px; padding:36px; box-shadow:var(--shadow); }
.auth-card { width:min(520px,calc(100% - 32px)); }
.badge { display:inline-block; font-weight:750; font-size:.82rem; padding:7px 10px; border:1px solid var(--border); border-radius:999px; background:var(--surface-2); }
h1,h2,h3,p { margin-top:0; } p { color:var(--text-muted); }
.muted { font-size:.92rem; } .error { color:#a61b1b; font-weight:650; }
form { margin:0; } .auth-card form { display:grid; gap:10px; margin:20px 0; }
label { font-weight:650; }
input,select { width:100%; padding:11px 12px; border:1px solid #cbd7d8; border-radius:10px; font:inherit; background:#fff; color:var(--text); }
button,.button-link { border:0; border-radius:10px; padding:10px 15px; font:inherit; font-weight:700; cursor:pointer; background:var(--text); color:white; text-decoration:none; display:inline-block; }
code { font-family:ui-monospace,SFMono-Regular,Consolas,monospace; }
dl div { display:grid; grid-template-columns:150px 1fr; padding:12px 0; border-top:1px solid #edf0f2; } dt { font-weight:650; } dd { margin:0; }

.dashboard-body { overflow-x:hidden; }
.dashboard-shell { min-height:100vh; display:grid; grid-template-columns:252px minmax(0,1fr); }
.sidebar { position:sticky; top:0; height:100vh; padding:24px 18px; background:#102f2b; color:#eaf5f2; display:flex; flex-direction:column; }
.brand { display:flex; align-items:center; gap:12px; text-decoration:none; padding:4px 6px 22px; border-bottom:1px solid rgba(255,255,255,.10); }
.brand-mark { width:42px; height:42px; border-radius:12px; display:grid; place-items:center; background:#d8eee9; color:#103f37; font-weight:850; letter-spacing:-.04em; }
.brand strong,.user-chip strong { display:block; font-size:.92rem; } .brand small,.user-chip small { display:block; color:#a7c4bd; margin-top:2px; font-size:.75rem; }
.sidebar-nav { display:grid; gap:5px; padding:22px 0; }
.nav-item { display:flex; align-items:center; gap:11px; min-height:42px; padding:0 12px; border-radius:10px; text-decoration:none; color:#c9ddd8; font-size:.92rem; }
.nav-item span { width:20px; text-align:center; font-weight:800; }.nav-item small { margin-left:auto; color:#789d94; font-size:.68rem; }
.nav-item.active { background:#1b5148; color:#fff; font-weight:700; }.nav-item.disabled { opacity:.74; cursor:default; }
.sidebar-foot { margin-top:auto; padding-top:18px; border-top:1px solid rgba(255,255,255,.10); display:grid; gap:10px; font-size:.82rem; }
.user-chip { display:grid; grid-template-columns:36px minmax(0,1fr); gap:9px; align-items:center; min-width:0; }.user-chip strong { white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.avatar { width:36px; height:36px; border-radius:50%; display:grid; place-items:center; background:#285d54; font-weight:800; }
.sidebar-foot a,.text-button { color:#b9d3cd; background:none; padding:2px 0; text-decoration:none; font-weight:600; font-size:.82rem; }

.dashboard-main { padding:30px 34px 48px; min-width:0; }
.topbar { display:flex; justify-content:space-between; align-items:flex-start; gap:24px; margin-bottom:22px; }
.eyebrow,.section-kicker { margin:0 0 6px; color:var(--accent); font-size:.69rem; font-weight:850; letter-spacing:.14em; }
.topbar h1 { font-size:clamp(1.7rem,3vw,2.35rem); margin-bottom:6px; letter-spacing:-.035em; }.subtitle { margin:0; }
.live-pill { display:flex; align-items:center; gap:8px; white-space:nowrap; border:1px solid #b9d8d1; background:#edf7f4; color:#176557; padding:8px 11px; border-radius:999px; font-size:.78rem; font-weight:750; }
.live-pill.offline { background:#f8eeee; color:#994848; border-color:#e6c6c6; }.pulse { width:8px; height:8px; border-radius:50%; background:currentColor; box-shadow:0 0 0 4px rgba(22,111,98,.12); }
.scope-bar { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; background:var(--surface); border:1px solid var(--border); padding:14px; border-radius:16px; box-shadow:0 6px 22px rgba(24,33,38,.035); }
.scope-bar label { color:var(--text-muted); font-size:.76rem; letter-spacing:.02em; }.scope-bar select { margin-top:6px; padding:9px 10px; font-size:.9rem; }
.meter-head { display:flex; justify-content:space-between; align-items:end; gap:20px; padding:24px 2px 16px; }.meter-head h2 { margin:0 0 4px; font-size:1.25rem; }.meter-head p { margin:0; font-size:.88rem; }.data-age { color:var(--text-muted); font-size:.78rem; white-space:nowrap; }
.kpi-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
.kpi-card { min-width:0; background:var(--surface); border:1px solid var(--border); border-radius:15px; padding:17px 16px 14px; box-shadow:0 7px 24px rgba(24,33,38,.035); }.kpi-card.primary { border-color:#b8d8d1; background:linear-gradient(145deg,#f3faf8,#fff); }
.kpi-label { display:block; color:var(--text-muted); font-size:.74rem; font-weight:700; margin-bottom:8px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }.kpi-card strong { font-size:clamp(1.35rem,2vw,1.9rem); letter-spacing:-.04em; }.kpi-card small { color:var(--text-muted); margin-left:4px; }.kpi-meta { margin-top:8px; padding-top:8px; border-top:1px solid #edf1f2; color:#7a888e; font-size:.68rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dashboard-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(260px,1fr); gap:14px; }.panel { min-width:0; background:var(--surface); border:1px solid var(--border); border-radius:16px; padding:18px; box-shadow:0 7px 24px rgba(24,33,38,.035); }.span-2 { grid-column:1; }
.panel-head { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:8px; }.panel-head h3 { margin:0; font-size:1rem; }.panel-unit { font-size:.72rem; color:var(--text-muted); border:1px solid var(--border); border-radius:7px; padding:4px 7px; }
.chart-panel canvas { width:100%; display:block; }.chart-empty { display:none; height:210px; place-items:center; color:var(--text-muted); font-size:.85rem; }
.status-dot { width:11px; height:11px; border-radius:50%; background:#ba4e4e; box-shadow:0 0 0 4px rgba(186,78,78,.1); margin:5px; }.status-dot.online { background:#248c6f; box-shadow:0 0 0 4px rgba(36,140,111,.12); }
.device-list { margin:10px 0 0; }.device-list div { grid-template-columns:88px 1fr; padding:10px 0; font-size:.81rem; }.device-list dd { text-align:right; overflow:hidden; text-overflow:ellipsis; }.device-list dt { color:var(--text-muted); font-weight:600; }
.phase-table { margin-top:14px; }.phase-row { display:grid; grid-template-columns:60px 1fr 1fr; gap:10px; padding:12px 4px; border-top:1px solid #edf1f2; font-size:.82rem; }.phase-row.header { color:var(--text-muted); font-size:.7rem; font-weight:750; border-top:0; }.phase-row span:not(:first-child) { text-align:right; }
.empty-state { background:var(--surface); border:1px solid var(--border); border-radius:18px; padding:42px; margin-top:22px; text-align:center; }.empty-state p { max-width:520px; margin:0 auto 20px; }
@media (max-width:1280px) { .kpi-grid { grid-template-columns:repeat(3,1fr); } }
@media (max-width:900px) { .dashboard-shell { grid-template-columns:1fr; }.sidebar { position:relative; height:auto; padding:14px 16px; }.sidebar-nav { grid-template-columns:repeat(3,1fr); padding:14px 0; }.nav-item.disabled { display:none; }.sidebar-foot { display:none; }.dashboard-main { padding:22px 18px 40px; }.scope-bar { grid-template-columns:1fr; }.dashboard-grid { grid-template-columns:1fr; }.span-2 { grid-column:auto; } }
@media (max-width:620px) { .topbar { display:block; }.live-pill { width:max-content; margin-top:14px; }.kpi-grid { grid-template-columns:repeat(2,1fr); }.meter-head { display:block; }.data-age { margin-top:10px; }.sidebar-nav { grid-template-columns:1fr; }.nav-item:not(.active) { display:none; } }

/* Phase06 — Energy analytics */
.secondary-button { background:#fff; color:var(--accent-strong); border:1px solid #b9d8d1; white-space:nowrap; }
.analytics-scope { grid-template-columns:repeat(4,minmax(0,1fr)); }
.analysis-warning { margin-top:14px; padding:12px 14px; border:1px solid #e8c987; background:#fff8e8; color:#745314; border-radius:12px; font-size:.88rem; font-weight:650; }
.analysis-kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
.analytics-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(320px,.85fr); gap:14px; }
.analytics-wide { grid-column:1 / -1; }
.balance-total { display:grid; grid-template-columns:1fr auto auto; gap:8px; align-items:baseline; padding:12px 0; border-bottom:1px solid #edf1f2; }
.balance-total span { color:var(--text-muted); font-size:.8rem; }.balance-total strong { font-size:1.25rem; }.balance-total small { color:var(--text-muted); }
.balance-total.emphasis { border-top:1px solid #dce8e5; border-bottom:0; margin-top:8px; }
.balance-children { max-height:235px; overflow:auto; }.balance-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; padding:10px 0; border-bottom:1px solid #f0f3f3; font-size:.79rem; }.balance-row span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--text-muted); }
.method-note { margin:12px 0 0; font-size:.72rem; line-height:1.5; }.methodology-panel { margin-top:14px; }.method-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }.method-grid strong { font-size:.82rem; }.method-grid p { margin:5px 0 0; font-size:.76rem; line-height:1.55; }
@media (max-width:1100px) { .analysis-kpi-grid { grid-template-columns:repeat(2,1fr); }.analytics-grid { grid-template-columns:1fr; }.analytics-wide { grid-column:auto; }.method-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:900px) { .analytics-scope { grid-template-columns:1fr; } }
@media (max-width:620px) { .analysis-kpi-grid { grid-template-columns:1fr 1fr; }.method-grid { grid-template-columns:1fr; }.secondary-button { margin-top:14px; } }

/* Phase07 — ISO 50001 / EnMS records */
.iso-scope { grid-template-columns:repeat(3,minmax(0,1fr)); }
.iso-standard-chip { border:1px solid #bed8d2; background:#eff8f5; color:#1b695a; padding:7px 10px; border-radius:999px; font-size:.72rem; font-weight:750; white-space:nowrap; }
.iso-kpi-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-bottom:14px; }
.iso-disclaimer { margin-bottom:14px; padding:11px 14px; border:1px solid #d8dfdf; background:#f7f9f9; border-radius:12px; color:#617076; font-size:.76rem; line-height:1.45; }
.iso-grid { display:grid; grid-template-columns:minmax(0,1.55fr) minmax(310px,.85fr); gap:14px; }
.iso-wide { grid-column:1 / -1; }
.iso-table-wrap { overflow:auto; }
.iso-table { width:100%; border-collapse:collapse; font-size:.78rem; }
.iso-table th { text-align:left; color:var(--text-muted); font-size:.68rem; letter-spacing:.03em; padding:9px 8px; border-bottom:1px solid #dfe7e6; white-space:nowrap; }
.iso-table td { padding:11px 8px; border-bottom:1px solid #edf1f1; vertical-align:top; white-space:nowrap; }
.iso-table td:nth-child(2) { white-space:normal; min-width:180px; }
.iso-table small { display:block; color:var(--text-muted); margin-top:3px; font-size:.68rem; }
.good-text { color:#21745f; font-weight:750; }.bad-text { color:#a04444; font-weight:750; }
.status-mini { display:inline-grid; width:18px; height:18px; place-items:center; border-radius:50%; font-size:.7rem; font-weight:900; }.status-mini.good { background:#e6f5ef; color:#20725c; }.status-mini.bad { background:#f8e8e8; color:#a04444; }
.readiness-list { display:grid; gap:8px; }.readiness-row { display:grid; grid-template-columns:25px 1fr; gap:9px; align-items:center; padding:7px 0; border-bottom:1px solid #f0f3f3; font-size:.79rem; }.check-dot { width:23px; height:23px; border-radius:50%; display:grid; place-items:center; background:#eef1f1; color:#849095; font-weight:900; }.check-dot.done { background:#e2f3ed; color:#20725c; }
.record-list { display:grid; }.record-row { display:flex; justify-content:space-between; gap:14px; align-items:center; padding:11px 0; border-bottom:1px solid #eef2f2; font-size:.79rem; }.record-row strong,.record-row small { display:block; }.record-row small { color:var(--text-muted); margin-top:4px; }.record-number { font-weight:800; white-space:nowrap; }.status-label { font-size:.69rem; border-radius:999px; padding:5px 8px; background:#eef1f1; color:#617076; white-space:nowrap; }.status-label.good { background:#e2f3ed; color:#20725c; }
.iso-detail-list { margin:0; }.iso-detail-list div { display:grid; grid-template-columns:minmax(150px,.9fr) 1.1fr; gap:12px; padding:10px 0; border-bottom:1px solid #edf1f1; font-size:.78rem; }.iso-detail-list dt { color:var(--text-muted); font-weight:650; }.iso-detail-list dd { margin:0; text-align:right; }
.review-card strong { font-size:.84rem; }.review-card p { margin:10px 0; line-height:1.55; font-size:.8rem; }.review-card small,.muted-copy { color:var(--text-muted); font-size:.74rem; line-height:1.5; }.empty-cell { text-align:center; color:var(--text-muted); padding:24px !important; }
@media (max-width:1100px) { .iso-kpi-grid { grid-template-columns:repeat(2,1fr); }.iso-grid { grid-template-columns:1fr; }.iso-wide { grid-column:auto; } }
@media (max-width:900px) { .iso-scope { grid-template-columns:1fr; } }
@media (max-width:620px) { .iso-kpi-grid { grid-template-columns:1fr 1fr; }.iso-standard-chip { display:inline-block; margin-top:10px; }.iso-detail-list div { grid-template-columns:1fr; }.iso-detail-list dd { text-align:left; } }

/* Phase08 compensation */
.stage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(125px,1fr));gap:10px}
.stage-card{border:1px solid var(--line,#dce3ea);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px;background:var(--card,#fff)}
.stage-card strong{font-size:1rem}.stage-card span{font-size:1.05rem;font-weight:700}.stage-card small{opacity:.72}.stage-card em{font-style:normal;font-size:.72rem;font-weight:700;letter-spacing:.04em;margin-top:5px}
.stage-card.stage-on{box-shadow:inset 0 0 0 2px rgba(40,160,90,.22)}.stage-card.stage-fault{box-shadow:inset 0 0 0 2px rgba(210,60,60,.35)}
.comp-flow{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;padding:16px 4px}.comp-flow span{border:1px solid var(--line,#dce3ea);border-radius:12px;padding:12px 16px;text-align:center;min-width:150px}.comp-flow i{font-style:normal;font-size:1.3rem;opacity:.5}
@media(max-width:700px){.comp-flow i{transform:rotate(90deg)}.comp-flow{flex-direction:column}}

/* Phase09 alarms */
.alarm-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:14px;margin:18px 0}.alarm-critical-card{border-color:#d86d6d}.alarm-panel{margin-top:16px}.alarm-table-wrap{overflow:auto}.alarm-table{width:100%;border-collapse:collapse;min-width:980px}.alarm-table th,.alarm-table td{padding:12px 10px;border-bottom:1px solid var(--line,#e5e7eb);text-align:left;vertical-align:top;font-size:13px}.alarm-table th{font-size:11px;letter-spacing:.08em;text-transform:uppercase;opacity:.72}.alarm-table td strong{display:block;margin-bottom:4px}.alarm-table td small{display:block;max-width:520px;opacity:.72;line-height:1.4}.alarm-status,.alarm-severity{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:700;white-space:nowrap}.alarm-status-open{background:#fff3cd;color:#7a5800}.alarm-status-acknowledged{background:#dbeafe;color:#174b8a}.alarm-status-resolved{background:#e5e7eb;color:#4b5563}.alarm-severity-info{background:#e0f2fe;color:#075985}.alarm-severity-warning{background:#ffedd5;color:#9a3412}.alarm-severity-critical{background:#fee2e2;color:#991b1b}.alarm-row-resolved{opacity:.68}.alarm-ack-btn{border:0;border-radius:8px;padding:7px 11px;cursor:pointer;background:#16213e;color:#fff;font-weight:700}.alarm-info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:16px}.empty-state.compact{padding:16px;margin:0}@media(max-width:1100px){.alarm-kpi-grid{grid-template-columns:repeat(2,minmax(150px,1fr))}.alarm-info-grid{grid-template-columns:1fr}}@media(max-width:640px){.alarm-kpi-grid{grid-template-columns:1fr}}


/* Phase10 reports */
.report-builder{display:grid;gap:16px}.report-config-panel{margin-top:0}.report-scope-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.report-scope-grid label{font-size:.76rem;color:var(--text-muted)}.report-scope-grid select{margin-top:6px}.report-section-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:10px}.report-check{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--border);border-radius:12px;padding:13px;background:#fff;cursor:pointer}.report-check input{width:auto;margin:3px 0 0}.report-check strong,.report-check small{display:block}.report-check strong{font-size:.82rem;color:var(--text)}.report-check small{font-size:.7rem;line-height:1.42;color:var(--text-muted);margin-top:4px}.report-export-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.report-export-card{display:flex;align-items:center;gap:16px;padding:20px;text-align:left;background:#fff;color:var(--text);border:1px solid var(--border);box-shadow:0 7px 24px rgba(24,33,38,.035)}.report-export-card:hover{border-color:#9fc7be}.report-export-card strong,.report-export-card small{display:block}.report-export-card strong{font-size:1rem}.report-export-card small{font-size:.75rem;color:var(--text-muted);margin-top:4px;font-weight:500}.report-icon{display:grid;place-items:center;width:58px;height:48px;border-radius:10px;font-size:.68rem;font-weight:900;letter-spacing:.03em}.report-export-card.pdf .report-icon{background:#fbeaea;color:#a43d3d}.report-export-card.xlsx .report-icon{background:#e7f4ec;color:#25734e}.report-info-panel{margin-top:16px}@media(max-width:1200px){.report-section-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:900px){.report-scope-grid,.report-section-grid,.report-export-grid{grid-template-columns:1fr}}

/* Phase11 language switch */
.language-switch{display:flex;gap:6px;align-items:center;margin:8px 0 10px}.language-switch button{min-width:42px;padding:7px 10px;border-radius:9px;border:1px solid rgba(120,140,160,.35);background:transparent;color:inherit;font-weight:700;cursor:pointer}.language-switch button.active{background:rgba(44,138,121,.18);border-color:rgba(44,138,121,.65)}.auth-language{display:flex;justify-content:flex-end;margin-bottom:10px}.auth-language .language-switch{margin:0}.language-note{font-size:.84rem;opacity:.72}

/* Phase12 — license / package / entitlements */
.license-scope{grid-template-columns:minmax(260px,520px)}.license-plan-pill{border:1px solid #b9d8d1;background:#edf7f4;color:#176557;padding:9px 12px;border-radius:999px;font-size:.78rem;font-weight:800;white-space:nowrap}.license-head{margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:24px}.license-head h2{margin:0}.license-head h2 small{font-size:.72rem;color:var(--text-muted);font-weight:650}.license-meta{display:flex;gap:24px;margin:0}.license-meta div{display:block;border:0;padding:0}.license-meta dt{font-size:.68rem;color:var(--text-muted)}.license-meta dd{font-size:.82rem;font-weight:750;margin-top:4px}.license-note{margin:14px 0;padding:11px 14px;border:1px solid #c7dce7;background:#f0f8fb;border-radius:12px;color:#43626e;font-size:.76rem;line-height:1.45}.license-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}.license-feature-list,.license-limit-list{display:grid}.license-feature-row,.license-limit-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:11px 0;border-bottom:1px solid #edf1f1}.license-feature-row strong,.license-feature-row small,.license-limit-row strong,.license-limit-row small{display:block}.license-feature-row strong,.license-limit-row strong{font-size:.8rem}.license-feature-row small,.license-limit-row small{font-size:.66rem;color:var(--text-muted);margin-top:3px}.license-state{padding:5px 8px;border-radius:999px;font-size:.66rem;font-weight:850}.license-state.on{background:#e3f4ed;color:#1c765d}.license-state.off{background:#f0f1f2;color:#707b80}.license-limit-number{text-align:right}.license-limit-row.at{background:#fffaf0}.license-limit-row.over{background:#fff1f1}.license-limit-row.over .license-limit-number strong{color:#aa3f3f}.license-info{margin-top:14px}.license-info p{font-size:.8rem;line-height:1.55}.locked-actions{display:flex;gap:10px;flex-wrap:wrap}.locked-actions .secondary-button{color:var(--accent-strong);background:#fff}@media(max-width:900px){.license-grid{grid-template-columns:1fr}.license-head{align-items:flex-start;flex-direction:column}.license-meta{width:100%;justify-content:space-between}}

/* Phase15 — ERA corporate branding */
.brand-era { display:block; padding:0 0 18px; border-bottom:1px solid rgba(255,255,255,.10); }
.brand-logo-panel { display:block; width:100%; padding:7px 8px 5px; background:rgba(255,255,255,.98); border:1px solid rgba(255,255,255,.55); border-radius:14px; box-shadow:0 8px 22px rgba(0,0,0,.12); }
.brand-logo { display:block; width:100%; height:auto; aspect-ratio:900/444; object-fit:contain; }
.brand-product { display:flex; justify-content:space-between; align-items:baseline; gap:8px; padding:8px 6px 0; }
.brand-product strong { color:#f4fbff; font-size:.78rem; letter-spacing:.01em; }
.brand-product small { color:#9fc7d9; margin:0; font-size:.66rem; white-space:nowrap; }
.auth-brand { display:grid; gap:8px; margin:0 0 22px; text-align:center; }
.auth-brand-logo { display:block; width:min(360px,92%); height:auto; margin:0 auto; }
.auth-brand-product { display:flex; justify-content:center; align-items:baseline; gap:8px; color:#28424a; }
.auth-brand-product strong { font-size:.88rem; }
.auth-brand-product small { color:var(--text-muted); font-size:.72rem; }
.admin-era-logo { height:46px; width:auto; display:block; }
@media (max-width:900px) {
  .brand-era { width:min(250px,100%); border-bottom:0; padding-bottom:2px; }
  .brand-logo-panel { padding:4px 6px; }
  .brand-product { padding-top:5px; }
}

/* Phase16 — Customer Branding / White Label */
.co-brand-preview{display:flex;align-items:center;justify-content:center;gap:12px;min-width:0}.co-brand-preview>img{display:block;max-width:100%;height:auto;object-fit:contain}.co-brand-preview>i{display:block;width:1px;align-self:stretch;min-height:34px;background:rgba(70,100,120,.22);flex:0 0 1px}.sidebar-co-brand{display:flex;width:100%;aspect-ratio:auto;min-height:82px}.sidebar-co-brand .brand-logo{width:auto;max-width:48%;max-height:72px;aspect-ratio:auto;object-fit:contain}.sidebar-co-brand .customer-brand-logo{max-width:48%}.auth-co-brand{min-height:110px}.auth-co-brand .auth-brand-logo{width:auto;max-width:46%;max-height:145px;object-fit:contain;margin:0}.auth-customer-logo{max-width:46%!important}.page-brand-badge{display:flex;align-items:center;gap:10px;margin-left:auto;padding:8px 10px;border:1px solid var(--border);background:#fff;border-radius:12px;max-width:320px}.page-brand-badge img{display:block;max-width:190px;max-height:58px;width:auto;height:auto;object-fit:contain}.page-brand-badge span{font-size:.72rem;color:var(--text-muted);font-weight:700;max-width:110px;overflow:hidden;text-overflow:ellipsis}.brand-message{margin:12px 0;padding:10px 14px;border:1px solid #b9d8d1;background:#edf7f4;color:#176557;border-radius:10px;font-size:.8rem;font-weight:700}.brand-customer-selector{grid-template-columns:minmax(260px,520px)}.brand-license-strip{display:flex;gap:12px;flex-wrap:wrap;margin:14px 0}.brand-license-strip>div{display:flex;align-items:center;gap:10px;padding:9px 12px;background:#fff;border:1px solid var(--border);border-radius:12px}.brand-license-strip strong{font-size:.74rem}.branding-form{padding:18px}.branding-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(340px,.95fr);gap:22px}.branding-fields{display:grid;gap:14px}.branding-fields label{display:grid;gap:6px;font-size:.78rem;font-weight:700;color:var(--text)}.branding-fields label small{font-size:.69rem;font-weight:500;color:var(--text-muted);line-height:1.45}.branding-fields input[type="text"],.branding-fields textarea,.branding-fields select,.branding-fields input[type="file"]{width:100%}.branding-fields input[type="file"]{padding:10px;background:#f8fafb;border:1px dashed var(--border);border-radius:10px}.branding-fields .brand-check{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:8px}.branding-fields .brand-check input{width:auto}.branding-preview-column{display:grid;align-content:start;gap:12px}.branding-preview-column h3{margin:0}.brand-preview-card{display:grid;gap:10px;padding:16px;border:1px solid var(--border);border-radius:14px;background:linear-gradient(180deg,#fff,#f8fbfc)}.brand-preview-card>span{font-size:.66rem;letter-spacing:.12em;font-weight:900;color:var(--text-muted)}.brand-preview-card .co-brand-preview{min-height:120px;background:#fff;border:1px solid #edf1f3;border-radius:12px;padding:12px}.brand-preview-card .co-brand-preview img{max-width:44%;max-height:105px}.brand-preview-card strong{font-size:.76rem;color:var(--text-muted)}.brand-preview-card.compact{grid-template-columns:90px 1fr;align-items:center}.brand-icon-preview{display:block;width:64px;height:64px;object-fit:contain;border-radius:10px;border:1px solid var(--border);background:#fff}.brand-placeholder{display:grid;place-items:center;min-width:150px;min-height:78px;border:1px dashed #bcc9cf;border-radius:10px;color:#8a989e;font-size:.72rem}.brand-rule-box{padding:14px;border-radius:12px;background:#f2f8fa;border:1px solid #d6e5e9}.brand-rule-box strong{font-size:.78rem}.brand-rule-box p{margin:6px 0 0;font-size:.72rem;line-height:1.5;color:var(--text-muted)}.error{color:#a13d3d!important}.app-loading-overlay[hidden]{display:none}.app-loading-overlay{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;background:rgba(9,25,38,.72);backdrop-filter:blur(4px)}.loading-brand-card{width:min(520px,90vw);padding:24px;border-radius:18px;background:#fff;box-shadow:0 24px 80px rgba(0,0,0,.28);text-align:center}.loading-logos{min-height:110px}.loading-logos img{max-width:44%;max-height:95px}.loading-spinner{width:34px;height:34px;margin:14px auto 8px;border-radius:50%;border:3px solid #d7e3e7;border-top-color:#168cbe;animation:ems-spin .8s linear infinite}.loading-brand-card small{color:var(--text-muted)}@keyframes ems-spin{to{transform:rotate(360deg)}}
@media(max-width:1000px){.branding-grid{grid-template-columns:1fr}.page-brand-badge span{display:none}.page-brand-badge{max-width:220px}.page-brand-badge img{max-width:185px}}
@media(max-width:700px){.sidebar-co-brand{min-height:62px}.sidebar-co-brand .brand-logo{max-height:54px}.auth-co-brand{min-height:90px;gap:8px}.auth-co-brand .auth-brand-logo{max-width:48%;max-height:100px}.page-brand-badge{display:none}.brand-preview-card .co-brand-preview img{max-width:48%;max-height:85px}}
.brand-login-url{display:grid;grid-template-columns:auto minmax(220px,1fr);gap:6px 12px;align-items:center;margin:14px 0;padding:12px 14px;border:1px solid #c9dce4;background:#f5fafc;border-radius:12px}.brand-login-url strong{font-size:.76rem}.brand-login-url code{font-size:.75rem;overflow:auto}.brand-login-url small{grid-column:1/-1;color:var(--text-muted);font-size:.7rem;line-height:1.45}


/* Phase16 Hotfix01 — stable brand geometry / no logo stretching */
.auth-brand{width:100%;max-width:100%;overflow:hidden}
.auth-co-brand{width:100%;max-width:440px;min-height:0;margin:0 auto 4px;padding:4px 0;overflow:hidden}
.auth-co-brand .auth-brand-logo{display:block;flex:0 1 auto;width:auto!important;height:auto!important;object-fit:contain;object-position:center;max-height:150px;margin:0 auto}
.auth-brand.branding-mode-era_only .auth-brand-logo,.auth-brand.branding-mode-customer_only .auth-brand-logo{max-width:min(360px,92%)!important}
.auth-brand.branding-mode-co_branded .auth-brand-logo{max-width:44%!important;max-height:112px}
.auth-brand.branding-mode-co_branded .auth-co-brand{max-width:460px;gap:10px}
.auth-brand-product{flex-wrap:wrap;line-height:1.25}
.card .auth-brand:first-of-type{margin-top:0}
.sidebar-co-brand{overflow:hidden}
.sidebar-co-brand .brand-logo{height:auto!important;object-fit:contain}
@media(max-width:700px){.auth-co-brand{max-width:340px}.auth-brand.branding-mode-era_only .auth-brand-logo,.auth-brand.branding-mode-customer_only .auth-brand-logo{max-width:min(300px,90%)!important;max-height:125px}.auth-brand.branding-mode-co_branded .auth-brand-logo{max-height:86px}}

/* Phase17 — Operational Commissioning Center */
.commissioning-main{max-width:1680px;width:100%}.commissioning-score{display:grid;place-items:center;min-width:105px;padding:10px 14px;border:1px solid #e2c98c;background:#fff8e9;border-radius:14px;color:#805d18}.commissioning-score.ready{border-color:#b9d8d1;background:#edf7f4;color:#176557}.commissioning-score strong{font-size:1.35rem;line-height:1}.commissioning-score span{font-size:.65rem;font-weight:800;margin-top:5px}.commissioning-messages{display:grid;gap:8px;margin-bottom:12px}.commissioning-message{padding:10px 13px;border-radius:10px;border:1px solid #c9dce4;background:#f3f9fb;font-size:.78rem;font-weight:700}.commissioning-message.success{border-color:#b9d8d1;background:#edf7f4;color:#176557}.commissioning-message.error{border-color:#e7bcbc;background:#fff1f1;color:#9a3b3b}.commissioning-scope{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:14px}.commissioning-progress{margin:0 0 14px}.commissioning-progress h2{margin:0}.commissioning-counter{display:grid;place-items:center;min-width:58px;height:38px;border-radius:10px;background:var(--accent-soft);color:var(--accent-strong);font-weight:900}.commissioning-progress-track{display:block;width:100%;height:9px;border:0;border-radius:999px;background:#e8eeee;overflow:hidden;margin:10px 0;appearance:none}.commissioning-progress-track::-webkit-progress-bar{background:#e8eeee;border-radius:999px}.commissioning-progress-track::-webkit-progress-value{background:linear-gradient(90deg,#166f62,#2a9a83);border-radius:999px}.commissioning-progress-track::-moz-progress-bar{background:linear-gradient(90deg,#166f62,#2a9a83);border-radius:999px}.commissioning-next{margin:8px 0 0;font-size:.8rem}.commissioning-next.ready-copy{color:#176557;font-weight:700}.commissioning-step-grid{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));gap:10px;margin-bottom:14px}.commissioning-step{position:relative;display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px;align-items:start;min-height:132px;padding:14px;border:1px solid var(--border);border-radius:14px;background:#fff}.commissioning-step.ready{border-color:#b9d8d1;background:linear-gradient(145deg,#f3faf8,#fff)}.commissioning-step.warn{border-color:#e4ca91;background:#fffaf0}.commissioning-step-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#edf1f2;color:#65747b;font-size:.75rem;font-weight:900}.commissioning-step.ready .commissioning-step-mark{background:#dff2eb;color:#176557}.commissioning-step.warn .commissioning-step-mark{background:#fff0ca;color:#8a631b}.commissioning-step strong{display:block;font-size:.78rem}.commissioning-step p{margin:5px 0 0;font-size:.68rem;line-height:1.45}.commissioning-state-label{position:absolute;left:14px;bottom:11px;font-size:.58rem;font-weight:900;letter-spacing:.08em;color:#7c898e}.commissioning-step.ready .commissioning-state-label{color:#176557}.commissioning-step.warn .commissioning-state-label{color:#8a631b}.commissioning-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.commissioning-info-panel{margin:0}.commissioning-feature-list,.commissioning-limit-list{display:grid}.commissioning-feature-list>div,.commissioning-limit-list>div{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid #edf1f1;font-size:.75rem}.commissioning-feature-list strong.good{color:#176557}.commissioning-feature-list strong.bad{color:#8a7272}.commissioning-limit-list{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}.commissioning-limit-list>div{display:grid;gap:3px;padding:10px;border:1px solid var(--border);border-radius:10px}.commissioning-limit-list>div.at{background:#fffaf0}.commissioning-limit-list>div.over{background:#fff1f1}.commissioning-inline-link{margin-top:12px}.commissioning-code-list{display:grid;gap:8px}.commissioning-code-list>div{display:grid;grid-template-columns:88px minmax(0,1fr);gap:10px;align-items:center}.commissioning-code-list span{font-size:.7rem;color:var(--text-muted);font-weight:700}.commissioning-code-list code,.commissioning-command-steps code{display:block;overflow:auto;padding:9px 10px;border-radius:9px;background:#102f2b;color:#dff5ef;font-size:.72rem}.commissioning-setup-panel{margin:0 0 14px}.commissioning-forms-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.commissioning-form-card{border:1px solid var(--border);border-radius:13px;background:#fbfcfc;overflow:hidden}.commissioning-form-card[open]{background:#fff;box-shadow:0 8px 22px rgba(24,33,38,.035)}.commissioning-form-card summary{display:flex;align-items:center;gap:10px;padding:13px 14px;cursor:pointer;list-style:none}.commissioning-form-card summary::-webkit-details-marker{display:none}.commissioning-form-card summary span{display:grid;place-items:center;width:25px;height:25px;border-radius:50%;background:var(--accent-soft);color:var(--accent-strong);font-size:.7rem;font-weight:900}.commissioning-form-card summary strong{font-size:.8rem}.commissioning-form-card form,.commissioning-blocker{padding:0 14px 14px}.commissioning-form-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px}.commissioning-form-fields p{margin:0}.commissioning-form-fields label{display:block;font-size:.68rem;color:var(--text-muted);margin-bottom:4px}.commissioning-form-fields input,.commissioning-form-fields select{padding:8px 9px;font-size:.78rem}.commissioning-form-fields .errorlist{grid-column:1/-1;margin:2px 0;padding-left:16px;color:#a13d3d;font-size:.68rem}.commissioning-form-card button{margin-top:12px}.commissioning-blocker{font-size:.78rem}.commissioning-blocker p{margin:6px 0 0;line-height:1.5}.commissioning-command-panel{margin:0 0 14px}.commissioning-ok-pill{padding:6px 9px;border-radius:999px;background:#e3f4ed;color:#1c765d;font-size:.68rem;font-weight:850}.commissioning-command-steps{display:grid;gap:10px;padding-left:22px}.commissioning-command-steps li{padding-left:4px}.commissioning-command-steps strong{display:block;font-size:.78rem;margin-bottom:5px}.commissioning-command-steps small{display:block;margin-top:5px;color:var(--text-muted);font-size:.68rem}.commissioning-action-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}.commissioning-safety-panel{margin:0;border-color:#e4ca91;background:#fffaf0}.commissioning-safety-panel h3{margin-bottom:8px}.commissioning-safety-panel p{margin:0;font-size:.78rem;line-height:1.55}@media(max-width:1450px){.commissioning-step-grid{grid-template-columns:repeat(4,1fr)}}@media(max-width:1050px){.commissioning-scope{grid-template-columns:repeat(2,minmax(0,1fr))}.commissioning-grid,.commissioning-forms-grid{grid-template-columns:1fr}.commissioning-step-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.commissioning-scope{grid-template-columns:1fr}.commissioning-step-grid{grid-template-columns:1fr}.commissioning-form-fields{grid-template-columns:1fr}.commissioning-limit-list{grid-template-columns:1fr}.commissioning-code-list>div{grid-template-columns:1fr}.commissioning-score{margin-top:12px;width:max-content}}

/* v2.2.1 commissioning UX */
.auth-brand-home{color:inherit;text-decoration:none}.page-brand-badge{text-decoration:none;color:inherit}
.commissioning-validation-panel{margin:0 0 14px}.commissioning-validation-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:14px 0}.commissioning-validation-actions form{margin:0}.commissioning-validation-actions button{margin:0;min-height:36px}.commissioning-validation-actions button[disabled]{cursor:not-allowed;opacity:.45}.commissioning-run-all{font-weight:850}.commissioning-catalog-state{display:grid;grid-template-columns:minmax(180px,1fr) auto;gap:4px 12px;align-items:center;padding:11px 13px;border:1px solid var(--border);border-radius:11px;background:#fbfcfc}.commissioning-catalog-state.ready{border-color:#b9d8d1;background:#edf7f4}.commissioning-catalog-state.pending{border-color:#e4ca91;background:#fffaf0}.commissioning-catalog-state span{font-size:.7rem;font-weight:900}.commissioning-catalog-state small{grid-column:1/-1;color:var(--text-muted);font-size:.66rem}.commissioning-validation-results{display:grid;gap:8px;margin-top:12px}.commissioning-validation-result{display:grid;grid-template-columns:30px minmax(0,1fr) auto;gap:10px;align-items:start;padding:11px 12px;border:1px solid var(--border);border-radius:11px;background:#fff}.commissioning-validation-result.pass{border-color:#b9d8d1;background:#f3faf8}.commissioning-validation-result.fail{border-color:#e7bcbc;background:#fff5f5}.commissioning-validation-result .validation-mark{display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:#edf1f2;font-weight:900}.commissioning-validation-result.pass .validation-mark{background:#dff2eb;color:#176557}.commissioning-validation-result.fail .validation-mark{background:#ffe2e2;color:#9a3b3b}.commissioning-validation-result strong{font-size:.77rem}.commissioning-validation-result p{margin:3px 0;font-size:.7rem;line-height:1.45}.commissioning-validation-result small{color:var(--text-muted);font-size:.62rem}.commissioning-validation-result b{font-size:.62rem;letter-spacing:.06em}.commissioning-validation-result.pass b{color:#176557}.commissioning-validation-result.fail b{color:#9a3b3b}.commissioning-terminal-fallback{margin-top:14px;border-top:1px solid var(--border);padding-top:10px}.commissioning-terminal-fallback summary{cursor:pointer;font-size:.72rem;font-weight:800;color:var(--text-muted)}
@media(max-width:700px){.commissioning-validation-result{grid-template-columns:30px minmax(0,1fr)}.commissioning-validation-result b{grid-column:2}.commissioning-validation-actions{display:grid}.commissioning-validation-actions form,.commissioning-validation-actions button{width:100%}}
