.dashboard-shell{min-height:100vh;max-width:100vw;padding:1.5rem;overflow-x:hidden;box-sizing:border-box}.dashboard-grid{display:grid;gap:1.5rem}.card{background:#fff;border:1px solid rgba(148,163,184,.2);border-radius:18px;box-shadow:0 20px 50px #0f172a14;width:100%;max-width:100%;box-sizing:border-box;overflow:hidden}.card-header{padding:1rem 1.5rem;border-bottom:1px solid rgba(148,163,184,.2);display:flex;justify-content:space-between;align-items:center;gap:1rem}.card-body{padding:1.25rem 1.5rem 1.5rem;width:100%;box-sizing:border-box}.console-window{background-color:#000;color:#fff;font-family:JetBrains Mono,Courier New,monospace;font-size:.9rem;height:200px;overflow-y:auto;padding:1rem;border-radius:12px;border:1px solid rgba(148,163,184,.3)}.console-line{margin-bottom:.35rem;word-wrap:break-word;color:#fff}.console-line.info{color:#fff}.console-line.success{color:#22c55e}.console-line.warning{color:#fff}.console-line.error{color:#ef4444}.permission-matrix{width:max-content;min-width:100%;border-collapse:collapse;font-size:.78rem;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;table-layout:auto}.permission-matrix thead th{position:sticky;top:0;background:#f8fafc;z-index:5;text-align:center;padding:.45rem .35rem;border-right:1px solid rgba(226,232,240,.8);min-width:90px;font-size:.72rem}.permission-matrix thead th.cluster-header{background:#69a5b9;color:#fff;font-weight:600;font-size:.75rem;padding:.6rem .5rem;border-right:2px solid rgba(255,255,255,.3);z-index:7}.permission-matrix thead th.column-header-cell{background:#f8fafc;top:2.5rem;z-index:6}.permission-matrix thead th.column-header-cell.paired-column{top:2.5rem}.permission-matrix thead th.column-header-cell.paired-column{background:#f1f5f9}.permission-matrix thead th.column-header-cell.site-header{border-left:2px solid rgba(59,130,246,.4)}.permission-matrix thead th.column-header-cell.doc-header{border-right:2px solid rgba(59,130,246,.4)}.group-header{background:linear-gradient(120deg,#0f172a,#1e293b);color:#fff;font-weight:600}.permission-matrix tbody td{border:1px solid rgba(148,163,184,.15);padding:.2rem .35rem;text-align:center;background:#fff;height:auto}.permission-matrix tbody td.sticky{position:sticky;left:0;text-align:left;min-width:200px;max-width:200px;background:#f8fafc;font-weight:600;z-index:6;border-right:2px solid rgba(148,163,184,.3);box-shadow:4px 0 6px #0f172a1a;padding:.2rem .5rem}.permission-matrix thead th.sticky{position:sticky;left:0;z-index:10;box-shadow:4px 0 6px #0f172a26;background:linear-gradient(120deg,#0f172a,#1e293b)}.permission-matrix thead th.sticky.group-header{top:0}.permission-matrix thead th.cluster-header.sticky{left:200px;z-index:8}.sticky-group{background:#f1f5f9;border-right:2px solid rgba(148,163,184,.45);padding:.2rem .5rem!important}.group-name-header{font-weight:600;margin-bottom:.15rem;color:#0f172a;font-size:.85rem}.group-meta{display:flex;flex-wrap:wrap;gap:.3rem;align-items:center;margin-bottom:.35rem}.group-id-small{font-size:.75rem;color:#94a3b8}.group-tag{font-size:.7rem;padding:.1rem .5rem;border-radius:999px;background:#3b82f626;color:#1d4ed8}.action-buttons{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:.25rem}.action-button{border-radius:999px;border:1px solid rgba(59,130,246,.35);padding:.15rem .5rem;background:#fff;font-size:.65rem;cursor:pointer;transition:all .2s ease}.action-button:hover{background:#eff6ff}.action-button.ghost{border-color:#94a3b899;color:#475569}.action-button.danger{border-color:#ef444480;color:#b91c1c}.permission-cell{display:flex;align-items:center;justify-content:center}.matrix-checkbox-input{width:24px;height:24px;accent-color:#2563eb;cursor:pointer}.matrix-checkbox-input.pending{box-shadow:0 0 0 3px #3b82f640;border-radius:4px}.permission-toggle{width:100%;padding:.35rem .25rem;border-radius:8px;border:1px solid rgba(148,163,184,.5);background:#f1f5f9;color:#0f172a;font-size:.8rem;cursor:pointer;transition:all .2s ease}.permission-toggle.active-site{background:linear-gradient(120deg,#3b82f640,#60a5fa40);border-color:#3b82f6cc}.permission-toggle.active-doc{background:linear-gradient(120deg,#10b98140,#2dd4bf40);border-color:#10b981cc}.permission-toggle:disabled{opacity:.3;cursor:not-allowed}.checkbox-cell{text-align:center;min-width:82px;padding:.35rem}.site-column,.doc-column{background-color:#fff}.paired-cell,.paired-cell.site-column,.paired-cell.doc-column{background-color:#f4f7fb!important}.main-site-cell{background-color:#eef6ff;font-weight:600}.matrix-scroll-container{position:relative;overflow-x:auto;overflow-y:auto;max-height:calc(100vh - 400px);width:100%;max-width:100%;border-radius:16px;border:1px solid rgba(148,163,184,.25);background:#fff;overscroll-behavior-x:none;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch;scroll-padding-left:0;box-sizing:border-box}.column-header{display:flex;flex-direction:column;align-items:center;gap:.25rem}.column-title{display:flex;flex-direction:column;align-items:center;gap:.1rem}.inspector-trigger{border:none;background:#3b82f61f;color:#1d4ed8;border-radius:999px;font-size:.65rem;padding:.15rem .6rem;cursor:pointer;transition:background .15s ease}.inspector-trigger:hover{background:#3b82f640}.badge{display:inline-flex;align-items:center;gap:.25rem;border-radius:999px;padding:.15rem .75rem;font-size:.75rem;font-weight:600}.badge-primary{background:#3b82f626;color:#1d4ed8}.badge-info{background:#2dd4bf2e;color:#0f766e}.badge-ghost{display:inline-flex;align-items:center;background:#94a3b833;color:#475569;margin-left:.35rem;font-size:.7rem;padding:.1rem .5rem}.badge-success{background:#10b9812e;color:#047857}.badge-warning{background:#eab30833;color:#92400e}.button{border-radius:999px;border:1px solid rgba(59,130,246,.35);padding:.45rem 1.2rem;cursor:pointer;font-size:.9rem;transition:all .2s ease;background:linear-gradient(130deg,#3b82f6,#60a5fa);color:#fff}.button.secondary{background:#fff;border-color:#94a3b899;color:#334155}.job-queue{display:flex;flex-direction:column;gap:.6rem}.job-queue-actions{display:flex;flex-wrap:wrap;gap:.4rem}.queue-action-button{border-radius:999px;border:1px solid rgba(148,163,184,.6);background:#fff;color:#475569;font-size:.75rem;padding:.2rem .75rem;cursor:pointer;transition:background .2s ease}.queue-action-button:hover{background:#e2e8f0}.queue-action-button:disabled{opacity:.4;cursor:not-allowed}.queue-action-button.danger{border-color:#f8717180;color:#b91c1c}.job-card{border:1px solid rgba(148,163,184,.3);border-radius:12px;padding:.65rem .8rem;background:#fdfdfd}.job-card .job-meta{margin:.35rem 0;display:flex;flex-direction:column;gap:.1rem;color:#0f172a}.job-card-actions{margin-top:.4rem;display:flex;gap:.35rem}.status-pill{border-radius:999px;padding:.1rem .6rem;font-size:.75rem;text-transform:uppercase}.status-pill.pending{background:#facc1526;color:#b45309}.status-pill.success{background:#10b98133;color:#15803d}.status-pill.error{background:#f8717133;color:#b91c1c}.matrix-summary{display:flex;gap:1rem;flex-wrap:wrap}.summary-tile{flex:1;min-width:180px;background:#fff;border:1px solid rgba(148,163,184,.25);border-radius:14px;padding:1rem;box-shadow:0 10px 25px #0f172a14}.summary-tile strong{display:block;font-size:1.8rem;margin-bottom:.25rem}.charin-login-page{min-height:100vh;margin:0;padding:32px 16px;box-sizing:border-box;background:radial-gradient(circle at top left,rgba(154,203,59,.12),transparent 55%),radial-gradient(circle at bottom right,#004b612e,#f4f7fa 65%);display:flex;align-items:center;justify-content:center;font-family:var(--charin-font-sans);color:var(--charin-color-text)}.charin-login-card{width:100%;max-width:440px;background:var(--charin-color-surface);border-radius:24px;box-shadow:var(--charin-shadow-soft);padding:32px 32px 28px;box-sizing:border-box;border:1px solid rgba(255,255,255,.6)}.charin-login-header{display:flex;flex-direction:column;align-items:center;gap:16px;margin-bottom:32px}.charin-logo{width:120px;height:auto;display:block}.charin-login-subtitle{font-size:.95rem;color:var(--charin-color-text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.1em;text-align:center}.charin-login-form{display:flex;flex-direction:column;gap:16px}.charin-field{display:flex;flex-direction:column;gap:6px}.charin-input{border-radius:var(--charin-radius-md);border:1px solid var(--charin-color-border);padding:12px 14px;font-size:.95rem;outline:none;background-color:#f9fbfd;color:var(--charin-color-text);transition:border-color .18s ease,box-shadow .18s ease,background-color .18s ease;font-family:var(--charin-font-sans)}.charin-input::placeholder{color:#9aa7b4}.charin-input:focus{border-color:var(--charin-color-primary-light);background-color:#fff;box-shadow:0 0 0 1px #004b611a}.charin-input:disabled{background-color:#f0f0f0;cursor:not-allowed;opacity:.6}.charin-field-error .charin-input{border-color:var(--charin-color-error);box-shadow:0 0 0 1px #c6282826}.charin-error-text{font-size:.8rem;color:var(--charin-color-error)}.charin-login-actions{margin-top:10px;display:flex;flex-direction:column;gap:10px}.charin-btn-primary{border:none;border-radius:var(--charin-radius-pill);padding:12px 20px;font-size:.95rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;background:linear-gradient(135deg,var(--charin-color-primary),#013246);color:#fff;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 10px 25px #004b6159;transition:transform .12s ease,box-shadow .12s ease,background .18s ease;font-family:var(--charin-font-sans)}.charin-btn-primary:hover:not(:disabled){background:linear-gradient(135deg,var(--charin-color-primary-light),#013d54);transform:translateY(-1px);box-shadow:0 14px 32px #004b6166}.charin-btn-primary:active:not(:disabled){transform:translateY(0);box-shadow:0 6px 18px #004b6159}.charin-btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.charin-alert{padding:.75rem 1rem;border-radius:var(--charin-radius-md);font-size:.85rem;font-weight:500}.charin-alert-error{background:#c628281a;border:1px solid rgba(198,40,40,.3);color:var(--charin-color-error)}.charin-alert-locked{background:#c6282826;border:1px solid rgba(198,40,40,.4);color:var(--charin-color-error);font-weight:600}.alert{padding:.65rem .9rem;border-radius:12px;font-size:.85rem}.alert.error{background:#f8717126;border:1px solid rgba(248,113,113,.4);color:#b91c1c}.alert.success{background:#22c55e26;border:1px solid rgba(34,197,94,.4);color:#15803d}@media(max-width:480px){.charin-login-card{padding:24px 20px 22px;border-radius:20px}.charin-logo{width:100px}}.modal-backdrop{position:fixed;inset:0;background:#0f172a8c;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:999}.modal-card{width:min(640px,95vw);background:#fff;border-radius:18px;box-shadow:0 30px 70px #0f172a40;border:1px solid rgba(148,163,184,.25);max-height:90vh;display:flex;flex-direction:column}.modal-header{padding:1rem 1.25rem;border-bottom:1px solid rgba(148,163,184,.25);display:flex;justify-content:space-between;align-items:center}.modal-close{border:none;background:transparent;font-size:1.5rem;cursor:pointer;color:#475569}.modal-body{padding:1rem 1.25rem 1.5rem;overflow-y:auto}.modal-list{list-style:none;padding:0;margin:1rem 0 0;display:flex;flex-direction:column;gap:.65rem}.modal-list-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem .5rem;border-bottom:1px solid rgba(148,163,184,.2)}.modal-list-item small{display:block;color:#94a3b8}.text-muted{color:#94a3b8}.checkpoint-layout{display:flex;gap:1rem;flex-wrap:wrap}.checkpoint-list{flex:1;min-width:240px;max-height:320px;overflow-y:auto;border:1px solid rgba(148,163,184,.2);border-radius:12px;background:#f8fafc;padding:.5rem}.checkpoint-list ul{list-style:none;padding:0;margin:0}.checkpoint-item{display:flex;justify-content:space-between;align-items:center;padding:.65rem .5rem;border-radius:10px;cursor:pointer;transition:background .2s ease,border .2s ease}.checkpoint-item:hover{background:#3b82f614}.checkpoint-item.active{background:#3b82f626;border:1px solid rgba(59,130,246,.35)}.checkpoint-item small{display:block;color:#94a3b8}.checkpoint-meta{display:flex;flex-direction:column;text-align:right;gap:.2rem;font-size:.75rem;color:#475569}.checkpoint-detail-panel{flex:2;min-width:260px;border:1px solid rgba(148,163,184,.2);border-radius:12px;padding:1rem;background:#fff;display:flex;flex-direction:column;gap:.75rem}.checkpoint-detail-panel dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.5rem;margin:0}.checkpoint-detail-panel dt{font-size:.75rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em}.checkpoint-detail-panel dd{margin:0;font-weight:600}.checkpoint-warnings{border-left:3px solid rgba(234,179,8,.6);padding-left:.75rem}.checkpoint-warnings ul{margin:.25rem 0 0;padding-left:1.2rem;color:#92400e;font-size:.85rem}.admin-actions{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.admin-actions .action-button{flex:0 1 auto;min-width:auto}.snapshot-meta{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.snapshot-meta a{color:#2563eb;text-decoration:none;word-break:break-all}.snapshot-section{margin-bottom:1rem}.snapshot-table{width:100%;border-collapse:collapse;font-size:.82rem}.snapshot-table th,.snapshot-table td{text-align:left;padding:.4rem .35rem;border-bottom:1px solid rgba(148,163,184,.3)}.snapshot-warning{border-left:3px solid rgba(248,113,113,.7);background:#f8717114;padding:.6rem .75rem;border-radius:10px;margin-bottom:.85rem}.snapshot-warning ul{margin:.3rem 0 0;padding-left:1.2rem;color:#b91c1c;font-size:.85rem}.snapshot-group-list{display:flex;flex-direction:column;gap:.8rem}.snapshot-group-card{border:1px solid rgba(148,163,184,.3);border-radius:12px;padding:.75rem;background:#f8fafc}.snapshot-group-heading{display:flex;justify-content:space-between;align-items:center;gap:.5rem;flex-wrap:wrap}.snapshot-group-name{font-size:.75rem;color:#64748b}.snapshot-group-counts{display:flex;gap:.75rem;font-size:.75rem;color:#475569}.snapshot-chip-row{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.snapshot-chip{font-size:.72rem;padding:.15rem .55rem;border-radius:999px;background:#94a3b84d;color:#1e293b}.snapshot-chip.sec{background:#10b98133;color:#047857;font-weight:600}:root{color-scheme:light;font-family:Inter,Segoe UI,system-ui,sans-serif;line-height:1.5;font-weight:400;color:#0f172a;background-color:#f5f6fb;--charin-color-primary: #004b61;--charin-color-primary-light: #0b6f8a;--charin-color-accent-green: #9acb3b;--charin-color-bg: #f4f7fa;--charin-color-surface: #ffffff;--charin-color-border: #d5dde5;--charin-color-text: #123446;--charin-color-text-muted: #5b6c7a;--charin-color-error: #c62828;--charin-radius-md: 8px;--charin-radius-lg: 16px;--charin-radius-pill: 999px;--charin-shadow-soft: 0 18px 45px rgba(0, 0, 0, .07);--charin-font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", sans-serif}body{margin:0;min-height:100vh;background:#f5f6fb}.app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:#334155}button{font-family:inherit}*{box-sizing:border-box}body,#root{margin:0;min-height:100vh}a{color:inherit}
