:root{--bg:#f5f7fb;--panel:#fff;--text:#172033;--muted:#6c7587;--line:#e2e7f0;--primary:#3157d5;--primary-dark:#2444ad;--danger:#c9303e;--warning:#aa6d00;--success:#147a4b;--sidebar:#111827;--sidebar-muted:#9ca3af;--radius:14px;--shadow:0 8px 24px rgba(20,32,64,.07)}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text)}a{color:var(--primary);text-decoration:none}code{font-family:Consolas,monospace;font-size:.9em;background:#f0f3f9;padding:2px 5px;border-radius:5px}.app-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:var(--sidebar);color:#fff;padding:24px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,#5d7df0,#3157d5);display:grid;place-items:center;font-size:20px;font-weight:800}.brand strong,.brand span{display:block}.brand span{font-size:12px;color:var(--sidebar-muted);margin-top:2px}.sidebar nav{display:flex;flex-direction:column;gap:6px;margin-top:34px}.sidebar nav a{color:#cbd5e1;padding:11px 13px;border-radius:9px;font-size:14px}.sidebar nav a:hover,.sidebar nav a.active{background:#253047;color:#fff}.logout-form{margin-top:auto}.link-button{border:0;background:none;color:#cbd5e1;padding:10px;cursor:pointer}.main-content{padding:28px 34px;min-width:0}.topbar{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:24px}.topbar h1{margin:0;font-size:28px}.topbar p{margin:6px 0 0;color:var(--muted)}.server-chip{background:#e7ebf7;color:#42506a;border-radius:30px;padding:8px 13px;font-size:13px}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:18px}.stat-card,.panel,.action-card,.destination-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.stat-card{padding:20px}.stat-card span{display:block;color:var(--muted);font-size:13px}.stat-card strong{display:block;font-size:27px;margin-top:8px}.quick-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px}.action-card{padding:20px;color:var(--text);transition:.15s}.action-card:hover{border-color:#b8c4ef;transform:translateY(-1px)}.action-card strong,.action-card span{display:block}.action-card span{color:var(--muted);font-size:13px;margin-top:7px;line-height:1.5}.two-column,.details-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.panel{padding:22px}.panel h2{margin:0 0 16px;font-size:19px}.panel-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.panel-heading h2{margin:0}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:11px 10px;border-bottom:1px solid var(--line)}td{padding:13px 10px;border-bottom:1px solid var(--line);vertical-align:top}td small{display:block;color:var(--muted);margin-top:4px}.badge{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:12px;font-weight:700;background:#edf0f5;color:#536074}.badge.running{background:#e7efff;color:#2e58ba}.badge.queued{background:#fff4db;color:#966000}.badge.completed{background:#e5f7ee;color:#167449}.badge.failed,.badge.cancelled{background:#fee9eb;color:#a82331}.badge.neutral{background:#eef1f7;color:#55617a}.backup-list{display:flex;flex-direction:column}.backup-list a{padding:12px 0;border-bottom:1px solid var(--line);color:var(--text)}.backup-list strong,.backup-list span{display:block}.backup-list span{font-size:12px;color:var(--muted);margin-top:4px}.empty{text-align:center;color:var(--muted);padding:26px}.empty.large{padding:60px 20px}.alert{border-radius:10px;padding:13px 16px;margin-bottom:18px;font-size:14px}.alert.success{background:#e6f7ee;color:#116a43;border:1px solid #bfe8d2}.alert.danger{background:#feecee;color:#982534;border:1px solid #f4c4ca}.alert.warning{background:#fff5dc;color:#805500;border:1px solid #efd99e}.form-panel{max-width:1050px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.form-grid.nested{margin:0}.span-2{grid-column:span 2}.field label{display:block;font-weight:700;font-size:13px;margin-bottom:7px}.field input,.field select,.field textarea{width:100%;height:43px;border:1px solid #cfd6e3;border-radius:8px;background:#fff;padding:9px 11px;font:inherit;color:var(--text);outline:none}.field input:focus,.field select:focus{border-color:#8298e9;box-shadow:0 0 0 3px rgba(49,87,213,.1)}.field small{display:block;color:var(--muted);font-size:12px;line-height:1.45;margin-top:6px}.field span.field-validation-error{display:block;color:var(--danger);font-size:12px;margin-top:5px}.checkbox-field{padding-top:26px}.checkbox-field label{display:flex;gap:9px;align-items:center}.checkbox-field input{width:auto;height:auto}.form-actions,.page-actions,.stack-actions{display:flex;gap:10px;align-items:center}.form-actions{justify-content:flex-end;margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.page-actions{justify-content:flex-end;margin:0 0 14px}.stack-actions{align-items:stretch;flex-direction:column;margin-top:22px}.stack-actions form,.stack-actions .btn{width:100%}.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid transparent;padding:10px 15px;font-weight:700;font-size:13px;cursor:pointer;background:#edf0f5;color:#263246}.btn.primary{background:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark)}.btn.secondary{background:#fff;border-color:#cfd6e3}.btn.danger{background:var(--danger);color:#fff}.btn.danger-outline{background:#fff;border-color:#e3a5ab;color:var(--danger)}.btn.small{padding:6px 10px;font-size:12px}.btn.full{width:100%}.warning-box,.danger-banner{margin-top:20px;padding:14px 16px;border-radius:9px;font-size:13px;line-height:1.5}.warning-box{background:#fff7e5;border:1px solid #ecd9a7;color:#755213}.danger-banner{background:#feedef;border:1px solid #efbdc3;color:#922633;margin-top:0;margin-bottom:20px}.danger-border{border-top:4px solid var(--danger)}.validation-summary{color:var(--danger);margin-bottom:14px}.validation-summary:empty{display:none}.details-list{display:grid;grid-template-columns:140px 1fr;gap:12px 15px;margin:0}.details-list dt{font-weight:700;color:#566178}.details-list dd{margin:0;min-width:0}.details-list.compact{margin-top:24px}.wrap{overflow-wrap:anywhere}.cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.destination-card{display:grid;grid-template-columns:48px 1fr auto;gap:14px;align-items:center;padding:16px;box-shadow:none}.destination-icon{width:46px;height:46px;border-radius:12px;background:#e8edff;color:#3157d5;display:grid;place-items:center;font-weight:800;font-size:20px}.destination-body h3{margin:0 0 7px}.destination-body p{margin:8px 0 0}.destination-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.destination-fields{display:none}.mini-progress,.progress-large{background:#e8ecf3;border-radius:999px;overflow:hidden}.mini-progress{height:6px;min-width:90px}.mini-progress span,.progress-large span{display:block;height:100%;background:linear-gradient(90deg,#3157d5,#6985ea);transition:width .4s}.job-header{display:flex;justify-content:space-between;gap:20px}.job-header h2{margin:10px 0 4px}.job-header p{margin:0;color:var(--muted)}.progress-large{height:15px;margin-top:24px}.progress-meta{display:flex;gap:20px;justify-content:space-between;margin-top:10px;color:var(--muted);font-size:13px}.error-details{margin-top:18px;background:#fff1f2;border:1px solid #f0c6ca;border-radius:8px;padding:12px}.error-details pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(circle at 10% 10%,#e2eaff,transparent 34%),#f4f6fb;padding:20px}.login-card{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:0 20px 60px rgba(26,39,78,.13)}.login-brand{color:var(--text);margin-bottom:28px}.login-brand span{color:var(--muted)}.login-card h2{margin:0 0 6px}.login-card>p{color:var(--muted);line-height:1.5;margin-bottom:22px}.login-card .field{margin-bottom:15px}.confirm-field input{border-color:#d98a93;background:#fff8f9}.server-chip,.badge,.btn{white-space:nowrap}@media(max-width:1050px){.stats-grid{grid-template-columns:repeat(2,1fr)}.quick-actions{grid-template-columns:1fr}.two-column,.details-grid{grid-template-columns:1fr}.cards-grid{grid-template-columns:1fr}}@media(max-width:760px){.app-shell{display:block}.sidebar{position:relative;width:100%;height:auto}.sidebar nav{margin-top:20px;display:grid;grid-template-columns:1fr 1fr}.logout-form{margin-top:16px}.main-content{padding:20px 14px}.topbar{display:block}.server-chip{display:inline-block;margin-top:12px}.stats-grid{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.span-2{grid-column:span 1}.destination-card{grid-template-columns:45px 1fr}.destination-actions{grid-column:1/-1;justify-content:flex-start}.progress-meta{flex-direction:column;gap:5px}.job-header{display:block}.details-list{grid-template-columns:1fr}.details-list dd{margin-bottom:8px}}@media(max-width:440px){.stats-grid{grid-template-columns:1fr}.sidebar nav{grid-template-columns:1fr}}

/* Complete server image UI */
.scope-selector{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:22px}.scope-card{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--border);border-radius:14px;padding:16px;background:var(--surface-2);cursor:pointer}.scope-card:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 20%,transparent)}.scope-card input{margin-top:4px}.scope-card span{display:flex;flex-direction:column;gap:5px}.scope-card small,.disk-check-item small,.server-restore-summary small{color:var(--muted);line-height:1.45}.disk-check-list{display:grid;gap:10px;margin:10px 0}.disk-check-item{display:flex;align-items:flex-start;gap:12px;border:1px solid var(--border);border-radius:10px;padding:12px;background:var(--surface)}.disk-check-item input{margin-top:4px}.disk-check-item span{display:flex;flex-direction:column;gap:4px}.server-restore-summary{display:flex;flex-direction:column;gap:5px;border:1px solid var(--border);border-radius:12px;padding:14px;margin-bottom:14px;background:var(--surface-2)}.mapping-table select{min-width:280px}.hash-cell{max-width:260px;display:inline-block}.backup-scope-panel[hidden]{display:none!important}@media(max-width:800px){.scope-selector{grid-template-columns:1fr}.mapping-table select{min-width:210px}}
.nested-fields{display:grid;grid-template-columns:2fr 1fr;gap:14px;margin-top:16px;padding-top:16px;border-top:1px solid var(--border)}.info-box{border:1px solid var(--border);border-radius:12px;padding:14px 16px;background:var(--surface-2);margin-top:16px;line-height:1.55}.info-box strong{display:block;margin-bottom:4px}@media(max-width:800px){.nested-fields{grid-template-columns:1fr}}

