CSS
/* Neon Glass SaaS — dark glassmorphism with ambient orbs. The orbs are
contained inside .tm-nsa via position:absolute + the wrapper's own
overflow:hidden (NOT position:fixed like the original full-page mock).
Cards use backdrop-filter for the frosted-glass effect over the orb
bloom. Four neon accent palettes (cyan/purple/green/orange) cycle
per card via .c1–.c5 modifiers. Pulsing status dots use a gentle
blink animation that respects prefers-reduced-motion. */
.tm-nsa {
--tm-nsa-bg: #07070f;
--tm-nsa-card: rgba(255,255,255,0.04);
--tm-nsa-cbr: rgba(255,255,255,0.08);
--tm-nsa-ch: rgba(255,255,255,0.07);
--tm-nsa-cy: #00e5ff;
--tm-nsa-cp: #b44fff;
--tm-nsa-cg: #00ff9d;
--tm-nsa-co: #ff6b35;
--tm-nsa-text: #f0f0ff;
--tm-nsa-muted: #6b6b8a;
position: relative;
padding: clamp(28px, 4vw, 48px);
background: var(--tm-nsa-bg);
font-family: 'JetBrains Mono', ui-monospace, monospace;
color: var(--tm-nsa-text);
overflow: hidden;
min-height: 520px;
}
.tm-nsa-orb {
position: absolute;
border-radius: 50%;
pointer-events: none;
filter: blur(100px);
opacity: 0.18;
animation: tm-nsa-drift 12s ease-in-out infinite alternate;
}
.tm-nsa-o1 { width: 600px; height: 600px; background: var(--tm-nsa-cp); top: -200px; left: -200px; animation-delay: 0s; }
.tm-nsa-o2 { width: 500px; height: 500px; background: var(--tm-nsa-cy); bottom: -150px; right: -100px; animation-delay: -4s; }
.tm-nsa-o3 { width: 300px; height: 300px; background: var(--tm-nsa-cg); top: 50%; left: 50%; transform: translate(-50%, -50%); animation-delay: -8s; opacity: 0.08; animation-name: tm-nsa-drift2; }
@keyframes tm-nsa-drift {
from { transform: translate(0, 0) scale(1); }
to { transform: translate(30px, 20px) scale(1.1); }
}
@keyframes tm-nsa-drift2 {
from { transform: translate(-50%, -50%) scale(1); }
to { transform: translate(calc(-50% + 20px), calc(-50% + 15px)) scale(1.08); }
}
.tm-nsa-metrics {
position: relative;
z-index: 1;
display: flex;
gap: 1px;
background: var(--tm-nsa-cbr);
border-radius: 16px;
overflow: hidden;
margin-bottom: 18px;
border: 1px solid var(--tm-nsa-cbr);
}
.tm-nsa-metric {
flex: 1;
background: var(--tm-nsa-card);
backdrop-filter: blur(20px);
padding: 16px 20px;
text-align: center;
position: relative;
overflow: hidden;
}
.tm-nsa-metric::after {
content: '';
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 40%;
height: 2px;
border-radius: 2px 2px 0 0;
transition: width 0.3s;
}
.tm-nsa-metric:hover::after { width: 70%; }
.tm-nsa-metric:nth-child(1)::after { background: var(--tm-nsa-cy); }
.tm-nsa-metric:nth-child(2)::after { background: var(--tm-nsa-cp); }
.tm-nsa-metric:nth-child(3)::after { background: var(--tm-nsa-cg); }
.tm-nsa-metric:nth-child(4)::after { background: var(--tm-nsa-co); }
.tm-nsa-mnum {
font-family: 'Syne', system-ui, sans-serif;
font-size: 1.4rem;
font-weight: 800;
letter-spacing: -0.02em;
}
.tm-nsa-metric:nth-child(1) .tm-nsa-mnum { color: var(--tm-nsa-cy); }
.tm-nsa-metric:nth-child(2) .tm-nsa-mnum { color: var(--tm-nsa-cp); }
.tm-nsa-metric:nth-child(3) .tm-nsa-mnum { color: var(--tm-nsa-cg); }
.tm-nsa-metric:nth-child(4) .tm-nsa-mnum { color: var(--tm-nsa-co); }
.tm-nsa-mlbl {
font-size: 9px;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--tm-nsa-muted);
margin-top: 4px;
}
.tm-nsa-grid {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 14px;
margin-bottom: 14px;
}
.tm-nsa-grid2 {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 1fr 2fr;
gap: 14px;
}
.tm-nsa-card {
background: var(--tm-nsa-card);
border: 1px solid var(--tm-nsa-cbr);
border-radius: 16px;
padding: 24px 22px;
backdrop-filter: blur(20px);
position: relative;
overflow: hidden;
transition: all 0.35s ease;
animation: tm-nsa-su 0.7s cubic-bezier(.22, 1, .36, 1) both;
}
.tm-nsa-card:hover {
background: var(--tm-nsa-ch);
border-color: rgba(255,255,255,0.14);
transform: translateY(-3px);
box-shadow: 0 20px 60px rgba(0,0,0,0.4);
}
.tm-nsa-grid .tm-nsa-card:nth-child(1) { animation-delay: 0.05s; }
.tm-nsa-grid .tm-nsa-card:nth-child(2) { animation-delay: 0.12s; }
.tm-nsa-grid .tm-nsa-card:nth-child(3) { animation-delay: 0.19s; }
.tm-nsa-grid2 .tm-nsa-card:nth-child(1) { animation-delay: 0.26s; }
.tm-nsa-grid2 .tm-nsa-card:nth-child(2) { animation-delay: 0.33s; }
@keyframes tm-nsa-su {
from { opacity: 0; transform: translateY(22px); }
to { opacity: 1; transform: translateY(0); }
}
.tm-nsa-ca-line {
position: absolute;
top: 0; left: 0; right: 0;
height: 1px;
opacity: 0.7;
transition: opacity 0.35s, height 0.35s;
}
.tm-nsa-card:hover .tm-nsa-ca-line { opacity: 1; height: 2px; }
.tm-nsa-c1 .tm-nsa-ca-line { background: linear-gradient(to right, var(--tm-nsa-cy), transparent); }
.tm-nsa-c2 .tm-nsa-ca-line { background: linear-gradient(to right, var(--tm-nsa-cp), transparent); }
.tm-nsa-c3 .tm-nsa-ca-line { background: linear-gradient(to right, var(--tm-nsa-cg), transparent); }
.tm-nsa-c4 .tm-nsa-ca-line { background: linear-gradient(to right, var(--tm-nsa-co), transparent); }
.tm-nsa-c5 .tm-nsa-ca-line { background: linear-gradient(to right, var(--tm-nsa-cy), var(--tm-nsa-cp)); }
.tm-nsa-gdot {
position: absolute;
top: 18px;
right: 18px;
width: 7px;
height: 7px;
border-radius: 50%;
animation: tm-nsa-blink 3s ease-in-out infinite;
}
.tm-nsa-c1 .tm-nsa-gdot { background: var(--tm-nsa-cy); box-shadow: 0 0 8px var(--tm-nsa-cy); }
.tm-nsa-c2 .tm-nsa-gdot { background: var(--tm-nsa-cp); box-shadow: 0 0 8px var(--tm-nsa-cp); }
.tm-nsa-c3 .tm-nsa-gdot { background: var(--tm-nsa-cg); box-shadow: 0 0 8px var(--tm-nsa-cg); }
.tm-nsa-c4 .tm-nsa-gdot { background: var(--tm-nsa-co); box-shadow: 0 0 8px var(--tm-nsa-co); }
.tm-nsa-c5 .tm-nsa-gdot { background: var(--tm-nsa-cy); box-shadow: 0 0 8px var(--tm-nsa-cy); }
@keyframes tm-nsa-blink {
0%, 100% { opacity: 1; }
50% { opacity: 0.3; }
}
.tm-nsa-stars {
display: flex;
gap: 3px;
margin-bottom: 12px;
font-size: 11px;
letter-spacing: 1px;
}
.tm-nsa-c1 .tm-nsa-stars { color: var(--tm-nsa-cy); }
.tm-nsa-c2 .tm-nsa-stars { color: var(--tm-nsa-cp); }
.tm-nsa-c3 .tm-nsa-stars { color: var(--tm-nsa-cg); }
.tm-nsa-c4 .tm-nsa-stars { color: var(--tm-nsa-co); }
.tm-nsa-c5 .tm-nsa-stars { color: var(--tm-nsa-cy); }
.tm-nsa-q {
font-size: 0.86rem;
line-height: 1.65;
color: rgba(240,240,255,0.78);
margin: 0 0 18px;
font-weight: 300;
font-style: normal;
}
.tm-nsa-q strong { font-weight: 600; color: var(--tm-nsa-text); }
.tm-nsa-author {
display: flex;
align-items: center;
gap: 9px;
padding-top: 14px;
border-top: 1px solid rgba(255,255,255,0.05);
}
.tm-nsa-av {
width: 32px;
height: 32px;
border-radius: 9px;
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
font-weight: 500;
flex-shrink: 0;
}
.tm-nsa-c1 .tm-nsa-av { background: rgba(0,229,255,0.12); color: var(--tm-nsa-cy); border: 1px solid rgba(0,229,255,0.2); }
.tm-nsa-c2 .tm-nsa-av { background: rgba(180,79,255,0.12); color: var(--tm-nsa-cp); border: 1px solid rgba(180,79,255,0.2); }
.tm-nsa-c3 .tm-nsa-av { background: rgba(0,255,157,0.12); color: var(--tm-nsa-cg); border: 1px solid rgba(0,255,157,0.2); }
.tm-nsa-c4 .tm-nsa-av { background: rgba(255,107,53,0.12); color: var(--tm-nsa-co); border: 1px solid rgba(255,107,53,0.2); }
.tm-nsa-c5 .tm-nsa-av { background: rgba(0,229,255,0.12); color: var(--tm-nsa-cy); border: 1px solid rgba(0,229,255,0.2); }
.tm-nsa-an {
font-size: 12px;
font-weight: 600;
font-style: normal;
color: var(--tm-nsa-text);
line-height: 1.3;
display: block;
}
.tm-nsa-ar {
font-size: 9px;
color: var(--tm-nsa-muted);
letter-spacing: 0.05em;
margin-top: 2px;
}
.tm-nsa-ctag {
font-size: 9px;
letter-spacing: 0.08em;
padding: 3px 7px;
border-radius: 4px;
margin-bottom: 10px;
display: inline-block;
}
.tm-nsa-c1 .tm-nsa-ctag { background: rgba(0,229,255,0.1); color: var(--tm-nsa-cy); }
.tm-nsa-c2 .tm-nsa-ctag { background: rgba(180,79,255,0.1); color: var(--tm-nsa-cp); }
.tm-nsa-c3 .tm-nsa-ctag { background: rgba(0,255,157,0.1); color: var(--tm-nsa-cg); }
.tm-nsa-c4 .tm-nsa-ctag { background: rgba(255,107,53,0.1); color: var(--tm-nsa-co); }
.tm-nsa-c5 .tm-nsa-ctag { background: rgba(0,229,255,0.1); color: var(--tm-nsa-cy); }
.tm-nsa-wide .tm-nsa-q { font-size: 1rem; }
@media (max-width: 820px) {
.tm-nsa-grid { grid-template-columns: 1fr; }
.tm-nsa-grid2 { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
.tm-nsa-orb, .tm-nsa-gdot, .tm-nsa-card { animation: none; }
.tm-nsa-card:hover { transform: none; }
}