Files
anotherreflections-website-v2/src/styles/global.css
striker fce2278129 feat: плавающая боковая панель + бейдж «в разработке» для Глубины/Над бездны
- Социальные кнопки и «Наверх» теперь — плавающая вертикальная панель
  в правом нижнем углу, всегда видна; «Наверх» появляется после первого
  скролла (200px+) с плавной анимацией
- Карточки миров получили поле wip; Глубина и Над бездной помечены
  pill-бейджем «в разработке» рядом с названием
2026-05-21 01:46:39 +03:00

624 lines
15 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* Иные Отражения — тёмная атмосфера, мистический акцент, читаемая типографика */
:root {
--bg: #07090f;
--bg-elev: #11141d;
--bg-elev-2: #181c28;
--border: #232838;
--border-strong: #2f3548;
--fg: #cdd3df;
--fg-muted: #8a93a8;
--fg-dim: #5d6577;
--accent: #b794ff;
--accent-deep: #6c4ed4;
--accent-glow: rgba(154, 123, 255, 0.32);
--link: #8db4ff;
--link-hover: #b9d2ff;
--c-news: #7aa2ff;
--c-tech: #6ecbb6;
--c-ads: #d9a36a;
--c-friends: #f08fbf;
--c-roleplay: #b794ff;
--c-bezdna: #ff7676;
--c-glubina: #6dd0ea;
--c-sumerki: #a397ff;
--c-amber: #f0c674;
--c-kindret: #d36464;
--c-fanart: #ffadc7;
--c-lukyanenko: #8a7cff;
--font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-serif: 'Cormorant Garamond', 'Lora', 'PT Serif', Georgia, serif;
--font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
--container: 780px;
--container-wide: 1120px;
}
*, *::before, *::after { box-sizing: border-box; }
html {
background: var(--bg);
color: var(--fg);
font-family: var(--font-sans);
font-size: 17px;
line-height: 1.7;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
}
body {
margin: 0;
min-height: 100vh;
display: flex;
flex-direction: column;
position: relative;
overflow-x: hidden;
}
/* Декоративный фон: звёздная россыпь + тонкие радиальные лучи акцента */
body::before {
content: '';
position: fixed;
inset: 0;
z-index: -2;
background:
radial-gradient(ellipse 80% 50% at 50% -10%, rgba(108, 78, 212, 0.18), transparent 60%),
radial-gradient(ellipse 60% 40% at 90% 20%, rgba(125, 175, 255, 0.08), transparent 60%);
pointer-events: none;
}
body::after {
content: '';
position: fixed;
inset: 0;
z-index: -1;
background-image:
radial-gradient(1px 1px at 20% 30%, rgba(255,255,255,0.4) 50%, transparent 100%),
radial-gradient(1px 1px at 80% 70%, rgba(255,255,255,0.3) 50%, transparent 100%),
radial-gradient(1px 1px at 40% 80%, rgba(255,255,255,0.5) 50%, transparent 100%),
radial-gradient(1px 1px at 65% 15%, rgba(255,255,255,0.35) 50%, transparent 100%),
radial-gradient(1px 1px at 10% 60%, rgba(255,255,255,0.25) 50%, transparent 100%),
radial-gradient(2px 2px at 90% 90%, rgba(183,148,255,0.5) 50%, transparent 100%),
radial-gradient(1.5px 1.5px at 30% 50%, rgba(141,180,255,0.4) 50%, transparent 100%);
background-size: 800px 800px, 600px 600px, 1000px 1000px, 700px 700px, 900px 900px, 1200px 1200px, 850px 850px;
background-position: 0 0;
opacity: 0.7;
pointer-events: none;
}
main {
flex: 1 0 auto;
width: 100%;
max-width: var(--container);
margin: 0 auto;
padding: 2.5rem 1.25rem 5rem;
}
h1, h2, h3, h4 {
font-family: var(--font-serif);
font-weight: 600;
color: #ebe3ff;
line-height: 1.2;
letter-spacing: -0.01em;
margin: 2em 0 0.6em;
}
h1:first-child, h2:first-child { margin-top: 0; }
h1 { font-size: 2.6rem; }
h2 { font-size: 1.85rem; }
h3 { font-size: 1.35rem; }
p, ul, ol, blockquote { margin: 0 0 1.15em; }
a {
color: var(--link);
text-decoration: none;
border-bottom: 1px solid transparent;
transition: color .15s ease, border-color .15s ease;
}
a:hover { color: var(--link-hover); border-bottom-color: var(--link-hover); }
blockquote {
margin: 1.4em 0;
padding: .6em 1.2em;
border-left: 3px solid var(--accent);
color: var(--fg-muted);
background: linear-gradient(90deg, var(--bg-elev) 0%, transparent 100%);
font-style: italic;
font-family: var(--font-serif);
font-size: 1.05em;
}
img { max-width: 100%; height: auto; border-radius: 4px; }
hr {
border: 0;
height: 1px;
background: linear-gradient(90deg, transparent, var(--border-strong), transparent);
margin: 2.5em 0;
}
code, pre { font-family: var(--font-mono); font-size: .92em; }
code {
background: var(--bg-elev);
padding: .15em .4em;
border-radius: 3px;
border: 1px solid var(--border);
}
pre {
background: var(--bg-elev);
border: 1px solid var(--border);
padding: 1em;
border-radius: 6px;
overflow-x: auto;
}
/* ============================== HEADER ============================== */
.site-header {
border-bottom: 1px solid var(--border);
background: rgba(7, 9, 15, 0.85);
backdrop-filter: blur(8px);
position: sticky;
top: 0;
z-index: 50;
}
.site-header-inner {
max-width: var(--container-wide);
margin: 0 auto;
padding: 1rem 1.25rem;
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
flex-wrap: wrap;
}
.site-brand {
display: flex;
align-items: center;
gap: .7rem;
}
.brand-mark {
width: 32px;
height: 32px;
flex-shrink: 0;
}
.site-title {
font-family: var(--font-serif);
font-size: 1.4rem;
font-weight: 700;
letter-spacing: 0.01em;
margin: 0;
line-height: 1;
}
.site-title a {
color: #ebe3ff;
border-bottom: none;
background-image: linear-gradient(90deg, #ebe3ff, var(--accent));
-webkit-background-clip: text;
background-clip: text;
}
.site-nav {
display: flex;
gap: 1.75rem;
list-style: none;
margin: 0;
padding: 0;
}
.site-nav a {
color: var(--fg-muted);
border-bottom: none;
font-size: .92rem;
font-weight: 500;
letter-spacing: 0.02em;
text-transform: uppercase;
transition: color .2s;
}
.site-nav a:hover { color: var(--accent); }
/* ============================== HERO ============================== */
.hero {
text-align: center;
padding: 4.5rem 1rem 3rem;
margin: 0 0 3rem;
position: relative;
}
.hero-eyebrow {
display: inline-block;
font-size: .8rem;
letter-spacing: 0.35em;
text-transform: uppercase;
color: var(--accent);
margin-bottom: 1.2rem;
padding: .4em 1.2em;
border: 1px solid var(--border-strong);
border-radius: 100px;
background: rgba(108, 78, 212, 0.08);
}
.hero h1 {
font-family: var(--font-serif);
font-size: clamp(2.6rem, 6vw, 4.2rem);
margin: 0 0 .5rem;
font-weight: 500;
letter-spacing: -0.02em;
background: linear-gradient(180deg, #ffffff 0%, #b794ff 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 1.05;
}
.hero-tagline {
font-family: var(--font-serif);
font-size: 1.25rem;
color: var(--fg-muted);
font-style: italic;
margin: 0 0 2rem;
max-width: 540px;
margin-left: auto;
margin-right: auto;
}
.hero-meta {
display: inline-flex;
gap: 2rem;
font-size: .85rem;
color: var(--fg-dim);
letter-spacing: 0.1em;
text-transform: uppercase;
}
.hero-meta strong {
display: block;
font-family: var(--font-serif);
font-style: normal;
font-size: 1.3rem;
color: var(--fg);
text-transform: none;
letter-spacing: normal;
margin-bottom: .15rem;
}
/* ============================== SECTION TITLES ============================== */
.section-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 1rem;
margin: 0 0 1.5rem;
padding-bottom: .6rem;
border-bottom: 1px solid var(--border);
}
.section-head h2 {
font-family: var(--font-serif);
font-size: 1.7rem;
font-weight: 500;
margin: 0;
letter-spacing: -0.005em;
}
.section-head .section-meta {
font-size: .8rem;
color: var(--fg-dim);
letter-spacing: 0.15em;
text-transform: uppercase;
}
.section-head .section-meta a { color: var(--fg-muted); border-bottom: none; }
.section-head .section-meta a:hover { color: var(--accent); }
/* ============================== POST LIST (cards) ============================== */
.post-list {
list-style: none;
padding: 0;
margin: 0;
display: flex;
flex-direction: column;
gap: 1rem;
}
.post-card {
position: relative;
background: var(--bg-elev);
border: 1px solid var(--border);
border-radius: 8px;
padding: 1.35rem 1.5rem 1.4rem;
transition: border-color .25s, background .25s, transform .25s;
}
.post-card::before {
content: '';
position: absolute;
left: 0;
top: 1.35rem;
bottom: 1.4rem;
width: 3px;
background: var(--cat-color, var(--accent-deep));
border-radius: 0 4px 4px 0;
opacity: 0.7;
transition: opacity .25s;
}
.post-card:hover {
border-color: var(--border-strong);
background: var(--bg-elev-2);
transform: translateY(-1px);
}
.post-card:hover::before { opacity: 1; }
.post-card h3 {
font-family: var(--font-serif);
margin: 0 0 .35rem;
font-size: 1.4rem;
font-weight: 600;
letter-spacing: -0.005em;
line-height: 1.3;
}
.post-card h3 a { color: #ebe3ff; border-bottom: none; }
.post-card h3 a:hover { color: var(--accent); }
.post-card .post-meta {
font-size: .78rem;
color: var(--fg-dim);
margin-bottom: .55em;
display: flex;
align-items: center;
gap: .8rem;
flex-wrap: wrap;
}
.post-card .post-excerpt {
color: var(--fg-muted);
margin: 0;
font-size: .96rem;
line-height: 1.6;
}
/* Цветной тэг категории */
.cat-tag {
display: inline-flex;
align-items: center;
gap: .4em;
font-size: .73rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--cat-color, var(--accent));
border-bottom: none !important;
font-weight: 600;
}
.cat-tag::before {
content: '';
width: 6px;
height: 6px;
border-radius: 50%;
background: currentColor;
box-shadow: 0 0 6px currentColor;
}
.cat-tag:hover { color: var(--cat-color, var(--accent)); filter: brightness(1.2); }
/* ============================== SINGLE POST ============================== */
.post header {
margin-bottom: 2.5em;
padding-bottom: 1.5em;
border-bottom: 1px solid var(--border);
text-align: center;
}
.post header h1 {
margin: .3em 0 .5em;
font-size: clamp(1.9rem, 4vw, 2.8rem);
font-weight: 600;
background: linear-gradient(180deg, #ffffff 0%, #cdb8ff 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
.post header .post-meta {
justify-content: center;
font-size: .85rem;
color: var(--fg-dim);
display: flex;
gap: .8rem;
flex-wrap: wrap;
}
.post-body {
font-size: 1.05rem;
}
.post-body p:first-of-type::first-letter {
font-family: var(--font-serif);
font-size: 3.2em;
float: left;
line-height: .9;
padding-right: .1em;
padding-top: .05em;
color: var(--accent);
}
.post-body a {
border-bottom-color: var(--border-strong);
}
/* ============================== WORLDS GRID (форумы) ============================== */
.worlds-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
gap: 1rem;
list-style: none;
padding: 0;
margin: 1em 0;
}
.world-card {
position: relative;
display: block;
padding: 1.4rem 1.5rem;
background: var(--bg-elev);
border: 1px solid var(--border);
border-radius: 8px;
color: var(--fg);
border-bottom: 1px solid var(--border);
overflow: hidden;
transition: border-color .25s, transform .25s, background .25s;
}
.world-card::before {
content: '';
position: absolute;
left: 0;
right: 0;
top: 0;
height: 3px;
background: var(--cat-color, var(--accent));
opacity: 0.85;
}
.world-card::after {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(circle at top right, var(--cat-color, transparent), transparent 70%);
opacity: 0.06;
pointer-events: none;
transition: opacity .25s;
}
.world-card:hover {
border-color: var(--cat-color, var(--accent));
transform: translateY(-2px);
background: var(--bg-elev-2);
}
.world-card:hover::after { opacity: 0.14; }
.world-card .world-name {
display: block;
font-family: var(--font-serif);
font-size: 1.25rem;
font-weight: 600;
color: #ebe3ff;
margin-bottom: .3em;
}
.world-card .world-desc {
display: block;
font-size: .85rem;
color: var(--fg-muted);
line-height: 1.45;
}
.world-card .world-tag {
display: inline-block;
font-size: .68rem;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--cat-color, var(--accent));
margin-bottom: .5em;
font-weight: 600;
}
/* ============================== PAGINATION ============================== */
.pagination {
display: flex;
justify-content: space-between;
margin: 3em 0 1em;
gap: 1rem;
}
.pagination a {
padding: .65em 1.4em;
border: 1px solid var(--border);
border-radius: 4px;
background: var(--bg-elev);
font-size: .9rem;
color: var(--fg-muted);
border-bottom: 1px solid var(--border);
letter-spacing: 0.05em;
text-transform: uppercase;
}
.pagination a:hover {
border-color: var(--accent);
color: var(--accent);
background: var(--bg-elev-2);
}
/* ============================== SOCIAL RAIL ============================== */
.social-rail {
position: fixed;
right: 1.2rem;
bottom: 1.5rem;
display: flex;
flex-direction: column;
gap: .55rem;
z-index: 40;
}
.rail-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 42px;
height: 42px;
background: rgba(17, 20, 29, 0.85);
backdrop-filter: blur(6px);
border: 1px solid var(--border);
border-radius: 50%;
color: var(--fg-muted);
cursor: pointer;
font-family: inherit;
transition: border-color .2s, color .2s, background .2s, transform .2s, opacity .25s;
border-bottom: 1px solid var(--border);
padding: 0;
}
.rail-btn:hover {
border-color: var(--accent);
color: var(--accent);
background: var(--bg-elev-2);
transform: translateY(-2px);
border-bottom-color: var(--accent);
}
.rail-btn-top {
opacity: 0;
pointer-events: none;
transform: translateY(8px);
}
.rail-btn-top.visible {
opacity: 1;
pointer-events: auto;
transform: translateY(0);
}
@media (max-width: 640px) {
.social-rail {
right: .75rem;
bottom: .75rem;
}
.rail-btn {
width: 40px;
height: 40px;
}
}
/* WIP-бейдж рядом с названием мира */
.world-wip {
display: inline-block;
margin-left: .6em;
vertical-align: middle;
font-family: var(--font-sans);
font-size: .58em;
font-weight: 600;
letter-spacing: 0.18em;
text-transform: uppercase;
color: var(--fg-dim);
background: rgba(255, 255, 255, 0.04);
border: 1px solid var(--border);
border-radius: 100px;
padding: .25em .65em;
line-height: 1;
}
/* ============================== FOOTER ============================== */
.site-footer {
border-top: 1px solid var(--border);
padding: 2.5rem 1.25rem 3rem;
color: var(--fg-dim);
font-size: .85rem;
text-align: center;
margin-top: 4rem;
}
.site-footer p { margin: 0 0 .3em; }
.site-footer a { color: var(--fg-muted); border-bottom-color: var(--border); }
.site-footer a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.footer-ornament {
display: block;
width: 60px;
height: 1px;
background: linear-gradient(90deg, transparent, var(--accent), transparent);
margin: 0 auto 1.5rem;
}
/* ============================== RESPONSIVE ============================== */
@media (max-width: 640px) {
html { font-size: 16px; }
.hero { padding: 3rem 1rem 2rem; }
.hero-meta { flex-direction: column; gap: 1rem; }
.site-nav { gap: 1rem; font-size: .85rem; }
.post-card { padding: 1.1rem 1.2rem; }
}