*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.app-footer{background:#1f2937;bottom:0;color:#fff;font-size:12px;left:0;padding:10px;position:fixed;right:0;text-align:center;z-index:1000}body{padding-bottom:40px}.login-container{align-items:center;background:linear-gradient(135deg,#fbbf24,#f59e0b);display:flex;justify-content:center;min-height:100vh;padding-bottom:50px}.login-card{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0000001a;max-width:400px;padding:2.5rem;width:100%}.login-card h1{color:#333;font-size:2rem;margin-bottom:.5rem;text-align:center}.subtitle{color:#666;font-size:.9rem;margin-bottom:2rem;text-align:center}.form-group{margin-bottom:1.5rem}.form-group label{color:#333;display:block;font-weight:500;margin-bottom:.5rem}.form-group input{border:1px solid #ddd;border-radius:6px;font-size:1rem;padding:.75rem;transition:border-color .3s;width:100%}.form-group input:focus{border-color:#fbbf24;outline:none}.error-message{background-color:#fee;border-radius:6px;color:#c33;font-size:.9rem;margin-bottom:1rem;padding:.75rem}.login-button{background:linear-gradient(135deg,#fbbf24,#f59e0b);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:.75rem;transition:opacity .3s;width:100%}.login-button:hover:not(:disabled){opacity:.9}.login-button:disabled{cursor:not-allowed;opacity:.6}.dashboard{background-color:#f5f5f5;display:flex;flex-direction:column;min-height:100vh}.dashboard-header{align-items:center;background:linear-gradient(135deg,#fbbf24,#f59e0b);box-shadow:0 2px 10px #0000001a;color:#1f2937;display:flex;justify-content:space-between;padding:1.5rem 2rem}.dashboard-header h1{font-size:1.5rem;font-weight:600}.user-info{font-size:.9rem;opacity:.9}.logout-button{background:#1f29371a;border:1px solid #1f293733;border-radius:6px;color:#1f2937;cursor:pointer;font-size:.9rem;padding:.5rem 1rem;transition:background .3s}.logout-button:hover{background:#1f293733}.dashboard-content{display:flex;flex:1 1;gap:2rem;padding:2rem}.sidebar{display:flex;flex-direction:column;gap:1rem;height:-webkit-fit-content;height:fit-content;max-height:calc(100vh - 140px);overflow-y:auto;width:380px}.accordion-section{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;overflow:hidden}.accordion-header{align-items:center;background:#fff;border:none;cursor:pointer;display:flex;justify-content:space-between;padding:1rem 1.25rem;text-align:left;transition:background .2s;width:100%}.accordion-header:hover{background:#f9f9f9}.accordion-header.expanded{border-bottom:1px solid #e5e5e5}.accordion-title{align-items:center;color:#333;display:flex;font-size:1rem;font-weight:600;gap:.5rem}.accordion-icon{color:#666;font-size:.7rem;transition:transform .2s}.accordion-badges{display:flex;gap:.5rem}.badge{border-radius:12px;font-size:.7rem;font-weight:600;padding:.25rem .5rem}.badge-total{background:#e5e5e5;color:#666}.badge-running{background:#fbbf24;color:#1f2937}.accordion-content{max-height:500px;overflow-y:auto;padding:1rem}.accordion-content::-webkit-scrollbar{width:6px}.accordion-content::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.accordion-content::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}.accordion-content::-webkit-scrollbar-thumb:hover{background:#aaa}.app-list-container{position:relative}.app-list{list-style:none;max-height:400px;overflow-y:auto;padding-right:.5rem;scroll-behavior:smooth}.app-list::-webkit-scrollbar{width:6px}.app-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.app-list::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}.app-list::-webkit-scrollbar-thumb:hover{background:#aaa}.scroll-indicator{animation:pulse-opacity 2s infinite;background:linear-gradient(180deg,#fffffff2,#ffffffb3);color:#888;font-size:.75rem;padding:.5rem;text-align:center}.scroll-indicator.scroll-up{border-bottom:1px solid #eee;margin-bottom:.5rem}.scroll-indicator.scroll-down{border-top:1px solid #eee;margin-top:.5rem}@keyframes pulse-opacity{0%,to{opacity:1}50%{opacity:.5}}.app-item{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:8px;margin-bottom:.75rem;padding:1rem;transition:all .3s}.app-item:last-child{margin-bottom:0}.app-item.running{background:#fefce8;border-color:#fbbf24}.app-item:hover{box-shadow:0 2px 8px #0000001a}.app-info h3{color:#333;font-size:.95rem;margin-bottom:.5rem}.app-description{color:#666;font-size:.8rem;line-height:1.4;margin-bottom:.5rem}.app-dependencies{color:#888;font-size:.7rem;font-style:italic;margin-bottom:.5rem}.app-status{align-items:center;color:#d97706;display:flex;font-size:.8rem;gap:.5rem;margin-top:.5rem}.uptime{color:#888;font-size:.75rem}.status-indicator{animation:pulse 2s infinite;background-color:#fbbf24;border-radius:50%;height:8px;width:8px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.app-actions{display:flex;flex-direction:column;gap:.5rem;margin-top:.75rem}.btn{border:none;border-radius:6px;cursor:pointer;font-size:.85rem;font-weight:500;padding:.5rem;transition:all .3s;width:100%}.btn-start{background:#fbbf24;color:#1f2937}.btn-start:hover:not(:disabled){background:#f59e0b}.btn-stop{background:#f44336;color:#fff}.btn-stop:hover:not(:disabled){background:#da190b}.btn-open{background:#3b82f6;color:#fff;display:inline-block;text-align:center;text-decoration:none}.btn-open:hover{background:#2563eb}.btn-open-app{background:#3b82f6;border-radius:6px;color:#fff;display:inline-block;font-size:.85rem;margin-top:.5rem;padding:.5rem 1rem;text-decoration:none;transition:background .3s}.btn-open-app:hover{background:#2563eb}.btn-observability{background:linear-gradient(135deg,#f093fb,#f5576c);border-radius:6px;box-shadow:0 2px 4px #0000001a;color:#fff;display:inline-block;font-size:.85rem;margin-top:.5rem;padding:.5rem 1rem;text-decoration:none;transition:all .3s}.btn-observability:hover{box-shadow:0 4px 8px #f093fb4d;transform:translateY(-2px)}.btn:disabled{cursor:not-allowed;opacity:.6}.metrics-grid{display:flex;flex-direction:column;gap:.75rem;max-height:none}.metric-card{background:#f9f9f9;border:1px solid #e5e5e5;padding:.875rem}.metric-card h4{align-items:center;color:#333;display:flex;font-size:.85rem;font-weight:600;gap:.5rem;margin-bottom:.75rem}.status-dot{border-radius:50%;display:inline-block;height:8px;width:8px}.status-dot.online{background:#22c55e;box-shadow:0 0 4px #22c55e}.status-dot.offline{background:#ef4444}.metric-row{align-items:center;display:flex;font-size:.8rem;justify-content:space-between;margin-bottom:.5rem}.metric-label{color:#666}.metric-value{align-items:center;color:#333;display:flex;font-weight:500;gap:.5rem}.metric-value.highlight{color:#f59e0b;font-weight:600}.progress-bar{background:#e5e5e5;border-radius:3px;height:6px;overflow:hidden;width:60px}.progress-fill{background:#fbbf24;border-radius:3px;height:100%;transition:width .3s ease}.progress-fill.memory{background:#3b82f6}.metric-detail{color:#888;font-size:.7rem;margin-top:.25rem}.metric-detail.muted{font-style:italic;opacity:.7}.metric-offline{color:#999;font-size:.8rem;font-style:italic;padding:.5rem;text-align:center}.main-content{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;flex:1 1;max-height:calc(100vh - 140px);overflow-y:auto;padding:1.5rem}.main-content h2{color:#333;font-size:1.2rem;margin-bottom:1.5rem}.containers-list{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.container-card{background:#f9f9f9;border:1px solid #e0e0e0;border-radius:8px;padding:1rem}.container-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:.75rem}.container-header h3{color:#333;font-size:.9rem;word-break:break-all}.status-badge{border-radius:12px;flex-shrink:0;font-size:.7rem;font-weight:600;margin-left:.5rem;padding:.25rem .75rem;text-transform:uppercase}.status-badge.running{background:#fbbf24;color:#1f2937}.status-badge.exited{background:#f44336;color:#fff}.status-badge.created{background:#ff9800;color:#fff}.container-info{color:#666;font-size:.8rem}.container-info p{margin-bottom:.4rem}.ports{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.5rem}.port{background:#e0e0e0;border-radius:4px;font-size:.7rem;padding:.2rem .4rem}.empty-state{color:#999;padding:2rem;text-align:center}.empty-state .hint{color:#bbb;font-size:.85rem;margin-top:.5rem}.loading{padding:1.5rem;text-align:center}@media (max-width:1024px){.dashboard-content{flex-direction:column}.sidebar{max-height:none;width:100%}.app-list{max-height:300px}.main-content{max-height:none}}.observability-container{background:#0d1117;color:#c9d1d9;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;min-height:100vh}.observability-error,.observability-loading{align-items:center;color:#8b949e;display:flex;font-size:1.5rem;height:100vh;justify-content:center}.observability-error{color:#f85149}.observability-header{align-items:center;background:#161b22;border-bottom:1px solid #30363d;display:flex;justify-content:space-between;padding:1.5rem 2rem}.header-content h1{color:#58a6ff;font-size:1.5rem;font-weight:600;margin:0 0 .5rem}.container-title{align-items:center;display:flex;gap:1rem}.container-name{color:#c9d1d9;font-size:1.25rem;font-weight:500}.state-badge{border-radius:12px;font-size:.875rem;font-weight:600;padding:.25rem .75rem;text-transform:uppercase}.state-badge.running{background:#238636;color:#fff}.state-badge.exited{background:#6e7681;color:#fff}.header-actions{gap:1rem}.auto-refresh,.header-actions{align-items:center;display:flex}.auto-refresh{font-size:.875rem;gap:.5rem}.auto-refresh,.auto-refresh input[type=checkbox]{cursor:pointer}.refresh-button{background:#238636;border:none;border-radius:6px;color:#fff;cursor:pointer;font-weight:600;padding:.5rem 1rem;transition:background .2s}.refresh-button:hover{background:#2ea043}.observability-content{margin:0 auto;max-width:1600px;padding:2rem}.metrics-overview{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));margin-bottom:2rem}.metric-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:1.5rem}.metric-header{align-items:center;display:flex;gap:.5rem;margin-bottom:1rem}.metric-icon{font-size:1.5rem}.metric-label{color:#8b949e;font-size:.875rem;font-weight:600;text-transform:uppercase}.metric-value{color:#58a6ff;font-size:2rem;font-weight:700;margin-bottom:.5rem}.metric-value.error{color:#f85149}.metric-detail{color:#8b949e;font-size:.875rem}.resource-section{margin-bottom:2rem}.resource-section h2{color:#c9d1d9;font-size:1.5rem;margin-bottom:1rem}.resource-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(600px,1fr));margin-bottom:1.5rem}.resource-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:1.5rem}.resource-card h3{color:#8b949e;font-size:1.125rem;margin:0 0 1rem}.chart-container{border-radius:6px;margin-bottom:1rem;overflow:hidden}.chart-container canvas{display:block;height:auto;width:100%}.resource-stats{border-top:1px solid #30363d;color:#8b949e;display:flex;font-size:.875rem;justify-content:space-between;padding-top:1rem}.network-io{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.io-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:1.5rem}.io-card h3{color:#8b949e;font-size:1.125rem;margin:0 0 1rem}.io-stats{display:flex;flex-direction:column;gap:.75rem}.io-stat{border-bottom:1px solid #30363d;display:flex;justify-content:space-between;padding:.5rem 0}.io-stat:last-child{border-bottom:none}.io-label{color:#8b949e;font-size:.875rem}.io-value{color:#58a6ff;font-weight:600}.request-rate-section{margin-bottom:2rem}.request-rate-section h2{color:#c9d1d9;font-size:1.5rem;margin-bottom:1rem}.request-rate-chart-container{background:#161b22;border:1px solid #30363d;border-radius:8px;overflow-x:auto;padding:1.5rem}.request-rate-chart-container canvas{display:block;height:auto;min-width:800px;width:100%}.no-data-message{background:#161b22;border:1px solid #30363d;border-radius:8px;color:#8b949e;padding:3rem;text-align:center}.no-data-message p{font-size:1rem;margin:.5rem 0}.no-data-message .hint{color:#6e7681;font-size:.875rem}.no-data-message code{background:#0d1117;border-radius:4px;color:#58a6ff;font-family:Monaco,Menlo,monospace;padding:.25rem .5rem}.endpoint-section{margin-bottom:2rem}.endpoint-section h2{color:#c9d1d9;font-size:1.5rem;margin-bottom:1rem}.endpoint-summary{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));margin-bottom:2rem}.summary-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:1.5rem;text-align:center}.summary-label{color:#8b949e;font-size:.875rem;font-weight:600;margin-bottom:.5rem;text-transform:uppercase}.summary-value{color:#58a6ff;font-size:2.5rem;font-weight:700}.summary-value.error{color:#f85149}.summary-value.warning{color:#d29922}.summary-value.latency{color:#a371f7}.summary-sublabel{color:#8b949e;font-size:.875rem;font-weight:400;margin-top:.5rem}.latency-chart-container{background:#161b22;border:1px solid #30363d;border-radius:8px;margin-bottom:2rem;padding:1.5rem}.latency-chart-container h3{color:#8b949e;font-size:1.125rem;margin:0 0 1rem}.latency-chart-container canvas{border-radius:6px;display:block;height:auto;width:100%}.endpoints-table{background:#161b22;border:1px solid #30363d;border-radius:8px;margin-bottom:2rem;overflow-x:auto;padding:1.5rem}.endpoints-table h3{color:#8b949e;font-size:1.125rem;margin:0 0 1rem}.endpoints-table table{border-collapse:collapse;width:100%}.endpoints-table th{background:#0d1117;border-bottom:2px solid #30363d;color:#8b949e;font-size:.875rem;font-weight:600;padding:.75rem;text-align:left;text-transform:uppercase}.endpoints-table td{border-bottom:1px solid #21262d;color:#c9d1d9;font-size:.875rem;padding:.75rem}.endpoints-table tr:hover{background:#0d1117}.endpoint-name{align-items:center;display:flex;font-family:Monaco,Menlo,monospace;gap:.5rem}.method-badge{border-radius:4px;font-size:.75rem;font-weight:700;padding:.25rem .5rem;text-transform:uppercase}.method-badge.get{background:#238636;color:#fff}.method-badge.post{background:#1f6feb;color:#fff}.method-badge.put{background:#da3633;color:#fff}.method-badge.delete{background:#bc4c00;color:#fff}.method-badge.patch{background:#9e6a03;color:#fff}.success-rate{font-weight:600}.success-rate.good{color:#3fb950}.success-rate.warning{color:#d29922}.success-rate.bad{color:#f85149}.status-codes{display:flex;flex-wrap:wrap;gap:.25rem}.status-code{border-radius:3px;font-family:monospace;font-size:.75rem;font-weight:600;padding:.125rem .375rem}.status-code.2xx{background:#3fb95033;color:#3fb950}.status-code.3xx{background:#58a6ff33;color:#58a6ff}.status-code.4xx{background:#d2992233;color:#d29922}.status-code.5xx{background:#f8514933;color:#f85149}.recent-requests{background:#161b22;border:1px solid #30363d;border-radius:8px;margin-bottom:2rem;padding:1.5rem}.recent-requests h3{color:#8b949e;font-size:1.125rem;margin:0 0 1rem}.requests-list{max-height:400px;overflow-y:auto}.request-item{align-items:center;border-bottom:1px solid #21262d;display:flex;font-family:Monaco,Menlo,monospace;font-size:.875rem;gap:.75rem;padding:.5rem}.request-item:last-child{border-bottom:none}.request-path{color:#c9d1d9;flex:1 1}.request-latency{color:#58a6ff;font-weight:600}.status-2xx{background:#3fb95033;color:#3fb950}.status-3xx{background:#58a6ff33;color:#58a6ff}.status-4xx{background:#d2992233;color:#d29922}.status-5xx{background:#f8514933;color:#f85149}.logs-section{margin-bottom:2rem}.logs-section h2{color:#c9d1d9;font-size:1.5rem;margin-bottom:1rem}.error-logs,.log-viewer{background:#0d1117;border:1px solid #30363d;border-radius:8px;font-family:Monaco,Menlo,Ubuntu Mono,monospace;font-size:.875rem;margin-bottom:2rem;max-height:400px;overflow-y:auto;padding:1rem}.log-entry{word-wrap:break-word;border-bottom:1px solid #21262d;color:#8b949e;padding:.5rem;white-space:pre-wrap}.log-entry:last-child{border-bottom:none}.log-entry.error{background:#f851491a;border-left:3px solid #f85149;color:#f85149;padding-left:.75rem}.no-errors{color:#3fb950;font-style:italic;padding:1rem;text-align:center}.info-section{margin-bottom:2rem}.info-section h2{color:#c9d1d9;font-size:1.5rem;margin-bottom:1rem}.info-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fit,minmax(350px,1fr))}.info-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:1.5rem}.info-card h3{border-bottom:1px solid #30363d;color:#8b949e;font-size:1.125rem;margin:0 0 1rem;padding-bottom:.5rem}.info-item{display:flex;gap:1rem;justify-content:space-between;padding:.5rem 0}.info-label{color:#8b949e;font-size:.875rem;min-width:80px}.info-value{color:#c9d1d9;font-weight:500;text-align:right;word-break:break-all}.info-value.small{font-size:.75rem}.error-logs::-webkit-scrollbar,.log-viewer::-webkit-scrollbar{width:8px}.error-logs::-webkit-scrollbar-track,.log-viewer::-webkit-scrollbar-track{background:#0d1117}.error-logs::-webkit-scrollbar-thumb,.log-viewer::-webkit-scrollbar-thumb{background:#30363d;border-radius:4px}.error-logs::-webkit-scrollbar-thumb:hover,.log-viewer::-webkit-scrollbar-thumb:hover{background:#484f58}@media (max-width:768px){.observability-header{align-items:flex-start;flex-direction:column;gap:1rem}.info-grid,.network-io,.resource-grid{grid-template-columns:1fr}}.loading{align-items:center;color:#666;display:flex;font-size:18px;height:100vh;justify-content:center}
/*# sourceMappingURL=main.5c879046.css.map*/