92 lines
2.0 KiB
CSS
92 lines
2.0 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@400;600;700;900&family=VT323&display=swap');
|
|
@tailwind base;
|
|
@tailwind components;
|
|
@tailwind utilities;
|
|
|
|
:root {
|
|
--font-body: 'Noto Sans TC';
|
|
--font-matrix: 'VT323';
|
|
--warm-bg: #f6f0e1;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
margin: 0;
|
|
padding: 0;
|
|
min-height: 100%;
|
|
background:
|
|
radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.55), transparent 35%),
|
|
radial-gradient(circle at 80% 15%, rgba(209, 67, 45, 0.12), transparent 35%),
|
|
#f6f0e1;
|
|
color: #2a2018;
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
font-family: var(--font-body), Arial, sans-serif;
|
|
}
|
|
|
|
.dashboard-shell {
|
|
min-height: 100vh;
|
|
background: linear-gradient(140deg, rgba(255, 255, 255, 0.65), rgba(246, 240, 225, 0.85));
|
|
}
|
|
|
|
.panel-glow {
|
|
border: 1px solid rgba(255, 255, 255, 0.5);
|
|
background: linear-gradient(170deg, rgba(255, 248, 230, 0.86), rgba(246, 240, 225, 0.88));
|
|
box-shadow: 0 20px 45px rgba(95, 53, 44, 0.1);
|
|
}
|
|
|
|
.dot-matrix {
|
|
font-family: var(--font-matrix), monospace;
|
|
letter-spacing: 0.09em;
|
|
}
|
|
|
|
.status-led {
|
|
width: 0.6rem;
|
|
height: 0.6rem;
|
|
border-radius: 9999px;
|
|
display: inline-block;
|
|
}
|
|
|
|
.status-led-ok { background: #1a9a57; }
|
|
.status-led-warn { background: #dcb53b; }
|
|
.status-led-danger { background: #d1432d; }
|
|
|
|
@keyframes top-edge-glow {
|
|
0% {
|
|
box-shadow: 0 0 0 rgba(235, 90, 40, 0.0), 0 0 0 rgba(235, 90, 40, 0.0);
|
|
border-color: rgba(188, 68, 43, 0.7);
|
|
}
|
|
50% {
|
|
box-shadow: 0 0 18px rgba(235, 90, 40, 0.35), 0 0 36px rgba(235, 90, 40, 0.2);
|
|
border-color: rgba(235, 90, 40, 1);
|
|
}
|
|
100% {
|
|
box-shadow: 0 0 0 rgba(235, 90, 40, 0), 0 0 0 rgba(235, 90, 40, 0);
|
|
border-color: rgba(188, 68, 43, 0.9);
|
|
}
|
|
}
|
|
|
|
.prop-top-edge {
|
|
animation: top-edge-glow 1.8s ease-in-out infinite;
|
|
}
|
|
|
|
@keyframes dot-matrix-pulse {
|
|
0%, 100% {
|
|
opacity: 0.35;
|
|
transform: translateY(0);
|
|
}
|
|
50% {
|
|
opacity: 1;
|
|
transform: translateY(-2px);
|
|
}
|
|
}
|
|
|
|
.dot-matrix-loading {
|
|
animation: dot-matrix-pulse 1s steps(1) infinite;
|
|
}
|