*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.6;color:#333;background:#f5f5f5}.container{max-width:1200px;margin:0 auto;padding:2rem}.header{background:#2c3e50;color:white;padding:1.5rem 2rem;margin-bottom:2rem}.header h1{margin-bottom:.5rem}.nav{display:flex;gap:1rem;margin-top:1rem}.nav a{color:#3498db;text-decoration:none;padding:.5rem 1rem;background:white;border-radius:4px;transition:background .2s}.nav a:hover{background:#ecf0f1}.card{background:white;border-radius:8px;padding:1.5rem;margin-bottom:1.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1)}.card h2{margin-bottom:1rem;color:#2c3e50}.node-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(350px,1fr));grid-gap:1.5rem;gap:1.5rem;margin-top:2rem}.node-card{background:white;border-radius:8px;padding:1.5rem;box-shadow:0 2px 4px rgba(0,0,0,.1);border-left:4px solid #95a5a6}.node-card.active{border-left-color:#27ae60}.node-card.offline{border-left-color:#e74c3c}.node-card.maintenance{border-left-color:#f39c12}.node-card.draining{border-left-color:#3498db}.node-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.node-name{font-size:1.25rem;font-weight:700;color:#2c3e50}.status-badge{padding:.25rem .75rem;border-radius:12px;font-size:.875rem;font-weight:500;text-transform:uppercase}.status-badge.active{background:#d4edda;color:#155724}.status-badge.offline{background:#f8d7da;color:#721c24}.status-badge.maintenance{background:#fff3cd;color:#856404}.status-badge.draining{background:#d1ecf1;color:#0c5460}.node-info{margin-bottom:1rem}.info-row{display:flex;justify-content:space-between;padding:.5rem 0;border-bottom:1px solid #ecf0f1}.info-label{font-weight:500;color:#7f8c8d}.node-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:1rem}.btn{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-size:.875rem;font-weight:500;transition:all .2s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#3498db;color:white}.btn-primary:hover:not(:disabled){background:#2980b9}.btn-success{background:#27ae60;color:white}.btn-success:hover:not(:disabled){background:#229954}.btn-warning{background:#f39c12;color:white}.btn-warning:hover:not(:disabled){background:#e67e22}.btn-danger{background:#e74c3c;color:white}.btn-danger:hover:not(:disabled){background:#c0392b}.btn-secondary{background:#95a5a6;color:white}.btn-secondary:hover:not(:disabled){background:#7f8c8d}.form-group{margin-bottom:1.5rem}.form-group label{display:block;margin-bottom:.5rem;font-weight:500;color:#2c3e50}.form-group input,.form-group select{width:100%;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#3498db}.form-group small{display:block;margin-top:.25rem;color:#7f8c8d;font-size:.875rem}.error{color:#e74c3c}.error,.success{font-size:.875rem;margin-top:.5rem}.success{color:#27ae60}.loading{padding:2rem}.empty-state,.loading{text-align:center;color:#7f8c8d}.empty-state{padding:3rem}.empty-state h3{margin-bottom:1rem;color:#95a5a6}.metrics{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.5rem;gap:.5rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #ecf0f1}.metric{font-size:.875rem}.metric-label{color:#7f8c8d}.metric-value{font-weight:600;color:#2c3e50}.progress-bar{width:100%;height:8px;background:#ecf0f1;border-radius:4px;overflow:hidden;margin-top:.5rem}.progress-fill{height:100%;background:#3498db;transition:width .3s}.progress-fill.high{background:#e74c3c}.progress-fill.medium{background:#f39c12}.progress-fill.low{background:#27ae60}.header-top{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;flex-wrap:wrap}.header-user{display:flex;align-items:center;gap:1rem;font-size:.875rem;color:#ecf0f1}.container.narrow{max-width:720px}.card h3{margin:1.5rem 0 .5rem;color:#2c3e50;font-size:1.05rem}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:2rem 1rem;background:#2c3e50}.auth-card{width:100%;max-width:420px;background:white;border-radius:8px;padding:2rem;box-shadow:0 8px 24px rgba(0,0,0,.2)}.auth-card.wide{max-width:560px}.auth-brand{font-size:.8rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#3498db;margin-bottom:.5rem}.auth-card h1{font-size:1.5rem;color:#2c3e50;margin-bottom:.25rem}.auth-subtitle{color:#7f8c8d;margin-bottom:1.5rem}.auth-card .error,.auth-card .success,.card .error,.card .success{border-radius:4px;padding:.75rem 1rem;margin:0 0 1rem}.auth-card .error,.card .error{background:#fdecea;color:#a93226}.auth-card .success,.card .success{background:#e9f7ef;color:#1e8449}.error ul{margin-left:1.25rem}.auth-links{margin-top:1rem;text-align:center;font-size:.875rem}.auth-links a{color:#3498db}.auth-loading{min-height:60vh;display:flex;align-items:center;justify-content:center;color:#7f8c8d}.btn-block{width:100%;padding:.75rem 1rem;font-size:1rem}.button-row{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.5rem}.link-button{display:block;margin:1rem auto 0;background:none;border:none;color:#3498db;font-size:.875rem;cursor:pointer}.link-button:hover{text-decoration:underline}.link-button.light{display:inline;margin:0;color:#ecf0f1}.small{font-size:.875rem;color:#7f8c8d;margin-bottom:1rem}.form-group input.mono,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em}.mfa-digits{display:flex;justify-content:center;gap:.5rem;margin:1rem 0}.mfa-digits input{width:3rem;height:3.5rem;text-align:center;font-size:1.5rem;font-weight:600;border:2px solid #ddd;border-radius:6px}.mfa-digits input:focus{outline:none;border-color:#3498db}.mfa-digits input:disabled{background:#f5f5f5}.mfa-steps{margin:0 0 0 1.25rem}.mfa-steps li{margin-bottom:1.5rem}.qr-code{display:flex;justify-content:center;align-items:center;min-height:236px;margin:1rem 0;border:1px solid #eee;border-radius:6px;color:#7f8c8d}.secret{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#f5f5f5;padding:.15rem .4rem;border-radius:4px;word-break:break-all}.recovery-codes{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);grid-gap:.5rem;gap:.5rem;margin-top:1rem}.recovery-codes li{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;letter-spacing:.08em;text-align:center;background:#f5f5f5;border-radius:4px;padding:.5rem}@media (max-width:480px){.mfa-digits input{width:2.5rem;height:3rem}.recovery-codes{grid-template-columns:1fr}}.admin-sections{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:1.5rem;gap:1.5rem}.admin-section{display:block;color:inherit;text-decoration:none;border-left:4px solid #3498db;transition:box-shadow .2s}.admin-section:hover{box-shadow:0 4px 12px rgba(0,0,0,.15)}.admin-section p,.breadcrumb{color:#7f8c8d}.breadcrumb{font-size:.875rem;margin-bottom:1rem}.breadcrumb a{color:#3498db}.muted{color:#95a5a6}.table-wrap{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:.9rem}.data-table td,.data-table th{text-align:left;padding:.75rem .5rem;border-bottom:1px solid #ecf0f1;vertical-align:middle}.data-table th{font-weight:600;color:#2c3e50;white-space:nowrap}.row-actions{display:flex;flex-wrap:wrap;gap:.375rem;justify-content:flex-end}.btn-small{padding:.3rem .6rem;font-size:.8rem;white-space:nowrap}.checkbox{display:flex;align-items:center;gap:.5rem;margin-bottom:1.5rem;font-weight:500;color:#2c3e50}.invite-form{max-width:480px}.create-node{margin-top:2rem}.card-title-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}.card-title-row h2{margin-bottom:0}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:0 1rem;gap:0 1rem}.contact-kind{border:1px solid #ecf0f1;border-radius:6px;padding:.75rem 1rem 1rem;margin-bottom:1rem}.contact-kind legend{font-weight:600;color:#2c3e50;padding:0 .25rem}.contact-row{display:grid;grid-template-columns:1.4fr 1.4fr 1fr auto;grid-gap:.5rem;gap:.5rem;margin-bottom:.5rem}.contact-row input{padding:.5rem;border:1px solid #ddd;border-radius:4px;font-size:.9rem;min-width:0}.link-button.inline{display:inline;margin:.25rem 0 0;padding:0}.data-table a{color:#3498db}@media (max-width:640px){.contact-row{grid-template-columns:1fr}}.tabs{display:flex;gap:.25rem;border-bottom:2px solid #dfe6e9;margin-bottom:1.5rem;flex-wrap:wrap}.tabs a{padding:.5rem 1rem;color:#2c3e50;text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-2px;font-weight:500}.tabs a.current{border-bottom-color:#3498db;color:#3498db}.toolbar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;margin-bottom:1rem}.toolbar input[type=search],.toolbar select{padding:.5rem .75rem;border:1px solid #ddd;border-radius:4px;font-size:.95rem}.toolbar input[type=search]{flex:1 1 240px;min-width:0}.toolbar .spacer{flex:1 1}.pager{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-top:1rem}.pager .button-row,.pager .small{margin:0}.selection-bar{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap;padding:.6rem .75rem;margin-bottom:1rem;background:#eef6fc;border-radius:6px;font-size:.9rem}.selection-bar select{padding:.35rem .5rem;border:1px solid #ccd;border-radius:4px}.data-table td.check,.data-table th.check{width:2rem}.data-table tr.problem td{background:#fdf2f1}.data-table select{min-width:10rem;padding:.35rem .5rem}.data-table select,.form-group textarea{width:100%;border:1px solid #ddd;border-radius:4px}.form-group textarea{padding:.75rem;font-size:1rem;font-family:inherit}.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:.75rem;gap:.75rem;margin:1rem 0}.summary-grid .metric{background:#f8f9fa;border-radius:6px;padding:.75rem}.summary-grid .metric-value{display:block;font-size:1.4rem}.dnc-notice{border-left:4px solid #e74c3c}.cell-sample{color:#7f8c8d;font-size:.85rem;max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-drop{border:2px dashed #b2bec3;border-radius:8px;padding:2rem;text-align:center;color:#636e72}.file-drop input{margin-top:1rem}.support-banner{background:#f39c12;color:#2c3e50;font-size:.875rem;font-weight:500;padding:.4rem .75rem;border-radius:4px;margin-bottom:.75rem}a.metric{display:block;color:inherit;text-decoration:none}a.metric:hover{background:#eef6fc}.metric-value+.small{display:block}