Files

190 lines
4.3 KiB
CSS

:root {
--bg1: #0d1321;
--bg2: #1d2d50;
--accent: #1f3b98;
--panel: rgba(12, 18, 32, 0.55);
--panel-2: rgba(10, 12, 22, 0.72);
--text: #eef2ff;
--muted: rgba(238, 242, 255, 0.7);
--headline-font: clamp(18px, 2.4vw, 40px);
}
* { box-sizing: border-box; }
html, body { height: 100%; }
body {
margin: 0;
font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Arial, "Noto Sans", "Helvetica Neue", sans-serif;
color: var(--text);
overflow: hidden;
background: #070b14;
}
.stage {
position: relative;
height: 100vh;
width: 100vw;
display: grid;
grid-template-rows: auto 1fr auto;
}
.bg {
position: absolute;
inset: 0;
background:
/* Dark overlay for readability */
/*linear-gradient(180deg, rgba(0,0,0,0.55), rgba(0,0,0,0.55)),*/
/* Default/fallback background */
radial-gradient(1200px 600px at 70% 20%, rgba(100, 150, 255, 0.35), transparent 55%),
radial-gradient(900px 500px at 20% 70%, rgba(20, 255, 190, 0.16), transparent 55%),
linear-gradient(130deg, var(--bg1), var(--bg2));
background-position: center;
background-repeat: no-repeat;
background-size: cover;
transform: scale(1.02);
filter: saturate(1.2) contrast(1.05);
animation: bgFloat 18s ease-in-out infinite;
}
@keyframes bgFloat {
0%, 100% { transform: scale(1.03) translate3d(0, 0, 0); }
50% { transform: scale(1.06) translate3d(-1.2%, -0.8%, 0); }
}
.feed-header {
position: relative;
z-index: 2;
padding: clamp(16px, 3vw, 32px);
}
.brand {
display: inline-flex;
align-items: center;
gap: 14px;
background: rgba(255, 255, 255, 0.92);
color: #0b1020;
border-radius: 10px;
padding: 10px 14px;
box-shadow: 0 14px 40px rgba(0,0,0,0.35);
transform-origin: left center;
animation: popIn 600ms cubic-bezier(.2,.9,.2,1) both;
}
@keyframes popIn {
from { opacity: 0; transform: translateY(8px) scale(0.98); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
.brand__logo {
width: 48px;
height: 48px;
}
.brand__title {
font-weight: 700;
font-size: 22px;
letter-spacing: 0.2px;
}
.headline {
position: relative;
z-index: 2;
align-self: end;
margin: 0 clamp(12px, 3vw, 32px) clamp(56px, 8vh, 96px);
max-width: min(1100px, 94vw);
}
.headline__link {
display: block;
text-decoration: none;
color: var(--text);
background: linear-gradient(90deg, rgba(9, 14, 30, 0.0), rgba(12, 18, 40, 0.86) 12%, rgba(12, 18, 40, 0.86) 88%, rgba(9, 14, 30, 0.0));
border-left: 8px solid rgba(66, 120, 255, 0.85);
padding: clamp(14px, 2vw, 22px) clamp(14px, 2.6vw, 28px);
box-shadow: 0 18px 60px rgba(0,0,0,0.45);
backdrop-filter: blur(10px);
}
.headline__text {
display: block;
font-size: var(--headline-font);
line-height: 1.15;
letter-spacing: 0.2px;
text-wrap: balance;
}
.headline__progress {
height: 3px;
background: rgba(255,255,255,0.18);
margin-top: 10px;
border-radius: 999px;
overflow: hidden;
}
.headline__progressFill {
height: 100%;
width: 0%;
background: linear-gradient(90deg, rgba(90, 160, 255, 0.9), rgba(20, 255, 200, 0.75));
}
.meta {
position: relative;
z-index: 2;
display: flex;
justify-content: space-between;
align-items: end;
gap: 12px;
padding: 16px clamp(12px, 3vw, 32px);
}
.meta__time {
font-variant-numeric: tabular-nums;
background: rgba(12, 18, 40, 0.85);
padding: 8px 12px;
border-radius: 8px;
box-shadow: 0 12px 34px rgba(0,0,0,0.35);
border: 1px solid rgba(255,255,255,0.14);
display: inline-flex;
flex-direction: column;
gap: 2px;
}
.meta__hint {
color: var(--muted);
font-size: 12px;
user-select: none;
}
/* Slide animation states (toggled by JS) */
.slide-out {
animation: slideOut 360ms ease both;
}
.slide-in {
animation: slideIn 520ms cubic-bezier(.16,.9,.2,1) both;
}
@keyframes slideOut {
from { opacity: 1; transform: translateX(0); filter: blur(0); }
to { opacity: 0; transform: translateX(-16px); filter: blur(2px); }
}
@keyframes slideIn {
from { opacity: 0; transform: translateX(18px); filter: blur(3px); }
to { opacity: 1; transform: translateX(0); filter: blur(0); }
}
@media (max-width: 560px) {
.brand__title { font-size: 18px; }
.brand__logo { width: 40px; height: 40px; }
.meta__hint { display: none; }
.headline { margin-bottom: 64px; }
}
.meta__timePrimary {
font-size: 14px;
}
.meta__timeSecondary {
font-size: 12px;
color: var(--muted);
}