:root{--primary: #1976d2;--primary-dark: #1565c0;--success: #2e7d32;--warning: #ed6c02;--danger: #d32f2f;--info: #0288d1;--bg-dark: #1a1a2e;--bg-card: #16213e;--bg-input: #1e2d4a;--text-primary: #ffffff;--text-secondary: #b0b0b0;--border-color: #2a3f5f}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Malgun Gothic,sans-serif;background:linear-gradient(135deg,var(--bg-dark) 0%,#0f0f23 100%);color:var(--text-primary);min-height:100vh}.header{background:#16213ef2;padding:6px 20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border-color);position:sticky;top:0;z-index:100}.logo{display:flex;align-items:center;gap:8px}.logo img{height:28px;border-radius:4px}.logo h1{font-size:1.2rem;font-weight:600;letter-spacing:-.3px;color:#fff}.logo h1 span{font-weight:700}.header-info{display:flex;gap:20px;align-items:center}.header-info span{color:var(--text-secondary);font-size:.8rem}.status-badge{background:var(--success);color:#fff;padding:3px 10px;border-radius:20px;font-size:.75rem;font-weight:500}.user-info{display:flex;align-items:center;gap:10px}.user-info .user-name{color:var(--text-secondary);font-size:.85rem}.user-info .avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.8rem}.user-info .btn-logout{padding:4px 12px;background:var(--danger);border:none;border-radius:5px;color:#fff;cursor:pointer;font-size:.8rem;transition:all .3s}.user-info .btn-logout:hover{background:#b71c1c}.avatar.role-admin{background:var(--warning);color:#fff}.avatar.role-company{background:#36a2eb;color:#fff}.avatar.role-consumer{background:var(--success);color:#fff}.role-badge{padding:2px 8px;border-radius:12px;font-size:.7rem;font-weight:600}.role-badge.admin{background:#ed6c0233;color:var(--warning)}.role-badge.company{background:#36a2eb33;color:#36a2eb}.role-badge.consumer{background:#2e7d3233;color:var(--success)}.nav{background:var(--bg-card);padding:4px 20px;display:flex;gap:6px;border-bottom:1px solid var(--border-color);flex-wrap:wrap}.nav a{color:var(--text-secondary);text-decoration:none;padding:5px 14px;border-radius:5px;transition:all .3s;font-size:.85rem}.nav a:hover,.nav a.active{background:var(--primary);color:#fff}.container{max-width:1600px;margin:0 auto;padding:10px 15px}.grid{display:grid;gap:10px}.grid-5{grid-template-columns:repeat(5,1fr)}.grid-4{grid-template-columns:repeat(4,1fr)}.grid-3{grid-template-columns:repeat(3,1fr)}.grid-2{grid-template-columns:repeat(2,1fr)}@media (max-width: 1200px){.grid-5{grid-template-columns:repeat(3,1fr)}.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.grid-5,.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}.card{background:var(--bg-card);border-radius:8px;padding:12px;border:1px solid var(--border-color);transition:transform .3s,box-shadow .3s}.card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #0000004d}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--border-color)}.card-title{font-size:.85rem;font-weight:600;color:var(--text-secondary)}.card-value{font-size:1.8rem;font-weight:700;color:var(--text-primary)}.card-unit{font-size:1rem;color:var(--text-secondary);margin-left:5px}.stat-card{text-align:center;padding:10px}.stat-card .icon{font-size:1.8rem;margin-bottom:5px}.stat-card.temp .icon{color:#64b5f6}.stat-card.current .icon{color:#ffb74d}.stat-card.defrost .icon{color:#81c784}.stat-card.door .icon{color:#ba68c8}.status-ok{color:var(--success)}.status-warning{color:var(--warning)}.status-danger{color:var(--danger)}.table-container{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:6px 10px;text-align:left;border-bottom:1px solid var(--border-color);font-size:.85rem}th{background:#1976d233;color:var(--primary);font-weight:600}tr:hover{background:#ffffff0d}input,select,textarea{background:var(--bg-input);border:1px solid var(--border-color);border-radius:8px;padding:10px 15px;color:var(--text-primary);font-size:.95rem;width:100%;transition:all .3s}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #1976d233}input::placeholder,textarea::placeholder{color:var(--text-secondary)}.btn{padding:10px 24px;border:none;border-radius:8px;cursor:pointer;font-size:.95rem;font-weight:500;transition:all .3s;display:inline-flex;align-items:center;gap:8px}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-dark)}.btn-success{background:var(--success);color:#fff}.btn-success:hover{background:#1b5e20}.btn-danger{background:var(--danger);color:#fff}.btn-danger:hover{background:#b71c1c}.btn-warning{background:var(--warning);color:#fff}.btn-warning:hover{background:#e65100}.btn-secondary{background:#ffffff1a;color:var(--text-secondary);border:1px solid var(--border-color)}.btn-secondary:hover{background:#ffffff26;color:var(--text-primary)}.badge{display:inline-block;padding:4px 12px;border-radius:15px;font-size:.8rem;font-weight:500}.badge-ok{background:#4ade8026;color:#86efac;border:1px solid rgba(74,222,128,.4)}.badge-ng{background:#f8717126;color:#fca5a5;border:1px solid rgba(248,113,113,.4)}.badge-warning{background:#fbbf2426;color:#fde68a;border:1px solid rgba(251,191,36,.4)}.progress{height:8px;background:#ffffff1a;border-radius:4px;overflow:hidden;margin-top:10px}.progress-bar{height:100%;background:linear-gradient(90deg,var(--primary),var(--info));border-radius:4px;transition:width .5s}.alert-item{display:flex;align-items:center;gap:15px;padding:12px;background:#ffffff0d;border-radius:8px;margin-bottom:10px}.alert-icon{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.2rem}.alert-icon.warning{background:#ed6c0233;color:var(--warning)}.alert-content{flex:1}.alert-time{color:var(--text-secondary);font-size:.85rem}.section-title{font-size:1rem;font-weight:600;margin:12px 0 8px;padding-left:10px;border-left:3px solid var(--primary)}.report-list{list-style:none}.report-item{display:flex;align-items:center;gap:15px;padding:15px;background:#ffffff08;border-radius:8px;margin-bottom:10px;cursor:pointer;transition:all .3s}.report-item:hover{background:#1976d226;transform:translate(5px)}.report-icon{font-size:1.5rem;color:var(--danger)}.report-info h4{font-size:.95rem;margin-bottom:5px}.report-info span{font-size:.8rem;color:var(--text-secondary)}.footer{text-align:center;padding:8px;color:var(--text-secondary);font-size:.75rem;border-top:1px solid var(--border-color);margin-top:15px}.mt-10{margin-top:10px}.mt-20{margin-top:20px}.mb-10{margin-bottom:10px}.mb-20{margin-bottom:20px}.ml-10{margin-left:10px}.mr-10{margin-right:10px}.p-20{padding:20px}.text-center{text-align:center}.text-right{text-align:right}.flex{display:flex}.flex-col{flex-direction:column}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.items-center{align-items:center}.gap-10{gap:10px}.gap-20{gap:20px}.w-full{width:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-dark)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--primary)}a{color:var(--primary);text-decoration:none}a:hover{color:var(--info)}.tabs{display:flex;gap:5px;margin-bottom:20px;border-bottom:1px solid var(--border-color);padding-bottom:10px}.tab{padding:10px 20px;background:transparent;border:none;border-radius:8px 8px 0 0;color:var(--text-secondary);cursor:pointer;transition:all .3s}.tab:hover{background:#ffffff0d}.tab.active{background:var(--primary);color:#fff}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:var(--bg-card);border-radius:12px;padding:30px;max-width:600px;width:90%;max-height:80vh;overflow-y:auto;border:1px solid var(--border-color)}.modal-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid var(--border-color)}.modal-title{font-size:1.3rem;font-weight:600}.modal-close{background:none;border:none;color:var(--text-secondary);font-size:1.5rem;cursor:pointer}.modal-close:hover{color:var(--danger)}