/* Cloud OAuth destination setup */
.cloud-oauth-panel { align-items: start; }
.oauth-status-card {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.1rem;
  border: 1px solid var(--border, #d9e0ea);
  border-radius: 12px;
  background: #f7f9fc;
}
.oauth-status-card.connected { background: #f1fbf5; border-color: #b9e4c8; }
.oauth-status-card.not-connected { background: #fff9ed; border-color: #f1d8a1; }
.oauth-status-card p { margin: .35rem 0 .2rem; }
.oauth-provider-guide {
  border-left: 4px solid #4f6bed;
  border-radius: 8px;
  background: #f7f9ff;
  padding: 1rem 1.1rem;
}
.oauth-provider-guide ol { margin: .65rem 0 .65rem 1.2rem; padding: 0; }
.oauth-provider-guide li { margin: .35rem 0; }
.copy-row { display: flex; gap: .55rem; align-items: center; }
.copy-row input { flex: 1; font-family: ui-monospace, SFMono-Regular, Consolas, monospace; }
.oauth-management-panel {
  margin-top: 1rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
}
.oauth-management-panel h3 { margin: 0 0 .35rem; }
.oauth-management-panel p { margin: 0; }
.oauth-card-status { display: flex; flex-direction: column; gap: .4rem; margin-top: .7rem; }
@media (max-width: 760px) {
  .oauth-status-card, .oauth-management-panel, .copy-row { flex-direction: column; align-items: stretch; }
}

/* OAuth form validation hardening (v3.1) */
.validation-summary ul{margin:0;padding-left:20px}.validation-summary li{margin:4px 0}.validation-summary.validation-summary-valid{display:none}.field input:invalid:not(:placeholder-shown),.field select:invalid{border-color:#d94a59}.btn[disabled]{opacity:.7;cursor:wait}


/* Direct-to-destination and resumable backup UI (v4) */
.disk-check-item input[type=checkbox],.scope-card input[type=radio],.checkbox-field input[type=checkbox]{width:auto!important;height:auto!important;min-width:16px;min-height:16px;padding:0!important;box-shadow:none!important}
.scope-card{border-color:var(--line);background:#fff}.scope-card:has(input:checked){border-color:var(--primary);box-shadow:0 0 0 2px rgba(49,87,213,.14)}
.disk-check-item{border-color:var(--line);background:#fff}.nested-fields{border-top-color:var(--line)}
.compact-scope{margin:8px 0 12px}.three-columns{grid-template-columns:2fr 1fr 1.35fr}.success-box{margin-top:14px;padding:13px 15px;border-radius:9px;background:#eaf8f0;border:1px solid #bee6cf;color:#126943;font-size:13px;line-height:1.5}
.badge.paused{background:#fff0d8;color:#8b5700}.job-actions{display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}.part-count{font-weight:700;color:var(--primary)}
@media(max-width:900px){.three-columns{grid-template-columns:1fr}}
