Загрузка данных
* {
box-sizing: border-box;
}
body {
margin: 0;
background: #080b0d;
color: #e8eee9;
font-family:
Inter,
Segoe UI,
Arial,
sans-serif;
}
button {
font: inherit;
}
.app {
display: flex;
min-height: 100vh;
}
/* SIDEBAR */
.sidebar {
width: 245px;
min-height: 100vh;
background: #0d1210;
border-right: 1px solid #202923;
padding: 26px 16px;
display: flex;
flex-direction: column;
}
.logo {
display: flex;
align-items: center;
gap: 12px;
padding: 0 10px 32px;
}
.logo-icon {
width: 42px;
height: 42px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
background: #16251b;
font-size: 22px;
}
.logo-title {
font-size: 17px;
font-weight: 800;
letter-spacing: 2px;
}
.logo-subtitle {
color: #6d8174;
font-size: 10px;
letter-spacing: 3px;
margin-top: 2px;
}
/* NAV */
nav {
display: flex;
flex-direction: column;
gap: 5px;
}
.nav-item {
border: 0;
background: transparent;
color: #819087;
padding: 12px 13px;
text-align: left;
border-radius: 10px;
cursor: pointer;
}
.nav-item:hover {
background: #131c17;
color: #dce9df;
}
.nav-item.active {
background: #16271b;
color: #b8e7c4;
}
.sidebar-footer {
margin-top: auto;
display: flex;
align-items: center;
gap: 8px;
color: #627066;
font-size: 11px;
padding: 12px;
}
/* STATUS */
.status-dot {
width: 7px;
height: 7px;
border-radius: 50%;
background: #58d982;
box-shadow: 0 0 12px #58d982;
}
/* MAIN */
.main {
width: 100%;
max-width: 1500px;
margin: 0 auto;
padding: 34px 40px;
}
/* HEADER */
.header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 28px;
}
.eyebrow {
color: #6b8173;
font-size: 11px;
letter-spacing: 2px;
font-weight: 700;
}
h1 {
margin: 7px 0 0;
font-size: 32px;
}
.system-status {
display: flex;
align-items: center;
gap: 9px;
color: #7f9385;
font-size: 11px;
letter-spacing: 1px;
}
/* HERO */
.hero {
min-height: 150px;
padding: 28px;
border-radius: 20px;
background:
linear-gradient(
135deg,
#14251a,
#101814
);
border: 1px solid #263a2b;
display: flex;
justify-content: space-between;
align-items: center;
}
.hero-label {
color: #71917b;
font-size: 11px;
letter-spacing: 2px;
}
.hero h2 {
margin: 8px 0 4px;
font-size: 30px;
}
.hero p {
margin: 0;
color: #809087;
}
.hero-number span {
font-size: 65px;
font-weight: 700;
}
.hero-number small {
font-size: 18px;
color: #82988a;
}
/* METRICS */
.metrics {
display: grid;
grid-template-columns:
repeat(4, 1fr);
gap: 14px;
margin-top: 15px;
}
.metric {
background: #101512;
border: 1px solid #202b24;
border-radius: 16px;
padding: 20px;
}
.metric-top {
display: flex;
gap: 8px;
color: #718078;
font-size: 11px;
letter-spacing: 1px;
}
.metric-value {
margin-top: 13px;
font-size: 32px;
font-weight: 700;
}
.metric-value small {
font-size: 14px;
color: #74837b;
}
.metric-status {
margin-top: 12px;
font-size: 10px;
letter-spacing: 1px;
}
.good {
color: #60d785;
}
/* CONTENT */
.content-grid {
display: grid;
grid-template-columns:
1.15fr 0.85fr;
gap: 15px;
margin-top: 15px;
}
.panel {
background: #101512;
border: 1px solid #202b24;
border-radius: 18px;
padding: 20px;
}
.panel-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 18px;
}
.panel-title {
font-size: 13px;
font-weight: 700;
letter-spacing: 1px;
}
.panel-subtitle {
color: #65736b;
font-size: 11px;
margin-top: 4px;
}
.live {
color: #ed7e7e;
font-size: 10px;
letter-spacing: 1px;
}
.ai-badge {
color: #a8d8ff;
border: 1px solid #31506b;
background: #10202c;
padding: 6px 9px;
border-radius: 8px;
font-size: 10px;
}
/* CAMERA */
.camera-placeholder {
min-height: 300px;
background: #080b0d;
border: 1px dashed #27332c;
border-radius: 13px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 10px;
color: #617068;
font-size: 12px;
}
.camera-icon {
font-size: 35px;
}
.camera-placeholder small {
color: #46534c;
}
/* AI */
.ai-content {
display: flex;
gap: 16px;
padding: 15px;
background: #0b100d;
border-radius: 12px;
}
.ai-icon {
font-size: 25px;
}
.ai-content h3 {
margin: 0 0 7px;
font-size: 14px;
}
.ai-content p {
margin: 0;
color: #829087;
font-size: 12px;
line-height: 1.6;
}
.confidence {
margin-top: 16px;
display: flex;
justify-content: space-between;
color: #5f7066;
font-size: 10px;
}
.confidence strong {
color: #6fdb91;
}
.forecast {
display: flex;
gap: 13px;
margin-top: 14px;
padding: 14px;
border-radius: 12px;
background: #142018;
color: #94a99a;
font-size: 12px;
line-height: 1.5;
}
.forecast-icon {
font-size: 22px;
}
.forecast-label {
color: #71927c;
font-size: 9px;
letter-spacing: 2px;
margin-bottom: 4px;
}
/* HISTORY */
.history-panel {
margin-top: 15px;
}
.chart-range {
color: #6e9c7c;
font-size: 10px;
padding: 6px 9px;
background: #122018;
border-radius: 7px;
}
.chart {
height: 220px;
background: #090d0b;
border-radius: 12px;
}
.chart-placeholder {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
gap: 10px;
color: #47564d;
font-size: 32px;
}
.chart-placeholder span {
font-size: 11px;
}
/* FOOTER */
footer {
padding: 28px 5px 5px;
color: #48564e;
font-size: 10px;
display: flex;
justify-content: space-between;
}
footer span {
color: #354139;
}
/* MOBILE */
@media (max-width: 900px) {
.sidebar {
display: none;
}
.main {
padding: 22px 16px;
}
.metrics {
grid-template-columns:
repeat(2, 1fr);
}
.content-grid {
grid-template-columns: 1fr;
}
}
@media (max-width: 500px) {
.metrics {
grid-template-columns: 1fr;
}
.header {
align-items: flex-start;
flex-direction: column;
gap: 15px;
}
}