@import"https://fonts.googleapis.com/css2?family=Manrope:wght@500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg: #f4f6f4;--surface: #ffffff;--border: #e2e7e3;--text: #16211b;--text-muted: #6c7a72;--accent: #1f7a5c;--accent-soft: #e7f3ec;--warn: #b8842d;--warn-soft: #fbf1de;--danger: #b23a3a;--danger-soft: #fbe9e7;--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:Manrope,system-ui,sans-serif;-webkit-font-smoothing:antialiased}.mono{font-family:IBM Plex Mono,monospace}button{font-family:inherit;cursor:pointer}input{font-family:inherit}::selection{background:var(--accent-soft)}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.boot-screen{height:100%;background:var(--bg)}.app-shell{display:flex;min-height:100vh;min-height:100dvh;background:var(--bg)}.sidebar{display:none;flex-direction:column;width:240px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:20px 14px;position:sticky;top:0;height:100vh;height:100dvh}.sidebar-brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;padding:6px 10px 22px}.brand-mark{width:10px;height:10px;border-radius:3px;background:var(--accent);flex-shrink:0}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1}.nav-item{display:flex;align-items:center;gap:10px;border:none;background:transparent;color:var(--text-muted);font-size:14px;font-weight:600;padding:10px 12px;border-radius:var(--radius);text-align:left;width:100%}.nav-item:hover{background:var(--bg);color:var(--text)}.nav-item-active{background:var(--accent-soft);color:var(--accent)}.sidebar-footer{border-top:1px solid var(--border);padding-top:12px;margin-top:12px}.sidebar-server{font-family:IBM Plex Mono,monospace;font-size:11px;color:var(--text-muted);padding:0 12px 8px;overflow-wrap:anywhere}.app-main{flex:1;min-width:0;display:flex;flex-direction:column;padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}.bottom-nav{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--surface);border-top:1px solid var(--border);padding:6px 4px calc(6px + env(safe-area-inset-bottom,0px));z-index:20}.bottom-nav-item{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;border:none;background:transparent;color:var(--text-muted);font-size:11px;font-weight:600;padding:6px 2px;border-radius:8px}.bottom-nav-item-active{color:var(--accent)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(14px + env(safe-area-inset-top,0px)) 16px 14px;position:sticky;top:0;background:var(--bg);z-index:10;min-width:0}.topbar h1{font-size:18px;margin:0;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-right{display:flex;align-items:center;gap:10px;flex-shrink:0}.live-indicator{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted)}.live-on{color:var(--accent)}.topbar-email{display:none;font-size:12px;color:var(--text-muted);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dashboard-content{padding:0 16px 24px;display:flex;flex-direction:column;gap:16px;min-width:0}.banner{padding:10px 14px;border-radius:var(--radius);font-size:13px}.banner-error{background:var(--danger-soft);color:var(--danger)}.stat-grid{display:grid;grid-template-columns:1fr;gap:12px}.stat-card{background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius);padding:14px;min-width:0}.stat-card-top{display:flex;align-items:center;gap:8px;color:var(--text-muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}.stat-card-value{display:flex;align-items:baseline;gap:6px;font-size:26px;font-weight:600;margin-bottom:8px;overflow-wrap:anywhere}.stat-card-unit{font-size:12px;color:var(--text-muted);font-family:IBM Plex Mono,monospace}.panel-grid{display:grid;grid-template-columns:1fr;gap:16px;min-width:0}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;min-width:0}.panel h2{font-size:14px;margin:0 0 12px}.empty-note{color:var(--text-muted);font-size:13px}.service-list{display:flex;flex-direction:column;gap:10px}.service-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;min-width:0}.service-row-main{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 200px}.service-name{font-weight:600;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.service-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:11px;color:var(--text-muted);font-family:IBM Plex Mono,monospace;margin-top:2px}.badge{background:var(--accent-soft);color:var(--accent);padding:1px 6px;border-radius:4px;font-weight:600}.service-row-actions{display:flex;gap:6px;flex-shrink:0}.service-row-actions button{border:1px solid var(--border);background:var(--surface);border-radius:8px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;color:var(--text)}.service-row-actions button:disabled{opacity:.5}.service-row-actions .danger{color:var(--danger)}.service-error{flex-basis:100%;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--danger)}.status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.status-dot-ok{background:var(--accent)}.status-dot-idle{background:#b7bfb9}.status-dot-bad{background:var(--danger)}.activity-list{display:flex;flex-direction:column;gap:12px;max-height:420px;overflow-y:auto}.activity-item{display:flex;gap:10px;align-items:flex-start;min-width:0}.activity-item>div{min-width:0}.activity-line{font-size:13px;overflow-wrap:anywhere}.activity-meta{font-size:11px;color:var(--text-muted);font-family:IBM Plex Mono,monospace}.auth-screen{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:20px}.auth-card{width:100%;max-width:360px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px 24px;display:flex;flex-direction:column}.auth-icon{width:40px;height:40px;border-radius:10px;background:var(--accent-soft);color:var(--accent);display:flex;align-items:center;justify-content:center;margin-bottom:14px}.auth-card h1{font-size:19px;margin:0 0 6px}.auth-sub{font-size:13px;color:var(--text-muted);margin:0 0 20px}.auth-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:600;margin-bottom:14px}.auth-card input{border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;background:var(--bg)}.auth-card input:focus{background:var(--surface)}.auth-error{color:var(--danger);font-size:13px;margin:-4px 0 14px}.btn{border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:10px 16px;font-size:14px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn-block{width:100%}.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f141173;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal-box{background:var(--surface);border-radius:14px;padding:22px;max-width:340px;width:100%;color:var(--danger)}.modal-box p{color:var(--text);font-size:14px;margin:10px 0 18px}.modal-actions{display:flex;gap:10px;justify-content:flex-end}@media (min-width: 768px){.sidebar{display:flex}.bottom-nav{display:none}.app-main{padding-bottom:0}.topbar-email{display:block}.dashboard-content{padding:0 24px 24px}.stat-grid{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.stat-grid{grid-template-columns:repeat(4,1fr)}.panel-grid:not(.panel-grid-single){grid-template-columns:1.6fr 1fr;align-items:start}}@media (min-width: 1280px){.dashboard-content{padding:0 32px 32px;max-width:1400px}.topbar{padding-left:32px;padding-right:32px}}
