/* ------------------------------------------------- 1. Global settings & color palette ------------------------------------------------- */ :root { /* Dark theme - body & card backgrounds */ --bg-body: #2c3e50; /* main page background */ --bg-card: #34495e; /* card / panel background */ --bg-sidebar: #3d566e; /* sidebar background (slightly lighter) */ /* Accent / link color */ --clr-accent: #3498db; /* blue accent for links */ /* Text color */ --clr-text: #ecf0f1; /* light whiteish text */ /* Borders / accents */ --clr-border: #1f2b38; /* dark border color */ /* button colors*/ --clr-btn-bg: var(--bg-card); /* default button background */ --clr-btn-text: var(--clr-text); /* button text color */ --clr-btn-border: var(--clr-border); /* border color */ --clr-btn-accent: var(--clr-accent); /* hover/focus color */ --clr-btn-shadow: rgba(0,0,0,0.3); /* select colors */ --clr-select-bg: var(--bg-card); /* dropdown background */ --clr-select-text: var(--clr-text); /* option text colour */ --clr-select-border: var(--clr-border); --clr-select-accent: var(--clr-accent);/* focus / hover border */ --clr-select-shadow: rgba(0,0,0,.3); } * { box-sizing: border-box; } /* Body */ body { margin: 0; padding: 0; background: var(--bg-body); color: var(--clr-text); font-family: Arial, Helvetica, sans-serif; } /* Links */ a { color: var(--clr-accent); text-decoration: none; } a:hover { text-decoration: underline; } /* ------------------------------------------------- 2. Layout - wrapper, sidebar, main ------------------------------------------------- */ .wrapper { display: flex; } .sidebar { position: fixed; /* keep sidebar visible during scroll */ top: 0; /* stick to the top of the viewport */ left: 0; /* align to the left edge */ height: 100vh; /* full viewport height */ /* ---- size & spacing ------------------------------------------- */ width: 200px; /* same as before */ padding: 1rem; overflow-y: auto; /* allow sidebar content to scroll if needed */ /* ---- look ------------------------------------------------------- */ background: var(--bg-sidebar); /* optional: keep it above other content */ z-index: 1000; } .sidebar h3 { margin: 0 0 .4rem 0; font-size: 1.1rem; } .sidebar ul { list-style: none; padding: 0; margin: 0; } .sidebar ol { list-style: none; padding: 0; margin: 0; } .sidebar li { margin-bottom: .4rem; } .sidebar a { color: var(--clr-accent); } .sidebar a.active { font-weight: bold; } .main{ flex: 1; padding: 1rem; padding-left: 200px; /* space for the fixed sidebar */ /* optional: avoid accidental horizontal overflow */ overflow-x: hidden; } /* ------------------------------------------------- 3. Card component ------------------------------------------------- */ .card { max-width: 950px; margin: 20px auto 1rem auto; padding: 20px; background: var(--bg-card); border: 1px solid var(--clr-border); border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,.3); } /* ------------------------------------------------- 4. Tables ------------------------------------------------- */ table, th, td { border: 2px solid var(--clr-border); border-collapse: collapse; } th, td { padding: 10px; } /* Alternate row color for metrics table */ #host_metrics_table tbody tr td:nth-of-type(even) { background: #3e5c78; /* slight contrast */ } /* ------------------------------------------------- 5. Lists & headings ------------------------------------------------- */ h1, h2, h3, h4 { color: var(--clr-text); margin: 0 0 .4rem 0; } ul { list-style: none; padding: 0; } ol { list-style: none; padding: 0; } li { margin-bottom: 10px; color: var(--clr-text); } /* System & component lists */ .system-list, .info-list { list-style: none; padding: 0; margin: 0; } .system-list li, .info-list li { margin-bottom: 5px; color: var(--clr-text); } /* ------------------------------------------------- 6. Components grid ------------------------------------------------- */ .components { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem; } .component { padding: 10px; border: 1px solid var(--clr-border); border-radius: 4px; } .component h3 { margin: 0 0 5px; } /* ------------------------------------------------- 7. Panel toggles / modal ------------------------------------------------- */ .help-link { cursor: pointer; user-select: none; color: var(--clr-accent); text-align: right; } .help-link:hover { text-decoration: underline; } #helpText { display: none; } .componentDetail-link { cursor: pointer; user-select: none; color: var(--clr-accent); text-align: left; } .componentDetail-link:hover { text-decoration: underline; } #componentDetailText { display: none; } /* ------------------------------------------------- 8. Misc helpers ------------------------------------------------- */ /* Hide numeric markers in metric columns (if any) */ #host_metrics_column td { list-style: none; padding-left: 0; margin-left: 0; } .host-status { display: inline-block; width: 10px; height: 10px; border-radius: 50%; margin-left: 6px; margin-right: 8px; vertical-align: middle; background: #808080; /* default - unknown / no timestamp */ transition: background-color 1s linear; /* smooth fade */ } /* ------------------------------------------------- 9. Mobile adjustments ------------------------------------------------- */ @media (max-width: 768px) { /* 1. Make the whole page a column */ .wrapper { flex-direction: column; } /* 2. Hide the sidebar initially */ .sidebar { position: relative; /* take it out of the flow */ width: 100%; max-height: 0; /* collapsed */ overflow: hidden; transition: max-height 0.3s ease-out; background: var(--bg-sidebar); padding: 0; /* remove padding */ } .sidebar.show { max-height: 500px; /* enough for all items */ padding: 1rem; } /* 3. Move the toggle button into the header */ .mobile-toggle { display: block; font-size: 1.5rem; background: transparent; border: none; color: var(--clr-accent); padding: 0.5rem; margin-bottom: 0.5rem; } /* 4. Main content no left padding */ .main { padding-left: 0; padding-right: 1rem; } /* 5. Table scroll on small screens */ .card table { width: 100%; table-layout: fixed; } .card table thead, .card table tbody, .card table tr, .card table td, .card table th { display: block; } .card table tbody { overflow-x: auto; white-space: nowrap; } .card table td, .card table th { display: inline-block; vertical-align: top; width: 30%; } /* 6. Adjust the host status dot positioning */ .host-status { margin-left: 2px; margin-right: 12px; } } /* Optional: style the drawer indicator */ .sidebar.show::before { content: "✕ Close"; display: block; padding: 0.5rem 1rem; background: var(--bg-sidebar); color: var(--clr-accent); font-weight: bold; } /* for stacking storage clients */ .storage_client{ flex: 1; padding: 1rem; padding-left: 200px; /* space for the fixed sidebar */ overflow-x: hidden; display: flex; /* make it a flex container */ flex-direction: column; /* stack its children (cards) vertically */ align-items: center; /* center the cards horizontally */ } /* lets make buttons nice*/ /* 2. Base button style */ .btn { display: inline-block; padding: .55rem 1.25rem; font-size: .9rem; font-weight: 500; line-height: 1.4; color: var(--clr-btn-text); background: var(--clr-btn-bg); border: 1px solid var(--clr-btn-border); border-radius: .25rem; cursor: pointer; transition: background .15s ease, box-shadow .15s ease, transform .075s ease; text-align: center; user-select: none; vertical-align: middle; } /* 3. Primary button - accent color */ .btn-primary { background: var(--clr-btn-accent); border-color: var(--clr-btn-accent); color: #fff; /* brighter text for dark button */ } /* 4. Secondary button - subtle background */ .btn-secondary { background: transparent; border-color: var(--clr-btn-accent); color: var(--clr-btn-accent); } /* 5. Hover & focus states */ .btn:hover, .btn:focus-visible { background: #2b3f4c; /* a slightly darker shade of card bg */ box-shadow: 0 3px 8px var(--clr-btn-shadow); transform: translateY(-1px); outline: 0; } /* 6. Disabled state */ .btn:disabled, .btn[aria-disabled="true"] { opacity: .55; cursor: not-allowed; background: var(--bg-card); border-color: var(--clr-border); } /* 7. Extra - block‑level button */ .btn-block { display: block; width: 100%; text-align: center; } /* let's also make the style */ .select-dark { appearance: none; /* hide native arrow in Chrome/Edge/FF */ -webkit-appearance: none; -moz-appearance: none; display: inline-block; padding: .45rem 1.25rem .45rem .75rem; font-size: .9rem; line-height: 1.4; color: var(--clr-select-text); background: var(--clr-select-bg); border: 1px solid var(--clr-select-border); border-radius: .25rem; cursor: pointer; position: relative; min-width: 150px; /* optional - forces a decent width */ /* Custom arrow - positioned after the element */ background-image: linear-gradient(45deg, transparent 50%, var(--clr-select-accent) 50%), linear-gradient(135deg, var(--clr-select-accent) 50%, transparent 50%), linear-gradient(to right, var(--clr-select-border), var(--clr-select-border)); background-position: calc(100% - 20px) calc(50% + 2px), calc(100% - 15px) calc(50% + 2px), calc(100% - 3px) 50%; background-size: 5px 5px, 5px 5px, 1px 1.5rem; background-repeat: no-repeat; } /* Hover & focus - subtle accent border */ .select-dark:hover, .select-dark:focus-visible { border-color: var(--clr-select-accent); box-shadow: 0 0 3px var(--clr-select-shadow); outline: none; /* rely on the box-shadow for focus */ } /* Disabled state - greys out the control */ .select-dark:disabled, .select-dark[aria-disabled="true"] { opacity: .55; cursor: not-allowed; background: var(--bg-card); border-color: var(--clr-border); } /*