253 lines
3.7 KiB
CSS
253 lines
3.7 KiB
CSS
:root {
|
|
--k: 1353651.53435435;
|
|
}
|
|
|
|
* {
|
|
margin: 0;
|
|
padding: 0;
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: Arial, sans-serif;
|
|
line-height: 1.6;
|
|
background-color: #f5f5f5;
|
|
color: #333;
|
|
}
|
|
|
|
.container {
|
|
max-width: 1200px;
|
|
margin: 2rem auto;
|
|
padding: 0 1rem;
|
|
}
|
|
|
|
h1 {
|
|
color: #2c3e50;
|
|
margin-bottom: 1rem;
|
|
text-align: center;
|
|
}
|
|
|
|
h2 {
|
|
color: #34495e;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.file-list summary {
|
|
padding: 0.5rem 1rem;
|
|
background-color: white;
|
|
border-radius: 4px;
|
|
color: #2c3e50;
|
|
transition: background-color 0.3s;
|
|
margin-bottom: 0.5em;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.file-list summary:hover {
|
|
background-color: #e0e0e0;
|
|
}
|
|
|
|
.file-list summary::marker {
|
|
content: "📁 ";
|
|
}
|
|
|
|
.file-list details[open] summary::marker {
|
|
content: "📂 ";
|
|
}
|
|
|
|
.file-list ul {
|
|
list-style: none;
|
|
}
|
|
|
|
.file-list li {
|
|
margin-left: 0.5rem;
|
|
}
|
|
|
|
.file-list a::before {
|
|
content: "📄 ";
|
|
}
|
|
|
|
.file-list a {
|
|
display: block;
|
|
padding: 0.5rem 1rem;
|
|
background-color: white;
|
|
border-radius: 4px;
|
|
text-decoration: none;
|
|
color: #2c3e50;
|
|
transition: background-color 0.3s;
|
|
margin-bottom: 0.5em;
|
|
}
|
|
|
|
.file-list a:hover {
|
|
background-color: #e0e0e0;
|
|
}
|
|
|
|
.link {
|
|
display: inline-block;
|
|
margin-bottom: 1rem;
|
|
color: #3498db;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.link:hover {
|
|
text-decoration: underline;
|
|
}
|
|
|
|
main {
|
|
display: flex;
|
|
flex-flow: wrap;
|
|
gap: 1rem;
|
|
margin-bottom: 2rem;
|
|
}
|
|
|
|
ul {
|
|
list-style: none;
|
|
}
|
|
|
|
details {
|
|
cursor: pointer;
|
|
}
|
|
|
|
main > table {
|
|
margin: auto;
|
|
}
|
|
|
|
td {
|
|
text-align: left;
|
|
}
|
|
|
|
.member {
|
|
display: flex;
|
|
border: 8px outset #476079;
|
|
border-radius: 6px;
|
|
background-color: #34495e;
|
|
margin-bottom: .5rem;
|
|
}
|
|
|
|
.member-id {
|
|
background: #777;
|
|
align-content: center;
|
|
color: lightgreen;
|
|
font-weight: bold;
|
|
border: 1px inset black;
|
|
font-family: monospace;
|
|
font-size: 1.3em;
|
|
margin: 1em 0.5em;
|
|
padding: 0.2em 0.4em;
|
|
}
|
|
|
|
.interfaces {
|
|
border-spacing: 0;
|
|
margin: 0;
|
|
background-color: white;
|
|
}
|
|
|
|
.interface {
|
|
position: relative;
|
|
text-align: center;
|
|
min-width: 2em;
|
|
height: 2em;
|
|
mix-blend-mode: darken;
|
|
print-color-adjust: exact;
|
|
cursor: help;
|
|
transition: 0.2s background-color;
|
|
background-image: url(rj45.svg);
|
|
background-size: cover;
|
|
padding-top: 0.2em;
|
|
}
|
|
|
|
.interface:hover {
|
|
background-color: #ddd;
|
|
}
|
|
|
|
.vlan {
|
|
--pvid: 0;
|
|
color: #ecf0f1;
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);
|
|
background-color: hsl(calc(var(--k) * var(--pvid)) 97% 65%);
|
|
}
|
|
|
|
.vlan:hover {
|
|
background-color: hsl(calc(var(--k) * var(--pvid)) 65% 75%);
|
|
}
|
|
|
|
.trunk:not(.shutdown) {
|
|
font-weight: bold;
|
|
border: 4px solid !important;
|
|
border-image-slice: 1 !important;
|
|
border-image-source: linear-gradient(
|
|
127deg,
|
|
red,
|
|
orange,
|
|
yellow,
|
|
green,
|
|
blue,
|
|
violet
|
|
) !important;
|
|
padding: 0;
|
|
}
|
|
|
|
.hybrid {
|
|
--tagged: 0;
|
|
--untagged: 0;
|
|
background-image: url(rj45.svg),
|
|
linear-gradient(
|
|
135deg,
|
|
hsl(calc(var(--k) * var(--tagged)) 97% 65%) 50%,
|
|
hsl(calc(var(--k) * var(--untagged)) 97% 65%) 50%
|
|
);
|
|
}
|
|
|
|
.hybrid:hover {
|
|
background-image: url(rj45.svg),
|
|
linear-gradient(
|
|
135deg,
|
|
hsl(calc(var(--k) * var(--tagged)) 65% 75%) 50%,
|
|
hsl(calc(var(--k) * var(--untagged)) 65% 75%) 50%
|
|
);
|
|
}
|
|
|
|
.shutdown:not([class*="loopback-detection action shutdown"]) {
|
|
background-color: lightgray;
|
|
color: gray !important;
|
|
}
|
|
|
|
.poe::before {
|
|
content: "⚡";
|
|
font-size: 0.65em;
|
|
position: absolute;
|
|
top: 0.2em;
|
|
right: 0.2em;
|
|
}
|
|
|
|
.voice_vlan::after {
|
|
content: "📞";
|
|
font-size: 0.65em;
|
|
position: absolute;
|
|
bottom: 0.2em;
|
|
left: 0.2em;
|
|
}
|
|
|
|
.legend {
|
|
border-spacing: 0;
|
|
}
|
|
|
|
.legend td {
|
|
border: 1px inset #2c3e50;
|
|
}
|
|
|
|
footer {
|
|
display: flex;
|
|
flex-flow: column;
|
|
align-items: center;
|
|
}
|
|
|
|
#colorSlider {
|
|
width: 33%;
|
|
}
|
|
|
|
@media print {
|
|
.no-print {
|
|
display: none;
|
|
}
|
|
}
|