:root{--scada-bg:#d7e8fb;--scada-panel:#fff;--scada-panel-soft:#f2f8ff;--scada-border:#a9c8e9;--scada-border-strong:#5d93c8;--scada-text:#0e2940;--scada-muted:#3c6282;--scada-cyan:#006fb0;--scada-cyan-strong:#005489;--scada-green:#098d54;--scada-amber:#b87000;--scada-red:#c0393f;--scada-copper:#b87333;--scada-copper-soft:#f7e6d7;--scada-shadow:0 14px 34px rgba(12,45,73,.14);--scada-shadow-soft:0 8px 24px rgba(12,45,73,.1)}body.app-layout{background:radial-gradient(circle at 12% 8%,rgba(184,115,51,.2) 0,rgba(184,115,51,0) 42%),radial-gradient(circle at 88% 0,rgba(0,111,176,.24) 0,rgba(0,111,176,0) 48%),linear-gradient(145deg,#f8fbff 0,var(--scada-bg) 52%,#c7ddf5 100%);background-attachment:fixed;color:var(--scada-text)}body.app-layout:after,body.app-layout:before{content:none}.app-layout a{color:var(--scada-cyan);text-underline-offset:.15rem}.app-layout a:hover{color:var(--scada-cyan-strong)}.app-navbar{background:linear-gradient(92deg,hsla(0,0%,100%,.98),rgba(233,244,255,.98) 66%,hsla(30,67%,94%,.96));border-bottom:1px solid var(--scada-border);box-shadow:0 7px 20px rgba(12,45,73,.1)}.app-navbar .container-fluid{gap:1rem}.brand-badge{align-items:center;background:linear-gradient(135deg,#eef8ff,#f8e8dc);border:1px solid var(--scada-border);border-radius:.75rem;color:var(--scada-cyan);display:inline-flex;height:2.5rem;justify-content:center;overflow:hidden;width:2.5rem}.brand-logo{display:block;height:100%;object-fit:contain;width:100%}.brand-name{color:var(--scada-text);letter-spacing:.06em}.brand-subtitle{color:var(--scada-muted);font-size:.72rem}.app-navbar .navbar-toggler{border-color:var(--scada-border);border-radius:.75rem}.app-navbar .navbar-toggler:focus{box-shadow:0 0 0 .2rem rgba(25,127,160,.12)}.app-navbar .navbar-collapse{gap:1rem;justify-content:flex-end}.app-navbar .navbar-nav{flex-wrap:wrap;gap:.35rem}.app-navbar .nav-link{align-items:center;border:1px solid transparent;border-radius:999px;color:var(--scada-text);display:inline-flex;min-height:42px;padding:.55rem .9rem;transition:background-color .16s ease,border-color .16s ease,color .16s ease}.app-navbar .nav-link.active,.app-navbar .nav-link:hover{background:#eef6fa;border-color:var(--scada-border);color:var(--scada-cyan)}.app-main-shell{padding-inline:clamp(.75rem,2vw,1.5rem);position:relative}.app-shell-grid{align-items:start;display:grid;gap:1rem;grid-template-columns:minmax(240px,280px) minmax(0,1fr)}.app-sidebar{background:linear-gradient(180deg,#fff,#edf6ff 68%,#f7ecdf);border:1px solid var(--scada-border);border-radius:.95rem;box-shadow:var(--scada-shadow);max-height:calc(100vh - 120px);overflow:auto;padding:.95rem;position:sticky;top:96px}.app-sidebar-header{border-bottom:1px solid #e7edf2;margin-bottom:.8rem;padding-bottom:.75rem}.app-sidebar-title{color:var(--scada-text);font-weight:700}.app-sidebar-subtitle{color:var(--scada-muted)}.app-sidebar-nav{display:grid;gap:.7rem}.app-side-section{background:linear-gradient(180deg,#f8fbff 0,var(--scada-panel-soft) 100%);border:1px solid #d8e7f6;border-radius:.8rem;padding:.45rem}.app-side-toggle{align-items:center;background:transparent;border:0;border-radius:.65rem;color:var(--scada-text);display:flex;font-weight:600;justify-content:space-between;padding:.58rem .72rem;width:100%}.app-side-toggle:hover{background:#e6f2ff;color:var(--scada-cyan)}.app-side-toggle .bi-chevron-down{transition:transform .16s ease}.app-side-section.is-open .app-side-toggle .bi-chevron-down{transform:rotate(180deg)}.app-side-action-link,.app-side-main-link{border-radius:.65rem;color:var(--scada-text);display:block;text-decoration:none;transition:background-color .16s ease,color .16s ease}.app-side-main-link{font-weight:600;padding:.58rem .72rem}.app-side-actions{border-top:1px dashed #d7e3ec;display:none;gap:.15rem;margin-top:.35rem;padding-top:.35rem}.app-side-section.is-open .app-side-actions{display:grid}.app-side-action-link{color:#365062;font-size:.9rem;padding:.45rem .72rem}.app-side-group-label{color:var(--scada-muted);display:block;font-size:.72rem;letter-spacing:.06em;margin:0;padding:0;text-transform:uppercase}.app-side-group{border:1px dashed #d7e3ec;border-radius:.65rem;margin-top:.35rem;padding:.2rem}.app-side-group-toggle{align-items:center;background:transparent;border:0;border-radius:.5rem;display:flex;justify-content:space-between;padding:.35rem .5rem;width:100%}.app-side-group-toggle:hover{background:#edf4f8}.app-side-group-toggle .bi-chevron-down{color:var(--scada-muted);transition:transform .16s ease}.app-side-group.is-open .app-side-group-toggle .bi-chevron-down{transform:rotate(180deg)}.app-side-group-items{display:none;padding-top:.2rem}.app-side-group.is-open .app-side-group-items{display:grid;gap:.15rem}.app-side-action-link:hover,.app-side-main-link:hover{background:#e4f2ff;color:var(--scada-cyan)}.app-side-action-link.is-active,.app-side-main-link.is-active{background:linear-gradient(90deg,#cce6ff,#f5e6d8);border:1px solid #70aee0;box-shadow:0 4px 10px rgba(0,105,172,.18);color:#003f66}.app-content-shell{margin:0 auto;padding-block:.25rem;width:min(1480px,100%)}.app-content-shell>.container,.app-content-shell>.container-fluid,.app-main-shell>.container,.app-main-shell>.container-fluid{max-width:none;padding-inline:0;width:100%}.app-layout .accordion-item,.app-layout .card,.app-layout .dropdown-menu,.app-layout .list-group-item,.app-layout .modal-content,.app-layout .offcanvas{background:var(--scada-panel);border:1px solid var(--scada-border);border-radius:.9rem;box-shadow:var(--scada-shadow-soft);color:var(--scada-text)}.app-layout .card,.scada-block,.scada-panel,.scada-stat{transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.app-layout .card:hover,.scada-block:hover,.scada-panel:hover,.scada-stat:hover{border-color:var(--scada-border-strong);box-shadow:var(--scada-shadow);transform:translateY(-2px)}.app-layout .accordion-button,.app-layout .card-header,.app-layout .modal-header{background:linear-gradient(90deg,#f2f8ff,#f8eee4);border-bottom:1px solid #e8eef2;color:var(--scada-text)}.app-layout .accordion-button:not(.collapsed){background:var(--scada-panel-soft);box-shadow:none;color:var(--scada-text)}.app-layout .card-body,.app-layout .modal-body{color:var(--scada-text)}.app-layout .form-text,.app-layout .small.text-secondary,.app-layout .text-muted,.app-layout small{color:var(--scada-muted)!important}.app-layout .form-label{color:var(--scada-muted);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}.app-layout .form-control,.app-layout .form-select,.app-layout .input-group-text{background:#fff;border-color:var(--scada-border);color:var(--scada-text);min-height:44px}.app-layout .form-control:focus,.app-layout .form-select:focus{background:#fff;border-color:#69a7db;box-shadow:0 0 0 .2rem rgba(0,111,176,.2);color:var(--scada-text)}.app-layout .form-check-input{background-color:#fff;border-color:var(--scada-border-strong)}.app-layout .form-check-input:checked{background-color:var(--scada-green);border-color:var(--scada-green)}.app-layout .btn{border-radius:.7rem;font-weight:600;min-height:40px;padding:.55rem .95rem;transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}.app-layout .btn:focus{box-shadow:0 0 0 .2rem rgba(0,111,176,.22)}.swal2-popup.session-expired-popup{border-radius:1rem;padding:1rem 1.1rem 1.2rem;width:min(34rem,calc(100vw - 1.5rem))}.swal2-popup.session-expired-popup .swal2-html-container.session-expired-html{line-height:1.45;margin:.35rem 0 0;overflow:visible}.swal2-popup.session-expired-popup .swal2-timer-progress-bar{background:linear-gradient(90deg,#d97706,#2563eb);opacity:.9}.pwa-install-popup{inset:0;position:fixed;z-index:2000}.pwa-install-popup__overlay{align-items:center;backdrop-filter:blur(1px);background:rgba(11,22,33,.5);display:flex;inset:0;justify-content:center;padding:1rem;position:absolute}.pwa-install-popup__card{animation:pwa-popup-enter .18s ease-out;background:#fff;border:1px solid rgba(0,95,151,.2);border-radius:1rem;box-shadow:0 18px 48px rgba(17,37,53,.26);padding:1.1rem 1.1rem 1rem;position:relative;width:min(30rem,calc(100vw - 1.5rem))}.pwa-install-popup__close{background:transparent;border:0;border-radius:999px;color:#3e5467;font-size:1.2rem;height:2rem;line-height:1;position:absolute;right:.45rem;top:.45rem;width:2rem}.pwa-install-popup__title{color:#0f2f48;font-size:1.05rem;margin:0 1.6rem .45rem 0}.pwa-install-popup__text{color:#39566f;line-height:1.45;margin:0 0 .9rem}@keyframes pwa-popup-enter{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.app-layout .btn-info,.app-layout .btn-primary{background:linear-gradient(135deg,#007fc7,#005a92);border:1px solid #266fa6;color:#fff}.app-layout .btn-info:hover,.app-layout .btn-primary:hover{background:linear-gradient(135deg,#008fdc,#00629d);color:#fff}.app-layout .btn-success{background:linear-gradient(135deg,#0ea760,#0a7f4a);border:1px solid #0c7c4d;color:#fff}.app-layout .btn-success:hover{background:linear-gradient(135deg,#11b769,#0b8a50);color:#fff}.app-layout .btn-warning{background:linear-gradient(135deg,#ffb13d,#e08a00);border:1px solid #b56e00;color:#412400}.app-layout .btn-warning:hover{background:linear-gradient(135deg,#ffbe58,#ec9300);color:#412400}.app-layout .btn-danger{background:linear-gradient(135deg,#df4b52,#bb3138);border:1px solid #ab2f35;color:#fff}.app-layout .btn-danger:hover{background:linear-gradient(135deg,#ea5960,#c9373e);color:#fff}.app-layout .btn-outline-danger,.app-layout .btn-outline-info,.app-layout .btn-outline-light,.app-layout .btn-outline-primary,.app-layout .btn-outline-secondary,.app-layout .btn-outline-success,.app-layout .btn-outline-warning{background:#fdfefe;border:1px solid var(--scada-border);color:var(--scada-text)}.app-layout .btn-outline-danger:hover,.app-layout .btn-outline-info:hover,.app-layout .btn-outline-light:hover,.app-layout .btn-outline-primary:hover,.app-layout .btn-outline-secondary:hover,.app-layout .btn-outline-success:hover,.app-layout .btn-outline-warning:hover{background:#eef6ff;border-color:#9ec3e5;color:var(--scada-cyan)}.app-layout .table{--bs-table-bg:transparent;--bs-table-color:var(--scada-text);--bs-table-striped-bg:#f3f8ff;--bs-table-hover-bg:#e3f0ff;--bs-table-border-color:#d6e3f0}.app-layout .table-responsive{width:100%}.app-layout .alert{border-radius:.8rem}.app-layout .alert-info{background:#e7f5ff;border-color:#a8d4ee;color:#0b3a5a}.app-layout .alert-warning{background:#fff5e3;border-color:#f0c984;color:#7d6220}.app-layout .alert-danger{background:#ffeaed;border-color:#e4a5ac;color:#8f4950}.app-user-shell{min-width:0}.app-user-toggle{align-items:center;background:linear-gradient(90deg,#fff,#f3f9ff);border:1px solid var(--scada-border);border-radius:.9rem;color:var(--scada-text);display:inline-flex;gap:.85rem;max-width:100%;min-width:230px;padding:.45rem .8rem}.app-user-toggle:focus,.app-user-toggle:hover{background:linear-gradient(90deg,#f8fcff,#eaf4ff);color:var(--scada-text)}.user-avatar{align-items:center;background:linear-gradient(135deg,#e6f3ff,#f8e8dc);border-radius:50%;color:var(--scada-cyan);display:inline-flex;flex-shrink:0;font-weight:700;height:2.2rem;justify-content:center;width:2.2rem}.user-name{color:var(--scada-text);font-size:.92rem;line-height:1.1}.user-caption{color:var(--scada-muted);font-size:.72rem}.app-user-menu{min-width:220px;padding:.5rem}.app-layout .dropdown-item,.app-user-menu .dropdown-item{border-radius:.7rem;color:var(--scada-text);padding:.6rem .85rem}.app-layout .dropdown-item:hover,.app-user-menu .dropdown-item:hover{background:#eaf3ff;color:var(--scada-cyan)}.app-footer{background:linear-gradient(90deg,hsla(0,0%,100%,.94),rgba(235,246,255,.94));border-top:1px solid var(--scada-border);color:var(--scada-muted);margin-top:auto;padding:.85rem 1rem}.scada-hero{align-items:flex-end;background:linear-gradient(145deg,hsla(0,0%,100%,.98),rgba(243,250,255,.96) 65%,hsla(29,68%,94%,.94));border:1px solid var(--scada-border);border-radius:.95rem;box-shadow:var(--scada-shadow);display:flex;gap:1rem;justify-content:space-between;padding:1.25rem}.panel-kicker,.scada-kicker{color:var(--scada-copper);display:inline-block;font-size:.72rem;letter-spacing:.1em;margin-bottom:.45rem;text-transform:uppercase}.scada-title{font-size:clamp(1.2rem,1.8vw,1.65rem);font-weight:700;letter-spacing:.01em}.scada-subtitle{color:var(--scada-muted);max-width:760px}.scada-block,.scada-panel,.scada-stat{background:linear-gradient(180deg,#fff,#f8fbff);border:1px solid var(--scada-border);border-radius:.9rem;box-shadow:var(--scada-shadow)}.scada-block{padding:1.1rem}.scada-stat{display:flex;flex-direction:column;gap:.3rem;min-height:130px;padding:1rem}.scada-stat .label{color:var(--scada-muted);font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}.scada-stat strong{font-size:1.8rem;line-height:1}.scada-stat small{color:var(--scada-muted)}.stat-success strong{color:var(--scada-green)}.stat-danger strong{color:var(--scada-red)}.stat-warning strong{color:var(--scada-amber)}.stat-info strong{color:var(--scada-cyan)}.panel-header{align-items:center;background:linear-gradient(90deg,#f2f8ff,#f8eee4);border-bottom:1px solid #e8eef2;display:flex;gap:1rem;justify-content:space-between;padding:1rem 1.1rem}.panel-body{padding:1.1rem}.scada-grid,.scada-stack{display:grid;gap:1rem}.scada-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}@media (max-width:991.98px){.app-shell-grid{grid-template-columns:1fr}.app-sidebar{max-height:none;position:static;top:auto}.app-navbar .navbar-collapse{background:#fff;border:1px solid var(--scada-border);border-radius:.9rem;margin-top:.8rem;padding:1rem}.app-user-shell{justify-content:stretch;margin-top:.25rem;width:100%}.app-user-toggle{min-width:0;width:100%}.panel-header,.scada-hero{align-items:flex-start;flex-direction:column}}@media (max-width:767.98px){.app-main-shell{padding-inline:.5rem}.brand-subtitle{display:none}.app-layout .card-body,.app-layout .card-header,.app-layout .modal-body,.app-layout .modal-footer,.app-layout .modal-header,.panel-body,.panel-header,.scada-block,.scada-hero{padding:.95rem}.scada-grid{grid-template-columns:1fr}.app-layout .table-responsive{overflow-x:auto}.app-layout .btn-group{flex-wrap:wrap}}@media (max-width:575.98px){.app-navbar .nav-link{justify-content:flex-start;width:100%}.scada-title{font-size:1.15rem}}