:root{--color-primary: #4361ee;--color-primary-light: #f0f4ff;--color-primary-border: #c5cff5;--color-success: #28a745;--color-warning: #ffc107;--color-warning-text: #856404;--color-warning-bg: #fff3cd;--color-danger: #dc3545;--color-surface: #ffffff;--color-surface-muted: #f8f9fa;--color-border: #dee2e6;--color-border-light: #e9ecef;--color-text: #212529;--color-text-muted: #666;--color-text-faint: #999;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 24px;--space-6: 32px;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-pill: 12px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:#f5f5f7;color:#222;line-height:1.5}.app-layout{display:flex;min-height:100vh}.sidebar{width:240px;background:#1a1a2e;color:#fff;display:flex;flex-direction:column;padding:1rem 0;flex-shrink:0}.sidebar-brand{font-size:1.25rem;font-weight:700;padding:.5rem 1.25rem 1.5rem;letter-spacing:.05em}.sidebar nav{display:flex;flex-direction:column;gap:2px}.sidebar nav a{color:#ccc;text-decoration:none;padding:.6rem 1.25rem;font-size:.9rem;transition:background .15s ease-out,color .15s ease-out}.sidebar nav a:hover{background:#16213e;color:#fff}.sidebar nav a.active{background:#16213e;color:#fff;border-left:3px solid #4361ee;padding-left:calc(1.25rem - 3px)}.main-area{flex:1;display:flex;flex-direction:column}.top-bar{height:52px;background:#fff;border-bottom:1px solid #ddd;display:flex;align-items:center;justify-content:flex-end;padding:0 1.5rem;gap:1rem}.top-bar span{font-size:.85rem;color:#666}.page-content{flex:1;padding:2rem;max-width:1320px}input,select,textarea{font:inherit;padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;width:100%;transition:border-color .15s ease-out,box-shadow .15s ease-out}input,select{max-width:400px}textarea{max-width:100%;resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:#4361ee;box-shadow:0 0 0 3px #4361ee1f}label{display:block;margin-bottom:.25rem;font-weight:500;font-size:.9rem}.form-group{margin-bottom:1rem}button,.btn{font:inherit;cursor:pointer;padding:.5rem 1.25rem;border:none;border-radius:4px;font-size:.9rem;background:#4361ee;color:#fff;transition:background .15s ease-out,transform .1s ease-out}button:hover{background:#3a56d4}button:active{transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}.btn-secondary{background:#6c757d}.btn-secondary:hover{background:#5a6268}.btn-danger{background:#dc3545}.btn-danger:hover{background:#c82333}.btn-sm{padding:.3rem .75rem;font-size:.8rem}table{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden}th,td{padding:.55rem .85rem;text-align:left;border-bottom:1px solid #e9eef5}th{background:#f1f5f9;font-weight:600;font-size:.75rem;color:#475569;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid #e2e8f0}thead tr{border-bottom:2px solid #e2e8f0}tbody tr:nth-child(2n){background:#f8fafc}tbody tr{transition:background .1s ease-out}tbody tr:hover{background:#eff6ff}.row-item{padding:.6rem .75rem;border-bottom:1px solid #e9eef5;background:#fff}.row-item:nth-child(2n){background:#f8fafc}.row-item:last-child{border-bottom:none}.row-item:hover{background:#f0f9ff}.card-inner{background:#f8fafc;border:1px solid #e2e8f0;border-radius:6px;padding:.85rem 1rem;margin-bottom:.5rem}.card-inner:last-child{margin-bottom:0}.badge{display:inline-block;padding:.15rem .6rem;border-radius:10px;font-size:.75rem;font-weight:600}.badge-success{background:#d4edda;color:#155724}.badge-warning{background:#fff3cd;color:#856404}.badge-error{background:#f8d7da;color:#721c24}.card{background:#fff;border-radius:8px;padding:1.5rem;box-shadow:0 2px 8px #00000014,0 1px 2px #0000000d;border:1px solid #e2e8f0;margin-bottom:1.5rem}.login-wrapper{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#1a1a2e}.login-card{background:#fff;border-radius:8px;padding:2.5rem;width:100%;max-width:380px}.login-card h1{margin-bottom:1.5rem;font-size:1.5rem}.step-indicator{display:flex;gap:.5rem;margin-bottom:2rem;flex-wrap:wrap}.step-dot{width:28px;height:28px;border-radius:50%;border:2px solid #ccc;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:600;transition:background .2s ease-out,border-color .2s ease-out}.step-dot.active{border-color:#4361ee;background:#4361ee;color:#fff}.step-dot.done{border-color:#28a745;background:#28a745;color:#fff}.error-msg{color:#dc3545;font-size:.85rem;margin-bottom:1rem}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem}.tag{display:inline-flex;align-items:center;gap:.3rem;background:#e8eaf6;color:#3949ab;border-radius:12px;padding:.2rem .6rem;font-size:.8rem;font-weight:500}.tag-readonly{background:#f0f0f0;color:#555}.tag-remove{background:none;border:none;color:inherit;cursor:pointer;padding:0;font-size:1rem;line-height:1;opacity:.7;transition:opacity .1s ease-out}.tag-remove:hover{opacity:1;background:none}h1{font-size:1.6rem;margin-bottom:1rem}h2{font-size:1.2rem;margin-bottom:.75rem}p{margin-bottom:.75rem}.mt-1{margin-top:1rem}.flex-gap{display:flex;gap:.75rem}@keyframes spin{to{transform:rotate(360deg)}}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;vertical-align:middle}.spinner-dark{border-color:#00000026;border-top-color:#555}.page-content{animation:page-fade-in .2s cubic-bezier(.16,1,.3,1) both}.dr-metric-label{font-size:.7rem;color:#adb5bd;margin-bottom:.15rem}.dr-metric-sublabel{font-size:.65rem;color:#ced4da;margin-top:.1rem;line-height:1.3}.dr-metric-value{font-size:1.1rem;font-weight:700;color:#212529}.dr-metric-value--warn{color:#fd7e14}.dr-metric-value--danger{color:#dc3545}.dr-headroom-row{display:flex;gap:1.5rem;flex-wrap:wrap;padding-top:.5rem;font-size:.82rem;color:#495057}.dr-headroom-item{display:flex;flex-direction:column;gap:.1rem}.dr-headroom-label{font-size:.7rem;color:#adb5bd}.import-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.import-modal{background:#1a1d26;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:2rem;max-width:540px;width:100%;color:#e8eaf0}.import-modal h2{margin:0 0 .25rem;color:#fff;font-size:1.2rem}.import-modal .form-group label{color:#ccc}.import-modal input[type=url],.import-modal input[type=text],.import-modal select{background:#0d1117;border:1px solid rgba(255,255,255,.15);color:#e8eaf0;max-width:100%;width:100%}.import-modal input:focus,.import-modal select:focus{border-color:#4361ee;box-shadow:0 0 0 3px #4361ee2e}.import-modal-mode-options{display:flex;flex-direction:column;gap:.5rem;margin-top:.35rem}.import-modal-mode-option{display:flex;align-items:flex-start;gap:.5rem;cursor:pointer;font-size:.9rem;color:#ccc}.import-modal-mode-option input[type=radio]{margin-top:.15rem;width:auto;flex-shrink:0}.import-modal-mode-hint{font-size:.78rem;color:#888;margin-top:.5rem;padding:.5rem .75rem;background:#ffffff0a;border-radius:4px;border-left:2px solid rgba(67,97,238,.4);line-height:1.5}.import-modal-actions{display:flex;gap:.75rem;margin-top:1.25rem}.import-modal-error{margin-top:.75rem;padding:.5rem .75rem;background:#e74c3c1a;border:1px solid rgba(231,76,60,.3);border-radius:4px;font-size:.82rem;color:#e74c3c}.import-progress{margin-top:1rem}.import-progress-url{font-size:.82rem;color:#888;word-break:break-all;margin-bottom:.5rem}.import-progress-mode{font-size:.78rem;color:#666;margin-bottom:1rem}.import-stage-row{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem}.import-stage-label{font-size:.88rem;color:#ccc}.import-progress-bar-track{height:6px;background:#ffffff1a;border-radius:3px;overflow:hidden;margin-bottom:.35rem}.import-progress-bar-fill{height:100%;background:#4361ee;border-radius:3px;transition:width .4s ease}.import-progress-pct{font-size:.75rem;color:#666;margin-bottom:1rem}.import-page-type{font-size:.82rem;color:#aab;margin-bottom:.75rem}.import-complete{display:flex;align-items:center;gap:.5rem;font-size:.95rem;color:#27ae60;margin-bottom:.75rem}.import-failed{display:flex;align-items:center;gap:.5rem;font-size:.95rem;color:#e74c3c;margin-bottom:.75rem}.import-failed-reason{font-size:.82rem;color:#e74c3c;margin-bottom:.75rem}.import-source-badge{display:inline-block;font-size:.68rem;font-weight:600;color:#0d6efd;background:#e7f1ff;border:1px solid #90bfff;border-radius:4px;padding:.1rem .4rem}.dr-headroom-value{font-weight:600}.dr-headroom-value--ok{color:#198754}.dr-headroom-value--over{color:#dc3545}.dr-staleness-note{margin-top:.6rem;font-size:.78rem;color:#fd7e14;padding:.3rem .6rem;background:#fff3cd;border-radius:4px;border:1px solid #ffc107}.dr-execute-section{background:#fff;border:1px solid #e9ecef;border-radius:8px;padding:1rem 1.25rem;margin-bottom:1.25rem}.dr-execute-section-header{font-size:.78rem;font-weight:600;color:#888;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.75rem}.dr-execute-callout{background:#f8f9fa;border:1px solid #dee2e6;border-radius:6px;padding:.6rem .85rem;font-size:.82rem;color:#495057;margin-bottom:.85rem;line-height:1.5}.dr-execute-summary{font-size:.85rem;color:#333;margin-bottom:.75rem}.dr-execute-summary ul{list-style:disc;padding-left:1.25rem;margin:.35rem 0;line-height:1.8}.dr-execute-summary .dr-execute-net{margin-top:.4rem;font-weight:600;color:#212529}.dr-execute-actions{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:.75rem}.dr-execute-apply-btn{padding:.4rem 1rem;border-radius:4px;border:1px solid #dee2e6;background:#e9ecef;color:#adb5bd;font-size:.82rem;font-weight:600;cursor:not-allowed}.dr-execute-cycle-link{font-size:.82rem;color:#4361ee;text-decoration:none;font-weight:500}.dr-execute-cycle-link:hover{text-decoration:underline}.dr-execute-disclaimer{font-size:.78rem;color:#6c757d;margin-top:.5rem;line-height:1.5}.dr-execute-none-yet{display:block;color:#888;margin-top:.25rem}.dr-execute-actions--mt{margin-top:.5rem}.dr-execute-coming-soon{font-size:.82rem;color:#adb5bd}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
