:root{font-family:"Malgun Gothic",sans-serif;color:#20364a;background:#f3f6fa;font-size:14px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{border:1px solid #cdd8e3;border-radius:7px;padding:9px 14px;background:#fff;color:#20364a;cursor:pointer}button:hover{background:#edf6f7}button:disabled{opacity:.45;cursor:default}button.primary{background:#087e86;color:white;border-color:#087e86}button.danger{color:#b83c45}input,select,textarea{border:1px solid #cbd7e2;border-radius:6px;padding:10px;width:100%;background:#fff;color:inherit}input:focus,button:focus-visible,select:focus{outline:2px solid #12a6b2;outline-offset:2px}label{display:block;margin:15px 0 8px;font-weight:600}label input,label select,label textarea{margin-top:7px}h1{font-size:27px;margin:8px 0 0;letter-spacing:-1px}h2{font-size:19px;margin:0 0 18px}p{line-height:1.7}small,.muted{color:#677c8e}.brand{font-size:20px;font-weight:800;letter-spacing:2px}.login{max-width:420px;margin:12vh auto;padding:34px!important}.login button{width:100%;margin-top:18px}.login small{line-height:1.6;display:block}#loginError{color:#b13242}#shell{display:flex;min-height:100vh}[hidden]{display:none!important}aside{width:218px;flex-shrink:0;background:#132c40;color:#e1edf5;padding:32px 21px;position:relative}.subtitle{color:#9eb8ca;margin-bottom:36px}nav{display:grid;gap:7px}nav button{text-align:left;background:none;color:#bed0de;border:0;padding:14px}nav button.active{background:#205163;color:#fff;font-weight:700}.aside-note{font-size:12px;color:#9eb8ca;line-height:1.8;margin-top:50px}main{padding:32px 38px;min-width:0;flex:1;max-width:1900px}header{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:28px}.eyebrow{color:#07818c;font-size:11px;font-weight:800;letter-spacing:2px}.actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}#updated{font-size:12px;color:#698095;margin-right:8px}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 24px}.panel,.card{background:white;border:1px solid #dfe6ee;border-radius:11px;padding:22px;box-shadow:0 3px 12px #17374b04}.card strong{display:block;font-size:34px;color:#153c54;margin:10px 0 3px}.card.warn strong{color:#bd4351}.card small{font-size:12px}.panel{margin-bottom:20px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.section-head h2{margin:0}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{text-align:left;padding:15px 12px;border-bottom:1px solid #e8edf2;vertical-align:middle}th{font-size:12px;background:#f6f8fb;color:#6d8192;white-space:nowrap}td .muted{display:block;font-size:11px;margin-top:5px}.badge{display:inline-block;border-radius:5px;padding:5px 8px;background:#edf1f5;color:#657789;white-space:nowrap;font-size:12px}.badge.OK,.badge.SUCCESS{background:#e4f5ed;color:#127044}.badge.FAILED,.badge.NEW{background:#fff0f1;color:#b33149}.badge.STALE,.badge.VERIFY,.badge.ACK,.badge.BACKUP_CREATED_VALIDATION_REQUIRED{background:#fff4dc;color:#906209}.badge.RESOLVED{background:#e5f3ee;color:#197352}.empty{text-align:center;padding:55px 15px;color:#7890a3;line-height:1.9}.filters{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.filters input{flex:2;min-width:170px}.filters select{flex:1;min-width:130px}.paging{display:flex;justify-content:flex-end;gap:10px;align-items:center;margin-top:16px}.banner{padding:14px 18px;background:#e9f3f5;border-left:3px solid #11949c;line-height:1.7;margin-bottom:24px}footer{color:#7e8c9b;font-size:12px;line-height:1.8;padding:14px 0}#notice{padding:13px;background:#fff1d9;border:1px solid #ecd6a8;border-radius:7px;margin-bottom:20px}dialog{border:0;border-radius:12px;padding:28px;max-width:720px;width:calc(100% - 40px);max-height:85vh;box-shadow:0 20px 90px #10253555}dialog::backdrop{background:#142b4266}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:15px}.modal-head h2{margin:0}pre{white-space:pre-wrap;word-break:break-word;background:#f2f6f9;padding:16px;font:12px/1.8 Consolas,monospace}.kv{display:grid;grid-template-columns:130px 1fr;gap:10px;line-height:1.6}.kv dd{margin:0;overflow-wrap:anywhere}.kv dt{color:#708494}.form-error{color:#b33149}.token{font-family:Consolas,monospace}.settings{max-width:600px}.inline-link{border:0;background:none;color:#067d8b;padding:0;text-align:left}.subtle{font-size:12px;line-height:1.7}#content{min-height:55vh}@media(max-width:1000px){main{padding:24px}.cards{grid-template-columns:repeat(2,1fr)}aside{width:185px}header{align-items:flex-start;flex-direction:column}}@media(max-width:650px){#shell{display:block}aside{width:100%;padding:18px}.subtitle,.aside-note{display:none}nav{display:flex;overflow:auto;margin-top:15px}nav button{white-space:nowrap;padding:10px}main{padding:18px}.cards{gap:10px}.card{padding:15px}.card strong{font-size:28px}.login{margin:8vh 15px}.section-head{flex-wrap:wrap}h1{font-size:24px}th,td{padding:12px 9px}}
.badge.upload-mock{background:#fff0cf;color:#755100}.badge.upload-wait{background:#e8edf4;color:#344b65}

.upload-table{min-width:900px}:is(#uploadFilter,#retentionFilter){align-items:end}:is(#uploadFilter,#retentionFilter) button{height:42px}

.badge.MISSING,.badge.MISMATCH{background:#fff0f1;color:#b33149}.badge.UNCONFIGURED,.badge.PENDING{background:#fff4dc;color:#906209}.badge.MATCHED{background:#e4f5ed;color:#127044}

.retention-detail{overflow-wrap:anywhere}.retention-detail section{margin-top:22px}.retention-detail h3{font-size:16px;margin:0 0 10px}.retention-detail li{line-height:1.8;margin-bottom:7px}.retention-status-note{background:#fff4dc;border-left:3px solid #c39534;padding:10px 13px}.retention-detail th,.retention-detail td{padding:10px}
#modalTitle{min-width:0;overflow-wrap:anywhere}#closeModal{flex-shrink:0}

/* Backup history: keep page controls above a bounded list. */
.run-paging{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:0 0 16px}
.run-paging label{display:flex;align-items:center;gap:8px;margin:0;font-weight:400}
.run-paging select{width:auto;margin:0;padding:8px}
.run-page-buttons{display:flex;gap:5px;flex-wrap:wrap}
.run-page-buttons button{padding:8px 11px}
.run-page-buttons [aria-current=page]:disabled{background:#087e86;color:white;opacity:1;border-color:#087e86}
.runs-table{max-height:55vh;overflow:auto;overscroll-behavior:contain}
.runs-table table{min-width:800px}
.runs-table th{position:sticky;top:0;z-index:1}
.runs-table td{overflow-wrap:anywhere}

.recovery-table table{table-layout:fixed;min-width:900px}.recovery-table td,.recovery-table th{overflow-wrap:anywhere;white-space:normal}.recovery-table td{vertical-align:top}.recovery-table button{margin:2px 0;padding:8px 10px}

.operation-toggle{display:inline-flex;align-items:center;gap:8px;margin:8px 0}.operation-toggle input[type=checkbox]{width:auto;min-width:16px;margin:0}

.storage-folder-table table{min-width:950px}.storage-folder-table td{overflow-wrap:anywhere;vertical-align:top}.storage-folder-table code{white-space:normal;word-break:break-all}

#portalPage{max-width:1120px;margin:auto;padding:24px}#portalPage form{max-width:600px}#portalPage .panel{overflow-x:auto}#portalNotice{white-space:pre-wrap;color:#9d3a12}#portalPage input[type=checkbox]{width:auto}#portalPage header{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}

/* Six primary destinations, contextual tabs and searchable hospital selection. */
#sectionTabs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid #dce5ed}#sectionTabs button{color:#426176;background:#eaf0f5;border-radius:8px;padding:10px 16px}#sectionTabs button.active{color:white;background:#176d7a}aside nav button{border-radius:8px}
.hospital-picker{position:relative;min-width:240px;flex:1;max-width:100%}.hospital-picker>input{width:100%;padding-right:60px}.picker-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0;pointer-events:none;min-width:0!important;overflow:hidden}.picker-clear{position:absolute;right:5px;top:5px;padding:6px 8px;font-size:12px}.picker-status{display:block;font-size:11px;margin-top:4px;line-height:1.5}.hospital-options{position:absolute;z-index:30;top:44px;left:0;right:0;max-height:280px;overflow:auto;background:white;border:1px solid #9ab7c9;border-radius:8px;box-shadow:0 8px 24px #132c4028}.hospital-options button{display:block;width:100%;border:0;border-radius:0;text-align:left;padding:11px 12px;background:white;white-space:normal}.hospital-options button:hover,.hospital-options button[aria-selected=true]{background:#e7f2f5}.picker-count{padding:10px;color:#637b8c;font-size:12px}.list-search{display:flex;gap:16px;align-items:center;flex-wrap:wrap;padding:16px}.list-search label{flex:1;min-width:220px;margin:0}.list-search small{flex-basis:100%}.list-search [role=status]{color:#426176;font-size:13px}#content tr[hidden]{display:none}dialog .hospital-options{z-index:40}.filters:has(.hospital-picker){align-items:start}
@media(max-width:650px){#sectionTabs{overflow:visible;margin-top:0}.hospital-picker{min-width:200px}#sectionTabs button{padding:9px 11px}aside nav{display:flex;flex-wrap:wrap;overflow:visible}.list-search{gap:8px}}

/* All record grids share the same viewport and pager geometry. */
#content .grid-viewport,#modalBody .grid-viewport{height:clamp(320px,52vh,520px);max-height:none;overflow:auto;overscroll-behavior:contain;border:1px solid #dfe6ee;border-radius:8px;background:white}
.grid-viewport table{width:100%;border-collapse:separate;border-spacing:0}.grid-viewport thead th{position:sticky;top:0;z-index:2;background:#f1f5f9;box-shadow:0 1px #dce5ed}.grid-viewport td{overflow-wrap:anywhere}.grid-viewport:focus-visible{outline:2px solid #12a6b2}.grid-pager{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:14px 0 2px;min-height:58px}.grid-pager>span{font-size:12px;color:#526b80}.grid-pager label{display:flex;align-items:center;gap:8px;margin:0;font-weight:400}.grid-pager select{width:auto;margin:0;padding:7px}.grid-page-buttons{display:flex;gap:4px;flex-wrap:wrap}.grid-page-buttons button{padding:7px 10px;min-width:32px}.grid-page-buttons [aria-current=page]{background:#087e86;color:white;border-color:#087e86}.grid-viewport.empty{display:flex;align-items:center;justify-content:center;padding:20px}
@media(max-width:650px){#content .grid-viewport,#modalBody .grid-viewport{height:360px}.grid-pager{gap:9px}.grid-page-buttons{width:100%}.grid-page-buttons button{padding:7px 8px}.grid-viewport table{min-width:650px}}

/* Upload and retention hospital filters: align controls, keep selection help below the input. */
:is(#uploadFilter,#retentionFilter){align-items:flex-start;gap:12px;margin-bottom:12px}
:is(#uploadFilter,#retentionFilter)>label{display:flex;align-items:flex-start;gap:12px;margin:0;font-weight:400;max-width:100%;min-width:0}
:is(#uploadFilter,#retentionFilter) .upload-filter-label{line-height:42px;font-weight:600;flex-shrink:0}
:is(#uploadFilter,#retentionFilter) .hospital-picker{flex:0 1 320px;width:320px;min-width:0}
:is(#uploadFilter,#retentionFilter) .hospital-picker>input{height:42px;margin:0;padding-right:62px;min-width:0}
:is(#uploadFilter,#retentionFilter) .picker-clear{height:32px;top:5px;right:5px;line-height:18px;padding:6px 8px}
:is(#uploadFilter,#retentionFilter)>button{height:42px;margin:0;flex-shrink:0}
:is(#uploadFilter,#retentionFilter) .hospital-options button{height:auto;min-height:42px}
:is(#uploadFilter,#retentionFilter) .picker-status{font-weight:400}
@media(max-width:650px){:is(#uploadFilter,#retentionFilter)>label{flex:1 1 100%}:is(#uploadFilter,#retentionFilter) .hospital-picker{flex:1;width:auto}:is(#uploadFilter,#retentionFilter)>button{margin-left:38px}}

.sso-divider{text-align:center;color:#698092;margin:18px 0 12px}.login #bithubLogin{width:100%;min-height:42px;border:1px solid #087e86;color:#087e86;background:white}.login #bithubLogin:disabled{opacity:.55;cursor:not-allowed}#bithubStatus{font-size:12px;line-height:1.6;margin-bottom:0}#portalSsoPending small{display:block;margin-top:14px}
