:root{--primary: #2563eb;--primary-hover: #1d4ed8;--success: #16a34a;--danger: #dc2626;--warning: #ea580c;--text-primary: #1e293b;--text-secondary: #64748b;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--border: #e2e8f0;--shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:var(--text-primary);background:var(--bg-secondary);line-height:1.6}.snack-success{background:#16a34a;color:#fff}.snack-error{background:#dc2626;color:#fff}.snack-info{background:#2563eb;color:#fff}.snack-warn{background:#d97706;color:#fff}.cdk-overlay-container{z-index:9999!important}.mat-mdc-snack-bar-container{border-radius:8px!important;box-shadow:0 4px 24px #00000059!important}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:8px!important}code{font-family:Courier New,monospace;background:#f1f5f9;padding:.125rem .25rem;border-radius:4px;font-size:.875em}.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.875rem;font-weight:500;border:none;border-radius:6px;cursor:pointer;transition:all .2s;text-decoration:none;white-space:nowrap}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--bg-secondary);color:var(--text-primary);border:1px solid var(--border)}.btn-secondary:hover:not(:disabled){background:#e2e8f0}.form-group{margin-bottom:1.25rem}.form-label{display:block;margin-bottom:.5rem;font-size:.875rem;font-weight:500;color:var(--text-primary)}.form-input{width:100%;padding:.625rem .875rem;font-size:.9375rem;border:1px solid var(--border);border-radius:6px;transition:all .2s;background:var(--bg-primary);color:var(--text-primary)}.form-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #2563eb1a}.form-input:disabled{background:var(--bg-secondary);cursor:not-allowed}.card{background:var(--bg-primary);border-radius:8px;box-shadow:var(--shadow);padding:1.5rem;margin-bottom:1.5rem}.alert{padding:.875rem 1rem;border-radius:6px;margin-bottom:1rem;font-size:.875rem}.alert-error{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}.alert-success{background:#d1fae5;color:#065f46;border:1px solid #a7f3d0}.badge{display:inline-block;padding:.25rem .625rem;font-size:.75rem;font-weight:500;border-radius:9999px;white-space:nowrap}.badge-success{background:#d1fae5;color:#065f46}.badge-danger{background:#fee2e2;color:#991b1b}.loading{display:inline-block;width:1rem;height:1rem;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;padding:1rem}.login-card{width:100%;max-width:420px;background:var(--bg-primary);border-radius:12px;box-shadow:var(--shadow-lg);overflow:hidden}.login-header{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-hover) 100%);color:#fff;padding:2rem;text-align:center}.login-header h1{font-size:1.75rem;margin-bottom:.25rem}.login-header p{opacity:.9;font-size:.9375rem}.login-body{padding:2rem}.dashboard{min-height:100vh;background:var(--bg-secondary)}.navbar{background:var(--bg-primary);border-bottom:1px solid var(--border);box-shadow:var(--shadow);position:sticky;top:0;z-index:100}.navbar-content{display:flex;justify-content:space-between;align-items:center;padding:1rem 0}.navbar-brand{font-size:1.25rem;font-weight:600;color:var(--text-primary)}.navbar-user{display:flex;align-items:center;gap:1rem}.navbar-user span{font-size:.9375rem}.main-content{padding:2rem 0}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:var(--bg-primary);border-radius:8px;box-shadow:var(--shadow);padding:1.5rem;border-left:4px solid var(--primary)}.stat-card h3{font-size:.875rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.025em}.stat-card .value{font-size:2rem;font-weight:700;color:var(--text-primary)}.projects-table{width:100%;border-collapse:collapse;font-size:.9375rem}.projects-table thead{background:var(--bg-secondary)}.projects-table th{padding:.75rem 1rem;text-align:left;font-weight:600;color:var(--text-secondary);border-bottom:2px solid var(--border)}.projects-table td{padding:1rem;border-bottom:1px solid var(--border)}.projects-table tbody tr:hover{background:var(--bg-secondary)}.modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem;animation:modalFadeIn .25s ease}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(40px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-content{background:#fff;border-radius:16px;box-shadow:0 20px 60px #00000040;width:100%;max-width:520px;max-height:90vh;overflow-y:auto;animation:modalSlideUp .3s ease}.modal-content.modal-large{max-width:720px}.modal-content.modal-xlarge{max-width:960px;width:95vw}.modal-header{padding:1.5rem;border-bottom:1px solid #e5e7eb;display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background:#fff;z-index:1;border-radius:16px 16px 0 0}.modal-header h3{margin:0;font-size:1.2rem;font-weight:700;color:#1f2937}.modal-title-with-icon{display:flex;align-items:center;gap:.75rem}.modal-title-with-icon .modal-icon{font-size:1.5rem}.modal-title-with-icon h3{margin:0}.modal-close{background:transparent;border:none;font-size:1.4rem;color:#9ca3af;cursor:pointer;line-height:1;padding:.25rem .5rem;border-radius:6px;transition:all .2s}.modal-close:hover{color:#ef4444;background:#fee2e2}.modal-body{padding:1.5rem}.modal-footer{padding:1.25rem 1.5rem;border-top:1px solid #e5e7eb;display:flex;justify-content:flex-end;gap:.75rem;position:sticky;bottom:0;background:#fff;border-radius:0 0 16px 16px}.modal-backdrop{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000;padding:1rem}.form-group{margin-bottom:1.25rem;display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.875rem;font-weight:600;color:#374151}.form-group small,.form-group .form-help{font-size:.78rem;color:#6b7280;font-style:italic}.form-control{width:100%;padding:.65rem .9rem;border:2px solid #e5e7eb;border-radius:8px;font-size:.9rem;transition:border-color .2s,box-shadow .2s;background:#fff;color:#1f2937}.form-control:focus{outline:none;border-color:#667eea;box-shadow:0 0 0 3px #667eea1f}.form-control:disabled{background:#f9fafb;cursor:not-allowed}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-bottom:1.25rem}.permissions-checkboxes{display:flex;flex-direction:column;gap:.875rem;padding:1rem;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.permission-item{display:flex;align-items:flex-start;gap:.75rem}.permission-item input[type=checkbox]{margin-top:.2rem;width:18px;height:18px;accent-color:#667eea;cursor:pointer;flex-shrink:0}.permission-item input[type=checkbox]:disabled{opacity:.5;cursor:not-allowed}.permission-item>label{display:flex;flex-direction:column;gap:.2rem;cursor:pointer;font-weight:400!important}.permission-item>label strong{font-size:.875rem;color:#1f2937}.permission-item>label small{font-size:.75rem;color:#6b7280}.detail-section{margin-bottom:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #f3f4f6}.detail-section:last-child{margin-bottom:0;border-bottom:none;padding-bottom:0}.detail-section-header{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:700;color:#1f2937;margin-bottom:1rem;padding-bottom:.5rem;border-bottom:2px solid #f3f4f6}.detail-section-header .section-icon{font-size:1.2rem}.permission-actions{display:flex;gap:.5rem;margin-left:auto}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem}.detail-item{display:flex;flex-direction:column;gap:.2rem}.detail-label{font-size:.7rem;color:#9ca3af;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.detail-value{font-size:.9rem;color:#1f2937;font-weight:600}.api-key-container{display:flex;gap:.75rem;align-items:center;background:#f9fafb;padding:1rem;border-radius:8px;border:1px solid #e5e7eb;flex-wrap:wrap}.api-key-full{flex:1;font-family:Courier New,monospace;font-size:.72rem;color:#1f2937;word-break:break-all;min-width:0}.btn-copy{padding:.4rem .9rem;background:#667eea;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;white-space:nowrap;transition:background .2s;flex-shrink:0}.btn-copy:hover{background:#5a67d8}.config-edit-form{display:flex;flex-direction:column;gap:1rem;background:#f0fdf4;padding:1.25rem;border-radius:8px;border:2px dashed #10b981}.rate-limit-preview{background:#fff;padding:.75rem 1rem;border-radius:6px;border:1px solid #10b981;color:#047857;font-weight:600;font-size:.9rem;text-align:center}.permissions-list{display:flex;flex-direction:column;gap:.75rem}.permissions-list.editing{background:#fef3c7;padding:1rem;border-radius:8px;border:2px dashed #f59e0b}.permission-row{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:#fff;border-radius:8px;border:1px solid #e5e7eb;transition:border-color .2s}.permission-row:hover{border-color:#667eea}.permission-row input[type=checkbox]{margin-top:.4rem;width:18px;height:18px;accent-color:#667eea;cursor:pointer;flex-shrink:0}.permission-row input[type=checkbox]:disabled{cursor:not-allowed}.permission-row label{flex:1;display:flex;gap:.75rem;cursor:pointer}.perm-icon{font-size:1.4rem;line-height:1.2}.perm-text{display:flex;flex-direction:column;gap:.2rem}.perm-text strong{color:#1f2937;font-size:.9rem}.perm-text small{color:#6b7280;font-size:.8rem;line-height:1.4}.btn-edit-permissions{padding:.35rem .75rem;background:#fff;color:#667eea;border:1px solid #667eea;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;transition:all .2s}.btn-edit-permissions:hover{background:#667eea;color:#fff}.btn-edit-permissions.active{background:#10b981;color:#fff;border-color:#10b981}.btn-edit-permissions.active:hover{background:#059669}.btn-cancel-permissions{padding:.35rem .75rem;background:#fff;color:#ef4444;border:1px solid #ef4444;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;transition:all .2s}.btn-cancel-permissions:hover{background:#ef4444;color:#fff}.stats-grid-detail{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:1rem;margin-bottom:1rem}.stat-box{background:linear-gradient(135deg,#667eea,#764ba2);padding:1.1rem;border-radius:10px;color:#fff;text-align:center;box-shadow:0 4px 12px #667eea2e;transition:transform .2s}.stat-box:hover{transform:translateY(-2px)}.stat-box.success{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 4px 12px #10b9812e}.stat-box.error{background:linear-gradient(135deg,#ef4444,#dc2626);box-shadow:0 4px 12px #ef44442e}.stat-box.info{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 4px 12px #3b82f62e}.stat-box .stat-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;opacity:.9;margin-bottom:.4rem}.stat-box .stat-value-big{font-size:1.75rem;font-weight:700;line-height:1;margin-bottom:.2rem}.stat-box .stat-sublabel{font-size:.68rem;opacity:.8}.templates-list-compact{display:flex;flex-direction:column;gap:.6rem}.template-item-compact{display:flex;align-items:center;justify-content:space-between;padding:.65rem .9rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;transition:all .2s}.template-item-compact:hover{background:#f3f4f6;border-color:#667eea}.template-item-name{font-weight:600;color:#1f2937;font-size:.9rem}.template-item-slug{font-family:Courier New,monospace;font-size:.78rem;padding:.2rem .5rem;background:#e0e7ff;color:#3730a3;border-radius:4px}.empty-state-small{padding:1.25rem;text-align:center;color:#9ca3af;font-size:.875rem;background:#f9fafb;border-radius:8px;border:1px dashed #d1d5db}.template-form{background:#f9fafb;padding:1.5rem;border-radius:12px;border:1px solid #e5e7eb}.file-uploads-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.875rem;margin-bottom:1.25rem}.upload-box{background:#fff;padding:.875rem;border-radius:8px;border:2px dashed #d1d5db;display:flex;flex-direction:column;gap:.6rem;transition:border-color .2s}.upload-box:hover{border-color:#667eea}.upload-box.required{border-color:#f59e0b;border-style:solid}.upload-box input[type=file]{display:none}.upload-label{display:flex;align-items:center;gap:.4rem;font-weight:600;color:#1f2937;font-size:.875rem}.upload-icon{font-size:1.1rem}.btn-upload{padding:.55rem;background:#f3f4f6;border:1px solid #d1d5db;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.btn-upload:hover:not(:disabled){background:#e5e7eb;border-color:#667eea}.btn-upload:disabled{opacity:.5;cursor:not-allowed}.btn-remove{padding:.4rem;background:#fee2e2;color:#ef4444;border:none;border-radius:6px;cursor:pointer;font-weight:700;transition:all .2s}.btn-remove:hover{background:#ef4444;color:#fff}.btn-remove-small{padding:.1rem .35rem;background:#fee2e2;color:#ef4444;border:none;border-radius:4px;cursor:pointer;font-size:.75rem;transition:all .2s;flex-shrink:0}.btn-remove-small:hover{background:#ef4444;color:#fff}.file-list{display:flex;flex-direction:column;gap:.35rem;margin-top:.1rem}.file-item{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .5rem;background:#f3f4f6;border-radius:4px;font-size:.75rem}.file-item span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.load-data-section{margin-top:1.25rem;padding:1.5rem;background:linear-gradient(135deg,#e0f2fe,#dbeafe);border-radius:10px;border:2px dashed #3b82f6;text-align:center}.load-data-section button{font-size:1rem;padding:.7rem 2rem}.edit-mode-notice{display:flex;align-items:center;gap:.5rem;padding:.65rem 1rem;background:#fef3c7;border:1px solid #f59e0b;border-radius:8px;font-size:.82rem;color:#92400e;font-weight:500;margin-bottom:1rem}.edit-mode-icon{font-size:1rem;flex-shrink:0}.current-file-badge{display:flex;align-items:center;gap:.4rem;padding:.35rem .6rem;background:#d1fae5;border:1px solid #6ee7b7;border-radius:6px;font-size:.78rem;color:#065f46;font-weight:500}.current-file-badge.cf-none{background:#f3f4f6;border-color:#d1d5db;color:#6b7280}.cf-icon{font-size:.85rem;flex-shrink:0}.btn-upload.has-file{background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}.readonly-field{background:#f3f4f6!important;cursor:not-allowed;color:#6b7280;border-color:#d1d5db!important}.load-data-section small{display:block;margin-top:.6rem;color:#1e40af;font-weight:500}.fields-editor{margin-top:1.5rem;padding:1.5rem;background:#fff;border-radius:12px;border:2px solid #10b981}.fields-editor .fields-header{margin-bottom:1.25rem;padding-bottom:.875rem;border-bottom:2px solid #d1fae5}.fields-editor .fields-header-top{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.35rem}.fields-editor .fields-bulk-actions{display:flex;gap:.5rem;flex-shrink:0}.btn-bulk{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;font-size:.78rem;font-weight:600;border-radius:6px;border:1.5px solid #10b981;background:#f0fdf4;color:#059669;cursor:pointer;transition:background .15s,color .15s}.btn-bulk:hover{background:#10b981;color:#fff}.btn-bulk.btn-bulk-uncheck{border-color:#d1d5db;background:#f9fafb;color:#6b7280}.btn-bulk.btn-bulk-uncheck:hover{background:#6b7280;color:#fff;border-color:#6b7280}.fields-editor .fields-header h4{color:#059669;margin:0;font-size:1.05rem}.fields-editor .fields-header small{color:#6b7280}.fields-editor .fields-list{display:flex;flex-direction:column;gap:.875rem}.fields-editor .field-item{padding:.875rem;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb;transition:border-color .2s}.fields-editor .field-item:hover{border-color:#10b981}.fields-editor .field-row{display:grid;grid-template-columns:2fr 2fr 1fr;gap:.75rem;margin-bottom:.6rem}.fields-editor .field-group{display:flex;flex-direction:column;gap:.3rem}.fields-editor .field-group label{font-size:.8rem;font-weight:600;color:#374151}.fields-editor .field-group input,.fields-editor .field-group select{padding:.45rem .6rem;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem}.fields-editor .field-group input:focus,.fields-editor .field-group select:focus{outline:none;border-color:#10b981;box-shadow:0 0 0 3px #10b9811a}.fields-editor .field-group.checkbox-group{justify-content:flex-end}.fields-editor .field-group.checkbox-group label{display:flex;align-items:center;gap:.4rem;cursor:pointer;-webkit-user-select:none;user-select:none}.fields-editor .field-group.checkbox-group input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:#10b981}.fields-editor .field-description{display:flex;flex-direction:column;gap:.3rem}.fields-editor .field-description label{font-size:.8rem;font-weight:600;color:#374151}.fields-editor .field-description input{padding:.45rem .6rem;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem}.form-actions{display:flex;gap:.875rem;justify-content:flex-end;padding-top:1rem;border-top:1px solid #e5e7eb;margin-top:.25rem}.templates-list{display:flex;flex-direction:column;gap:1rem}.template-card{padding:1.25rem;background:#fff;border-radius:10px;border:1px solid #e5e7eb;transition:all .2s}.template-card:hover{box-shadow:0 4px 12px #00000014;border-color:#667eea}.template-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.875rem;padding-bottom:.875rem;border-bottom:1px solid #e5e7eb;gap:1rem}.template-header h4{margin:0;color:#1f2937;font-size:1rem}.template-slug{display:inline-block;margin-top:.2rem;padding:.2rem .5rem;background:#f3f4f6;color:#6b7280;border-radius:4px;font-size:.75rem;font-family:Courier New,monospace}.template-info{display:flex;flex-wrap:wrap;gap:1.25rem;margin-bottom:.875rem}.info-item{display:flex;flex-direction:column;gap:.15rem}.info-label{font-size:.7rem;color:#9ca3af;text-transform:uppercase;font-weight:700}.info-value{font-size:1.2rem;font-weight:700;color:#1f2937}.template-fields{display:flex;flex-direction:column;gap:.6rem}.template-fields strong{color:#1f2937;font-size:.875rem}.fields-chips{display:flex;flex-wrap:wrap;gap:.4rem}.field-chip{padding:.3rem .65rem;background:#ede9fe;color:#6d28d9;border-radius:14px;font-size:.8rem;font-weight:500}.field-chip em{font-style:normal;opacity:.7;font-size:.72rem}.btn-edit{padding:.45rem .9rem;background:#dbeafe;color:#3b82f6;border:1px solid #bfdbfe;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;white-space:nowrap;transition:all .2s}.btn-edit:hover{background:#3b82f6;color:#fff;border-color:#3b82f6}.btn-delete{padding:.45rem .9rem;background:#fee2e2;color:#ef4444;border:1px solid #fecaca;border-radius:6px;cursor:pointer;font-size:.8rem;font-weight:600;white-space:nowrap;transition:all .2s}.btn-delete:hover{background:#ef4444;color:#fff;border-color:#ef4444}.loading-state,.empty-state{text-align:center;padding:2rem;color:#9ca3af;font-size:.9rem}.btn-sm{padding:.35rem .75rem;font-size:.8rem}.status-badge{display:inline-block;padding:.3rem .75rem;border-radius:20px;font-size:.78rem;font-weight:700}.status-badge.active{background:#d1fae5;color:#065f46}.status-badge.inactive{background:#fee2e2;color:#991b1b}@media (max-width: 768px){.navbar-content{flex-direction:column;gap:1rem}.stats-grid{grid-template-columns:1fr}.projects-table{font-size:.875rem}.projects-table th,.projects-table td{padding:.5rem}}.cdk-overlay-container.confirm-custom{position:fixed;top:0;left:0;width:100dvw;height:100dvh;z-index:20001!important;background-color:#0000007a;display:flex;align-items:center;justify-content:center}
