:root{--colour-bg:#f5f6f7;--colour-text:#282a2e;--colour-banner:#3f826d;--colour-milestone-bar:#545e75;--colour-filter-applied:#2441d7;--colour-action-bg:#ffa686;--colour-action-text:#000;--colour-editable:#1f96fe;--colour-valid:#3f826d;--colour-invalid:#c03221;--colour-row-selected:#3f826d33;--status-green:#2e7d32;--status-amber:#f9a825;--status-red:#c62828;--status-blue:#1565c0}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--colour-bg);color:var(--colour-text);font-family:Roboto,system-ui,sans-serif;font-size:clamp(11px,1.5vw,14px);overflow-x:hidden}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}.mandatory-star{color:var(--colour-invalid);font-weight:700}.search-input{color:var(--colour-text);background:#fff;border:1px solid #ccc;border-radius:4px;width:100%;min-width:0;padding:.35rem .5rem}.search-input:focus{outline:2px solid var(--colour-editable);outline-offset:0}.action-btn{background:var(--colour-action-bg);color:var(--colour-action-text);border:none;border-radius:4px;padding:.5rem 1rem;font-weight:600}.action-btn:disabled{opacity:.5;cursor:not-allowed}.section-header{background:var(--colour-milestone-bar);color:#fff;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .75rem;font-weight:700;display:flex}.section-header-right{text-align:right;font-size:.85em;line-height:1.25}.modal-backdrop{z-index:50;background:#00000059;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-panel{color:var(--colour-text);background:#fff;border-radius:8px;flex-direction:column;width:100%;max-width:900px;max-height:90vh;display:flex;overflow:hidden;box-shadow:0 8px 32px #0003}.pill{white-space:nowrap;cursor:inherit;border:1px solid #0000;border-radius:4px;padding:.15rem .45rem;font-size:.85em;font-weight:600;text-decoration:none;display:inline-block}.pill-green{color:var(--status-green);background:#e8f5e9;border-color:#2e7d3238}.pill-amber{color:#b28704;background:#fff8e1;border-color:#b2870440}.pill-red{color:var(--status-red);background:#ffebee;border-color:#c6282838}.pill-blue{color:var(--status-blue);background:#e3f2fd;border-color:#1565c033}.traffic{border-radius:50%;width:14px;height:14px;display:inline-block}.traffic-green{background:var(--status-green)}.traffic-amber{background:var(--status-amber)}.traffic-red{background:var(--status-red)}.table-wrap{width:100%;overflow:hidden auto}.primary-table-wrap{height:100%;min-height:0}.primary-table-wrap .primary-table-head thead tr:not(.filter-row) th{z-index:4;background:#e8eaed;position:sticky;top:0}.primary-table-wrap .primary-table-head thead tr.filter-row th{top:var(--pt-first-header-height,3rem);z-index:3;background:#f0f1f3;position:sticky}.primary-table-body-rows{border-top:1px solid #ddd}.primary-table-body-row{border-bottom:1px solid #ddd}.primary-table-body-row.selected{background:var(--colour-row-selected)}.primary-table-wrap .virtual-td{text-align:left;vertical-align:top;border-right:1px solid #ddd;min-width:0;padding:.25rem .35rem}.primary-table-wrap .virtual-td:first-child{border-left:1px solid #ddd}.data-table tbody td.cell-wrap,.primary-table-wrap .virtual-td.cell-wrap{white-space:normal;word-break:break-word;overflow-wrap:anywhere;text-overflow:clip;overflow:visible}.data-table tbody td.cell-wrap{vertical-align:top;max-width:0}.primary-table-wrap .virtual-td.cell-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.primary-table-wrap .virtual-td.cell-center{justify-content:center;align-items:center;display:flex}.data-table{border-collapse:collapse;table-layout:fixed;width:100%}.data-table th,.data-table td{text-align:left;vertical-align:middle;border:1px solid #ddd;padding:.25rem .35rem}.data-table tbody td{text-overflow:ellipsis;white-space:nowrap;max-width:0;overflow:hidden}.data-table tbody td.cell-num{text-align:right;font-variant-numeric:tabular-nums}.data-table tbody td.cell-center{text-align:center}.data-table thead th{white-space:normal;word-break:break-word;overflow-wrap:anywhere;-webkit-hyphens:auto;hyphens:auto;vertical-align:bottom;background:#e8eaed;padding:.3rem .25rem;font-size:clamp(10px,1.1vw,12px);font-weight:600;line-height:1.2}.data-table thead tr.filter-row th{vertical-align:middle;font-size:inherit;white-space:normal;font-weight:400;line-height:normal}.data-table tbody tr.selected{background:var(--colour-row-selected)}.data-table tbody tr{cursor:pointer}.th-inner{flex-wrap:wrap;align-content:flex-end;align-items:flex-end;gap:.2rem;min-width:0;display:flex}.th-inner>button.icon-btn{flex-shrink:0}.th-inner>button.icon-btn:first-child{white-space:normal;text-align:left;flex-wrap:wrap;flex:auto;justify-content:flex-start;align-items:flex-end;min-width:2.5rem;max-width:100%;height:auto}.icon-btn{color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;padding:.15rem;display:inline-flex}.icon-btn.applied{color:var(--colour-filter-applied)}.th-text{white-space:normal;word-break:break-word;text-align:left;min-width:0}.filter-row th{background:#f0f1f3;font-weight:400}.popover{z-index:40;background:#fff;border:1px solid #ccc;border-radius:6px;min-width:200px;max-height:240px;padding:.35rem;position:absolute;overflow:auto;box-shadow:0 4px 16px #00000026}.popover label{align-items:center;gap:.35rem;padding:.2rem 0;font-size:.9em;display:flex}.save-toast{z-index:60;max-width:min(22rem,100vw - 2rem);color:var(--colour-text);border:1px solid var(--colour-valid);background:#fff;border-radius:6px;padding:.65rem 1rem;font-weight:600;line-height:1.35;position:fixed;bottom:1rem;right:1rem;box-shadow:0 4px 16px #0000002e}.detail-dock{border-top:2px solid var(--colour-milestone-bar);background:#fff;flex-direction:column;flex-shrink:0;min-height:0;max-height:55vh;display:flex;overflow:hidden}.detail-dock-scroll{flex:auto;min-height:0;overflow:hidden auto}.detail-dock-save-bar{background:#fafafa;border-top:1px solid #ccc;flex-wrap:wrap;flex-shrink:0;gap:.75rem;padding:.75rem;display:flex;box-shadow:0 -6px 14px #0000000f}.field-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.5rem 1rem;padding:.75rem;display:grid}.field-grid label{flex-direction:column;gap:.2rem;min-width:0;font-size:.9em;display:flex}.field-grid input,.field-grid select,.field-grid textarea{min-width:0}.validation-editable{border:2px solid var(--colour-editable)!important}.validation-valid{border:2px solid var(--colour-valid)!important}.validation-invalid{border:2px solid var(--colour-invalid)!important}.app-login-shell{background:var(--colour-bg);justify-content:center;align-items:center;min-height:100%;padding:1.5rem;display:flex}.app-login-card{background:#fff;border:1px solid #ddd;border-radius:8px;width:100%;max-width:22rem;padding:1.75rem 1.5rem;box-shadow:0 2px 12px #00000014}.app-login-title{color:var(--colour-text);margin:0 0 .35rem;font-size:1.35rem;font-weight:700}.app-login-hint{color:#555;margin:0 0 1.25rem;font-size:.9em;line-height:1.4}.app-login-form{flex-direction:column;gap:1rem;display:flex}.app-login-label{text-align:left;flex-direction:column;gap:.35rem;display:flex}.app-login-label-text{font-size:.9em;font-weight:600}.app-login-error{color:var(--colour-invalid);margin:0;font-size:.9em;line-height:1.35}.app-login-submit{background:var(--colour-banner);color:#fff;border:none;border-radius:4px;margin-top:.25rem;padding:.5rem 1rem;font-size:1em;font-weight:600}.app-login-submit:hover:not(:disabled){filter:brightness(1.06)}.app-login-submit:disabled{opacity:.7;cursor:not-allowed}.app-login-loading{color:var(--colour-text);margin:0;font-size:1rem}.header-app-logout{color:#fff;background:#ffffff1f;border:1px solid #ffffffd9;border-radius:4px;padding:.35rem .65rem;font-size:.85em;font-weight:600}.header-app-logout:hover{background:#ffffff38}.dev-data-lab-suspense{padding:1rem}.dev-data-lab-editor-wrap{flex-direction:column;flex:1;min-height:0;display:flex}.dev-data-lab-editor{border:1px solid #ccc;border-radius:4px;flex:1;width:100%;min-height:min(70vh,560px);font-size:12px;overflow:hidden}.dev-data-lab-editor .cm-editor{min-height:min(70vh,560px)}.dev-data-lab-editor .cm-editor.cm-focused{outline:2px solid var(--colour-editable);outline-offset:0}.dev-data-lab-editor .cm-scroller{font-family:ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,monospace;line-height:1.45}.dev-data-lab-tab{color:var(--colour-text);background:#e0e3e8;border:1px solid #0000;border-bottom:none;border-radius:4px 4px 0 0;padding:.4rem .75rem;font-size:.95em}.dev-data-lab-tab:hover{background:#d5d8de}.dev-data-lab-tab-active{background:var(--colour-bg);border-color:#ccc;margin-bottom:-1px;font-weight:600}
