:root{--color-primary: #2563eb;--color-primary-dark: #1d4ed8;--color-success: #22c55e;--color-warning: #f59e0b;--color-error: #ef4444;--color-bg: #f8fafc;--color-surface: #ffffff;--color-border: #e2e8f0;--color-text: #1e293b;--color-text-muted: #64748b;--radius: 8px;--shadow: 0 1px 3px rgba(0, 0, 0, .1);--shadow-lg: 0 4px 6px rgba(0, 0, 0, .1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--color-bg);color:var(--color-text);line-height:1.5}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100vh;gap:1rem}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}button{padding:.5rem 1rem;font-size:.875rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);cursor:pointer;transition:all .15s ease}button:hover:not(:disabled):not(.primary):not(.deploy-btn){background:var(--color-bg)}button.primary{background:var(--color-primary);border-color:var(--color-primary);color:#fff}button.primary:hover:not(:disabled){background:var(--color-primary-dark)}input,select,textarea{padding:.5rem .75rem;font-size:.875rem;border:1px solid var(--color-border);border-radius:var(--radius);background:var(--color-surface);width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a}label{display:block;font-size:.875rem;font-weight:500;margin-bottom:.25rem;color:var(--color-text)}.form-group{margin-bottom:1rem}.form-error{color:var(--color-error);font-size:.875rem;margin-top:.5rem}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:2rem}.login-container{width:100%;max-width:400px}.login-header{text-align:center;margin-bottom:2rem}.login-header h1{font-size:1.75rem;margin-bottom:.5rem}.login-header p{color:var(--color-text-muted)}.login-form{background:var(--color-surface);padding:2rem;border-radius:var(--radius);box-shadow:var(--shadow-lg)}.login-form button{width:100%;margin-top:.5rem}.login-hint{text-align:center;margin-top:1rem;font-size:.75rem;color:var(--color-text-muted)}.dashboard{min-height:100vh;display:flex;flex-direction:column}.dashboard-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.header-left{display:flex;align-items:center;gap:1rem}.header-left h1{font-size:1.25rem}.org-badge{font-size:.75rem;padding:.25rem .5rem;background:var(--color-bg);border-radius:var(--radius);color:var(--color-text-muted)}.header-right{display:flex;align-items:center;gap:1rem}.user-info{font-size:.875rem;color:var(--color-text-muted)}.logout-btn{font-size:.75rem;padding:.375rem .75rem}.dashboard-toolbar{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.filter-group{display:flex;align-items:center;gap:.5rem}.filter-group label{margin-bottom:0;font-size:.875rem}.filter-group select{width:auto}.deploy-error-banner{display:flex;justify-content:space-between;align-items:center;padding:.75rem 2rem;background:#ef44441a;border-bottom:1px solid var(--color-error);color:var(--color-error);font-size:.875rem}.deploy-error-banner button{background:none;border:none;color:var(--color-error);font-size:1.25rem;padding:0;cursor:pointer}.dashboard-panels{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;padding:1.5rem 2rem;flex:1}@media (max-width: 768px){.dashboard-panels{grid-template-columns:1fr}}.panel{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;max-height:calc(100vh - 180px)}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:1rem;border-bottom:1px solid var(--color-border)}.panel-header h2{font-size:1rem;font-weight:600}.refresh-btn{font-size:.75rem;padding:.25rem .5rem}.sentinel-list,.obligation-list{flex:1;overflow-y:auto;padding:.5rem}.sentinel-item,.obligation-item{padding:1rem;border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:.5rem;cursor:pointer;transition:all .15s ease}.sentinel-item:hover,.obligation-item:hover{border-color:var(--color-primary)}.obligation-item:has(.deploy-btn:hover){border-color:var(--color-border)}.sentinel-item.selected,.obligation-item.selected{border-color:var(--color-primary);background:#2563eb0d}.sentinel-header,.obligation-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.sentinel-name,.obligation-name{font-weight:600;font-size:.875rem}.sentinel-path,.obligation-path{font-size:.75rem;color:var(--color-text-muted);font-family:monospace}.sentinel-meta,.obligation-meta{display:flex;align-items:center;gap:.5rem;margin-top:.5rem}.obligation-description{font-size:.75rem;color:var(--color-text-muted);margin-top:.5rem}.status-badge{font-size:.625rem;font-weight:600;text-transform:uppercase;padding:.125rem .375rem;border-radius:4px}.region-badge{font-size:.625rem;font-weight:600;padding:.125rem .375rem;background:var(--color-bg);border-radius:4px;color:var(--color-text-muted)}.deployed-badge{font-size:.625rem;font-weight:600;padding:.125rem .375rem;border-radius:4px}.deployed-badge.deployed{background:var(--color-success);color:#fff}.deployed-badge.pending{background:var(--color-warning);color:#fff}.version{font-size:.625rem;color:var(--color-text-muted)}.deploy-btn{font-size:.75rem;padding:.375rem .875rem;background:var(--color-primary);color:#fff;border:none;cursor:pointer;font-weight:500}.deploy-btn:hover{background:var(--color-primary-dark);color:#fff}.empty-state{padding:2rem;text-align:center;color:var(--color-text-muted)}.empty-state .hint{font-size:.75rem;margin-top:.5rem}.loading,.error{padding:2rem;text-align:center}.error{color:var(--color-error)}.obligation-detail{display:flex;flex-direction:column;height:100%}.detail-header{display:flex;align-items:center;gap:.75rem;padding:1rem;border-bottom:1px solid var(--color-border)}.detail-header h2{font-size:1rem;font-weight:600}.back-btn{background:none;border:none;font-size:1.25rem;padding:.25rem .5rem;color:var(--color-text-muted);line-height:1}.back-btn:hover{color:var(--color-text);background:var(--color-bg)}.detail-body{flex:1;overflow-y:auto;padding:1rem}.detail-badges{display:flex;gap:.5rem;margin-bottom:1rem}.detail-section{margin-bottom:1rem}.detail-label{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin-bottom:.25rem}.detail-path{display:block;font-size:.8125rem;padding:.375rem .5rem;background:var(--color-bg);border-radius:4px;word-break:break-all}.detail-text{font-size:.875rem;color:var(--color-text);line-height:1.5}.regulatory-text{font-size:.8125rem;line-height:1.6;padding:.75rem;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);white-space:pre-wrap;max-height:300px;overflow-y:auto}.detail-meta{display:flex;gap:1.5rem;margin-bottom:1rem}.meta-item{display:flex;flex-direction:column}.meta-item span{font-size:.8125rem}.related-sentinel{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--color-bg);border-radius:var(--radius)}.detail-actions{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--color-border)}.detail-actions .deploy-btn{padding:.5rem 1.25rem;border-radius:var(--radius)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;padding:2rem;z-index:100}.modal{background:var(--color-surface);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:100%;max-width:500px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 1.5rem;border-bottom:1px solid var(--color-border)}.modal-header h2{font-size:1.125rem}.close-btn{background:none;border:none;font-size:1.5rem;line-height:1;padding:.25rem;color:var(--color-text-muted)}.close-btn:hover{color:var(--color-text)}.modal-body{padding:1.5rem}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;padding:1rem 1.5rem;border-top:1px solid var(--color-border)}.deployment-modal{max-width:600px}.deployment-progress{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1.5rem}.progress-step{display:flex;align-items:center;gap:.75rem;padding:.5rem;border-radius:var(--radius);background:var(--color-bg)}.progress-step.complete{background:#22c55e1a}.progress-step.current{background:#2563eb1a;border:1px solid var(--color-primary)}.progress-step.failed{background:#ef44441a;border:1px solid var(--color-error)}.step-indicator{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-border);font-size:.75rem}.progress-step.complete .step-indicator{background:var(--color-success);color:#fff}.progress-step.current .step-indicator{background:var(--color-primary);color:#fff}.progress-step.failed .step-indicator{background:var(--color-error);color:#fff}.step-indicator .spinner{width:14px;height:14px;border-width:2px;border-color:#fff;border-top-color:transparent}.step-indicator .dot{width:6px;height:6px;border-radius:50%;background:var(--color-text-muted)}.step-label{font-size:.875rem;font-weight:500}.current-step-detail{font-size:.875rem;padding:.75rem;background:var(--color-bg);border-radius:var(--radius);margin-bottom:1rem}.deployment-error{padding:1rem;background:#ef44441a;border:1px solid var(--color-error);border-radius:var(--radius);color:var(--color-error);font-size:.875rem}.deployment-success{padding:1rem;background:#22c55e1a;border:1px solid var(--color-success);border-radius:var(--radius);color:var(--color-success);text-align:center}.test-results{margin-top:1rem}.test-results h3{font-size:.875rem;margin-bottom:.5rem}.test-results ul{list-style:none}.test-results li{display:flex;align-items:center;gap:.5rem;padding:.5rem;font-size:.875rem}.test-results li.passed{color:var(--color-success)}.test-results li.failed{color:var(--color-error)}.test-status{font-weight:700}.test-error{font-size:.75rem;margin-left:auto;color:var(--color-error)}:root{font-family:Space Grotesk,system-ui,sans-serif;line-height:1.5;font-weight:400;color:#111827;background:#f8fafc}body{margin:0}.page{min-height:100vh;padding:64px 24px;max-width:960px;margin:0 auto}.panel{margin-top:32px;padding:24px;background:#fff;border-radius:16px;box-shadow:0 10px 30px #0f172a14}button{margin-top:16px;padding:12px 18px;background:#111827;color:#fff;border:none;border-radius:10px;cursor:pointer}button:hover{opacity:.9}button:disabled{opacity:.5;cursor:not-allowed}h2{margin-top:0;margin-bottom:16px;font-size:1.25rem;font-weight:600}.status-grid{display:grid;gap:12px;margin-bottom:16px}.status-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.status-item.full-width{flex-direction:column;align-items:flex-start;gap:8px}.status-label{font-weight:500;color:#64748b}.status-value{font-weight:600;color:#111827}.status-badge{padding:4px 12px;border-radius:6px;font-size:.875rem;font-weight:600}.status-ok{background:#dcfce7;color:#166534}.status-error{background:#fee2e2;color:#991b1b}.status-error p{margin:4px 0;color:#991b1b}
