:root{color:#22242a;--rr-yellow:#f4bf02;--rr-yellow-strong:#d8a603;--rr-sidebar:#2f3542;--rr-sidebar-alt:#3a404d;--rr-topbar:#f7f7f8;--rr-nav:#6f7277;--rr-surface:#fff;--rr-border:#d6d8dd;--rr-text:#22242a;--rr-muted:#666d78;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#eceef1;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-weight:400;line-height:1.5}body{background:var(--rr-topbar);width:100vw;height:100vh;color:var(--rr-text);margin:0;padding:0;overflow:hidden}#app{width:100%;height:100%}.header.svelte-oiwvqb{background:var(--rr-topbar);border-bottom:1px solid var(--rr-border);flex-direction:column;display:flex}.top-row.svelte-oiwvqb{justify-content:space-between;align-items:center;gap:1rem;min-height:52px;padding:0 1.25rem 0 .75rem;display:flex}.module-selector.svelte-oiwvqb{color:#2f3339;align-items:center;gap:.6rem;display:flex}.module-icon.svelte-oiwvqb{background:var(--rr-yellow);color:#fff;border-radius:2px;justify-content:center;align-items:center;width:30px;height:30px;font-size:1rem;font-weight:800;display:inline-flex}.module-brand.svelte-oiwvqb{flex-direction:column;justify-content:center;line-height:1.05;display:flex}.module-title.svelte-oiwvqb{color:#1f2f4a;letter-spacing:.2px;font-size:1rem;font-weight:700}.module-subtitle.svelte-oiwvqb{color:#7a818c;letter-spacing:.35px;font-size:.63rem;font-weight:700}.actions.svelte-oiwvqb{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.quick-icon.svelte-oiwvqb{color:#8b9098;font-size:.88rem}.lang.svelte-oiwvqb{color:#3c434d;border-left:1px solid var(--rr-border);padding-left:.75rem;font-size:.78rem;font-weight:700}.user-name.svelte-oiwvqb{color:#343941;font-size:.82rem;font-weight:600}.avatar.svelte-oiwvqb{color:#353b44;background-color:#c4c9d1;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:.7rem;font-weight:700;display:flex}.logout-btn.svelte-oiwvqb{border:1px solid var(--rr-border);color:#636a75;cursor:pointer;background:0 0;border-radius:3px;padding:.25rem .55rem;font-size:.72rem;transition:all .2s}.logout-btn.svelte-oiwvqb:hover{color:#2d333b;background-color:#eceef1;border-color:#b7bcc4}.menu-row.svelte-oiwvqb{background:var(--rr-nav);align-items:center;gap:.2rem;min-height:48px;padding:0 1rem;display:flex;overflow-x:auto}.menu-link.svelte-oiwvqb{color:#eceef1;white-space:nowrap;border-bottom:3px solid #0000;padding:.95rem .85rem .78rem;font-size:.82rem;font-weight:700;text-decoration:none}.menu-link.svelte-oiwvqb:hover{color:#fff;background:#ffffff0f}.menu-link.active.svelte-oiwvqb{border-bottom-color:var(--rr-yellow);color:var(--rr-yellow)}@media (max-width:960px){.user-name.svelte-oiwvqb,.quick-icon.svelte-oiwvqb{display:none}.top-row.svelte-oiwvqb{padding-right:.6rem}}.tree-sidebar.svelte-181dlmc{background:var(--rr-sidebar);color:#eceff4;border-right:1px solid #242a34;flex-direction:column;width:305px;min-width:305px;display:flex;overflow:hidden}.add-btn.svelte-181dlmc{background:var(--rr-yellow);color:#fff;text-align:left;cursor:pointer;border:none;padding:.95rem 1rem;font-size:.92rem;font-weight:700}.add-btn.svelte-181dlmc:hover{background:#e2b200}.state-box.svelte-181dlmc{color:#dfe4eb;background:#3c4350;border-radius:3px;margin:.9rem;padding:.75rem;font-size:.84rem}.state-box.error.svelte-181dlmc{color:#ffdcdc;background:#5a3737}.tree-root.svelte-181dlmc{margin:0;padding:.55rem 0;list-style:none;overflow-y:auto}.tree-node.svelte-181dlmc+.tree-node:where(.svelte-181dlmc){margin-top:.15rem}.tree-item.svelte-181dlmc{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;text-decoration:none;display:flex}.machine-row.svelte-181dlmc{padding:.32rem .7rem;font-size:.88rem}.machine-row.svelte-181dlmc:hover{background:var(--rr-sidebar-alt)}.caret.svelte-181dlmc{color:#d3d8e0;width:.8rem;font-size:.92rem;transition:transform .15s}.caret.open.svelte-181dlmc{transform:rotate(90deg)}.machine-icon.svelte-181dlmc{color:var(--rr-yellow);font-size:.8rem}.machine-name.svelte-181dlmc{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.status-dot.svelte-181dlmc{border-radius:50%;width:8px;height:8px;margin-left:.35rem}.camera-children.svelte-181dlmc{margin:.1rem 0 .2rem;padding:0 0 0 2rem;list-style:none}.camera-row.svelte-181dlmc{color:#cfd4dd;padding:.24rem .5rem .24rem 0;font-size:.82rem}.camera-row.svelte-181dlmc:hover{color:#fff}.camera-bullet.svelte-181dlmc{text-align:center;width:.65rem;font-size:.58rem}.camera-name.svelte-181dlmc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.is-online.svelte-181dlmc{color:#56c271;background:#56c271}.is-maintenance.svelte-181dlmc{color:#f4bf02;background:#f4bf02}.is-offline.svelte-181dlmc{color:#d25050;background:#d25050}@media (max-width:1100px){.tree-sidebar.svelte-181dlmc{width:265px;min-width:265px}}@media (max-width:900px){.tree-sidebar.svelte-181dlmc{display:none}}.layout.svelte-1325jhu{flex-direction:column;width:100vw;height:100vh;display:flex;overflow:hidden}.layout-body.svelte-1325jhu{flex:1;display:flex;overflow:hidden}.content-shell.svelte-1325jhu{background:#f0f1f3;flex-direction:column;flex:1;min-width:0;display:flex}.content.svelte-1325jhu{color:var(--rr-text);background-color:#f0f1f3;flex:1;padding:1rem;overflow-y:auto}.camera-modal-backdrop.svelte-1325jhu{z-index:1200;background:#14181fa8;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.camera-modal.svelte-1325jhu{border:1px solid var(--rr-border);background:#fff;border-radius:6px;width:min(980px,95vw);overflow:hidden;box-shadow:0 14px 34px #12171f59}.camera-modal-header.svelte-1325jhu{border-bottom:1px solid var(--rr-border);background:#f4f6f9;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.camera-modal-header.svelte-1325jhu h3:where(.svelte-1325jhu){color:#2f3642;margin:0;font-size:1rem}.close-btn.svelte-1325jhu{border:1px solid var(--rr-border);color:#5f6773;cursor:pointer;background:#fff;border-radius:3px;width:28px;height:28px;font-size:1.2rem;line-height:1}.close-btn.svelte-1325jhu:hover{color:#2f3642;background:#f1f3f6}.camera-modal-meta.svelte-1325jhu{color:#656d7a;border-bottom:1px solid var(--rr-border);padding:.6rem 1rem;font-size:.86rem}.state-text.svelte-1325jhu{text-transform:capitalize;color:#38404c;font-weight:700}.camera-modal-content.svelte-1325jhu{aspect-ratio:16/9;background:#10141b;justify-content:center;align-items:center;width:100%;display:flex}.modal-stream.svelte-1325jhu{object-fit:contain;background:#000;border:0;width:100%;height:100%}.no-signal.svelte-1325jhu{color:#c5cbd6;font-size:1rem}.dashboard-content.svelte-1thed0a{background:var(--rr-surface);border:1px solid var(--rr-border);border-radius:4px;padding:1rem}.widgets.svelte-1thed0a{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1rem;margin-top:1rem;display:grid}.card.svelte-1thed0a{border:1px solid var(--rr-border);background:#f9fafb;border-radius:3px;padding:1rem}h2.svelte-1thed0a{color:#2d323a;margin-top:0;margin-bottom:.25rem;font-weight:600}h3.svelte-1thed0a{color:#4a5260;margin-top:0;margin-bottom:.5rem;font-size:1rem}p.svelte-1thed0a{color:#5e6572;margin:.35rem 0}.live-cameras-container.svelte-kvx99g{background:var(--rr-surface);border:1px solid var(--rr-border);border-radius:4px;padding:1rem}h2.svelte-kvx99g{color:#2f343c;margin:0 0 1rem;font-size:1.55rem;font-weight:600}.loading.svelte-kvx99g,.error.svelte-kvx99g{border:1px solid var(--rr-border);color:#59616f;text-align:center;background:#f7f8fa;border-radius:3px;padding:1rem}.error.svelte-kvx99g{color:#af2b2b;background:#fff5f5;border-color:#e6b8b8}.trains-list.svelte-kvx99g{flex-direction:column;gap:.75rem;display:flex}.train-card.svelte-kvx99g{border:1px solid var(--rr-border);background-color:#fff;border-radius:4px;overflow:hidden}.train-header.svelte-kvx99g{cursor:pointer;justify-content:space-between;align-items:center;min-height:64px;padding:.75rem 1rem;transition:background-color .15s;display:flex}.train-header.svelte-kvx99g:hover{background-color:#f5f7f9}.train-info.svelte-kvx99g{flex-direction:column;gap:.15rem;display:flex}.train-name.svelte-kvx99g{color:#2d333b;margin:0 0 .5rem;font-size:1rem;font-weight:600}.train-line.svelte-kvx99g{color:#727885;font-size:.82rem}.train-status.svelte-kvx99g{text-transform:capitalize;color:#5f6774;align-items:center;gap:.5rem;font-size:.9rem;font-weight:600;display:flex}.arrow.svelte-kvx99g{color:#8d94a0;font-size:.8rem}.status-indicator.svelte-kvx99g{background-color:#b6bdc8;border-radius:50%;width:8px;height:8px;display:block}.status-indicator.active.svelte-kvx99g,.status-indicator.online.svelte-kvx99g{background-color:#4caf50}.status-indicator.maintenance.svelte-kvx99g{background-color:#f4bf02}.status-indicator.inactive.svelte-kvx99g,.status-indicator.offline.svelte-kvx99g{background-color:#e04f4f}.camera-status.svelte-kvx99g{text-transform:capitalize;font-weight:500}.camera-status.online.svelte-kvx99g{color:#2e8f43}.camera-status.offline.svelte-kvx99g{color:#cc3737}.camera-status.maintenance.svelte-kvx99g{color:#b98900}.cameras-grid.svelte-kvx99g{border-top:1px solid var(--rr-border);background-color:#f8f9fb;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:.75rem;padding:.75rem 1rem 1rem;display:grid}.camera-card.svelte-kvx99g{border:1px solid var(--rr-border);background-color:#fff;border-radius:3px;overflow:hidden}.camera-preview.svelte-kvx99g{background-color:#d2d8df;justify-content:center;align-items:center;height:160px;display:flex;position:relative;overflow:hidden}.stream-video.svelte-kvx99g{object-fit:cover;border:0;width:100%;height:100%}.placeholder-stream.svelte-kvx99g{color:#5f6772;flex-direction:column;align-items:center;gap:.5rem;display:flex}.no-signal.svelte-kvx99g{color:#7c8491;text-transform:uppercase;letter-spacing:1px;font-size:.75rem}.live-badge.svelte-kvx99g{color:#fff;background-color:#cc2929;border-radius:2px;padding:2px 7px;font-size:.7rem;font-weight:700;position:absolute;top:10px;right:10px}.live-badge.maintenance.svelte-kvx99g{background-color:#b98900}.live-badge.offline.svelte-kvx99g{background-color:#646d7b}.camera-footer.svelte-kvx99g{border-top:1px solid var(--rr-border);background-color:#fff;justify-content:space-between;padding:.75rem;font-size:.875rem;display:flex}.camera-name.svelte-kvx99g{color:#37404a}@media (max-width:760px){.train-header.svelte-kvx99g{flex-direction:column;align-items:flex-start;gap:.5rem}}.page-container.svelte-sjiyvi{background:var(--rr-surface);border:1px solid var(--rr-border);border-radius:4px;flex-direction:column;height:100%;padding:1rem;display:flex;position:relative}h2.svelte-sjiyvi{color:#2f343c;margin:0 0 1rem;font-size:1.55rem;font-weight:600}.table-container.svelte-sjiyvi{border:1px solid var(--rr-border);background-color:#fff;border-radius:3px;flex:1;overflow-y:auto}table.svelte-sjiyvi{border-collapse:collapse;width:100%;min-width:800px}th.svelte-sjiyvi,td.svelte-sjiyvi{text-align:left;color:#49505d;border-bottom:1px solid #ebedf1;padding:.75rem}th.svelte-sjiyvi{z-index:10;color:#3c4350;background-color:#f3f5f8;font-size:.85rem;font-weight:600;position:sticky;top:0}tr.svelte-sjiyvi:hover{background-color:#fafbfd}.thumbnail-wrapper.svelte-sjiyvi{background-color:#d5dbe3;border-radius:3px;width:120px;height:68px;overflow:hidden}.thumbnail-wrapper.svelte-sjiyvi img:where(.svelte-sjiyvi){object-fit:cover;width:100%;height:100%}.action-btn.svelte-sjiyvi{cursor:pointer;border:none;border-radius:4px;margin-right:.5rem;padding:.5rem 1rem;font-size:.875rem;transition:background-color .2s}.action-btn.play.svelte-sjiyvi{background-color:var(--rr-yellow);color:#5e4e0f;border:1px solid var(--rr-yellow-strong);font-weight:600}.action-btn.play.svelte-sjiyvi:hover{background-color:#e9b800}.action-btn.download.svelte-sjiyvi{color:#5d6573;border:1px solid var(--rr-border);background-color:#f6f7f9}.action-btn.download.svelte-sjiyvi:hover{color:#3f4652;background-color:#eceff3}.modal-backdrop.svelte-sjiyvi{z-index:1000;background-color:#1b1f27b3;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:fixed;top:0;left:0}.modal-content.svelte-sjiyvi{background-color:#fff;border-radius:6px;width:90%;max-width:960px;overflow:hidden;box-shadow:0 14px 28px #10182840}.modal-header.svelte-sjiyvi{border-bottom:1px solid var(--rr-border);background:#f7f8fa;justify-content:space-between;align-items:center;padding:.8rem 1rem;display:flex}.modal-header.svelte-sjiyvi h3:where(.svelte-sjiyvi){color:#38414d;margin:0;font-size:1rem}.close-btn.svelte-sjiyvi{color:#6f7784;cursor:pointer;background:0 0;border:none;padding:0 .4rem;font-size:1.5rem;line-height:1}.close-btn.svelte-sjiyvi:hover{color:#232831}.video-player-wrapper.svelte-sjiyvi{aspect-ratio:16/9;background-color:#0f1217;width:100%}.main-video.svelte-sjiyvi{width:100%;height:100%}.loading.svelte-sjiyvi,.error.svelte-sjiyvi{text-align:center;color:#687080;padding:2rem}.error.svelte-sjiyvi{color:#b13131}@media (max-width:760px){.action-btn.svelte-sjiyvi{width:100%;margin-bottom:.4rem}}.login-container.svelte-110obhz{background:linear-gradient(#f3f4f6 0%,#e7e9ed 100%);justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.login-card.svelte-110obhz{border:1px solid var(--rr-border);background-color:#fff;border-radius:6px;width:100%;max-width:400px;padding:2.5rem;box-shadow:0 14px 26px #141c2d24}.logo-area.svelte-110obhz{text-align:center;margin-bottom:2rem}.module-selector.svelte-110obhz{align-items:center;gap:.65rem;display:inline-flex}.module-icon.svelte-110obhz{background:var(--rr-yellow);color:#fff;border-radius:2px;justify-content:center;align-items:center;width:34px;height:34px;font-size:1.1rem;font-weight:800;display:inline-flex}.module-brand.svelte-110obhz{flex-direction:column;align-items:flex-start;line-height:1.05;display:flex}.module-title.svelte-110obhz{color:#1f2f4a;letter-spacing:.3px;font-size:1.18rem;font-weight:800}.module-subtitle.svelte-110obhz{color:#7a818c;letter-spacing:.38px;font-size:.66rem;font-weight:800}.access-text.svelte-110obhz{color:#7a808c;margin:.5rem 0 0;font-size:.875rem}.form-group.svelte-110obhz{margin-bottom:1.5rem}label.svelte-110obhz{color:#525a67;margin-bottom:.5rem;font-size:.875rem;font-weight:600;display:block}input.svelte-110obhz{border:1px solid var(--rr-border);color:#2f3640;box-sizing:border-box;background-color:#f7f8fa;border-radius:3px;width:100%;padding:.75rem;font-size:1rem;transition:border-color .2s}input.svelte-110obhz:focus{border-color:var(--rr-yellow-strong);outline:none}button.svelte-110obhz{background-color:var(--rr-yellow);color:#5c4a08;border:1px solid var(--rr-yellow-strong);cursor:pointer;border-radius:3px;width:100%;padding:.75rem;font-size:1rem;font-weight:600;transition:background-color .2s}button.svelte-110obhz:hover:not(:disabled){background-color:#e6b500}button.svelte-110obhz:disabled{opacity:.7;cursor:not-allowed}.error-message.svelte-110obhz{color:#b42f2f;text-align:center;background-color:#fff0f0;border:1px solid #efc7c7;border-radius:3px;margin-bottom:1.5rem;padding:.75rem;font-size:.875rem}body{background-color:var(--rr-topbar);color:var(--rr-text);margin:0;padding:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif}
