@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-leading:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid}}}.pointer-events-none{pointer-events:none}.absolute{position:absolute}.relative{position:relative}.top-1\/4{top:25%}.right-1\/4{right:25%}.bottom-1\/4{bottom:25%}.left-1\/4{left:25%}.mx-auto{margin-inline:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.min-h-screen{min-height:100vh}.w-full{width:100%}.flex-1{flex:1}.cursor-help{cursor:help}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.text-center{text-align:center}.leading-none{--tw-leading:1;line-height:1}.whitespace-nowrap{white-space:nowrap}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ring{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:root{--background:222 47% 6%;--foreground:210 40% 98%;--card:222 47% 8%;--card-foreground:210 40% 98%;--primary:217 91% 60%;--primary-foreground:222 47% 6%;--secondary:217 33% 17%;--secondary-foreground:210 40% 98%;--muted:217 33% 15%;--muted-foreground:215 20% 65%;--accent:192 91% 36%;--accent-foreground:210 40% 98%;--destructive:0 72% 51%;--destructive-foreground:210 40% 98%;--success:142 76% 36%;--success-foreground:210 40% 98%;--border:217 33% 17%;--input:217 33% 17%;--ring:217 91% 60%;--radius:.5rem}*{border-color:hsl(var(--border))}body{color:hsl(var(--foreground));background:linear-gradient(135deg,#080c16 0%,#0e1525 100%);min-height:100vh;font-family:Inter,system-ui,sans-serif}.container-responsive{width:100%;padding:1rem}@media (min-width:768px){.container-responsive{padding:1.5rem}}@media (min-width:1024px){.container-responsive{max-width:1400px;margin:0 auto;padding:2rem}}.section-gap{margin-bottom:1.5rem}@media (min-width:768px){.section-gap{margin-bottom:2rem}}.navbar{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:50;background:linear-gradient(#10192df2 0%,#0b111ef2 100%);border-bottom:1px solid #2b3b5580;position:sticky;top:0}.nav-link{border-radius:var(--radius);color:#94a3b8;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .15s}.nav-link:hover{color:#f8fafc;background:#222f4480}.nav-link.active{color:#6da2f8;background:#3c83f626}.btn{border-radius:var(--radius);cursor:pointer;white-space:nowrap;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:all .15s;display:inline-flex}.btn svg{flex-shrink:0;width:1rem;height:1rem}.btn-sm{padding:.25rem .5rem;font-size:.75rem}.btn-sm svg{width:.875rem;height:.875rem}.btn-primary{color:#fff;background:linear-gradient(135deg,#2474f5 0%,#0a5adb 100%);border:none}.btn-primary:hover{background:linear-gradient(135deg,#3c83f6 0%,#0b64f4 100%)}.btn-secondary{color:#f8fafc;background:#1d283a;border:1px solid #2b3b55}.btn-secondary:hover{background:#26344b}.btn-danger{color:#fff;background:linear-gradient(135deg,#dc2828 0%,#b41d1d 100%)}.btn-danger:hover{background:linear-gradient(135deg,#e03e3e 0%,#ca2121 100%)}.btn-icon{border-radius:var(--radius);color:#6da2f8;cursor:pointer;background:#1f2a3d;border:1px solid #2b3b55;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;transition:all .15s;display:inline-flex}.btn-icon:hover{color:#fff;background:#0b64f4;border-color:#0b64f4}.btn-icon svg{width:1rem;height:1rem}.btn-icon-danger{border-radius:var(--radius);color:#e66565;cursor:pointer;background:#dc282826;border:1px solid #dc28284d;justify-content:center;align-items:center;width:2rem;height:2rem;padding:0;transition:all .15s;display:inline-flex}.btn-icon-danger:hover{color:#fff;background:#dc2828;border-color:#dc2828}.btn-icon-danger svg{width:1rem;height:1rem}.toggle-btn{border-radius:var(--radius);text-transform:uppercase;color:#7588a3;cursor:pointer;background:#151c29;border:1px solid #2b3b55;padding:.5rem 1rem;font-size:.75rem;font-weight:600;transition:all .15s}.toggle-btn:hover{color:#6da2f8;border-color:#0b64f4}.toggle-btn.active{color:#fff;background:#0b64f4;border-color:#0b64f4;box-shadow:0 0 10px #0b64f44d}.panel-card{border-radius:var(--radius);background:linear-gradient(#0f1729 0%,#0b111e 100%);border:1px solid #2b3b5580;overflow:hidden;box-shadow:0 4px 6px -1px #0000004d}.panel-header{background:linear-gradient(90deg,#06327a 0%,#052861 100%);border-bottom:1px solid #0950c34d;padding:.75rem 1rem}.panel-body,.form-section{padding:1.5rem}.form-group{margin-bottom:1.25rem}.form-label{color:#b3bdcc;margin-bottom:.5rem;font-size:.875rem;font-weight:500;display:block}.form-row{gap:1rem;display:grid}@media (min-width:768px){.form-row-2{grid-template-columns:repeat(2,1fr)}.form-row-3{grid-template-columns:repeat(3,1fr)}}.form-actions{border-top:1px solid #222f44;gap:.75rem;margin-top:1.5rem;padding-top:1rem;display:flex}.form-divider{background:#222f44;height:1px;margin:2rem 0}.section-title{color:#fff;margin-bottom:1rem;font-size:1.125rem;font-weight:600}.subsection-title{color:#6da2f8;margin-bottom:.75rem;font-size:.875rem;font-weight:500}.data-table{border-collapse:collapse;width:100%;font-size:.875rem}.data-table thead{background:#0e1525}.data-table th{text-align:left;color:#b3bdcc;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #222f44;padding:.75rem 1rem;font-size:.7rem;font-weight:600}.data-table td{color:#dbe6f0;vertical-align:middle;border-bottom:1px solid #1a2333;padding:.75rem 1rem}.data-table tbody tr:hover{background:#151c29}.data-table tbody tr:last-child td{border-bottom:none}.table-wrapper{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (max-width:768px){.data-table th,.data-table td{padding:.5rem;font-size:.75rem}}.slave-row{border-bottom:1px solid #1a2333;flex-direction:column;gap:.75rem;padding:1rem;display:flex}.slave-row:last-child{border-bottom:none}.slave-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.slave-info{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.slave-name{color:#fff;font-size:.875rem;font-weight:500}.slave-uptime{color:#7588a3;font-size:.75rem}.led-grid{grid-template-columns:repeat(8,1fr);gap:.5rem;display:grid}@media (max-width:640px){.led-grid{grid-template-columns:repeat(4,1fr);gap:.375rem}}.led-item{flex-direction:column;align-items:center;gap:.25rem;display:flex}.led-label{color:#8596ad;text-align:center;text-overflow:ellipsis;white-space:nowrap;order:-1;max-width:3rem;font-size:.625rem;overflow:hidden}.led{cursor:pointer;border:2px solid #0000;border-radius:.375rem;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;font-size:.75rem;font-weight:600;transition:all .15s;display:flex}@media (max-width:640px){.led{width:2rem;height:2rem;font-size:.625rem}.led-label{max-width:2.5rem;font-size:.5rem}}.led-off{color:#47526b;background:#151b28;border-color:#20283c}.led-alarm-unack{color:#fff;background:#16a249;border-color:#1cca5b;animation:.8s infinite blink-green;box-shadow:0 0 15px #1cca5b99}.led-alarm-ack{color:#fff;background:#16a249;border-color:#1cca5b;box-shadow:0 0 10px #1cca5b66}.led-offline{color:#333b4d;background:#0e121b;border-color:#1b2232}@keyframes blink-green{0%,to{opacity:1;box-shadow:0 0 20px #1cca5bcc}50%{opacity:.4;box-shadow:0 0 5px #1cca5b4d}}.status-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:9999px;flex-shrink:0;align-items:center;gap:.375rem;padding:.25rem .625rem;font-size:.625rem;font-weight:600;display:inline-flex}.status-online{color:#1fe066;background:#16a24926;border:1px solid #16a2494d}.status-online:before{content:"";background:#1fe066;border-radius:50%;width:.375rem;height:.375rem}.status-offline{color:#e25050;background:#dc282826;border:1px solid #dc28284d}.status-offline:before{content:"";background:#e25050;border-radius:50%;width:.375rem;height:.375rem}.status-unknown{color:#999;background:#80808026;border:1px solid #8080804d}.badge-alarm{color:#35e375;background:#16a24926;border:1px solid #16a2494d}.badge-button{color:#6da2f8;background:#3c83f626;border:1px solid #3c83f64d}.badge-system{color:#f8c83a;background:#e7b00826;border:1px solid #e7b0084d}.badge-notification{color:#24cbf5;background:#088eaf26;border:1px solid #088eaf4d}.tabs{border-bottom:1px solid #222f44;flex-wrap:wrap;gap:.25rem;margin-bottom:1.5rem;display:flex}.tab{color:#7588a3;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:.75rem 1.25rem;font-size:.875rem;font-weight:500;transition:all .15s}.tab:hover{color:#dbe6f0}.tab.active{color:#6da2f8;background:linear-gradient(#0000 0%,#3c83f61a 100%);border-bottom-color:#3c83f6}input,select,textarea{color:#f8fafc;border-radius:var(--radius);background:#0e1525;border:1px solid #222f44;width:100%;padding:.625rem .875rem;font-size:.875rem;transition:all .15s}input:focus,select:focus,textarea:focus{border-color:#3c83f6;outline:none;box-shadow:0 0 0 3px #3c83f633}input::placeholder{color:#5c6f8a}input[type=checkbox]{accent-color:#3c83f6;width:1rem;height:1rem}.pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:.25rem;padding:1rem;display:flex}.pagination-btn{border-radius:var(--radius);color:#94a3b8;cursor:pointer;background:#1a2333;border:1px solid #222f44;padding:.5rem .75rem;font-size:.875rem;font-weight:500;transition:all .15s}.pagination-btn:hover:not(:disabled){color:#fff;background:#222f44}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-btn.active{color:#fff;background:#0b64f4;border-color:#0b64f4}.popup-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#000000b3;position:fixed;inset:0}.popup{z-index:101;border-radius:var(--radius);background:linear-gradient(#10192d 0%,#0b111e 100%);border:2px solid #0b64f4;width:400px;max-width:90vw;padding:1.5rem;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 25px 50px -12px #00000080}.popup-alarm{border-color:#18b451;box-shadow:0 25px 50px -12px #00000080,0 0 30px #1cca5b4d}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#0b111e}::-webkit-scrollbar-thumb{background:#2b3b55;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#3c5277}.spinner{border:2px solid #222f44;border-top-color:#3c83f6;border-radius:50%;width:1.5rem;height:1.5rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.notif-count{border-radius:.25rem;padding:.125rem .375rem;font-size:.75rem;font-weight:500}.notif-pending{color:#f8c83a;background:#e7b00826}.notif-sent{color:#35e375;background:#16a24926}.notif-failed{color:#e25050;background:#dc282826}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}
