:root{--sidebar-width: 256px;--shadow: 0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--shadow-lg: 0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;line-height:1.5}body{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background:#f3f4f6;color:#111827;min-height:100vh}a{color:#2563eb;text-decoration:none;transition:color .15s ease}a:hover{color:#1d4ed8}ul,ol{list-style:none}img{max-width:100%;height:auto}:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}::selection{background:#dbeafe;color:#1e3a8a}.app{display:flex;min-height:100vh}.main-content{flex:1;margin-left:256px;min-height:100vh;background:#f3f4f6}@media (max-width: 768px){.main-content{margin-left:4rem}}.content{padding:1.5rem}@media (max-width: 768px){.content{padding:1rem}}.app-footer{padding:.5rem 1.5rem;text-align:right}.build-version{font-size:.7rem;color:var(--text-muted);opacity:.5;font-family:monospace;user-select:none}.sidebar{position:fixed;left:0;top:0;width:256px;height:100vh;background:#111827;color:#fff;display:flex;flex-direction:column;z-index:100}@media (max-width: 768px){.sidebar{width:4rem}}.sidebar-header{padding:1rem;border-bottom:1px solid #1f2937;display:flex;flex-direction:row;align-items:center;justify-content:space-between}@media (max-width: 768px){.sidebar-header{justify-content:center}}.sidebar-logo{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.5rem;text-decoration:none;color:#fff}.logo-icon{width:2rem;height:2rem;flex-shrink:0;color:#60a5fa}.logo-text{font-size:1.25rem;font-weight:700;color:#fff}@media (max-width: 768px){.logo-text{display:none}}.sidebar-nav{flex:1;overflow-y:auto;padding:1rem}.nav-section{margin-bottom:1.5rem}.nav-section:first-child{margin-top:0}.nav-section-title{padding:0 .75rem;margin-bottom:.5rem;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#6b7280}@media (max-width: 768px){.nav-section-title{display:none}}.nav-list{list-style:none}.nav-item{margin-bottom:.25rem}.nav-link{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.75rem;padding:.5rem .75rem;color:#d1d5db;border-radius:.5rem;transition:all .15s ease;text-decoration:none}.nav-link:hover{background:#1f2937;color:#fff}.nav-link.active{background:#2563eb;color:#fff}@media (max-width: 768px){.nav-link{justify-content:center;padding:.75rem}}.nav-icon{width:1.25rem;height:1.25rem;flex-shrink:0}.nav-text{font-size:.875rem}@media (max-width: 768px){.nav-text{display:none}}.sidebar-footer{padding:1rem;border-top:1px solid #1f2937}.user-menu{position:relative}.user-button{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.75rem;width:100%;padding:.5rem;background:rgba(0,0,0,0);border:none;border-radius:.5rem;color:#d1d5db;cursor:pointer;transition:all .15s ease;text-align:left}.user-button:hover{background:#1f2937;color:#fff}@media (max-width: 768px){.user-button{justify-content:center}}.user-avatar{display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;background:#2563eb;color:#fff;border-radius:50%;font-weight:600;font-size:.875rem}.user-info{flex:1;min-width:0}@media (max-width: 768px){.user-info{display:none}}.user-name{font-weight:500;font-size:.875rem;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-role{font-size:.75rem;color:#9ca3af}.user-dropdown{position:absolute;bottom:100%;left:0;right:0;margin-bottom:.5rem;background:#1f2937;border:1px solid #374151;border-radius:.5rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);opacity:0;visibility:hidden;transform:translateY(10px);transition:all .15s ease;z-index:200}.user-dropdown.show{opacity:1;visibility:visible;transform:translateY(0)}@media (max-width: 768px){.user-dropdown{display:none}}.dropdown-item{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.5rem;padding:.5rem .75rem;color:#d1d5db;background:none;border:none;width:100%;text-align:left;cursor:pointer;font-size:.875rem;transition:all .15s ease}.dropdown-item:hover{background:#374151;color:#fff}.dropdown-item.logout:hover{color:#f87171}.dropdown-divider{border:none;border-top:1px solid #374151;margin:.25rem 0}.page-header{margin-bottom:1.5rem}.page-title{font-size:1.5rem;font-weight:700;color:#111827}.card{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);padding:1rem}.card-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.card-title{font-size:1.125rem;font-weight:600;color:#111827}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:1rem;margin-bottom:2rem}@media (max-width: 768px){.stats-grid{grid-template-columns:1fr 1fr}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr}}.stat-card{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);padding:1rem}.stat-card-content{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.75rem}.stat-icon{padding:.5rem;border-radius:.5rem}.stat-icon.blue{background:#dbeafe;color:#2563eb}.stat-icon.green{background:#dcfce7;color:#16a34a}.stat-icon.red{background:#fee2e2;color:#dc2626}.stat-icon svg{width:1.5rem;height:1.5rem;flex-shrink:0}.stat-label{font-size:.875rem;color:#6b7280}.stat-value{font-size:1.5rem;font-weight:700;color:#111827}.table-container{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);overflow:hidden;padding:0}@media (max-width: 768px){.table-container{overflow-x:auto}}.table{width:100%;border-collapse:collapse}.table th{padding:.75rem 1rem;text-align:left;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;background:#f9fafb;border-bottom:1px solid #e5e7eb}.table td{padding:.75rem 1rem;border-bottom:1px solid #e5e7eb;font-size:.875rem}.table tr:hover td{background:#f9fafb}.table tr:last-child td{border-bottom:none}.table-header-icon{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.25rem}.table-header-icon svg{width:.875rem;height:.875rem;flex-shrink:0}.badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:9999px;background:#f3f4f6;color:#374151}.badge svg{width:.75rem;height:.75rem;flex-shrink:0}.badge-online{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:9999px;background:#dcfce7;color:#15803d}.badge-offline{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:9999px;background:#fee2e2;color:#b91c1c}.badge-mode{padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:.25rem}.badge-mode-live{background:#dcfce7;color:#15803d}.badge-mode-eco{background:#fef9c3;color:#a16207}.badge-mode-fast{background:#dbeafe;color:#1d4ed8}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#2563eb;color:#fff}.btn-primary:hover:not(:disabled){background:#1d4ed8}.btn-secondary{background:#f3f4f6;color:#374151}.btn-secondary:hover:not(:disabled){background:#e5e7eb}.btn-danger{background:#ef4444;color:#fff}.btn-danger:hover:not(:disabled){background:#dc2626}.btn-sm{padding:.25rem .5rem;font-size:.75rem}.btn-block{width:100%}.form-group{margin-bottom:1rem}.form-label{display:block;margin-bottom:.25rem;font-size:.875rem;font-weight:500;color:#d1d5db}.form-input{width:100%;padding:.5rem .75rem;font-size:.875rem;border-radius:.5rem;transition:all .15s ease;background:#374151;border:1px solid #4b5563;color:#fff}.form-input:focus{outline:none}.form-input:focus{border-color:#3b82f6;box-shadow:0 0 0 2px rgba(59,130,246,.5)}.form-input::placeholder{color:#9ca3af}.form-error{margin-top:.25rem;font-size:.875rem;color:#f87171}.filter-bar{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);padding:1rem;margin-bottom:1.5rem}.filter-content{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:1rem}@media (max-width: 768px){.filter-content{flex-direction:column;align-items:flex-start}}.filter-label{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.5rem;font-size:.875rem;font-weight:500;color:#4b5563}.filter-buttons{display:flex;gap:.5rem}@media (max-width: 480px){.filter-buttons{flex-wrap:wrap}}.filter-btn{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.25rem;padding:.25rem .75rem;font-size:.875rem;font-weight:500;border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease;background:#f3f4f6;color:#4b5563}.filter-btn:hover{background:#e5e7eb}.filter-btn.active-green{background:#dcfce7;color:#15803d}.filter-btn.active-red{background:#fee2e2;color:#b91c1c}.filter-btn.active-blue{background:#dbeafe;color:#1d4ed8}.filter-btn svg{width:.875rem;height:.875rem;flex-shrink:0}.alert{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;gap:.5rem;padding:.75rem;border-radius:.5rem;margin-bottom:1rem}.alert svg{width:1.25rem;height:1.25rem;flex-shrink:0}.alert-error{background:rgba(127,29,29,.5);border:1px solid #b91c1c;color:#f87171}.alert-success{background:rgba(21,128,61,.2);border:1px solid #16a34a;color:#22c55e}.alert-info{background:rgba(30,64,175,.2);border:1px solid #2563eb;color:#60a5fa}.tabs{display:flex;border-bottom:1px solid #e5e7eb;margin-bottom:1.5rem}.tab{padding:.75rem 1rem;font-size:.875rem;font-weight:500;color:#6b7280;background:none;border:none;border-bottom:2px solid rgba(0,0,0,0);cursor:pointer;transition:all .15s ease}.tab:hover{color:#374151}.tab.active{color:#2563eb;border-bottom-color:#2563eb}.tab-panel{display:none}.tab-panel.active{display:block}.pagination{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:1rem;border-top:1px solid #e5e7eb}@media (max-width: 480px){.pagination{flex-direction:column;gap:1rem}}.pagination-info{font-size:.875rem;color:#6b7280}.pagination-list{display:flex;gap:.25rem}.pagination-link{display:flex;align-items:center;justify-content:center;min-width:2rem;height:2rem;padding:0 .5rem;font-size:.875rem;color:#4b5563;background:#fff;border:1px solid #d1d5db;border-radius:.375rem;transition:all .15s ease}.pagination-link:hover{background:#f9fafb;color:#111827}.pagination-link.active{background:#2563eb;border-color:#2563eb;color:#fff}.toast-container{position:fixed;top:1rem;right:1rem;z-index:1000;display:flex;flex-direction:column;gap:.5rem}.toast{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;gap:.75rem;padding:1rem;background:#fff;border-radius:.5rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);min-width:300px;max-width:400px;animation:slideIn .3s ease}@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}.toast-success{border-left:4px solid #22c55e}.toast-error{border-left:4px solid #ef4444}.toast-info{border-left:4px solid #3b82f6}.toast-close{background:none;border:none;color:#9ca3af;cursor:pointer;font-size:1.25rem;line-height:1;padding:0;margin-left:auto}.toast-close:hover{color:#4b5563}.loading{text-align:center;padding:2rem;color:#6b7280}.spinner{display:inline-block;width:2rem;height:2rem;border:3px solid #e5e7eb;border-top-color:#2563eb;border-radius:50%;animation:spin 1s linear;animation-iteration-count:infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty-state{text-align:center;padding:2rem;background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1)}.empty-state svg{width:3rem;height:3rem;flex-shrink:0;color:#d1d5db;margin:0 auto 1rem}.empty-state-title{font-size:1.125rem;font-weight:500;color:#111827;margin-bottom:.5rem}.empty-state-text{color:#6b7280}.value-temp{color:#ea580c;font-weight:500}.value-wind{color:#2563eb}.value-wind .unit{font-size:.75rem;color:#9ca3af;margin-left:.25rem}.value-wind .gust{font-size:.75rem;color:#6b7280;margin-left:.25rem}.value-humidity{color:#0891b2;font-weight:500}.value-pressure{color:#9333ea;font-weight:500}.value-pressure .unit{font-size:.75rem;color:#9ca3af;margin-left:.25rem}.station-info{display:flex;flex-direction:column}.station-name{font-weight:500;color:#111827}.station-id{font-size:.75rem;color:#6b7280}.station-time{font-size:.875rem;color:#6b7280}.action-link{color:#2563eb;transition:color .15s ease}.action-link:hover{color:#1e40af}.action-link svg{width:1.25rem;height:1.25rem;flex-shrink:0}.auth-page{display:flex;align-items:center;justify-content:center;min-height:100vh;background:#111827}.auth-container{width:100%;max-width:28rem;padding:1rem}.auth-card{background:#1f2937;border-radius:.5rem;box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);padding:2rem}.auth-header{text-align:center;margin-bottom:2rem}.auth-logo{display:flex;justify-content:center;margin-bottom:1rem}.auth-logo svg{width:3rem;height:3rem;flex-shrink:0;color:#60a5fa}.auth-title{font-size:1.5rem;font-weight:700;color:#fff}.auth-subtitle{color:#9ca3af;font-size:.875rem}.auth-links{text-align:center;margin-top:1rem}.auth-link{font-size:.875rem;color:#60a5fa}.auth-link:hover{color:#93c5fd}.profile-layout{display:flex;gap:2rem;max-width:1100px;margin:0 auto;padding:1.5rem;min-height:calc(100vh - 80px)}@media (max-width: 768px){.profile-layout{flex-direction:column;gap:1rem;padding:1rem}}.profile-sidebar{width:240px;flex-shrink:0}@media (max-width: 768px){.profile-sidebar{width:100%}}.profile-user-card{display:flex;align-items:center;gap:.75rem;padding:1rem;background:linear-gradient(135deg, #1f2937 0%, #111827 100%);border-radius:.75rem;margin-bottom:1rem}.profile-user-card .profile-avatar{width:48px;height:48px;border-radius:9999px;background:linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);display:flex;align-items:center;justify-content:center;font-size:1.125rem;font-weight:700;color:#fff;text-transform:uppercase;box-shadow:0 4px 12px rgba(37,99,235,.3)}.profile-user-card .profile-user-info{flex:1;min-width:0}.profile-user-card .profile-user-info .profile-username{font-size:.875rem;font-weight:600;color:#fff;margin:0 0 .25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-user-card .profile-user-info .profile-role{font-size:.75rem;color:#9ca3af;text-transform:capitalize}.profile-nav{display:flex;flex-direction:column;gap:.25rem}@media (max-width: 768px){.profile-nav{flex-direction:row;overflow-x:auto;padding:.25rem;background:#f3f4f6;border-radius:.75rem;gap:.25rem}}.profile-nav-item{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;font-size:.875rem;font-weight:500;color:#4b5563;text-decoration:none;border-radius:.5rem;transition:all .15s ease;cursor:pointer;border:none;background:rgba(0,0,0,0);width:100%;text-align:left}.profile-nav-item svg{width:18px;height:18px;flex-shrink:0;color:#9ca3af;flex-shrink:0;transition:color .15s ease}.profile-nav-item:hover{color:#111827;background:#f3f4f6}.profile-nav-item:hover svg{color:#4b5563}.profile-nav-item.active{color:#1d4ed8;background:#eff6ff}.profile-nav-item.active svg{color:#2563eb}@media (max-width: 768px){.profile-nav-item{padding:.5rem .75rem;white-space:nowrap;width:auto}.profile-nav-item span{display:none}.profile-nav-item svg{margin:0}.profile-nav-item.active{background:#fff;box-shadow:0 1px 3px rgba(17,24,39,.08)}}.profile-nav-divider{height:1px;background:#e5e7eb;margin:.5rem 0}@media (max-width: 768px){.profile-nav-divider{display:none}}.profile-quick-link{margin-top:1rem;padding-top:1rem;border-top:1px solid #e5e7eb}.profile-quick-link .profile-nav-item{background:linear-gradient(135deg, #eff6ff 0%, #ecfdf5 100%);border:1px solid #bfdbfe;color:#1d4ed8}.profile-quick-link .profile-nav-item:hover{background:linear-gradient(135deg, #dbeafe 0%, #d1fae5 100%);border-color:#93c5fd}@media (max-width: 768px){.profile-quick-link{margin-top:.5rem;padding-top:.5rem;border-top:none}}.profile-content{flex:1;min-width:0}.profile-header{margin-bottom:1.5rem;padding-bottom:1rem;border-bottom:1px solid #e5e7eb}.profile-header h1{font-size:1.5rem;font-weight:700;color:#111827;margin:0 0 .5rem;letter-spacing:-.02em}.profile-header p{font-size:.875rem;color:#6b7280;margin:0}.profile-section{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);padding:1.25rem;margin-bottom:1rem;border:1px solid #e5e7eb;animation:profileFadeIn .4s ease;animation-fill-mode:both}.profile-section:last-child{margin-bottom:0}.profile-section:nth-child(1){animation-delay:.08s}.profile-section:nth-child(2){animation-delay:.16s}.profile-section:nth-child(3){animation-delay:.24s}.profile-section:nth-child(4){animation-delay:.32s}.profile-section:nth-child(5){animation-delay:.4s}.profile-section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #f3f4f6}.profile-section-header h2{font-size:1rem;font-weight:600;color:#111827;margin:0;display:flex;align-items:center;gap:.5rem}.profile-section-header h2 svg{width:20px;height:20px;flex-shrink:0;color:#9ca3af}.profile-section-header .section-badge{padding:.25rem .5rem;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;border-radius:.25rem;background:#f3f4f6;color:#4b5563}.profile-section-description{font-size:.875rem;color:#6b7280;margin:0 0 1rem}.profile-info-grid{display:grid;gap:1rem}.profile-info-row{display:flex;align-items:flex-start;padding:.75rem 0;border-bottom:1px solid #f3f4f6}.profile-info-row:last-child{border-bottom:none;padding-bottom:0}.profile-info-row:first-child{padding-top:0}.profile-info-label{width:140px;flex-shrink:0;font-size:.875rem;font-weight:500;color:#6b7280;padding-top:.25rem}.profile-info-value{flex:1;font-size:.875rem;color:#111827}.profile-info-value.with-badge{display:flex;align-items:center;gap:.5rem}.profile-role-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;border-radius:.25rem}.profile-role-badge.admin{background:#fef3c7;color:#b45309}.profile-role-badge.user{background:#dbeafe;color:#1d4ed8}.profile-role-badge.viewer{background:#f3f4f6;color:#4b5563}.profile-form{display:flex;flex-direction:column;gap:1rem}.profile-form-group{display:flex;flex-direction:column;gap:.5rem}.profile-form-group label{font-size:.875rem;font-weight:500;color:#374151}.profile-form-group input{padding:.75rem 1rem;font-size:.875rem;color:#111827;background:#fff;border:1px solid #d1d5db;border-radius:.5rem;transition:all .15s ease}.profile-form-group input::placeholder{color:#9ca3af}.profile-form-group input:hover{border-color:#9ca3af}.profile-form-group input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.profile-form-group input:disabled{background:#f9fafb;color:#6b7280;cursor:not-allowed}.profile-form-group .form-hint{font-size:.75rem;color:#6b7280}.profile-form-row{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:1rem}.profile-form-actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;margin-top:.5rem;padding-top:1rem;border-top:1px solid #f3f4f6}.btn-profile{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border-radius:.5rem;cursor:pointer;transition:all .15s ease;border:none;text-decoration:none}.btn-profile svg{width:16px;height:16px;flex-shrink:0}.btn-profile.primary{background:#2563eb;color:#fff}.btn-profile.primary:hover{background:#1d4ed8}.btn-profile.primary:active{background:#1e40af}.btn-profile.primary:disabled{background:#d1d5db;cursor:not-allowed}.btn-profile.secondary{background:#fff;color:#374151;border:1px solid #d1d5db}.btn-profile.secondary:hover{background:#f9fafb;border-color:#9ca3af}.btn-profile.ghost{background:rgba(0,0,0,0);color:#4b5563}.btn-profile.ghost:hover{background:#f3f4f6;color:#111827}.btn-profile.danger{background:#fff;color:#dc2626;border:1px solid #fecaca}.btn-profile.danger:hover{background:#fef2f2;border-color:#fca5a5}.password-strength{display:flex;gap:.25rem;margin-top:.5rem}.password-strength .strength-bar{flex:1;height:4px;background:#e5e7eb;border-radius:9999px;overflow:hidden;transition:all .15s ease}.password-strength .strength-bar.active.weak{background:#ef4444}.password-strength .strength-bar.active.fair{background:#f59e0b}.password-strength .strength-bar.active.good{background:#3b82f6}.password-strength .strength-bar.active.strong{background:#22c55e}.password-requirements{margin-top:.75rem;padding:.75rem;background:#f9fafb;border-radius:.5rem}.password-requirements .requirement{display:flex;align-items:center;gap:.5rem;font-size:.75rem;color:#6b7280;padding:.25rem 0}.password-requirements .requirement svg{width:14px;height:14px;flex-shrink:0}.password-requirements .requirement.met{color:#16a34a}.password-requirements .requirement.met svg{color:#22c55e}.profile-alert{display:flex;align-items:flex-start;gap:.75rem;padding:1rem;border-radius:.5rem;margin-bottom:1rem;animation:profileFadeIn .3s ease}.profile-alert svg{width:20px;height:20px;flex-shrink:0;flex-shrink:0;margin-top:1px}.profile-alert .alert-content{flex:1}.profile-alert .alert-content .alert-title{font-size:.875rem;font-weight:600;margin:0 0 .25rem}.profile-alert .alert-content .alert-message{font-size:.875rem;margin:0}.profile-alert.success{background:#dcfce7;border:1px solid #22c55e}.profile-alert.success svg{color:#16a34a}.profile-alert.success .alert-title{color:#15803d}.profile-alert.success .alert-message{color:#16a34a}.profile-alert.error{background:#fef2f2;border:1px solid #fecaca}.profile-alert.error svg{color:#dc2626}.profile-alert.error .alert-title{color:#b91c1c}.profile-alert.error .alert-message{color:#dc2626}.profile-alert.warning{background:#fef3c7;border:1px solid #f59e0b}.profile-alert.warning svg{color:#d97706}.profile-alert.warning .alert-title{color:#b45309}.profile-alert.warning .alert-message{color:#d97706}.profile-alert.info{background:#eff6ff;border:1px solid #bfdbfe}.profile-alert.info svg{color:#2563eb}.profile-alert.info .alert-title{color:#1d4ed8}.profile-alert.info .alert-message{color:#2563eb}.security-card{display:flex;align-items:center;gap:1rem;padding:1rem;background:#f9fafb;border:1px solid #e5e7eb;border-radius:.5rem}.security-card:not(:last-child){margin-bottom:.75rem}.security-icon{width:40px;height:40px;border-radius:.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0}.security-icon svg{width:20px;height:20px;flex-shrink:0}.security-icon.device{background:#dbeafe}.security-icon.device svg{color:#2563eb}.security-icon.location{background:#dcfce7}.security-icon.location svg{color:#16a34a}.security-icon.warning{background:#fef3c7}.security-icon.warning svg{color:#d97706}.security-content{flex:1;min-width:0}.security-content h4{font-size:.875rem;font-weight:600;color:#111827;margin:0 0 .25rem}.security-content p{font-size:.75rem;color:#6b7280;margin:0}.security-meta{text-align:right;flex-shrink:0}.security-meta .meta-status{font-size:.75rem;font-weight:500;color:#16a34a}.security-meta .meta-status.active{color:#16a34a}.security-meta .meta-status.inactive{color:#9ca3af}.security-meta .meta-time{font-size:11px;color:#9ca3af;margin-top:.25rem}.profile-stats{display:grid;grid-template-columns:repeat(auto-fit, minmax(120px, 1fr));gap:1rem;margin-bottom:1rem}.profile-stat{text-align:center;padding:1rem;background:#f9fafb;border-radius:.5rem}.profile-stat .stat-value{font-size:1.5rem;font-weight:700;color:#111827;line-height:1;margin-bottom:.25rem}.profile-stat .stat-label{font-size:.75rem;color:#6b7280;text-transform:uppercase;letter-spacing:.05em}@keyframes profileFadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.notifications-page{max-width:900px;margin:0 auto;padding:1.5rem}@media (max-width: 768px){.notifications-page{padding:1rem}}.notifications-header{margin-bottom:1.5rem}.notifications-header h1{font-size:1.5rem;font-weight:700;color:#111827;margin:0 0 .5rem;letter-spacing:-.02em}.notifications-header p{color:#6b7280;font-size:.875rem;margin:0}.notifications-tabs{display:flex;gap:.25rem;padding:.25rem;background:#f3f4f6;border-radius:.75rem;margin-bottom:1.5rem;overflow-x:auto}@media (max-width: 768px){.notifications-tabs{gap:0;padding:.25rem}}.notifications-tab{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;color:#4b5563;background:rgba(0,0,0,0);border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease;white-space:nowrap;text-decoration:none}.notifications-tab svg{width:18px;height:18px;flex-shrink:0;opacity:.7;transition:opacity .15s ease}.notifications-tab:hover{color:#111827;background:rgba(255,255,255,.5)}.notifications-tab:hover svg{opacity:1}.notifications-tab.active{color:#1d4ed8;background:#fff;box-shadow:0 1px 3px rgba(17,24,39,.08)}.notifications-tab.active svg{opacity:1;color:#2563eb}@media (max-width: 768px){.notifications-tab{padding:.5rem .75rem;font-size:.75rem}.notifications-tab svg{width:16px;height:16px;flex-shrink:0}}.notification-section{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);padding:1.25rem;margin-bottom:1rem;border:1px solid #e5e7eb}.notification-section:last-child{margin-bottom:0}.section-header{display:flex;flex-direction:row;align-items:center;justify-content:space-between;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #f3f4f6}.section-header h2{font-size:1rem;font-weight:600;color:#111827;margin:0;display:flex;align-items:center;gap:.5rem}.section-header h2 svg{width:20px;height:20px;flex-shrink:0;color:#9ca3af}.section-header .section-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:9999px;background:#f3f4f6;color:#4b5563}.section-description{color:#6b7280;font-size:.875rem;margin:0 0 1rem}.toggle-group{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:.75rem 0;border-bottom:1px solid #f3f4f6}.toggle-group:last-child{border-bottom:none;padding-bottom:0}.toggle-group:first-child{padding-top:0}.toggle-info{flex:1;min-width:0}.toggle-info .toggle-label{font-size:.875rem;font-weight:500;color:#111827;margin:0 0 .25rem}.toggle-info .toggle-description{font-size:.75rem;color:#6b7280;margin:0}.toggle-switch{position:relative;width:44px;height:24px;flex-shrink:0;margin-left:1rem}.toggle-switch input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.toggle-switch input:checked+.toggle-track{background:#2563eb}.toggle-switch input:checked+.toggle-track .toggle-thumb{transform:translateX(20px)}.toggle-switch input:focus+.toggle-track{box-shadow:0 0 0 3px rgba(37,99,235,.2)}.toggle-switch input:disabled+.toggle-track{opacity:.5;cursor:not-allowed}.toggle-track{position:absolute;inset:0;background:#d1d5db;border-radius:9999px;cursor:pointer;transition:background .15s ease}.toggle-thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 1px 3px rgba(17,24,39,.2);transition:transform .15s ease}.notification-form{display:grid;gap:1rem}.notifications-page .form-row{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:1rem}.notifications-page .form-group{display:flex;flex-direction:column;gap:.5rem}.notifications-page .form-group label{font-size:.875rem;font-weight:500;color:#374151}.notifications-page .form-group input,.notifications-page .form-group select{width:100%;padding:.5rem .75rem;font-size:.875rem;border-radius:.5rem;transition:all .15s ease;border:1px solid #d1d5db;background:#fff}.notifications-page .form-group input:focus,.notifications-page .form-group select:focus{outline:none}.notifications-page .form-group input:hover,.notifications-page .form-group select:hover{border-color:#9ca3af}.notifications-page .form-group input:focus,.notifications-page .form-group select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.notifications-page .form-group select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .75rem center;padding-right:2rem}.notifications-page .form-group .form-hint{font-size:.75rem;color:#6b7280}.time-range{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.75rem}.time-range input[type=time]{width:auto;padding:.5rem .75rem}.time-range span{color:#6b7280;font-size:.875rem}.checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(180px, 1fr));gap:.75rem}.checkbox-item{position:relative}.checkbox-item input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}.checkbox-item input:checked+.checkbox-label{background:#eff6ff;border-color:#bfdbfe;color:#1d4ed8}.checkbox-item input:checked+.checkbox-label .checkbox-box{background:#2563eb;border-color:#2563eb}.checkbox-item input:checked+.checkbox-label .checkbox-box svg{opacity:1}.checkbox-item input:focus+.checkbox-label{box-shadow:0 0 0 3px rgba(59,130,246,.15)}.checkbox-label{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.75rem;padding:.75rem;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;cursor:pointer;transition:all .15s ease;font-size:.875rem;color:#374151}.checkbox-label:hover{border-color:#d1d5db;background:#f9fafb}.checkbox-box{display:flex;align-items:center;justify-content:center;width:18px;height:18px;background:#fff;border:2px solid #d1d5db;border-radius:.25rem;flex-shrink:0;transition:all .15s ease}.checkbox-box svg{width:12px;height:12px;flex-shrink:0;color:#fff;opacity:0;transition:opacity .15s ease}.rules-list{display:flex;flex-direction:column;gap:.75rem}.rule-card{display:flex;flex-direction:row;align-items:stretch;justify-content:space-between;padding:1rem;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;transition:all .15s ease}.rule-card:hover{border-color:#d1d5db;box-shadow:0 2px 8px rgba(17,24,39,.06)}.rule-card.disabled{opacity:.6;background:#f9fafb}.rule-main{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:1rem;flex:1;min-width:0}.rule-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#f3f4f6;border-radius:.5rem;flex-shrink:0}.rule-icon svg{width:20px;height:20px;flex-shrink:0;color:#4b5563}.rule-icon.wind{background:#dbeafe}.rule-icon.wind svg{color:#2563eb}.rule-icon.temp{background:#fee2e2}.rule-icon.temp svg{color:#dc2626}.rule-icon.rain{background:#cffafe}.rule-icon.rain svg{color:#0891b2}.rule-icon.humidity{background:#ccfbf1}.rule-icon.humidity svg{color:#0d9488}.rule-content{flex:1;min-width:0}.rule-content h3{font-size:.875rem;font-weight:600;color:#111827;margin:0 0 .25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rule-content p{font-size:.75rem;color:#6b7280;margin:0}.rule-condition{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.5rem;margin-top:.5rem}.rule-condition code{padding:.25rem .5rem;font-size:.75rem;font-family:"SF Mono",Monaco,monospace;background:#f3f4f6;border-radius:.25rem;color:#374151}.rule-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:.5rem;margin-left:1rem}.rule-toggle{padding:.5rem;background:rgba(0,0,0,0);border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease}.rule-toggle svg{width:18px;height:18px;flex-shrink:0;color:#9ca3af}.rule-toggle:hover{background:#f3f4f6}.rule-toggle:hover svg{color:#4b5563}.rule-delete{padding:.5rem;background:rgba(0,0,0,0);border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease}.rule-delete svg{width:18px;height:18px;flex-shrink:0;color:#9ca3af}.rule-delete:hover{background:#fef2f2}.rule-delete:hover svg{color:#dc2626}.priority-badge{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;border-radius:.25rem}.priority-badge.low{background:#f3f4f6;color:#4b5563}.priority-badge.normal{background:#dbeafe;color:#1d4ed8}.priority-badge.high{background:#fef3c7;color:#b45309}.priority-badge.critical{background:#fee2e2;color:#b91c1c}.webhooks-list{display:flex;flex-direction:column;gap:.75rem}.webhook-card{display:flex;flex-direction:row;align-items:stretch;justify-content:space-between;padding:1rem;background:#fff;border:1px solid #e5e7eb;border-radius:.5rem;transition:all .15s ease}.webhook-card:hover{border-color:#d1d5db;box-shadow:0 2px 8px rgba(17,24,39,.06)}.webhook-card.disabled{opacity:.6;background:#f9fafb}.webhook-main{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;gap:1rem;flex:1;min-width:0}.webhook-status{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#f3f4f6;border-radius:.5rem;flex-shrink:0;position:relative}.webhook-status svg{width:20px;height:20px;flex-shrink:0;color:#6b7280}.webhook-status::after{content:"";position:absolute;top:6px;right:6px;width:8px;height:8px;border-radius:50%;background:#9ca3af;border:2px solid #fff}.webhook-status.active{background:#dcfce7}.webhook-status.active svg{color:#16a34a}.webhook-status.active::after{background:#22c55e}.webhook-status.error{background:#fee2e2}.webhook-status.error svg{color:#dc2626}.webhook-status.error::after{background:#ef4444}.webhook-content{flex:1;min-width:0}.webhook-content h3{font-size:.875rem;font-weight:600;color:#111827;margin:0 0 .25rem}.webhook-content .webhook-url{font-size:.75rem;font-family:"SF Mono",Monaco,monospace;color:#6b7280;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0 0 .5rem}.webhook-events{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:.25rem}.event-tag{padding:.25rem .5rem;font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.05em;background:#f3f4f6;color:#4b5563;border-radius:.25rem}.webhook-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:.5rem;margin-left:1rem}.history-list{display:flex;flex-direction:column}.history-item{display:flex;flex-direction:row;align-items:flex-start;justify-content:flex-start;gap:1rem;padding:1rem 0;border-bottom:1px solid #f3f4f6}.history-item:last-child{border-bottom:none;padding-bottom:0}.history-item:first-child{padding-top:0}.history-icon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:#f3f4f6;border-radius:9999px;flex-shrink:0}.history-icon svg{width:18px;height:18px;flex-shrink:0;color:#6b7280}.history-icon.wind{background:#dbeafe}.history-icon.wind svg{color:#2563eb}.history-icon.temp{background:#fee2e2}.history-icon.temp svg{color:#dc2626}.history-icon.rain{background:#cffafe}.history-icon.rain svg{color:#0891b2}.history-content{flex:1;min-width:0}.history-content h4{font-size:.875rem;font-weight:600;color:#111827;margin:0 0 .25rem}.history-content p{font-size:.75rem;color:#6b7280;margin:0 0 .5rem}.history-meta{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.75rem}.history-time{font-size:.75rem;color:#9ca3af}.history-channels{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:.25rem}.channel-badge{display:flex;align-items:center;justify-content:center;width:22px;height:22px;background:#f3f4f6;border-radius:.25rem}.channel-badge svg{width:12px;height:12px;flex-shrink:0;color:#6b7280}.channel-badge.sent{background:#dcfce7}.channel-badge.sent svg{color:#16a34a}.notification-empty{display:flex;align-items:center;justify-content:center;flex-direction:column;padding:2rem;text-align:center}.notification-empty svg{width:48px;height:48px;flex-shrink:0;color:#d1d5db;margin-bottom:1rem}.notification-empty h3{font-size:1rem;font-weight:600;color:#111827;margin:0 0 .5rem}.notification-empty p{font-size:.875rem;color:#6b7280;margin:0 0 1rem;max-width:300px}.notification-actions{display:flex;flex-direction:row;align-items:center;justify-content:flex-end;gap:.75rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #f3f4f6}.btn-notification{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;border:none;border-radius:.5rem;cursor:pointer;transition:all .15s ease}.btn-notification:disabled{opacity:.5;cursor:not-allowed}.btn-notification.primary{background:#2563eb;color:#fff}.btn-notification.primary:hover{background:#1d4ed8}.btn-notification.primary:active{background:#1e40af}.btn-notification.secondary{background:#fff;color:#374151;border:1px solid #d1d5db}.btn-notification.secondary:hover{background:#f9fafb;border-color:#9ca3af}.btn-notification.danger{background:#fff;color:#dc2626;border:1px solid #fecaca}.btn-notification.danger:hover{background:#fef2f2;border-color:#fca5a5}@keyframes fadeIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.notification-section{animation:fadeIn .3s ease}.rule-card,.webhook-card,.history-item{animation:fadeIn .3s ease;animation-fill-mode:both}.rule-card:nth-child(1),.webhook-card:nth-child(1),.history-item:nth-child(1){animation-delay:.05s}.rule-card:nth-child(2),.webhook-card:nth-child(2),.history-item:nth-child(2){animation-delay:.1s}.rule-card:nth-child(3),.webhook-card:nth-child(3),.history-item:nth-child(3){animation-delay:.15s}.rule-card:nth-child(4),.webhook-card:nth-child(4),.history-item:nth-child(4){animation-delay:.2s}.rule-card:nth-child(5),.webhook-card:nth-child(5),.history-item:nth-child(5){animation-delay:.25s}.rule-card:nth-child(6),.webhook-card:nth-child(6),.history-item:nth-child(6){animation-delay:.3s}.rule-card:nth-child(7),.webhook-card:nth-child(7),.history-item:nth-child(7){animation-delay:.35s}.rule-card:nth-child(8),.webhook-card:nth-child(8),.history-item:nth-child(8){animation-delay:.4s}.rule-card:nth-child(9),.webhook-card:nth-child(9),.history-item:nth-child(9){animation-delay:.45s}.rule-card:nth-child(10),.webhook-card:nth-child(10),.history-item:nth-child(10){animation-delay:.5s}.admin-templates-page{max-width:1400px;margin:0 auto;padding:1.5rem}.admin-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.admin-header .header-content h1{display:flex;align-items:center;gap:.75rem;font-size:1.75rem;font-weight:600;color:#111827;margin:0 0 .5rem 0}.admin-header .header-content h1 svg{color:#2563eb}.admin-header .header-content p{color:#4b5563;margin:0}.admin-header .header-actions{display:flex;gap:.75rem}.admin-header .back-link{display:flex;align-items:center;gap:.5rem;color:#4b5563;text-decoration:none;font-size:.875rem;margin-bottom:.75rem;transition:color .15s ease}.admin-header .back-link:hover{color:#2563eb}.btn-admin{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:.5rem;font-size:.875rem;font-weight:500;text-decoration:none;border:none;cursor:pointer;transition:all .15s ease}.btn-admin.primary{background:#2563eb;color:#fff}.btn-admin.primary:hover{background:#1d4ed8}.btn-admin.secondary{background:#fff;color:#374151;border:1px solid #d1d5db}.btn-admin.secondary:hover{background:#f9fafb;border-color:#9ca3af}.btn-admin.danger{background:#fff;color:#dc2626;border:1px solid #fecaca}.btn-admin.danger:hover{background:#fef2f2;border-color:#fca5a5}.btn-admin.small{padding:.25rem .5rem;font-size:.8125rem}.templates-filters{display:flex;gap:1rem;margin-bottom:1.5rem;padding:1rem;background:#f9fafb;border-radius:.75rem}.templates-filters .filter-group{display:flex;flex-direction:column;gap:.25rem}.templates-filters .filter-group label{font-size:.75rem;font-weight:500;color:#4b5563;text-transform:uppercase;letter-spacing:.05em}.templates-filters .filter-group select{padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:.5rem;background:#fff;font-size:.875rem;color:#374151;min-width:180px}.templates-filters .filter-group select:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.templates-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(380px, 1fr));gap:1rem}.template-card{display:flex;flex-direction:column;background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;padding:1rem;transition:all .15s ease}.template-card:hover{border-color:#93c5fd;box-shadow:0 4px 12px rgba(0,0,0,.08)}.template-card .template-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.template-card .template-card-header h3{font-size:1rem;font-weight:600;color:#111827;margin:0}.template-card .template-card-header .template-description{font-size:.875rem;color:#4b5563;margin:.25rem 0 0 0}.template-card .template-badges{display:flex;gap:.5rem;flex-shrink:0}.template-card .template-meta{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;padding-bottom:.75rem;border-bottom:1px solid #f3f4f6}.template-card .template-meta .meta-item{display:flex;align-items:center;gap:.25rem;font-size:.8125rem;color:#6b7280}.template-card .template-meta .meta-item svg{color:#9ca3af}.template-card .template-actions{display:flex;gap:.5rem;margin-top:auto}.template-card .template-actions .inline-form{display:inline}.badge{display:inline-flex;align-items:center;padding:.25rem .5rem;border-radius:9999px;font-size:.75rem;font-weight:500}.badge.badge-default{background:#dbeafe;color:#1d4ed8}.badge.badge-disabled{background:#f3f4f6;color:#4b5563}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;text-align:center;grid-column:1/-1}.empty-state svg{color:#d1d5db;margin-bottom:1rem}.empty-state h3{font-size:1.125rem;font-weight:600;color:#111827;margin:0 0 .5rem 0}.empty-state p{color:#4b5563;margin:0 0 1.5rem 0;max-width:400px}.template-form{background:#fff;border-radius:.75rem}.template-form .form-sections{display:flex;flex-direction:column;gap:1.5rem}.template-form .form-section{padding:1.5rem;border:1px solid #e5e7eb;border-radius:.75rem}.template-form .form-section h2{display:flex;align-items:center;gap:.5rem;font-size:1.125rem;font-weight:600;color:#111827;margin:0 0 1.25rem 0;padding-bottom:1rem;border-bottom:1px solid #f3f4f6}.template-form .form-section h2 svg{transition:transform .2s ease}.template-form .form-section.variables-section{background:#f9fafb}.template-form .form-section.variables-section h2{margin-bottom:.75rem}.template-form .form-section.variables-section .section-description{color:#4b5563;font-size:.875rem;margin-bottom:1rem}.template-form .form-row{display:grid;grid-template-columns:repeat(auto-fit, minmax(200px, 1fr));gap:1rem}.template-form .form-group{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem}.template-form .form-group:last-child{margin-bottom:0}.template-form .form-group label{font-size:.875rem;font-weight:500;color:#374151}.template-form .form-group input,.template-form .form-group select,.template-form .form-group textarea{padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:.5rem;font-size:.875rem;color:#111827;background:#fff;transition:all .15s ease}.template-form .form-group input:focus,.template-form .form-group select:focus,.template-form .form-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.1)}.template-form .form-group input::placeholder,.template-form .form-group select::placeholder,.template-form .form-group textarea::placeholder{color:#9ca3af}.template-form .form-group input.input-disabled,.template-form .form-group select.input-disabled,.template-form .form-group textarea.input-disabled{background:#f3f4f6;color:#6b7280;cursor:not-allowed}.template-form .form-group textarea{resize:vertical;min-height:100px}.template-form .form-group textarea.code-editor{font-family:"Monaco","Menlo","Ubuntu Mono",monospace;font-size:.8125rem;line-height:1.5;tab-size:2}.template-form .form-group .form-hint{font-size:.75rem;color:#6b7280}.template-form .checkbox-group{flex-direction:row;align-items:center}.template-form .checkbox-group .checkbox-label{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-weight:normal}.template-form .checkbox-group .checkbox-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.template-form .meta-label{font-size:.875rem;color:#6b7280}.template-form .form-actions{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;background:#f9fafb;border-top:1px solid #e5e7eb;border-radius:0 0 .75rem .75rem;margin-top:1.5rem}.variables-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(180px, 1fr));gap:1rem}.variables-grid .variable-group h4{font-size:.8125rem;font-weight:600;color:#374151;margin:0 0 .5rem 0}.variables-grid .variable-group code{display:block;padding:.25rem .5rem;background:#fff;border:1px solid #e5e7eb;border-radius:.25rem;font-size:.75rem;color:#2563eb;margin-bottom:.25rem;font-family:"Monaco","Menlo",monospace}.template-edit-layout{display:flex;gap:1.5rem;align-items:flex-start}.template-edit-layout .template-form{flex:1;min-width:0}.template-edit-layout .preview-panel{width:500px;flex-shrink:0;position:sticky;top:1rem;background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;max-height:calc(100vh - 2rem);overflow:hidden;display:flex;flex-direction:column}.template-edit-layout .preview-panel .preview-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;border-bottom:1px solid #e5e7eb;background:#f9fafb}.template-edit-layout .preview-panel .preview-header h3{font-size:.875rem;font-weight:600;color:#374151;margin:0}.template-edit-layout .preview-panel .preview-header .btn-close{background:none;border:none;padding:.25rem;cursor:pointer;color:#6b7280;border-radius:.25rem}.template-edit-layout .preview-panel .preview-header .btn-close:hover{background:#e5e7eb;color:#374151}.template-edit-layout .preview-panel .preview-content{flex:1;overflow:auto;padding:1rem}.template-edit-layout .preview-panel .preview-content .preview-loading{text-align:center;color:#6b7280;padding:2rem}.template-edit-layout .preview-panel .preview-content .preview-error{text-align:center;color:#dc2626;padding:2rem}.preview-result .preview-section{margin-bottom:1rem}.preview-result .preview-section h4{font-size:.75rem;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .5rem 0}.preview-result .preview-section .preview-subject{font-size:1rem;font-weight:500;color:#111827;margin:0;padding:.5rem;background:#f9fafb;border-radius:.25rem}.preview-result .preview-section .preview-html-frame{border:1px solid #e5e7eb;border-radius:.25rem;overflow:hidden}.preview-result .preview-section .preview-html-frame iframe{width:100%;height:300px;border:none}.preview-result .preview-section .preview-text{font-size:.8125rem;color:#374151;margin:0;padding:.75rem;background:#f9fafb;border-radius:.25rem;white-space:pre-wrap;font-family:inherit}@media (max-width: 1200px){.template-edit-layout{flex-direction:column}.template-edit-layout .preview-panel{width:100%;position:static;max-height:600px}}@media (max-width: 768px){.admin-templates-page{padding:1rem}.templates-grid{grid-template-columns:1fr}.templates-filters{flex-direction:column}.admin-header{flex-direction:column}.admin-header .header-content h1{font-size:1.5rem}}.rbac-page{max-width:1400px;margin:0 auto;padding:1.5rem}.rbac-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.rbac-header .header-content h1{display:flex;align-items:center;gap:.75rem;font-size:1.75rem;font-weight:600;color:#111827;margin:0 0 .5rem 0}.rbac-header .header-content h1 svg{color:#2563eb}.rbac-header .header-content p{color:#4b5563;margin:0}.rbac-tabs{display:flex;gap:.25rem;background:#f3f4f6;padding:4px;border-radius:.5rem}.rbac-tab{padding:.5rem 1rem;border-radius:.375rem;text-decoration:none;font-weight:500;font-size:.875rem;color:#4b5563;transition:all .2s ease;display:flex;align-items:center;gap:.5rem}.rbac-tab svg{width:18px;height:18px}.rbac-tab:hover{color:#111827;background:#e5e7eb}.rbac-tab.active{background:#fff;color:#2563eb;box-shadow:0 1px 3px rgba(0,0,0,.1)}.rbac-stats{display:grid;grid-template-columns:repeat(4, 1fr);gap:1rem;margin-bottom:1.5rem}@media (max-width: 768px){.rbac-stats{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 480px){.rbac-stats{grid-template-columns:1fr}}.rbac-stat{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);padding:1rem;display:flex;align-items:center;gap:1rem;transition:all .2s ease}.rbac-stat:hover{border-color:#93c5fd}.rbac-stat-icon{width:44px;height:44px;border-radius:.5rem;display:flex;align-items:center;justify-content:center}.rbac-stat-icon svg{width:22px;height:22px;color:#fff}.rbac-stat-icon.admin{background:#ef4444}.rbac-stat-icon.operator{background:#f97316}.rbac-stat-icon.viewer{background:#3b82f6}.rbac-stat-icon.user{background:#6b7280}.rbac-stat-content{flex:1}.rbac-stat-value{font-size:1.125rem;font-weight:600;color:#111827;line-height:1}.rbac-stat-label{font-size:.75rem;color:#6b7280;margin-top:.25rem}.rbac-roles-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:1rem}@media (max-width: 1024px){.rbac-roles-grid{grid-template-columns:1fr}}.rbac-role-card{display:flex;flex-direction:column;background:#fff;border:1px solid #e5e7eb;border-radius:.75rem;overflow:hidden;transition:all .15s ease}.rbac-role-card:hover{border-color:#93c5fd;box-shadow:0 4px 12px rgba(0,0,0,.08)}.rbac-role-card.role-admin{border-top:3px solid #ef4444}.rbac-role-card.role-operator{border-top:3px solid #f97316}.rbac-role-card.role-viewer{border-top:3px solid #3b82f6}.rbac-role-card.role-user{border-top:3px solid #6b7280}.rbac-role-header{padding:1rem;display:flex;align-items:center;gap:1rem;border-bottom:1px solid #f3f4f6}.rbac-role-icon{width:48px;height:48px;border-radius:.5rem;display:flex;align-items:center;justify-content:center;color:#fff}.rbac-role-icon svg{width:24px;height:24px}.role-admin .rbac-role-icon{background:#ef4444}.role-operator .rbac-role-icon{background:#f97316}.role-viewer .rbac-role-icon{background:#3b82f6}.role-user .rbac-role-icon{background:#6b7280}.rbac-role-info{flex:1}.rbac-role-name{font-size:1rem;font-weight:600;color:#111827;margin:0 0 .25rem;display:flex;align-items:center;gap:.5rem}.rbac-role-badge{font-size:.65rem;font-weight:500;padding:2px 6px;border-radius:9999px;text-transform:uppercase;letter-spacing:.05em;background:#f3f4f6;color:#4b5563}.rbac-role-description{font-size:.875rem;color:#6b7280;margin:0}.rbac-role-stats{padding:.75rem 1rem;background:#f9fafb;display:flex;gap:1.5rem}.rbac-role-stat{display:flex;align-items:baseline;gap:.5rem}.rbac-role-stat strong{font-size:1.125rem;font-weight:600;color:#111827}.rbac-role-stat span{font-size:.875rem;color:#6b7280}.rbac-role-permissions{padding:1rem;flex:1}.rbac-permissions-title{font-size:.75rem;font-weight:600;color:#6b7280;text-transform:uppercase;letter-spacing:.05em;margin:0 0 .75rem;display:flex;align-items:center;gap:.5rem}.rbac-permissions-title svg{width:14px;height:14px}.rbac-permissions-grid{display:flex;flex-wrap:wrap;gap:.5rem;max-height:160px;overflow-y:auto}.rbac-perm-tag{display:inline-flex;align-items:center;gap:.25rem;padding:.25rem .5rem;background:#f3f4f6;border-radius:.375rem;font-size:.75rem;color:#374151;transition:all .15s ease}.rbac-perm-tag:hover{background:#e5e7eb}.rbac-perm-tag svg{width:12px;height:12px;color:#22c55e}.rbac-perm-tag code{font-family:"Monaco","Menlo",monospace;font-size:.7rem}.rbac-no-permissions{padding:1rem;background:#f9fafb;border-radius:.5rem;text-align:center;color:#6b7280;font-size:.875rem}.rbac-no-permissions svg{width:24px;height:24px;margin-bottom:.5rem;color:#9ca3af}.rbac-no-permissions p{margin:0}.rbac-legend{display:flex;gap:1.5rem;padding:.75rem 1rem;background:#f9fafb;border-radius:.5rem;margin-bottom:1rem}.rbac-legend-item{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#4b5563}.rbac-legend-dot{width:10px;height:10px;border-radius:9999px}.rbac-legend-dot.admin{background:#ef4444}.rbac-legend-dot.operator{background:#f97316}.rbac-legend-dot.viewer{background:#3b82f6}.rbac-legend-dot.user{background:#6b7280}.rbac-matrix-container{background:#fff;border-radius:.5rem;box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);overflow:hidden;padding:0}.rbac-matrix{width:100%;border-collapse:collapse}.rbac-matrix th{padding:.75rem 1rem;text-align:left;font-size:.75rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:#6b7280;background:#f9fafb;border-bottom:1px solid #e5e7eb}.rbac-matrix th.role-col{text-align:center;width:90px}.rbac-matrix td{padding:.75rem 1rem;border-bottom:1px solid #e5e7eb;font-size:.875rem}.rbac-matrix tr:hover td{background:#f9fafb}.rbac-matrix tr:last-child td{border-bottom:none}.rbac-matrix tr.category-row td{background:#f3f4f6;padding:.5rem 1rem;border-bottom:1px solid #e5e7eb}.rbac-matrix tr.category-row:hover td{background:#f3f4f6}.rbac-category-label{display:inline-flex;align-items:center;gap:.5rem;font-size:.75rem;font-weight:600;color:#374151;text-transform:uppercase;letter-spacing:.05em}.rbac-category-label::before{content:"";width:3px;height:12px;background:#3b82f6;border-radius:2px}.rbac-perm-cell code{font-family:"Monaco","Menlo",monospace;font-size:.75rem;color:#2563eb;background:#eff6ff;padding:2px 6px;border-radius:.25rem}.rbac-desc-cell{color:#4b5563}.rbac-check-cell{text-align:center}.rbac-check{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:9999px}.rbac-check svg{width:14px;height:14px}.rbac-check.check-admin{background:rgba(239,68,68,.1);color:#ef4444}.rbac-check.check-operator{background:rgba(249,115,22,.1);color:#f97316}.rbac-check.check-viewer{background:rgba(59,130,246,.1);color:#3b82f6}.rbac-check.check-user{background:rgba(107,114,128,.1);color:#6b7280}.rbac-no-check{color:#d1d5db;font-size:.875rem}.rbac-note{display:flex;gap:.75rem;padding:1rem;background:#eff6ff;border:1px solid #bfdbfe;border-radius:.5rem;margin-top:1.5rem}.rbac-note svg{width:20px;height:20px;color:#3b82f6;flex-shrink:0}.rbac-note p{margin:0;font-size:.875rem;color:#374151;line-height:1.6}.rbac-note p strong{color:#111827}.rbac-note p em{color:#2563eb;font-style:normal;font-weight:500}@media (max-width: 768px){.rbac-page{padding:1rem}.rbac-header{flex-direction:column}.rbac-header .header-content h1{font-size:1.5rem}.rbac-matrix-container{overflow-x:auto}.rbac-matrix{min-width:600px}.rbac-legend{flex-wrap:wrap;gap:.75rem}}.hidden{display:none !important}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.items-center{align-items:center}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.flex-wrap{flex-wrap:wrap}.flex-col{flex-direction:column}.flex-1{flex:1}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-gray-400{color:#9ca3af}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-900{color:#111827}.text-white{color:#fff}.text-blue-600{color:#2563eb}.text-green-600{color:#16a34a}.text-red-600{color:#dc2626}.bg-white{background:#fff}.bg-gray-50{background:#f9fafb}.bg-gray-100{background:#f3f4f6}.m-0{margin:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.ml-auto{margin-left:auto}.mr-auto{margin-right:auto}.mx-auto{margin-left:auto;margin-right:auto}.p-0{padding:0}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.w-full{width:100%}.h-full{height:100%}.min-h-screen{min-height:100vh}.rounded{border-radius:.375rem}.rounded-md{border-radius:.5rem}.rounded-lg{border-radius:.75rem}.rounded-full{border-radius:9999px}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1)}.shadow-lg{box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1)}.overflow-hidden{overflow:hidden}.overflow-auto{overflow:auto}.overflow-x-auto{overflow-x:auto}.truncate{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cursor-pointer{cursor:pointer}.transition{transition:all .15s ease}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}