:root{color:#18202a;background:#f5f7fa;font-family:Inter,Segoe UI,Microsoft YaHei,system-ui,-apple-system,BlinkMacSystemFont,sans-serif}*{box-sizing:border-box}body{margin:0;min-width:320px}button,select,input,textarea{font:inherit}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login-panel{width:min(420px,100%);background:#fff;border:1px solid #dde3ea;border-radius:8px;box-shadow:0 10px 30px #141c2614;padding:28px;display:grid;gap:16px}.login-panel h1,.login-panel p{margin:0}.login-panel p{color:#657386}.login-panel label{display:grid;gap:6px}.login-panel label span{color:#617083;font-size:13px}.login-panel input{min-height:42px;border:1px solid #cfd6df;border-radius:6px;padding:0 12px}.app-shell{min-height:100vh;display:grid;grid-template-columns:280px minmax(0,1fr)}.sidebar{background:#1f2935;color:#f6f8fb;padding:20px 18px;display:flex;flex-direction:column;gap:14px}.brand{display:flex;gap:11px;align-items:center;min-height:48px}.brand>svg{flex:0 0 auto;width:34px;height:34px;padding:7px;border:1px solid #3d4a59;border-radius:8px;background:#263241}.brand strong,.brand span{display:block}.brand span{color:#a8b3c1;font-size:13px;margin-top:2px}.refresh-button{height:40px;border:1px solid #3f4a58;background:#2a3442;color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:6px;cursor:pointer}.account-box{border:1px solid #3b4654;border-radius:8px;padding:12px 13px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;align-items:center;background:#222d3a}.account-box strong,.account-box span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-box span{color:#a8b3c1;font-size:13px}.account-actions{grid-column:2;grid-row:1 / 3;justify-self:end;display:flex;gap:6px}.account-actions button{min-height:30px;border:1px solid #3f9087;border-radius:6px;background:#203b42;color:#8ed2c9;padding:0 10px;cursor:pointer;white-space:nowrap}.password-panel{border:1px solid #3b4654;border-radius:8px;background:#222d3a;padding:12px;display:grid;gap:10px}.password-panel label{display:grid;gap:5px}.password-panel label span{color:#a8b3c1;font-size:12px}.password-panel input{width:100%;min-height:36px;border:1px solid #485668;border-radius:6px;background:#18222e;color:#f6f8fb;padding:0 10px}.password-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.password-save,.password-cancel{min-height:34px;border-radius:6px;cursor:pointer}.password-save{border:1px solid #55b6a8;background:#e9f8f5;color:#1f5f55;font-weight:700}.password-cancel{border:1px solid #3f4a58;background:transparent;color:#cdd6e2}.sidebar-error,.sidebar-success{margin:0;font-size:12px}.sidebar-error{color:#ffb4ab}.sidebar-success{color:#8ed2c9}.view-tabs{display:grid;grid-template-columns:1fr;gap:8px}.view-tabs button{min-height:40px;border:1px solid #3f4a58;background:#222c38;color:#cdd6e2;border-radius:6px;cursor:pointer;text-align:left;padding:0 14px;font-weight:600}.view-tabs button.active{background:#e9f8f5;border-color:#55b6a8;color:#1f5f55;font-weight:700}.device-list{display:grid;gap:9px;margin-top:4px}.sidebar-section-title{color:#95a4b7;font-size:12px;font-weight:700;letter-spacing:0;padding:2px 2px 0}.device-row{border:1px solid #3a4654;background:#222c38;color:inherit;text-align:left;border-radius:8px;min-height:72px;padding:13px 14px;display:grid;grid-template-columns:12px minmax(0,1fr);gap:10px;align-items:center;cursor:pointer}.device-row.active{border-color:#55b6a8;background:#203a45}.device-row strong,.device-row small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.device-row small{color:#a8b3c1;margin-top:4px}.status-dot{width:10px;height:10px;border-radius:50%;background:#8993a0}.status-dot.normal,.status-text.normal{color:#16815d}.status-dot.warning,.status-text.warning{color:#a76a00}.status-dot.attention,.status-text.attention{color:#8a6500}.status-dot.fault,.status-text.fault{color:#c93b3b}.status-dot.offline,.status-text.offline{color:#747f8d}.status-dot.normal{background:#36c18a}.status-dot.warning{background:#f0a629}.status-dot.attention{background:#d3a52c}.status-dot.fault{background:#ef5b5b}.status-dot.offline{background:#7b8491}.workspace{padding:28px;display:grid;gap:22px;align-content:start}.topbar{display:flex;justify-content:space-between;gap:18px;align-items:end}.eyebrow{margin:0 0 5px;color:#687487;font-size:13px}h1,h2{margin:0;letter-spacing:0}h1{font-size:28px;line-height:1.2}h2{font-size:18px}.point-picker summary{height:40px;min-width:150px;border:1px solid #cfd6df;border-radius:6px;background:#fff;padding:0 12px;display:flex;align-items:center;cursor:pointer;list-style:none}.point-picker{position:relative}.point-picker summary::-webkit-details-marker{display:none}.point-picker-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:10;width:min(320px,calc(100vw - 32px));border:1px solid #cfd6df;border-radius:6px;background:#fff;box-shadow:0 10px 28px #141c2629;padding:8px}.point-picker-menu label{min-height:38px;display:flex;align-items:center;gap:9px;padding:6px 8px;cursor:pointer}.point-picker-menu label:hover{background:#f4f7f9}.point-picker-menu input{width:16px;height:16px;flex:0 0 auto}.point-picker-menu small{display:block;color:#a13b34;padding:6px 8px 2px}.error-line{margin:0;color:#b3261e}.success-line{margin:0;color:#16815d}.metrics-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:14px}.metric-panel,.trend-panel,.diagnosis-panel,.alarm-strip,.experiment-form,.simulation-panel,.user-form,.token-reveal,.device-management-form,.edge-config-editor,.diagnostic-detail,.diagnostic-form{background:#fff;border:1px solid #dde3ea;border-radius:8px;box-shadow:0 1px 2px #141c260a}.metric-panel{min-height:118px;padding:16px;display:grid;align-content:space-between;gap:8px}.metric-panel span{color:#667386;font-size:13px}.metric-panel strong{font-size:21px;line-height:1.25;overflow-wrap:anywhere}.analysis-layout{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.85fr);gap:16px}.trend-panel,.diagnosis-panel,.alarm-strip,.experiment-form,.simulation-panel,.user-form,.token-reveal,.device-management-form,.edge-config-editor,.diagnostic-detail,.diagnostic-form{padding:18px}.diagnostic-tabs{display:flex;flex-wrap:wrap;border:1px solid #cfd6df;border-radius:6px;overflow:hidden}.diagnostic-tabs button{min-height:38px;border:0;border-right:1px solid #dce2e8;background:#fff;color:#4b596b;padding:0 12px;cursor:pointer}.diagnostic-tabs button:last-child{border-right:0}.diagnostic-tabs button.active{background:#e9f5f2;color:#17685d;font-weight:700}.diagnostic-detail,.diagnostic-form{display:grid;gap:16px}.phase-strip{display:flex;min-height:64px;overflow-x:auto;border:1px solid #e1e6eb}.phase-strip>div{min-width:150px;flex:1 0 150px;display:grid;align-content:center;gap:4px;padding:10px 12px;border-right:1px solid #e1e6eb;background:#f7fafb}.phase-strip span{color:#687487;font-size:12px}.diagnostic-detail-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:20px}.baseline-progress-panel{margin-bottom:18px}.baseline-progress-panel>.panel-heading>strong{color:#2563a6}.baseline-progress-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.baseline-progress-item{min-width:0}.baseline-progress-item>div:first-child{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px}.baseline-progress-item span,.baseline-progress-note,.session-eligibility-summary>span:last-child{color:#687487}.progress-track{width:100%;height:7px;overflow:hidden;border-radius:4px;background:#e4e9ee}.progress-track span{display:block;height:100%;background:#268372}.baseline-progress-note{margin:14px 0 0;font-size:13px}.session-eligibility-summary{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid #e2e7eb}.session-pagination{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px;padding-top:14px;border-top:1px solid #e2e7eb}.session-pagination label{display:flex;align-items:center;gap:6px;margin-right:auto;color:#607086}.session-pagination select,.session-pagination button{min-height:34px;border:1px solid #cfd6df;border-radius:6px;background:#fff;color:#273447;padding:0 10px}.session-pagination button{cursor:pointer}.session-pagination button:disabled{cursor:default;opacity:.45}.session-pagination strong{min-width:90px;text-align:center;color:#3f4c5f;font-size:13px}.diagnostic-detail h3,.diagnostic-form h3{margin:0 0 10px;font-size:15px;color:#2d3b4e}.feature-list{display:grid;grid-template-columns:minmax(130px,1fr) minmax(80px,auto);margin:0;border-top:1px solid #e8edf1}.feature-list dt,.feature-list dd{margin:0;padding:8px 4px;border-bottom:1px solid #e8edf1}.feature-list dt{color:#607086}.feature-list dd{text-align:right;font-weight:600}.review-form{display:grid;align-content:start;gap:12px}.review-form label{display:grid;gap:5px}.review-form select,.review-form>label>input:not([type=checkbox]),.review-form textarea,.diagnostic-form select{width:100%;min-height:40px;border:1px solid #cfd6df;border-radius:6px;background:#fff;padding:8px 10px}.review-reason-fieldset{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0;border:1px solid #dfe5ea;padding:10px}.review-reason-fieldset legend{padding:0 5px;color:#607086}.review-form .review-reason-option,.review-form .review-confirmed-option{display:flex;grid-template-columns:none;align-items:center;gap:7px}.review-reason-option input,.review-confirmed-option input{width:16px;height:16px;flex:0 0 auto}.review-readonly{align-self:start;border-left:3px solid #7b8794;padding-left:14px}.review-readonly p{margin:7px 0}.session-reason-cell{min-width:150px;max-width:240px;white-space:normal}.risk-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:10px}.risk-item{min-height:88px;display:grid;align-content:space-between;gap:5px;border:1px solid #dfe5ea;border-radius:6px;padding:10px}.risk-item span,.risk-item small{color:#687487}.diagnosis-score-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin-bottom:18px;border-top:1px solid #e2e7eb;border-bottom:1px solid #e2e7eb}.panel-heading-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;justify-content:flex-end}.diagnosis-score-summary>div{display:grid;gap:4px;padding:14px 18px;border-right:1px solid #e2e7eb}.diagnosis-score-summary>div:last-child{border-right:0}.diagnosis-score-summary span,.diagnosis-empty{color:#687487}.diagnosis-score-summary strong{font-size:22px}.score-deduction{color:#a85f00}.diagnosis-breakdown{overflow-x:auto;margin-bottom:20px}.diagnosis-breakdown table{min-width:760px}.diagnosis-breakdown th,.diagnosis-breakdown td{padding:10px 8px;border-bottom:1px solid #e8edf1;text-align:left;vertical-align:top}.diagnosis-breakdown th{color:#607086;font-size:12px}.diagnosis-empty{margin:0 0 20px}.risk-item.rising{border-color:#e8bd74;background:#fff8ea}.maintenance-form-grid,.analysis-config-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.panel-heading span{color:#697688}.trend-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.trend-controls button,.trend-controls select{min-height:34px;border:1px solid #cfd6df;border-radius:6px;background:#fff;color:#273447;padding:0 10px}.trend-controls button{cursor:pointer}.trend-controls select{min-width:116px}.trend-legend{min-height:38px;display:flex;align-items:center;flex-wrap:wrap;gap:8px 18px;margin:-4px 0 10px}.trend-legend-item{display:grid;grid-template-columns:10px auto auto;align-items:center;gap:6px;color:#657386;font-size:13px}.trend-legend-item strong{color:#273447}.trend-swatch{width:9px;height:9px;border-radius:2px;flex:0 0 auto}.trend-chart-wrap{position:relative}.trend-chart{width:100%;height:300px;border:1px solid #eef1f4;background:linear-gradient(#fff,#f8fbfd);display:block;cursor:crosshair}.trend-chart line{stroke:#ccd5df;stroke-width:.7}.trend-chart polyline{fill:none;stroke:#268372;stroke-width:2.2;vector-effect:non-scaling-stroke}.trend-chart .hover-guide{stroke:#8291a4;stroke-dasharray:3 3;stroke-width:.8;vector-effect:non-scaling-stroke}.trend-chart .hover-point{fill:#fff;stroke:#1f7f70;stroke-width:1.6;vector-effect:non-scaling-stroke}.trend-tooltip{position:absolute;z-index:2;min-width:260px;max-width:min(440px,calc(100vw - 36px));transform:translate(-50%,calc(-100% - 10px));border:1px solid #cfd8e3;border-radius:6px;background:#fff;box-shadow:0 8px 24px #141c261f;padding:8px 10px;pointer-events:none}.trend-tooltip-row{display:grid;grid-template-columns:9px minmax(70px,1fr) auto;align-items:center;gap:4px 7px;padding:4px 0}.trend-tooltip-row+.trend-tooltip-row{border-top:1px solid #edf0f3}.trend-tooltip-row strong{color:#1c2a3a;font-size:14px;text-align:right}.trend-tooltip-row>span:not(.trend-swatch){color:#657386;font-size:12px;overflow-wrap:anywhere}.trend-tooltip-row small{grid-column:2 / 4;color:#7a8797;font-size:11px}.reason-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.reason-list li{display:grid;gap:4px;padding-bottom:10px;border-bottom:1px solid #edf0f3}.reason-list strong{color:#2d3b4e}.reason-list span{color:#59677a}.alarm-strip{overflow-x:auto}.alarm-strip table{width:100%;border-collapse:collapse}.alarm-strip th,.alarm-strip td{border-bottom:1px solid #edf0f3;padding:11px 8px;text-align:left;vertical-align:top}.alarm-strip th{color:#607086;font-weight:600}.experiment-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:16px;align-items:start}.experiment-form,.user-form{display:grid;gap:18px}.form-section{display:grid;grid-template-columns:repeat(2,minmax(190px,1fr));gap:14px;border-top:1px solid #edf0f3;padding-top:16px}.form-section h3{grid-column:1 / -1;margin:0;color:#2d3b4e;font-size:15px}.form-section label{display:grid;gap:6px;min-width:0}.form-section label span{color:#617083;font-size:13px}.form-section input,.form-section textarea,.toolbar select{width:100%;border:1px solid #cfd6df;border-radius:6px;background:#fff;color:#18202a}.form-section input:disabled,.form-section textarea:disabled{background:#f4f6f8;color:#677386}.form-section input{min-height:40px;padding:0 11px}.form-section textarea{resize:vertical;min-height:84px;padding:10px 11px}.wide-field{grid-column:1 / -1}.form-actions{display:flex;gap:10px;flex-wrap:wrap}.primary-button,.secondary-button,.table-action,.danger-action{min-height:40px;border-radius:6px;border:1px solid transparent;padding:0 14px;cursor:pointer}.primary-button{background:#24786d;color:#fff}.secondary-button,.table-action{background:#fff;border-color:#cfd6df;color:#273447}.danger-action{background:#fff;border-color:#efc9c5;color:#b3261e}.table-action,.danger-action{min-height:32px;margin:0 4px 4px 0}.primary-button:disabled,.secondary-button:disabled{cursor:not-allowed;opacity:.6}.simulation-panel{display:grid;gap:18px;position:sticky;top:18px}.result-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.result-metrics div{min-height:82px;border:1px solid #edf0f3;border-radius:6px;padding:12px;display:grid;align-content:space-between;gap:8px}.result-metrics span,.result-note{color:#657386;font-size:13px}.result-metrics strong{font-size:18px;overflow-wrap:anywhere}.curve-chart-wrap{display:grid;gap:8px}.efficiency-chart{width:100%;height:280px;border:1px solid #eef1f4;background:linear-gradient(#fff,#f7fbfb)}.efficiency-chart line{stroke:#cdd6df;stroke-width:.7;vector-effect:non-scaling-stroke}.efficiency-chart polyline{fill:none;stroke:#24786d;stroke-width:2.2;vector-effect:non-scaling-stroke}.efficiency-chart .critical-line{stroke:#c95548;stroke-dasharray:4 4;stroke-width:1.2}.chart-axis{display:flex;justify-content:space-between;gap:10px;color:#657386;font-size:12px}.chart-axis span{min-width:0;overflow-wrap:anywhere}.result-note{margin:0}.permission-note{margin:0;color:#a76a00;background:#fff8ea;border:1px solid #f2d49b;border-radius:6px;padding:10px 12px}.user-layout{display:grid;grid-template-columns:minmax(320px,.72fr) minmax(0,1.28fr);gap:16px;align-items:start}.user-form-grid{grid-template-columns:repeat(2,minmax(160px,1fr))}.checkbox-line{display:flex!important;align-items:center;gap:8px}.checkbox-line input{width:16px;min-height:16px;height:16px;padding:0}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:10px 14px;border-top:1px solid #edf0f3;padding-top:16px}.user-table td{overflow-wrap:anywhere}.token-reveal{border-color:#e4bd72;background:#fffaf0}.token-reveal pre{max-height:360px;margin:0;padding:14px;overflow:auto;border:1px solid #ead4a8;border-radius:6px;color:#243229;background:#fff;font-size:12px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.device-management-layout{display:grid;grid-template-columns:minmax(300px,.62fr) minmax(0,1.38fr);gap:16px;align-items:start}.device-management-form{display:grid;gap:18px}.device-form-grid{grid-template-columns:repeat(2,minmax(140px,1fr))}.managed-device-table small{display:block;margin-top:4px;color:#758194}.selected-table-row{background:#f2faf8}.management-status{display:inline-flex;align-items:center;min-height:26px;padding:0 8px;border-radius:6px;font-size:12px;font-weight:700}.management-status.active{color:#116c52;background:#e6f6f0}.management-status.archived{color:#687487;background:#edf0f3}.management-status.pending{color:#8a6500;background:#fff4d6}.edge-config-editor{display:grid;gap:0;padding:0;overflow:hidden}.edge-config-heading{margin:0;padding:18px;border-bottom:1px solid #dde3ea}.edge-config-heading>div,.edge-section-title>div,.token-reveal .panel-heading>div{min-width:0}.edge-config-heading span,.edge-section-title span{display:block;margin-top:5px;font-size:13px}.edge-config-band{padding:20px 18px;min-width:0}.edge-config-band+.edge-config-band{border-top:1px solid #edf0f3}.edge-config-band>h3,.edge-section-title h3{margin:0;color:#2d3b4e;font-size:16px}.edge-section-title{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:14px}.edge-adapter-grid{grid-template-columns:repeat(4,minmax(140px,1fr))}.gate-config-grid{grid-template-columns:repeat(2,minmax(220px,1fr))}.health-writeback-grid{grid-template-columns:repeat(3,minmax(180px,1fr));align-items:end}.health-writeback-grid .wide-field{grid-column:1 / -1}.writeback-status-codes{color:#607086;font-size:13px;line-height:1.5;padding-bottom:10px}.form-section select,.edge-point-table input,.edge-point-table select{width:100%;min-height:40px;border:1px solid #cfd6df;border-radius:6px;background:#fff;color:#18202a;padding:0 10px}.edge-point-table{width:100%;min-width:0;max-width:100%;overflow-x:auto}.edge-point-table table{width:100%;min-width:1320px;border-collapse:collapse;table-layout:fixed}.speed-segment-section{margin:18px 0}.speed-segment-table{min-width:1040px!important}.speed-segment-table th{width:auto!important}.edge-point-table th,.edge-point-table td{padding:8px 5px;border-bottom:1px solid #edf0f3;text-align:left;vertical-align:top}.edge-point-table th{color:#607086;font-size:12px;font-weight:600}.edge-point-table th:nth-child(1),.edge-point-table th:nth-child(2){width:170px}.edge-point-table th:nth-child(3),.edge-point-table th:nth-child(4){width:100px}.edge-point-table th:nth-child(5){width:105px}.edge-point-table th:nth-child(n+6):nth-child(-n+9){width:105px}.edge-point-table th:last-child{width:78px}.edge-point-table .danger-action{width:100%;margin:0}.device-audit-table td{overflow-wrap:anywhere}@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:static}.metrics-grid,.analysis-layout,.experiment-layout,.form-section,.user-layout,.device-management-layout,.device-form-grid,.edge-adapter-grid,.gate-config-grid,.health-writeback-grid,.user-form-grid,.permission-grid,.diagnostic-detail-grid,.maintenance-form-grid,.analysis-config-grid,.risk-grid,.baseline-progress-grid,.diagnosis-score-summary{grid-template-columns:1fr}.diagnosis-score-summary>div{border-right:0;border-bottom:1px solid #e2e7eb}.diagnosis-score-summary>div:last-child{border-bottom:0}.session-eligibility-summary,.baseline-progress-item>div:first-child{align-items:flex-start;flex-direction:column;gap:4px}.topbar{align-items:stretch;flex-direction:column}.simulation-panel{position:static}.result-metrics{grid-template-columns:1fr}}
