.error-boundary{align-items:center;background:var(--bg-color);display:flex;justify-content:center;min-height:100vh;padding:var(--spacing-xl)}.error-boundary-content{background:var(--card-bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:500px;padding:var(--spacing-xl);text-align:center}.error-boundary-icon{color:var(--danger-color);height:80px;margin:0 auto var(--spacing-lg);width:80px}.error-boundary-icon svg{height:100%;width:100%}.error-boundary h1{color:var(--text-color);font-size:1.5rem;margin-bottom:var(--spacing-sm)}.error-boundary p{color:var(--text-light);margin-bottom:var(--spacing-lg)}.error-details{background:var(--bg-color);border:1px solid var(--border-color);border-radius:var(--radius-md);margin:var(--spacing-lg) 0;padding:var(--spacing-md);text-align:left}.error-details summary{color:var(--text-color);cursor:pointer;font-weight:600;margin-bottom:var(--spacing-sm)}.error-details pre{background:var(--card-bg);border-radius:var(--radius-sm);color:var(--danger-color);font-family:Monaco,Consolas,monospace;font-size:.75rem;margin:var(--spacing-sm) 0 0;overflow-x:auto;padding:var(--spacing-sm);white-space:pre-wrap;word-break:break-word}.error-boundary-actions{display:flex;gap:var(--spacing-md);justify-content:center}.error-boundary-actions .btn{min-width:120px}.cookie-banner-overlay{animation:slideUp .3s ease-out;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#00000080;bottom:0;left:0;position:fixed;right:0;z-index:9999}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.cookie-banner{background:#fff;border-top:1px solid #e0e0e0;box-shadow:0 -4px 20px #00000026;max-width:100%;padding:20px}.cookie-banner-content{margin:0 auto;max-width:1200px}.cookie-banner-header{align-items:center;display:flex;gap:12px;margin-bottom:12px}.cookie-banner-header svg{color:#3b82f6;flex-shrink:0;height:24px;width:24px}.cookie-banner-header h3{color:#1a1a1a;font-size:18px;font-weight:600;margin:0}.cookie-banner-description{color:#555;font-size:14px;line-height:1.5;margin-bottom:16px}.cookie-banner-actions{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.cookie-banner-actions .btn{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s ease}.cookie-banner-actions .btn-primary{background:#3b82f6;color:#fff}.cookie-banner-actions .btn-primary:hover{background:#2563eb;transform:translateY(-1px)}.cookie-banner-actions .btn-secondary{background:#f3f4f6;border:1px solid #d1d5db;color:#1a1a1a}.cookie-banner-actions .btn-secondary:hover{background:#e5e7eb}.cookie-banner-actions .btn-link{background:#0000;color:#3b82f6;padding:10px 12px;text-decoration:underline}.cookie-banner-actions .btn-link:hover{color:#2563eb}.cookie-customize-panel{animation:fadeIn .2s ease-out;border-top:1px solid #e0e0e0;margin-top:20px;padding-top:20px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.cookie-option{align-items:flex-start;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:12px 0}.cookie-option:last-child{border-bottom:none}.cookie-option-info{flex:1 1;margin-right:16px}.cookie-option-info h4{color:#1a1a1a;font-size:14px;font-weight:600;margin:0 0 4px}.cookie-option-info p{color:#555;font-size:13px;margin:0}.cookie-option-control{align-items:center;display:flex;gap:8px}.cookie-toggle{height:24px;position:relative;width:44px}.cookie-toggle input{height:0;opacity:0;width:0}.cookie-toggle-slider{background-color:#d1d5db;border-radius:24px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.3s}.cookie-toggle-slider:before{background-color:#fff;border-radius:50%;bottom:3px;box-shadow:0 2px 4px #0003;content:"";height:18px;left:3px;position:absolute;transition:.3s;width:18px}.cookie-toggle input:checked+.cookie-toggle-slider{background-color:#22c55e}.cookie-toggle input:checked+.cookie-toggle-slider:before{transform:translateX(20px)}.cookie-toggle input:disabled+.cookie-toggle-slider{cursor:not-allowed;opacity:.6}.cookie-toggle-label{color:#666;font-size:12px;min-width:60px;text-align:right}.cookie-customize-actions{display:flex;justify-content:flex-end;margin-top:16px}@media (max-width:768px){.cookie-banner{padding:16px}.cookie-banner-actions{align-items:stretch;flex-direction:column}.cookie-banner-actions .btn{text-align:center;width:100%}.cookie-option{flex-direction:column;gap:12px}.cookie-option-control{align-self:flex-start}}.cookie-banner{background:#fff!important;color:#1a1a1a!important}.cookie-banner *{color:inherit}.cookie-banner-header h3,.cookie-option-info h4{color:#1a1a1a!important}.cookie-banner-description,.cookie-option-info p{color:#555!important}.cookie-toggle-label{color:#666!important}.App{min-height:100vh;text-align:center}:root{--amplify-colors-brand-primary-10:#f0f9ff;--amplify-colors-brand-primary-20:#e0f2fe;--amplify-colors-brand-primary-40:#7dd3fc;--amplify-colors-brand-primary-60:#0ea5e9;--amplify-colors-brand-primary-80:#1e40af;--amplify-colors-brand-primary-90:#1e3a8a;--amplify-colors-brand-primary-100:#1e293b;--amplify-colors-brand-secondary-10:#faf5ff;--amplify-colors-brand-secondary-20:#f3e8ff;--amplify-colors-brand-secondary-40:#c084fc;--amplify-colors-brand-secondary-60:#7c3aed;--amplify-colors-brand-secondary-80:#5b21b6;--amplify-colors-brand-secondary-90:#4c1d95;--amplify-colors-brand-secondary-100:#2e1065}[data-amplify-authenticator]{--amplify-components-authenticator-router-background-color:#0000;--amplify-components-authenticator-router-border-color:#0000;--amplify-components-authenticator-router-box-shadow:none}[data-amplify-authenticator] [data-amplify-container]{background:#fff;border-radius:12px;box-shadow:0 20px 60px #0003;padding:2rem}.amplify-heading{color:#1e40af;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}.amplify-button--primary{background:linear-gradient(45deg,#667eea,#764ba2);border:none;font-weight:600;transition:all .3s ease}.amplify-button--primary:hover{box-shadow:0 4px 12px #667eea66;transform:translateY(-2px)}.amplify-button--primary:active{transform:translateY(0)}.amplify-input{border:2px solid #e2e8f0;border-radius:8px;padding:12px;transition:all .2s ease}.amplify-input:focus{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.amplify-alert--error{background-color:#dc35451a;border:1px solid #dc354533;border-radius:8px;color:#dc3545}.amplify-alert--success{background-color:#28a7451a;border:1px solid #28a74533;border-radius:8px;color:#28a745}@media (max-width:768px){[data-amplify-authenticator] [data-amplify-container]{margin:1rem;padding:1.5rem}}.auth-background{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh}:root{--primary-color:#28589f;--primary-dark:#1a3c6e;--primary-light:#3a6bb5;--primary-rgb:40,88,159;--bg-color:#eef2f5;--card-bg:#fff;--header-bg:#0f1724;--input-bg:#fff;--hover-bg:#28589f14;--border-color:#dde4ea;--divider-color:#e5e9ed;--focus-ring:#28589f40;--text-color:#333;--text-light:#666;--text-muted:#999;--text-inverse:#fff;--success-color:#28a745;--success-bg:#28a7451a;--warning-color:#ffc107;--warning-bg:#ffc1071a;--danger-color:#dc3545;--danger-bg:#dc35451a;--info-color:#17a2b8;--info-bg:#17a2b81a;--online-color:#28a745;--offline-color:#6c757d;--alarm-color:#ffc107;--shadow-sm:0 2px 4px #00000014;--shadow-md:0 4px 12px rgba(0,0,0,.065);--shadow-lg:0 8px 16px #0000001a;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--radius-pill:25px;--transition-fast:0.15s ease;--transition-normal:0.3s ease;--transition-slow:0.5s ease;--sidebar-width:260px;--sidebar-collapsed-width:60px;--header-height:60px;--z-dropdown:1000;--z-sticky:1020;--z-fixed:1030;--z-modal-backdrop:1040;--z-modal:1050;--z-popover:1060;--z-tooltip:1070;--scrollbar-bg:#f1f1f1;--scrollbar-thumb:#c1c1c1;--scrollbar-thumb-hover:#a1a1a1}[data-theme=dark]{--primary-color:#4d8fd6;--primary-dark:#3a6eb5;--primary-light:#6ba3e0;--primary-rgb:77,143,214;--bg-color:#0f172a;--card-bg:#1e293b;--header-bg:#0f172a;--input-bg:#1e293b;--hover-bg:#4d8fd61f;--border-color:#334155;--divider-color:#475569;--focus-ring:#4d8fd64d;--text-color:#f1f5f9;--text-light:#94a3b8;--text-muted:#64748b;--text-inverse:#0f172a;--success-color:#22c55e;--success-bg:#22c55e26;--warning-color:#eab308;--warning-bg:#eab30826;--danger-color:#ef4444;--danger-bg:#ef444426;--info-color:#0ea5e9;--info-bg:#0ea5e926;--online-color:#22c55e;--offline-color:#64748b;--alarm-color:#eab308;--shadow-sm:0 2px 4px #0000004d;--shadow-md:0 4px 12px #0006;--shadow-lg:0 8px 24px #00000080;--scrollbar-bg:#1e293b;--scrollbar-thumb:#475569;--scrollbar-thumb-hover:#64748b}html{color-scheme:light}html[data-theme=dark]{color-scheme:dark}.btn,.card,.modal,.sidebar,body,input,select,textarea{transition:background-color .3s ease,border-color .3s ease,color .3s ease;transition:background-color var(--transition-normal),border-color var(--transition-normal),color var(--transition-normal)}::-webkit-scrollbar-track{background:#f1f1f1;background:var(--scrollbar-bg)}::-webkit-scrollbar-thumb{background:#c1c1c1;background:var(--scrollbar-thumb);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a1a1a1;background:var(--scrollbar-thumb-hover)}.btn{align-items:center;border:2px solid #0000;border-radius:4px;border-radius:var(--radius-sm,4px);cursor:pointer;display:inline-flex;font-family:inherit;font-size:.9rem;font-weight:500;gap:8px;justify-content:center;line-height:1.4;min-height:44px;padding:10px 20px;text-decoration:none;transition:all .15s ease;transition:all var(--transition-fast,.15s ease);white-space:nowrap}.btn:focus{outline:2px solid #28589f;outline:2px solid var(--primary-color,#28589f);outline-offset:2px}.btn:disabled{cursor:not-allowed;opacity:.6;pointer-events:none}.btn svg{flex-shrink:0;height:18px;width:18px}.btn-primary{background:#28589f;background:var(--primary-color,#28589f);border-color:#28589f;border-color:var(--primary-color,#28589f);color:#fff}.btn-primary:hover:not(:disabled){background:#1a3c6e;background:var(--primary-dark,#1a3c6e);border-color:#1a3c6e;border-color:var(--primary-dark,#1a3c6e);box-shadow:0 2px 4px #00000014;box-shadow:var(--shadow-sm,0 2px 4px #00000014);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-secondary{background:#fff;background:var(--card-bg,#fff);border-color:#dde4ea;border-color:var(--border-color,#dde4ea);color:#333;color:var(--text-color,#333)}.btn-secondary:hover:not(:disabled){border-color:#28589f;border-color:var(--primary-color,#28589f);color:#28589f;color:var(--primary-color,#28589f)}.btn-danger{background:#0000;border-color:#dc3545;border-color:var(--danger-color,#dc3545);color:#dc3545;color:var(--danger-color,#dc3545)}.btn-danger:hover:not(:disabled){background:#dc3545;background:var(--danger-color,#dc3545);color:#fff}.btn-success{background:#28a745;background:var(--success-color,#28a745);border-color:#28a745;border-color:var(--success-color,#28a745);color:#fff}.btn-success:hover:not(:disabled){background:#218838;border-color:#218838;transform:translateY(-1px)}.btn-warning{background:#ffc107;background:var(--warning-color,#ffc107);border-color:#ffc107;border-color:var(--warning-color,#ffc107);color:#212529}.btn-warning:hover:not(:disabled){background:#e0a800;border-color:#e0a800}.btn-info{background:#17a2b8;background:var(--info-color,#17a2b8);border-color:#17a2b8;border-color:var(--info-color,#17a2b8);color:#fff}.btn-info:hover:not(:disabled){background:#138496;border-color:#138496}.btn-ghost{background:#0000;border-color:#0000;color:#333;color:var(--text-color,#333)}.btn-ghost:hover:not(:disabled){background:#eef2f5;background:var(--bg-color,#eef2f5)}.btn-link{background:#0000;border-color:#0000;color:#28589f;color:var(--primary-color,#28589f);min-height:auto;padding:0;text-decoration:underline}.btn-link:hover:not(:disabled){color:#1a3c6e;color:var(--primary-dark,#1a3c6e)}.btn-sm{font-size:.85rem;min-height:36px;padding:6px 12px}.btn-sm svg{height:14px;width:14px}.btn-lg{font-size:1rem;min-height:52px;padding:14px 28px}.btn-lg svg{height:20px;width:20px}.btn-block{display:flex;width:100%}.btn-icon{align-items:center;background:#0000;border:none;border-radius:4px;border-radius:var(--radius-sm,4px);color:#666;color:var(--text-light,#666);cursor:pointer;display:inline-flex;height:40px;justify-content:center;min-height:40px;padding:8px;transition:all .15s ease;transition:all var(--transition-fast,.15s ease);width:40px}.btn-icon:hover{background:#eef2f5;background:var(--bg-color,#eef2f5);color:#333;color:var(--text-color,#333);transform:scale(1.05)}.btn-icon:focus{outline:2px solid #28589f;outline:2px solid var(--primary-color,#28589f);outline-offset:2px}.btn-icon svg{height:18px;width:18px}.btn-icon.btn-edit:hover{background:#28589f1f;color:#28589f;color:var(--primary-color,#28589f)}.btn-icon.btn-delete:hover{background:#dc35451f;color:#dc3545;color:var(--danger-color,#dc3545)}.btn-icon.btn-view:hover{background:#17a2b81f;color:#17a2b8;color:var(--info-color,#17a2b8)}.btn-icon.btn-refresh:hover{background:#28a7451f;color:#28a745;color:var(--success-color,#28a745)}.btn-icon-sm{height:32px;min-height:32px;padding:6px;width:32px}.btn-icon-sm svg{height:14px;width:14px}.btn-icon-lg{height:48px;min-height:48px;padding:10px;width:48px}.btn-icon-lg svg{height:22px;width:22px}.btn-group{display:inline-flex;gap:0}.btn-group .btn{border-radius:0}.btn-group .btn:first-child{border-radius:4px 0 0 4px;border-radius:var(--radius-sm,4px) 0 0 var(--radius-sm,4px)}.btn-group .btn:last-child{border-radius:0 4px 4px 0;border-radius:0 var(--radius-sm,4px) var(--radius-sm,4px) 0}.btn-group .btn:not(:last-child){border-right:none}.action-buttons,.button-group{align-items:center;display:flex;gap:8px;gap:var(--spacing-sm,8px)}.action-buttons-center{justify-content:center}.action-buttons-end{justify-content:flex-end}.btn-close{align-items:center;background:#0000;border:none;border-radius:4px;border-radius:var(--radius-sm,4px);color:#999;color:var(--text-muted,#999);cursor:pointer;display:flex;height:36px;justify-content:center;padding:0;transition:all .15s ease;transition:all var(--transition-fast,.15s ease);width:36px}.btn-close:hover{background:#eef2f5;background:var(--bg-color,#eef2f5);color:#333;color:var(--text-color,#333)}.btn-close svg{height:20px;width:20px}.btn-fab{border-radius:50%;bottom:24px;bottom:var(--spacing-lg,24px);box-shadow:0 8px 16px #0000001a;box-shadow:var(--shadow-lg,0 8px 16px #0000001a);height:56px;min-height:56px;padding:0;position:fixed;right:24px;right:var(--spacing-lg,24px);width:56px;z-index:1030;z-index:var(--z-fixed,1030)}.btn-fab:hover{transform:scale(1.05)}.btn-fab svg{height:24px;width:24px}.btn-loading{color:#0000!important;pointer-events:none;position:relative}.btn-loading:after{animation:btn-spin .8s linear infinite;border:2px solid;border-radius:50%;border-top:2px solid #0000;content:"";height:18px;position:absolute;width:18px}.btn-danger.btn-loading:after,.btn-info.btn-loading:after,.btn-primary.btn-loading:after,.btn-success.btn-loading:after{border-color:#fff #ffffff4d #ffffff4d}@keyframes btn-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.btn .spin{animation:btn-spin 1s linear infinite}@media (max-width:768px){.btn{font-size:.95rem;padding:12px 16px}.btn-sm{font-size:.85rem;padding:8px 12px}.action-buttons-stack{flex-direction:column;width:100%}.action-buttons-stack .btn{width:100%}}.form-input,.form-select,.form-textarea,input[type=date],input[type=email],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],select,textarea{background:#fff;background:var(--card-bg,#fff);border:2px solid #dde4ea;border:2px solid var(--border-color,#dde4ea);border-radius:4px;border-radius:var(--radius-sm,4px);box-sizing:border-box;color:#333;color:var(--text-color,#333);display:block;font-family:inherit;font-size:.95rem;line-height:1.5;padding:10px 14px;transition:border-color .15s ease,box-shadow .15s ease;transition:border-color var(--transition-fast,.15s ease),box-shadow var(--transition-fast,.15s ease);width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus,input:focus,select:focus,textarea:focus{border-color:#28589f;border-color:var(--primary-color,#28589f);box-shadow:0 0 0 3px #28589f1a;outline:none}.form-input::placeholder,input::placeholder,textarea::placeholder{color:#999;color:var(--text-muted,#999)}.form-input:disabled,.form-select:disabled,.form-textarea:disabled,input:disabled,select:disabled,textarea:disabled{background:#eef2f5;background:var(--bg-color,#eef2f5);cursor:not-allowed;opacity:.7}@media (max-width:768px){.form-input,.form-select,.form-textarea,input,select,textarea{font-size:16px!important}}.form-input-sm,.input-sm{font-size:.85rem;padding:6px 10px}.form-input-lg,.input-lg{font-size:1.05rem;padding:14px 18px}.search-input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' fill='none' stroke='%23999' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E");background-position:12px;background-repeat:no-repeat;padding-left:40px}.search-box{flex:1 1;max-width:400px;min-width:200px;position:relative}.search-box .search-icon{color:#999;color:var(--text-muted,#999);left:12px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.form-group{margin-bottom:16px;margin-bottom:var(--spacing-md,16px)}.form-group:last-child{margin-bottom:0}.form-group label,.form-label{color:#333;color:var(--text-color,#333);display:block;font-size:.9rem;font-weight:500;margin-bottom:6px}.form-label-required:after{color:#dc3545;color:var(--danger-color,#dc3545);content:" *"}.form-hint{color:#999;color:var(--text-muted,#999);font-style:italic}.form-error,.form-hint{display:block;font-size:.8rem;margin-top:6px}.form-error{color:#dc3545;color:var(--danger-color,#dc3545)}.form-row{grid-gap:16px;grid-gap:var(--spacing-md,16px);display:grid;gap:16px;gap:var(--spacing-md,16px);grid-template-columns:repeat(2,1fr)}.form-row-3{grid-template-columns:repeat(3,1fr)}.form-inline{align-items:center;display:flex;flex-wrap:wrap;gap:8px;gap:var(--spacing-sm,8px)}.form-actions{border-top:1px solid #dde4ea;border-top:1px solid var(--border-color,#dde4ea);display:flex;gap:16px;gap:var(--spacing-md,16px);justify-content:flex-end;margin-top:24px;margin-top:var(--spacing-lg,24px);padding-top:24px;padding-top:var(--spacing-lg,24px)}.form-actions-center{justify-content:center}.form-actions-spread{justify-content:space-between}@media (max-width:768px){.form-row,.form-row-3{grid-template-columns:1fr}.form-actions{flex-direction:column-reverse}.form-actions .btn{width:100%}}.form-select,select{-webkit-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23666' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;cursor:pointer;padding-right:40px}.form-check{align-items:center;cursor:pointer;display:flex;gap:8px}.form-check input[type=checkbox],.form-check input[type=radio]{accent-color:#28589f;accent-color:var(--primary-color,#28589f);cursor:pointer;height:18px;margin:0;width:18px}.form-check-label{color:#333;color:var(--text-color,#333);cursor:pointer;font-size:.9rem;-webkit-user-select:none;user-select:none}.form-check-group{display:flex;flex-direction:column;gap:8px;gap:var(--spacing-sm,8px)}.form-check-inline{display:flex;flex-wrap:wrap;gap:16px;gap:var(--spacing-md,16px)}.filter-group{display:flex;flex-wrap:wrap;gap:8px;gap:var(--spacing-sm,8px)}.filter-btn{background:#fff;background:var(--card-bg,#fff);border:2px solid #dde4ea;border:2px solid var(--border-color,#dde4ea);border-radius:4px;border-radius:var(--radius-sm,4px);color:#333;color:var(--text-color,#333);cursor:pointer;font-size:.9rem;font-weight:500;min-height:40px;padding:8px 16px;transition:all .15s ease;transition:all var(--transition-fast,.15s ease)}.filter-btn:hover{color:#28589f;color:var(--primary-color,#28589f)}.filter-btn.active,.filter-btn:hover{border-color:#28589f;border-color:var(--primary-color,#28589f)}.filter-btn.active{background:#28589f;background:var(--primary-color,#28589f);color:#fff}.tabs{border-bottom:2px solid #dde4ea;border-bottom:2px solid var(--border-color,#dde4ea);display:flex;gap:8px;gap:var(--spacing-sm,8px);margin-bottom:24px;margin-bottom:var(--spacing-lg,24px)}.tab-btn{background:#0000;border:none;border-bottom:2px solid #0000;color:#666;color:var(--text-light,#666);cursor:pointer;font-size:.9rem;font-weight:500;margin-bottom:-2px;padding:10px 20px;transition:all .15s ease;transition:all var(--transition-fast,.15s ease)}.tab-btn.active,.tab-btn:hover{color:#28589f;color:var(--primary-color,#28589f)}.tab-btn.active{border-bottom-color:#28589f;border-bottom-color:var(--primary-color,#28589f)}.dropdown{display:inline-block;position:relative}.dropdown-menu{background:#fff;background:var(--card-bg,#fff);border:1px solid #dde4ea;border:1px solid var(--border-color,#dde4ea);border-radius:8px;border-radius:var(--radius-md,8px);box-shadow:0 8px 16px #0000001a;box-shadow:var(--shadow-lg,0 8px 16px #0000001a);left:0;min-width:180px;opacity:0;padding:8px 0;padding:var(--spacing-sm,8px) 0;position:absolute;top:100%;transform:translateY(10px);transition:all .15s ease;transition:all var(--transition-fast,.15s ease);visibility:hidden;z-index:1000;z-index:var(--z-dropdown,1000)}.dropdown.open .dropdown-menu,.dropdown:focus-within .dropdown-menu{opacity:1;transform:translateY(4px);visibility:visible}.dropdown-item{color:#333;color:var(--text-color,#333);cursor:pointer;display:block;font-size:.9rem;padding:10px 16px;text-decoration:none;transition:background .15s ease;transition:background var(--transition-fast,.15s ease)}.dropdown-item:hover{background:#eef2f5;background:var(--bg-color,#eef2f5)}.dropdown-divider{background:#dde4ea;background:var(--border-color,#dde4ea);height:1px;margin:8px 0;margin:var(--spacing-sm,8px) 0}.form-input.is-valid,.form-input.is-valid:focus,.is-valid,.is-valid:focus{border-color:#28a745;border-color:var(--success-color,#28a745)}.form-input.is-valid:focus,.is-valid:focus{box-shadow:0 0 0 3px #28a7451a}.form-input.is-invalid,.form-input.is-invalid:focus,.is-invalid,.is-invalid:focus{border-color:#dc3545;border-color:var(--danger-color,#dc3545)}.form-input.is-invalid:focus,.is-invalid:focus{box-shadow:0 0 0 3px #dc35451a}.card{background:#fff;background:var(--card-bg,#fff);border:1px solid #dde4ea;border:1px solid var(--border-color,#dde4ea);border-radius:8px;border-radius:var(--radius-md,8px);box-shadow:0 2px 4px #00000014;box-shadow:var(--shadow-sm,0 2px 4px #00000014);overflow:hidden;transition:all .15s ease;transition:all var(--transition-fast,.15s ease)}.card:hover{box-shadow:0 4px 12px rgba(0,0,0,.065);box-shadow:var(--shadow-md,0 4px 12px rgba(0,0,0,.065))}.card-interactive{cursor:pointer}.card-interactive:hover{border-color:#28589f;border-color:var(--primary-color,#28589f);transform:translateY(-2px)}.card-flat,.card-flat:hover{box-shadow:none}.card-elevated{box-shadow:0 4px 12px rgba(0,0,0,.065);box-shadow:var(--shadow-md,0 4px 12px rgba(0,0,0,.065))}.card-elevated:hover{box-shadow:0 8px 16px #0000001a;box-shadow:var(--shadow-lg,0 8px 16px #0000001a)}.card-outlined{border-width:2px;box-shadow:none}.card-success{border-left:4px solid #28a745;border-left:4px solid var(--success-color,#28a745)}.card-warning{border-left:4px solid #ffc107;border-left:4px solid var(--warning-color,#ffc107)}.card-danger{border-left:4px solid #dc3545;border-left:4px solid var(--danger-color,#dc3545)}.card-info{border-left:4px solid #17a2b8;border-left:4px solid var(--info-color,#17a2b8)}.card-header{align-items:center;background:linear-gradient(135deg,#28589f0a,#0000);border-bottom:1px solid #dde4ea;border-bottom:1px solid var(--border-color,#dde4ea);display:flex;justify-content:space-between;padding:16px 24px;padding:var(--spacing-md,16px) var(--spacing-lg,24px)}.card-header h2,.card-header h3,.card-header h4{color:#333;color:var(--text-color,#333);font-weight:600;margin:0}.card-header h2{font-size:1.25rem}.card-header h3{font-size:1.1rem}.card-header h4{font-size:1rem}.card-header-icon{align-items:center;display:flex;gap:8px;gap:var(--spacing-sm,8px)}.card-header-icon svg{color:#28589f;color:var(--primary-color,#28589f);height:22px;width:22px}.card-actions{align-items:center;display:flex;gap:8px;gap:var(--spacing-sm,8px)}.card-body{padding:24px;padding:var(--spacing-lg,24px)}.card-body-compact{padding:16px;padding:var(--spacing-md,16px)}.card-footer{align-items:center;background:#eef2f5;background:var(--bg-color,#eef2f5);border-top:1px solid #dde4ea;border-top:1px solid var(--border-color,#dde4ea);display:flex;flex-wrap:wrap;gap:16px;gap:var(--spacing-md,16px);justify-content:space-between;padding:16px 24px;padding:var(--spacing-md,16px) var(--spacing-lg,24px)}.card-footer-end{justify-content:flex-end}.card-grid{grid-gap:16px;grid-gap:var(--spacing-md,16px);display:grid;gap:16px;gap:var(--spacing-md,16px)}.card-grid-2{grid-template-columns:repeat(2,1fr)}.card-grid-3{grid-template-columns:repeat(3,1fr)}.card-grid-4{grid-template-columns:repeat(4,1fr)}.card-grid-auto{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}@media (max-width:992px){.card-grid-3,.card-grid-4{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.card-grid-2,.card-grid-3,.card-grid-4{grid-template-columns:1fr}.card-body{padding:16px;padding:var(--spacing-md,16px)}.card-footer,.card-header{padding:8px 16px;padding:var(--spacing-sm,8px) var(--spacing-md,16px)}}.stat-card{gap:16px;gap:var(--spacing-md,16px);padding:24px;padding:var(--spacing-lg,24px)}.stat-card,.stat-card-icon{align-items:center;display:flex}.stat-card-icon{background:#28589f1a;border-radius:8px;border-radius:var(--radius-md,8px);color:#28589f;color:var(--primary-color,#28589f);height:56px;justify-content:center;width:56px}.stat-card-icon svg{height:28px;width:28px}.stat-card-icon.success{background:#28a7451a;color:#28a745;color:var(--success-color,#28a745)}.stat-card-icon.warning{background:#ffc1071a;color:#ffc107;color:var(--warning-color,#ffc107)}.stat-card-icon.danger{background:#dc35451a;color:#dc3545;color:var(--danger-color,#dc3545)}.stat-card-icon.info{background:#17a2b81a;color:#17a2b8;color:var(--info-color,#17a2b8)}.stat-card-content{flex:1 1}.stat-card-value{color:#333;color:var(--text-color,#333);font-size:1.75rem;font-weight:700;line-height:1.2}.stat-card-label{color:#999;color:var(--text-muted,#999);font-size:.9rem;margin-top:4px}.stat-card-trend{align-items:center;display:flex;font-size:.85rem;gap:4px;margin-top:8px}.stat-card-trend.up{color:#28a745;color:var(--success-color,#28a745)}.stat-card-trend.down{color:#dc3545;color:var(--danger-color,#dc3545)}.device-card{position:relative}.device-card-status{background:#6c757d;background:var(--offline-color,#6c757d);border-radius:50%;height:12px;position:absolute;right:16px;right:var(--spacing-md,16px);top:16px;top:var(--spacing-md,16px);width:12px}.device-card-status.online{animation:pulse 2s ease-in-out infinite;background:#28a745;background:var(--online-color,#28a745)}.device-card-status.alarm{background:#ffc107;background:var(--alarm-color,#ffc107)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.device-card-name{color:#333;color:var(--text-color,#333);font-size:1.1rem;font-weight:600;margin-bottom:4px}.device-card-id{color:#999;color:var(--text-muted,#999);font-family:Courier New,monospace;font-size:.85rem}.device-card-info{display:flex;flex-direction:column;gap:8px;gap:var(--spacing-sm,8px);margin-top:16px;margin-top:var(--spacing-md,16px)}.device-card-info-row{align-items:center;display:flex;font-size:.9rem;justify-content:space-between}.device-card-info-row span:first-child{color:#999;color:var(--text-muted,#999)}.device-card-info-row span:last-child{color:#333;color:var(--text-color,#333);font-weight:500}.card-empty{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:200px;padding:32px;padding:var(--spacing-xl,32px);text-align:center}.card-empty-icon{color:#999;color:var(--text-muted,#999);font-size:48px;margin-bottom:16px;margin-bottom:var(--spacing-md,16px);opacity:.5}.card-empty-title{color:#333;color:var(--text-color,#333);font-size:1.1rem;font-weight:600;margin-bottom:8px;margin-bottom:var(--spacing-sm,8px)}.card-empty-description{color:#999;color:var(--text-muted,#999);font-size:.9rem;max-width:300px}.card-loading{align-items:center;display:flex;flex-direction:column;justify-content:center;min-height:200px;padding:32px;padding:var(--spacing-xl,32px)}.card-loading .spinner{animation:card-spin .8s linear infinite;border:3px solid #dde4ea;border-top-color:#28589f;border:3px solid var(--border-color,#dde4ea);border-radius:50%;border-top-color:var(--primary-color,#28589f);height:40px;width:40px}.card-loading-text{color:#999;color:var(--text-muted,#999);font-size:.9rem;margin-top:16px;margin-top:var(--spacing-md,16px)}@keyframes card-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.table-container{-webkit-overflow-scrolling:touch;background:#fff;background:var(--card-bg,#fff);border:1px solid #dde4ea;border:1px solid var(--border-color,#dde4ea);border-radius:8px;border-radius:var(--radius-md,8px);overflow-x:auto}.table{border-collapse:collapse;font-size:.9rem;width:100%}.table thead{background:#eef2f5;background:var(--bg-color,#eef2f5)}.table th{border-bottom:2px solid #dde4ea;border-bottom:2px solid var(--border-color,#dde4ea);color:#333;color:var(--text-color,#333);font-size:.85rem;font-weight:600;letter-spacing:.5px;text-align:left;text-transform:uppercase;white-space:nowrap}.table td,.table th{padding:16px;padding:var(--spacing-md,16px)}.table td{border-bottom:1px solid #dde4ea;border-bottom:1px solid var(--border-color,#dde4ea);color:#666;color:var(--text-light,#666);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table tbody tr:hover{background:#28589f05}.table-clickable tbody tr{cursor:pointer;transition:background .15s ease;transition:background var(--transition-fast,.15s ease)}.table-clickable tbody tr:hover{background:#28589f0d}.table-striped tbody tr:nth-child(2n){background:#00000005}.table-striped tbody tr:nth-child(2n):hover{background:#28589f0d}.table-bordered td,.table-bordered th{border:1px solid #dde4ea;border:1px solid var(--border-color,#dde4ea)}.table-compact td,.table-compact th{padding:8px 16px;padding:var(--spacing-sm,8px) var(--spacing-md,16px)}.table .cell-actions{white-space:nowrap;width:1%}.table .cell-actions .action-buttons{display:flex;gap:4px;justify-content:flex-end}.table .cell-status{width:100px}.table .cell-date{white-space:nowrap}.table .cell-date,.table .cell-number{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.table .cell-number{text-align:right}.table .cell-mono{font-family:Courier New,Consolas,monospace;font-size:.85rem}.table .cell-truncate{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table th.sortable{cursor:pointer;transition:background .15s ease;transition:background var(--transition-fast,.15s ease);-webkit-user-select:none;user-select:none}.table th.sortable:hover{background:#28589f14}.table th.sortable:after{border-left:4px solid #0000;border-right:4px solid #0000;border-top:4px solid #999;border-top:4px solid var(--text-muted,#999);content:"";display:inline-block;height:0;margin-left:6px;opacity:.3;vertical-align:middle;width:0}.table th.sortable.asc:after{border-bottom:4px solid #28589f;border-bottom:4px solid var(--primary-color,#28589f);border-top:none;opacity:1}.table th.sortable.desc:after{border-top:4px solid #28589f;border-top:4px solid var(--primary-color,#28589f);opacity:1}.table tbody tr.selected{background:#28589f14}.table tbody tr.selected:hover{background:#28589f1f}.table .cell-checkbox{text-align:center;width:40px}.table .cell-checkbox input[type=checkbox]{accent-color:#28589f;accent-color:var(--primary-color,#28589f);cursor:pointer;height:18px;width:18px}.table tfoot{background:#eef2f5;background:var(--bg-color,#eef2f5)}.table tfoot td{border-bottom:none;border-top:2px solid #dde4ea;border-top:2px solid var(--border-color,#dde4ea);font-weight:600}.table tfoot td,.table-pagination{padding:16px;padding:var(--spacing-md,16px)}.table-pagination{align-items:center;background:#eef2f5;background:var(--bg-color,#eef2f5);border-top:1px solid #dde4ea;border-top:1px solid var(--border-color,#dde4ea);display:flex;flex-wrap:wrap;gap:16px;gap:var(--spacing-md,16px);justify-content:space-between}.table-pagination-info{color:#999;color:var(--text-muted,#999);font-size:.85rem}.table-pagination-controls{align-items:center;display:flex;gap:8px;gap:var(--spacing-sm,8px)}.table-pagination-btn{background:#fff;background:var(--card-bg,#fff);border:1px solid #dde4ea;border:1px solid var(--border-color,#dde4ea);border-radius:4px;border-radius:var(--radius-sm,4px);color:#333;color:var(--text-color,#333);cursor:pointer;font-size:.85rem;min-height:36px;padding:6px 12px;transition:all .15s ease;transition:all var(--transition-fast,.15s ease)}.table-pagination-btn:hover:not(:disabled){background:#28589f;background:var(--primary-color,#28589f);border-color:#28589f;border-color:var(--primary-color,#28589f);color:#fff}.table-pagination-btn:disabled{cursor:not-allowed;opacity:.5}.table-pagination-btn.active{background:#28589f;background:var(--primary-color,#28589f);border-color:#28589f;border-color:var(--primary-color,#28589f);color:#fff}.table-pagination-info .page-info{color:#333;color:var(--text-color,#333);font-weight:600}.table-empty{color:#999;color:var(--text-muted,#999);padding:32px;padding:var(--spacing-xl,32px);text-align:center}.table-empty-icon{font-size:48px;margin-bottom:16px;margin-bottom:var(--spacing-md,16px);opacity:.5}.table-empty-title{color:#333;color:var(--text-color,#333);font-size:1rem;font-weight:600;margin-bottom:8px;margin-bottom:var(--spacing-sm,8px)}.table-empty-description{font-size:.9rem}.table-loading{min-height:200px;position:relative}.table-loading:after{background:#fffc;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.table-loading-overlay,.table-loading:after{align-items:center;display:flex;justify-content:center}.table-loading-overlay{flex-direction:column;min-height:200px;padding:32px;padding:var(--spacing-xl,32px)}@media (max-width:768px){.table td,.table th{font-size:.85rem;padding:8px;padding:var(--spacing-sm,8px)}.table-container{border-left:none;border-radius:0;border-right:none;margin:0 -8px;margin:0 calc(var(--spacing-sm, 8px)*-1)}.table-pagination{align-items:stretch;flex-direction:column;text-align:center}.table-pagination-controls{justify-content:center}.table .hide-mobile{display:none}}@media (max-width:992px){.table .hide-tablet{display:none}}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-color);color:var(--text-color);font-family:Arial,sans-serif;line-height:1.6}#root,body,html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;height:100%;overflow:hidden}@media (max-width:768px){#root,body,html{-webkit-overflow-scrolling:touch;overflow:auto}}h1,h2,h3,h4,h5,h6{font-weight:600;line-height:1.2;margin:0}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.1rem}h5{font-size:1rem}h6{font-size:.9rem}a{color:var(--primary-color);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--primary-dark)}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}ol,ul{list-style:none}img{height:auto;max-width:100%}.flex,.flex-col{display:flex}.flex-col{flex-direction:column}.gap-sm{gap:var(--spacing-sm)}.gap-md{gap:var(--spacing-md)}.gap-lg{gap:var(--spacing-lg)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-muted{color:var(--text-muted)}.text-light{color:var(--text-light)}.mt-sm{margin-top:var(--spacing-sm)}.mt-md{margin-top:var(--spacing-md)}.mt-lg{margin-top:var(--spacing-lg)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:var(--bg-color)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:#bbb}.spinner{animation:spin 1s linear infinite;border-top:3px solid var(--border-color);border:3px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);height:40px;width:40px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.status-badge{font-size:.85rem;font-weight:500;padding:4px 12px}.status-active,.status-online{background:#28a7451a}.status-inactive,.status-offline{background:#6c757d1a;color:#000}.status-alarm{background:#dc35451a;color:var(--alarm-color)}.status-disabled{background:#6c757d1a;color:#6c757d}@supports (padding:env(safe-area-inset-top)){.mobile-header{padding-top:calc(var(--spacing-md) + env(safe-area-inset-top))}.sidebar{padding-top:env(safe-area-inset-top)}}*{min-width:0}@media (max-width:768px){.full-page-content{-webkit-overflow-scrolling:touch;overflow-x:hidden!important;overflow-y:auto!important;padding:var(--spacing-sm)!important;padding-bottom:calc(var(--spacing-lg) + env(safe-area-inset-bottom, 0px))!important}.admin-table-container,.devices-table-container{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto!important}.admin-card,.card,.modal-card{max-width:100%;overflow-wrap:break-word;word-break:break-word}.btn,.btn-icon,.tab-btn,button{min-height:44px}input,select,textarea{font-size:16px!important}}.admin-container{--admin-spacing-xs:4px;--admin-spacing-sm:8px;--admin-spacing-md:16px;--admin-spacing-lg:24px;--admin-spacing-xl:32px;box-sizing:border-box;max-width:100%;padding:var(--admin-spacing-md);width:100%}.admin-section-header{align-items:center;display:flex;flex-wrap:wrap;gap:var(--admin-spacing-md);justify-content:space-between;margin-bottom:var(--admin-spacing-lg)}.admin-section-title{align-items:center;display:flex;gap:var(--admin-spacing-sm)}.admin-section-title h3{color:var(--text-color);font-size:1.4rem;font-weight:600;margin:0}.admin-badge-count{background:var(--primary-color);border-radius:20px;color:#fff;font-size:.85rem;font-weight:600;padding:4px 12px}.admin-section-actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--admin-spacing-sm)}.device-actions{align-items:center;display:flex;gap:4px}.admin-container .search-input{flex:1 1;max-width:300px;min-width:100px}.admin-grid{grid-gap:var(--admin-spacing-md);display:grid;gap:var(--admin-spacing-md);grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.admin-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-lg);overflow:hidden;transition:all var(--transition-fast)}.admin-card:hover{border-color:var(--primary-color);box-shadow:var(--shadow-md);transform:translateY(-2px)}.admin-card-header{align-items:center;background:linear-gradient(135deg,#28589f0f,#0000);border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;padding:var(--admin-spacing-md)}.admin-card-header h4{color:var(--text-color);font-size:1rem;font-weight:600;margin:0}.admin-card-body{padding:var(--admin-spacing-md)}.admin-card-footer{background:var(--bg-color);border-top:1px solid var(--border-color);display:flex;flex-wrap:wrap;gap:var(--admin-spacing-sm);padding:var(--admin-spacing-sm) var(--admin-spacing-md)}.admin-table-container{background:var(--card-bg);border:1px solid var(--border-color);border-radius:var(--radius-md);overflow-x:auto}.admin-table{border-collapse:collapse;font-size:.9rem;width:100%}.admin-table thead{background:var(--bg-color)}.admin-table th{border-bottom:2px solid var(--border-color);color:var(--text-color);font-weight:600;padding:var(--admin-spacing-md);text-align:left;white-space:nowrap}.admin-table td{border-bottom:1px solid var(--border-color);color:var(--text-light);padding:var(--admin-spacing-md)}.admin-table tbody tr:hover{background:var(--bg-color)}.admin-table .actions{display:flex;gap:var(--admin-spacing-xs)}.loading{align-items:center;display:flex;justify-content:center}.empty-message,.empty-state,.loading{color:var(--text-muted);padding:var(--admin-spacing-xl)}.access-denied,.empty-message,.empty-state{text-align:center}.access-denied{background:#dc35451a;border:1px solid var(--danger-color);color:var(--danger-color);padding:var(--admin-spacing-lg)}.access-denied,.notification{border-radius:var(--radius-md)}.notification{animation:slideIn .3s ease-out;box-shadow:var(--shadow-lg);font-weight:500;max-width:90%;padding:var(--admin-spacing-md) var(--admin-spacing-lg);position:fixed;right:20px;top:20px;z-index:1100}.notification-success{background:linear-gradient(135deg,#28a745,#20c997);color:#fff}.notification-error{background:linear-gradient(135deg,#dc3545,#e74c3c);color:#fff}.status-badge{border-radius:var(--radius-pill);display:inline-block;font-size:.8rem;font-weight:600;padding:4px 10px;text-transform:capitalize}.status-active,.status-online{background:#28a74526;color:#000}.status-suspended,.status-warning{background:#ffc10726;color:#856404}.status-error,.status-expired,.status-inactive,.status-offline{background:#dc354526;color:#000}.stat-badge{align-items:center;background:var(--bg-color);border-radius:var(--radius-pill);color:var(--text-light);display:inline-flex;font-size:.8rem;gap:4px;padding:4px 10px}.subscription-status{display:flex;flex-direction:column;font-size:.85rem;gap:4px}.subscription-active{color:#28a745}.subscription-expiring{color:#ffc107}.subscription-expired{color:#dc3545}.subscription-dates{color:var(--text-muted);font-size:.75rem}@media (max-width:1024px){.admin-container{padding:var(--admin-spacing-sm)}.admin-grid{gap:var(--admin-spacing-sm);grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.admin-section-header{align-items:stretch;flex-direction:column}.admin-section-actions{justify-content:flex-start}.search-input{flex:1 1;max-width:none;min-width:0}.form-row{grid-template-columns:1fr}}@media (max-width:768px){.admin-container{padding:var(--admin-spacing-xs)}.admin-section-header{gap:var(--admin-spacing-sm)}.admin-section-title h3{font-size:1.1rem}.admin-grid{grid-template-columns:1fr}.admin-section-actions{flex-direction:column;width:100%}.admin-section-actions .btn,.admin-section-actions .search-input{width:100%}.btn{font-size:.95rem;min-height:44px;padding:12px 16px}.modal-content{border-radius:0;height:100vh;margin:0;max-height:100vh;max-width:100%!important;width:100%!important}.modal-body,.modal-footer,.modal-header{padding:var(--admin-spacing-md)}.admin-table{font-size:.8rem}.admin-table td,.admin-table th{padding:var(--admin-spacing-sm)}.admin-table-container{-webkit-overflow-scrolling:touch;max-width:calc(100vw - 16px);overflow-x:auto}.admin-card-body,.admin-card-footer,.admin-card-header{padding:var(--admin-spacing-sm)}.notification{font-size:.85rem;left:var(--admin-spacing-sm);max-width:none;padding:var(--admin-spacing-sm) var(--admin-spacing-md);right:var(--admin-spacing-sm)}.admin-card-header h4{font-size:.95rem}}@media (min-width:1600px){.admin-container{padding:var(--admin-spacing-lg)}.admin-grid{gap:var(--admin-spacing-lg);grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.admin-section-title h3{font-size:1.6rem}.btn{font-size:.95rem;padding:12px 20px}.modal-content{max-width:700px}}@media (min-width:2000px){.admin-grid{grid-template-columns:repeat(auto-fill,minmax(350px,1fr))}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalSlideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-overlay{align-items:center;animation:modalFadeIn .2s ease;background:#00000080;bottom:0;display:flex;justify-content:center;left:0;padding:24px;padding:var(--spacing-lg,24px);position:fixed;right:0;top:0;z-index:1050;z-index:var(--z-modal,1050)}.modal-content{animation:modalSlideUp .3s ease;background:#fff;background:var(--card-bg,#fff);border-radius:12px;border-radius:var(--radius-lg,12px);box-shadow:0 20px 60px #0003;display:flex;flex-direction:column;max-height:85vh;max-width:560px;overflow:hidden;width:100%}.modal-content.modal-sm{max-width:400px}.modal-content.modal-lg{max-width:720px}.modal-content.modal-xl{max-width:900px}.modal-header{align-items:center;background:#fff;background:var(--card-bg,#fff);border-bottom:1px solid #dde4ea;border-bottom:1px solid var(--border-color,#dde4ea);display:flex;justify-content:space-between;padding:24px;padding:var(--spacing-lg,24px)}.modal-header h2,.modal-header h3{align-items:center;color:#333;color:var(--text-color,#333);display:flex;font-size:1.25rem;font-weight:600;gap:12px;margin:0}.modal-header svg{color:#28589f;color:var(--primary-color,#28589f);height:24px;width:24px}.btn-close,.modal-close{align-items:center;background:none;border:none;border-radius:4px;border-radius:var(--radius-sm,4px);color:#999;color:var(--text-muted,#999);cursor:pointer;display:flex;justify-content:center;padding:8px;transition:all .2s}.btn-close:hover,.modal-close:hover{background:#eef2f5;background:var(--bg-color,#eef2f5);color:#333;color:var(--text-color,#333)}.btn-close svg,.modal-close svg{height:20px;width:20px}.modal-body{background:#eef2f5;background:var(--bg-color,#eef2f5);flex:1 1;overflow-y:auto;padding:24px;padding:var(--spacing-lg,24px)}.modal-actions,.modal-body.no-bg,.modal-footer{background:#fff;background:var(--card-bg,#fff)}.modal-actions,.modal-footer{align-items:center;border-top:1px solid #dde4ea;border-top:1px solid var(--border-color,#dde4ea);display:flex;gap:12px;justify-content:flex-end;padding:16px 24px;padding:var(--spacing-md,16px) var(--spacing-lg,24px)}.modal-footer.space-between{justify-content:space-between}.modal-content .form-group{margin-bottom:20px}.modal-content .form-group:last-child{margin-bottom:0}.modal-content label{color:#333;color:var(--text-color,#333);display:block;font-size:.9rem;font-weight:500;margin-bottom:8px}.modal-content input,.modal-content select,.modal-content textarea{background:#fff;background:var(--card-bg,#fff);border:2px solid #dde4ea;border:2px solid var(--border-color,#dde4ea);border-radius:4px;border-radius:var(--radius-sm,4px);color:#333;color:var(--text-color,#333);font-size:.95rem;padding:10px 14px;transition:all .2s;width:100%}.modal-content input:focus,.modal-content select:focus,.modal-content textarea:focus{border-color:#28589f;border-color:var(--primary-color,#28589f);box-shadow:0 0 0 3px #28589f26;outline:none}.modal-content input:disabled,.modal-content select:disabled,.modal-content textarea:disabled{background:#eef2f5;background:var(--bg-color,#eef2f5);color:#666;color:var(--text-light,#666);cursor:not-allowed}.modal-content small{color:#999;color:var(--text-muted,#999);display:block;font-size:.8rem;margin-top:6px}.modal-content .btn{align-items:center;border:none;border-radius:4px;border-radius:var(--radius-sm,4px);cursor:pointer;display:inline-flex;font-size:.9rem;font-weight:500;gap:8px;justify-content:center;padding:10px 18px;transition:all .2s;white-space:nowrap}.modal-content .btn svg{height:18px;width:18px}.modal-content .btn:disabled{cursor:not-allowed;opacity:.6}.modal-content .btn-primary{background:#28589f;background:var(--primary-color,#28589f);color:#fff}.modal-content .btn-primary:hover:not(:disabled){background:#1a3c6e;background:var(--primary-dark,#1a3c6e)}.modal-content .btn-secondary{background:#eef2f5;background:var(--bg-color,#eef2f5);border:1px solid #dde4ea;border:1px solid var(--border-color,#dde4ea);color:#333;color:var(--text-color,#333)}.modal-content .btn-secondary:hover:not(:disabled){background:#dde4ea;background:var(--border-color,#dde4ea)}.modal-content .btn-danger:not(.btn-admin){background:#dc3545;background:var(--danger-color,#dc3545);color:#fff}.modal-content .btn-danger:not(.btn-admin):hover:not(:disabled){background:#c82333}.modal-content .btn-success:not(.btn-admin){background:#28a745;background:var(--success-color,#28a745);color:#fff}.modal-content .btn-success:not(.btn-admin):hover:not(:disabled){background:#218838}.modal-message{border-radius:8px;border-radius:var(--radius-md,8px);font-size:.9rem;margin-bottom:20px;padding:12px 16px}.modal-message.success{background:#28a7451a;border:1px solid #28a74533;color:#28a745;color:var(--success-color,#28a745)}.modal-message.error{background:#dc35451a;border:1px solid #dc354533;color:#dc3545;color:var(--danger-color,#dc3545)}.modal-message.warning{background:#ffc1071a;border:1px solid #ffc10733;color:#e0a800;color:var(--warning-color,#e0a800)}.modal-message.info{background:#28589f1a;border:1px solid #28589f33;color:#28589f;color:var(--primary-color,#28589f)}.modal-card{background:#fff;background:var(--card-bg,#fff);border-radius:12px;border-radius:var(--radius-lg,12px);box-shadow:0 2px 4px #00000014;box-shadow:var(--shadow-sm,0 2px 4px #00000014);margin-bottom:16px;padding:20px}.modal-card:last-child{margin-bottom:0}.modal-card h4{color:#333;color:var(--text-color,#333);font-size:1rem;margin:0 0 12px}.modal-card p{color:#666;color:var(--text-light,#666);font-size:.9rem;line-height:1.5;margin:0}.confirm-dialog .modal-content{max-width:420px}.confirm-dialog .modal-body{background:#fff;background:var(--card-bg,#fff);padding:32px 24px;text-align:center}.confirm-dialog .confirm-icon{align-items:center;border-radius:50%;display:flex;height:64px;justify-content:center;margin:0 auto 20px;width:64px}.confirm-dialog .confirm-icon.danger{background:#dc35451a;color:#dc3545;color:var(--danger-color,#dc3545)}.confirm-dialog .confirm-icon.warning{background:#ffc1071a;color:#ffc107;color:var(--warning-color,#ffc107)}.confirm-dialog .confirm-icon svg{height:32px;width:32px}.confirm-dialog h3{color:#333;color:var(--text-color,#333);font-size:1.2rem;margin:0 0 12px}.confirm-dialog p{color:#666;color:var(--text-light,#666);line-height:1.5;margin:0}@media (max-width:640px){.modal-overlay{align-items:stretch;padding:0}.modal-content{border-radius:0;height:100%;max-height:100%;max-width:100%}.modal-content.modal-lg,.modal-content.modal-sm,.modal-content.modal-xl{max-width:100%}.modal-header{padding:14px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:1}.modal-header h2,.modal-header h3{font-size:1.05rem}.modal-body{-webkit-overflow-scrolling:touch;flex:1 1;overflow-y:auto;padding:16px}.modal-actions,.modal-footer{background:#fff;background:var(--card-bg,#fff);bottom:0;flex-wrap:wrap;padding:12px 16px calc(12px + env(safe-area-inset-bottom, 0px));position:-webkit-sticky;position:sticky;z-index:1}.modal-actions .btn,.modal-footer .btn{flex:1 1;min-height:44px;min-width:100px}}@media (max-width:480px){.modal-actions,.modal-footer{flex-direction:column}.modal-actions .btn,.modal-footer .btn{width:100%}}