mirror of
https://github.com/EDeev/deev.space.git
synced 2026-06-16 03:21:10 +03:00
v. 1.5
This commit is contained in:
parent
34ee8ee686
commit
a452e193c8
5 changed files with 579 additions and 226 deletions
|
|
@ -1,72 +1,107 @@
|
||||||
/**
|
/**
|
||||||
* Responsive Media Queries - All Adaptive Styles
|
* Responsive Media Queries - Mobile-First Adaptive Styles
|
||||||
|
* Полная переработка адаптивной верстки
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Container adjustments */
|
/* ========================================
|
||||||
@media (max-width: 768px) {
|
BREAKPOINT: < 1160px
|
||||||
.container {
|
======================================== */
|
||||||
padding: 0 var(--space-md);
|
@media (max-width: 1160px) {
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Navigation - Tablets & Mobile */
|
/* Контейнер */
|
||||||
@media (max-width: 992px) {
|
.container {
|
||||||
|
padding: 0 var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Header Navigation - Hide menu, show toggle button */
|
||||||
.nav-toggle {
|
.nav-toggle {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1001;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-menu {
|
.nav-menu {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
width: 100%;
|
||||||
bottom: 0;
|
height: 100vh;
|
||||||
background: var(--bg-dark);
|
background: rgba(13, 13, 13, 0.98);
|
||||||
|
backdrop-filter: blur(20px);
|
||||||
|
-webkit-backdrop-filter: blur(20px);
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
gap: 0;
|
||||||
padding: var(--space-2xl);
|
padding: var(--space-2xl);
|
||||||
gap: var(--space-sm);
|
opacity: 0;
|
||||||
transform: translateX(100%);
|
visibility: hidden;
|
||||||
transition: var(--transition);
|
transform: scale(0.95);
|
||||||
z-index: var(--z-modal);
|
transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
transform 0.4s cubic-bezier(0.4, 0, 0.2, 1),
|
||||||
|
visibility 0.4s;
|
||||||
|
z-index: 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-menu.active {
|
.nav-menu.active {
|
||||||
transform: translateX(0);
|
opacity: 1;
|
||||||
|
visibility: visible;
|
||||||
|
transform: scale(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-menu li {
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateY(20px);
|
||||||
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
||||||
|
margin: var(--space-sm) 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu.active li {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-menu.active li:nth-child(1) { transition-delay: 0.1s; }
|
||||||
|
.nav-menu.active li:nth-child(2) { transition-delay: 0.15s; }
|
||||||
|
.nav-menu.active li:nth-child(3) { transition-delay: 0.2s; }
|
||||||
|
.nav-menu.active li:nth-child(4) { transition-delay: 0.25s; }
|
||||||
|
.nav-menu.active li:nth-child(5) { transition-delay: 0.3s; }
|
||||||
|
.nav-menu.active li:nth-child(6) { transition-delay: 0.35s; }
|
||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
width: 100%;
|
font-size: 1.5rem;
|
||||||
padding: var(--space-md);
|
padding: var(--space-lg) var(--space-xl);
|
||||||
font-size: 1.1rem;
|
width: auto;
|
||||||
|
min-width: 280px;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
border-radius: var(--radius-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link i {
|
||||||
|
font-size: 1.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-auth {
|
.nav-auth {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: var(--space-2xl);
|
/* bottom: var(--space-2xl); */
|
||||||
left: 50%;
|
left: 50%;
|
||||||
transform: translateX(-50%);
|
transform: translateX(-50%);
|
||||||
z-index: var(--z-modal);
|
z-index: 1001;
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
pointer-events: none;
|
visibility: hidden;
|
||||||
transition: var(--transition);
|
transition: opacity 0.3s ease 0.4s, visibility 0.3s;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-menu.active ~ .nav-auth,
|
.nav-menu.active ~ .nav-auth {
|
||||||
body.nav-open .nav-auth {
|
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
pointer-events: auto;
|
visibility: visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
.nav-user-name,
|
body.nav-open {
|
||||||
.btn-text {
|
overflow: hidden;
|
||||||
display: none;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Bento Grid - Large Screens */
|
/* Главная страница - Bento Grid */
|
||||||
@media (max-width: 1200px) {
|
|
||||||
.bento-profile {
|
.bento-profile {
|
||||||
grid-column: span 12;
|
grid-column: span 12;
|
||||||
}
|
}
|
||||||
|
|
@ -74,29 +109,52 @@
|
||||||
.bento-quick {
|
.bento-quick {
|
||||||
grid-column: span 12;
|
grid-column: span 12;
|
||||||
flex-direction: row;
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bento-socials {
|
.quick-card {
|
||||||
grid-column: span 6;
|
flex: 1 1 calc(50% - var(--space-lg) / 2);
|
||||||
|
min-width: 200px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Технологический стек - исправление выравнивания */
|
||||||
.bento-skills,
|
.bento-skills,
|
||||||
.skills-full {
|
.skills-full {
|
||||||
grid-column: span 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-card.featured {
|
|
||||||
grid-column: span 12;
|
grid-column: span 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
.project-card.regular {
|
.skills-categories {
|
||||||
grid-column: span 6;
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||||||
|
justify-items: stretch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skill-category {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Карточки проектов - приведение к единому размеру */
|
||||||
|
/*.project-card.featured,
|
||||||
|
.project-card.regular,
|
||||||
.project-card.small {
|
.project-card.small {
|
||||||
grid-column: span 4;
|
grid-column: span 6;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
.project-card.featured {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.project-card.featured .project-image {
|
||||||
|
height: 240px;
|
||||||
|
min-height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Достижения - переход на 2 колонки */
|
||||||
|
.achievements-grid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* About страница */
|
||||||
.about-bio {
|
.about-bio {
|
||||||
grid-column: span 12;
|
grid-column: span 12;
|
||||||
}
|
}
|
||||||
|
|
@ -113,83 +171,162 @@
|
||||||
grid-column: span 6;
|
grid-column: span 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-grid {
|
/* Blog */
|
||||||
grid-template-columns: repeat(2, 1fr);
|
.blog-grid {
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Contacts */
|
||||||
|
.contact-bento {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
/* Tablets */
|
BREAKPOINT: < 992px
|
||||||
|
======================================== */
|
||||||
@media (max-width: 992px) {
|
@media (max-width: 992px) {
|
||||||
.bento-profile {
|
|
||||||
flex-direction: column;
|
/* Ensure menu functionality */
|
||||||
text-align: center;
|
.nav-menu {
|
||||||
padding: var(--space-xl);
|
background: rgba(13, 13, 13, 0.99);
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-photo img {
|
.nav-link {
|
||||||
width: 160px;
|
font-size: 1.4rem;
|
||||||
height: 160px;
|
min-width: 260px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Главная - центрирование "Backend Developer" */
|
||||||
|
.profile-info {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-title {
|
||||||
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.profile-buttons {
|
.profile-buttons {
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bento-quick {
|
/* Quick Cards */
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.quick-card {
|
.quick-card {
|
||||||
flex: 1 1 calc(33.333% - var(--space-lg));
|
flex: 1 1 calc(50% - var(--space-lg) / 2);
|
||||||
min-width: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bento-socials,
|
|
||||||
.bento-skills,
|
|
||||||
.skills-full {
|
|
||||||
grid-column: span 12;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-card.featured {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.project-card.featured .project-image {
|
|
||||||
min-height: 200px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Карточки проектов */
|
||||||
|
/*.project-card.featured,
|
||||||
|
.project-card.regular,
|
||||||
.project-card.small {
|
.project-card.small {
|
||||||
grid-column: span 6;
|
grid-column: span 6;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* Skills Full */
|
||||||
|
.skills-full-grid {
|
||||||
|
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
||||||
}
|
}
|
||||||
|
|
||||||
.contact-bento {
|
/* About страница */
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.about-bento > .bento-card {
|
.about-bento > .bento-card {
|
||||||
grid-column: span 12 !important;
|
grid-column: span 12 !important;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Mobile */
|
.stats-grid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Filters */
|
||||||
|
.filters-wrapper {
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
gap: var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-group {
|
||||||
|
width: 100%;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-buttons {
|
||||||
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
.filter-select {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
769}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
BREAKPOINT: < 768px
|
||||||
|
======================================== */
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
|
|
||||||
|
/* Общие отступы */
|
||||||
:root {
|
:root {
|
||||||
--container-padding: 1rem;
|
--container-padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
padding: 0 var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Navigation adjustments */
|
||||||
|
.nav-link {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
min-width: 240px;
|
||||||
|
padding: var(--space-md) var(--space-lg);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-user-name,
|
||||||
|
.btn-text {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Hero и Page Headers */
|
||||||
.bento-hero {
|
.bento-hero {
|
||||||
padding-top: 80px;
|
padding-top: 90px;
|
||||||
|
min-height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.page-header {
|
.page-header {
|
||||||
padding-top: calc(80px + var(--space-xl));
|
padding-top: calc(90px + var(--space-xl));
|
||||||
|
padding-bottom: var(--space-xl);
|
||||||
}
|
}
|
||||||
|
|
||||||
.article-full {
|
.article-full {
|
||||||
padding-top: 80px;
|
padding-top: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Профиль на главной */
|
||||||
|
.bento-profile {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
padding: var(--space-xl);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*.profile-photo img {
|
||||||
|
width: 150px;
|
||||||
|
height: 150px;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
.profile-info {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-buttons {
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.profile-buttons .btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Карточки проектов - одна колонка */
|
||||||
|
.project-card.featured,
|
||||||
.project-card.regular,
|
.project-card.regular,
|
||||||
.project-card.small {
|
.project-card.small {
|
||||||
grid-column: span 12;
|
grid-column: span 12;
|
||||||
|
|
@ -199,68 +336,121 @@
|
||||||
grid-column: span 12;
|
grid-column: span 12;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blog-grid {
|
/* GitHub CTA секция */
|
||||||
grid-template-columns: 1fr;
|
.github-cta-card {
|
||||||
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
gap: var(--space-lg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Достижения - новая компоновка */
|
||||||
.achievements-grid {
|
.achievements-grid {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
.achievement-card {
|
.achievement-card {
|
||||||
flex-direction: column;
|
display: grid;
|
||||||
text-align: center;
|
grid-template-columns: auto 1fr;
|
||||||
|
grid-template-rows: auto auto;
|
||||||
|
gap: var(--space-md);
|
||||||
|
align-items: start;
|
||||||
|
text-align: left;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.achievement-icon {
|
||||||
|
grid-column: 1;
|
||||||
|
grid-row: 1;
|
||||||
|
width: 56px;
|
||||||
|
height: 56px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.achievement-content {
|
||||||
|
grid-column: 2;
|
||||||
|
grid-row: 1 / 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.achievement-title {
|
||||||
|
margin-bottom: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Blog */
|
||||||
|
.blog-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-form {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.categories-list {
|
||||||
|
justify-content: flex-start;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Article Detail */
|
||||||
.article-meta-full {
|
.article-meta-full {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
gap: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.article-meta-items {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: var(--space-md);
|
||||||
}
|
}
|
||||||
|
|
||||||
.article-footer-full {
|
.article-footer-full {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
gap: var(--space-lg);
|
||||||
}
|
}
|
||||||
|
|
||||||
.footer-grid {
|
.article-reactions,
|
||||||
grid-template-columns: 1fr;
|
.article-share {
|
||||||
text-align: center;
|
width: 100%;
|
||||||
}
|
|
||||||
|
|
||||||
.footer-brand p {
|
|
||||||
max-width: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-socials {
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-bottom {
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.filters-wrapper {
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
|
gap: var(--space-sm);
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-group {
|
.reactions-buttons,
|
||||||
|
.share-buttons {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-buttons {
|
/* Related Articles */
|
||||||
flex-wrap: wrap;
|
.related-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
.filter-select {
|
/* About страница */
|
||||||
width: 100%;
|
.about-bio-header {
|
||||||
}
|
|
||||||
|
|
||||||
.search-form {
|
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
|
text-align: center;
|
||||||
|
gap: var(--space-lg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.about-bio-actions {
|
||||||
|
flex-direction: column;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.about-bio-actions .btn {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stats-grid {
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Contacts */
|
||||||
|
.form-row {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CTA Section */
|
||||||
.cta-section {
|
.cta-section {
|
||||||
padding: var(--space-xl);
|
padding: var(--space-xl);
|
||||||
}
|
}
|
||||||
|
|
@ -274,12 +464,14 @@
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Messages */
|
||||||
.messages-container {
|
.messages-container {
|
||||||
right: var(--space-md);
|
right: var(--space-md);
|
||||||
left: var(--space-md);
|
left: var(--space-md);
|
||||||
max-width: none;
|
max-width: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Back to Top */
|
||||||
.back-to-top {
|
.back-to-top {
|
||||||
bottom: var(--space-md);
|
bottom: var(--space-md);
|
||||||
right: var(--space-md);
|
right: var(--space-md);
|
||||||
|
|
@ -287,88 +479,109 @@
|
||||||
height: 44px;
|
height: 44px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.github-cta-card {
|
/* Footer */
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-minimal-content {
|
.footer-minimal-content {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
gap: var(--space-md);
|
gap: var(--space-md);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/* Small Mobile */
|
/* Pagination */
|
||||||
@media (max-width: 576px) {
|
.pagination {
|
||||||
.quick-card {
|
|
||||||
flex: 1 1 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.socials-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stats-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.skills-categories {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-buttons {
|
|
||||||
flex-direction: column;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.profile-buttons .btn {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.about-bio-header {
|
|
||||||
flex-direction: column;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.about-bio-actions {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
|
|
||||||
.about-bio-actions .btn {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.share-buttons {
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.related-grid {
|
|
||||||
grid-template-columns: 1fr;
|
|
||||||
}
|
|
||||||
|
|
||||||
.pagination-numbers {
|
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.error-code {
|
/* Gallery */
|
||||||
font-size: 5rem;
|
.carousel-container {
|
||||||
|
min-height: 300px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-icon-link {
|
.carousel-slide img {
|
||||||
font-size: 1.5rem;
|
max-height: 300px;
|
||||||
padding: var(--space-xs);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.social-icons-inline {
|
.gallery-collage {
|
||||||
gap: var(--space-lg);
|
grid-template-columns: repeat(2, 1fr);
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-row {
|
/* Links */
|
||||||
|
.links-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
BREAKPOINT: < 576px
|
||||||
|
======================================== */
|
||||||
|
@media (max-width: 576px) {
|
||||||
|
|
||||||
|
/* Typography */
|
||||||
|
h1 { font-size: 2rem; }
|
||||||
|
h2 { font-size: 1.5rem; }
|
||||||
|
h3 { font-size: 1.25rem; }
|
||||||
|
|
||||||
|
/* Navigation */
|
||||||
|
.nav-link {
|
||||||
|
font-size: 1.1rem;
|
||||||
|
min-width: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Profile */
|
||||||
|
/*.profile-photo img {
|
||||||
|
width: 120px;
|
||||||
|
height: 120px;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* Quick Cards */
|
||||||
|
.quick-card {
|
||||||
|
flex: 1 1 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Skills */
|
||||||
|
.skills-categories {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.skills-full-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stats */
|
||||||
|
.stats-grid {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Social Links */
|
||||||
|
.social-icons-inline {
|
||||||
|
gap: var(--space-md);
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-icon-link {
|
||||||
|
font-size: 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Share Buttons */
|
||||||
|
.share-buttons {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Pagination */
|
||||||
|
.pagination-numbers {
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: center;
|
||||||
|
gap: var(--space-xs);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-num,
|
||||||
|
.pagination-btn {
|
||||||
|
min-width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Gallery */
|
||||||
.carousel-container {
|
.carousel-container {
|
||||||
min-height: 250px;
|
min-height: 250px;
|
||||||
}
|
}
|
||||||
|
|
@ -377,11 +590,141 @@
|
||||||
max-height: 250px;
|
max-height: 250px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.gallery-collage {
|
.carousel-btn {
|
||||||
grid-template-columns: repeat(2, 1fr);
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.links-grid {
|
.gallery-collage {
|
||||||
grid-template-columns: 1fr;
|
grid-template-columns: 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Error Pages */
|
||||||
|
.error-code {
|
||||||
|
font-size: 4rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
BREAKPOINT: < 400px
|
||||||
|
======================================== */
|
||||||
|
@media (max-width: 400px) {
|
||||||
|
|
||||||
|
/* Достижения - вертикальная компоновка */
|
||||||
|
.achievement-card {
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
grid-template-rows: auto auto auto;
|
||||||
|
text-align: center;
|
||||||
|
gap: var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.achievement-icon {
|
||||||
|
grid-column: 1;
|
||||||
|
grid-row: 1;
|
||||||
|
justify-self: center;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.achievement-content {
|
||||||
|
grid-column: 1;
|
||||||
|
grid-row: 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.achievement-title {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.achievement-subtitle,
|
||||||
|
.achievement-excerpt,
|
||||||
|
.achievement-date {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Typography */
|
||||||
|
h1 { font-size: 1.75rem; }
|
||||||
|
h2 { font-size: 1.35rem; }
|
||||||
|
|
||||||
|
/* Buttons */
|
||||||
|
.btn {
|
||||||
|
padding: 0.65rem 1.25rem;
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Navigation */
|
||||||
|
.nav-link {
|
||||||
|
font-size: 1rem;
|
||||||
|
min-width: 180px;
|
||||||
|
padding: var(--space-sm) var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Profile */
|
||||||
|
/*.profile-photo img {
|
||||||
|
width: 100px;
|
||||||
|
height: 100px;
|
||||||
|
}*/
|
||||||
|
|
||||||
|
/* CTA Section */
|
||||||
|
.cta-icon {
|
||||||
|
width: 60px;
|
||||||
|
height: 60px;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Carousel */
|
||||||
|
.carousel-container {
|
||||||
|
min-height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-slide img {
|
||||||
|
max-height: 200px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-btn {
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-prev {
|
||||||
|
left: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
.carousel-next {
|
||||||
|
right: var(--space-sm);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Article Body */
|
||||||
|
.article-body {
|
||||||
|
font-size: 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Messages */
|
||||||
|
.message {
|
||||||
|
padding: var(--space-sm) var(--space-md);
|
||||||
|
font-size: 0.85rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ========================================
|
||||||
|
LANDSCAPE ORIENTATION
|
||||||
|
======================================== */
|
||||||
|
@media (max-height: 600px) and (orientation: landscape) {
|
||||||
|
.nav-menu {
|
||||||
|
padding: var(--space-lg);
|
||||||
|
justify-content: flex-start;
|
||||||
|
overflow-y: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-link {
|
||||||
|
font-size: 1rem;
|
||||||
|
padding: var(--space-sm) var(--space-md);
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-auth {
|
||||||
|
position: relative;
|
||||||
|
transform: none;
|
||||||
|
bottom: auto;
|
||||||
|
left: auto;
|
||||||
|
margin-top: var(--space-lg);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -38,7 +38,12 @@
|
||||||
<i class="fas fa-lock"></i>
|
<i class="fas fa-lock"></i>
|
||||||
Пароль
|
Пароль
|
||||||
</label>
|
</label>
|
||||||
|
<div class="password-input-wrapper">
|
||||||
{{ form.password }}
|
{{ form.password }}
|
||||||
|
<button type="button" class="password-toggle" onclick="togglePasswordVisibility('id_password', this)" aria-label="Показать пароль">
|
||||||
|
<i class="far fa-eye"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
{% if form.password.errors %}
|
{% if form.password.errors %}
|
||||||
<span class="form-error">{{ form.password.errors.0 }}</span>
|
<span class="form-error">{{ form.password.errors.0 }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,12 @@
|
||||||
<i class="fas fa-lock"></i>
|
<i class="fas fa-lock"></i>
|
||||||
Пароль *
|
Пароль *
|
||||||
</label>
|
</label>
|
||||||
|
<div class="password-input-wrapper">
|
||||||
{{ form.password }}
|
{{ form.password }}
|
||||||
|
<button type="button" class="password-toggle" onclick="togglePasswordVisibility('id_password', this)" aria-label="Показать пароль">
|
||||||
|
<i class="far fa-eye"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
{% if form.password.errors %}
|
{% if form.password.errors %}
|
||||||
<span class="form-error">{{ form.password.errors.0 }}</span>
|
<span class="form-error">{{ form.password.errors.0 }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
@ -62,19 +67,49 @@
|
||||||
<i class="fas fa-lock"></i>
|
<i class="fas fa-lock"></i>
|
||||||
Подтвердите пароль *
|
Подтвердите пароль *
|
||||||
</label>
|
</label>
|
||||||
|
<div class="password-input-wrapper">
|
||||||
{{ form.password_confirm }}
|
{{ form.password_confirm }}
|
||||||
|
<button type="button" class="password-toggle" onclick="togglePasswordVisibility('id_password_confirm', this)" aria-label="Показать пароль">
|
||||||
|
<i class="far fa-eye"></i>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
{% if form.password_confirm.errors %}
|
{% if form.password_confirm.errors %}
|
||||||
<span class="form-error">{{ form.password_confirm.errors.0 }}</span>
|
<span class="form-error">{{ form.password_confirm.errors.0 }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="form-group captcha-group">
|
<div class="form-group captcha-group">
|
||||||
|
<div class="smart-captcha-wrapper" style="height: 100px;">
|
||||||
|
<div id="register-captcha-container"
|
||||||
|
class="smart-captcha"
|
||||||
|
data-sitekey="{{ smartcaptcha_client_key }}"
|
||||||
|
data-hl="ru"></div>
|
||||||
{{ form.captcha }}
|
{{ form.captcha }}
|
||||||
|
</div>
|
||||||
{% if form.captcha.errors %}
|
{% if form.captcha.errors %}
|
||||||
<span class="form-error">{{ form.captcha.errors.0 }}</span>
|
<span class="form-error">{{ form.captcha.errors.0 }}</span>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
document.addEventListener('DOMContentLoaded', function() {
|
||||||
|
function initRegisterCaptcha() {
|
||||||
|
if (window.smartCaptcha) {
|
||||||
|
window.smartCaptcha.render('register-captcha-container', {
|
||||||
|
sitekey: '{{ smartcaptcha_client_key }}',
|
||||||
|
hl: 'ru',
|
||||||
|
callback: function(token) {
|
||||||
|
document.getElementById('smart-captcha-token').value = token;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
setTimeout(initRegisterCaptcha, 100);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
initRegisterCaptcha();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
|
||||||
<button type="submit" class="btn btn-primary btn-lg btn-full">
|
<button type="submit" class="btn btn-primary btn-lg btn-full">
|
||||||
<i class="fas fa-user-plus"></i>
|
<i class="fas fa-user-plus"></i>
|
||||||
Зарегистрироваться
|
Зарегистрироваться
|
||||||
|
|
|
||||||
|
|
@ -30,11 +30,11 @@
|
||||||
<div class="search-input-wrapper">
|
<div class="search-input-wrapper">
|
||||||
<i class="fas fa-search"></i>
|
<i class="fas fa-search"></i>
|
||||||
<input type="text" name="q" value="{{ search_query }}" placeholder="Поиск статей..." class="search-input">
|
<input type="text" name="q" value="{{ search_query }}" placeholder="Поиск статей..." class="search-input">
|
||||||
{% if search_query %}
|
<!-- {% if search_query %}
|
||||||
<a href="{% url 'blog' %}" class="search-clear">
|
<a href="{% url 'blog' %}" class="search-clear">
|
||||||
<i class="fas fa-times"></i>
|
<i class="fas fa-times"></i>
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %} -->
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" class="btn btn-primary">Найти</button>
|
<button type="submit" class="btn btn-primary">Найти</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
@ -97,11 +97,13 @@
|
||||||
<a href="{{ article.get_absolute_url }}">{{ article.title }}</a>
|
<a href="{{ article.get_absolute_url }}">{{ article.title }}</a>
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
|
<!--
|
||||||
{% if article.sub_title %}
|
{% if article.sub_title %}
|
||||||
<p class="article-subtitle">{{ article.sub_title }}</p>
|
<p class="article-subtitle">{{ article.sub_title }}</p>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
-->
|
||||||
|
|
||||||
<p class="article-excerpt">{{ article.excerpt|truncatewords:25 }}</p>
|
<p class="article-excerpt">{{ article.excerpt|truncatewords:30 }}</p>
|
||||||
|
|
||||||
<div class="article-footer">
|
<div class="article-footer">
|
||||||
<div class="article-stats">
|
<div class="article-stats">
|
||||||
|
|
|
||||||
|
|
@ -112,38 +112,6 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Social Links Card -->
|
|
||||||
<!-- <div class="bento-card bento-socials" data-aos="fade-up" data-aos-delay="200">
|
|
||||||
<h3 class="bento-card-title">
|
|
||||||
<i class="fas fa-share-alt"></i>
|
|
||||||
Социальные сети
|
|
||||||
</h3>
|
|
||||||
<div class="socials-grid">
|
|
||||||
{% if site_settings.telegram_url %}
|
|
||||||
<a href="{{ site_settings.telegram_url }}" target="_blank" rel="noopener" class="social-link">
|
|
||||||
<i class="fab fa-telegram"></i>
|
|
||||||
<span>Telegram</span>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
{% if site_settings.github_url %}
|
|
||||||
<a href="{{ site_settings.github_url }}" target="_blank" rel="noopener" class="social-link">
|
|
||||||
<i class="fab fa-github"></i>
|
|
||||||
<span>GitHub</span>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
<a href="mailto:{{ site_settings.owner_email }}" class="social-link">
|
|
||||||
<i class="fas fa-envelope"></i>
|
|
||||||
<span>Email</span>
|
|
||||||
</a>
|
|
||||||
{% if site_settings.owner_phone %}
|
|
||||||
<a href="tel:{{ site_settings.owner_phone|cut:' '|cut:'('|cut:')'|cut:'-' }}" class="social-link">
|
|
||||||
<i class="fas fa-phone"></i>
|
|
||||||
<span>Телефон</span>
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
</div> -->
|
|
||||||
|
|
||||||
<!-- Skills Card -->
|
<!-- Skills Card -->
|
||||||
<div class="bento-card skills-full" data-aos="fade-up" data-aos-delay="200"> <!-- skills-full in class -->
|
<div class="bento-card skills-full" data-aos="fade-up" data-aos-delay="200"> <!-- skills-full in class -->
|
||||||
<div class="skills-header">
|
<div class="skills-header">
|
||||||
|
|
@ -200,7 +168,7 @@
|
||||||
|
|
||||||
<!-- GitHub CTA Card -->
|
<!-- GitHub CTA Card -->
|
||||||
{% if site_settings.github_url %}
|
{% if site_settings.github_url %}
|
||||||
<div class="project-card github-cta" data-aos="fade-up" data-aos-delay="500">
|
<div class="project-card github-cta regular" data-aos="fade-up" data-aos-delay="500">
|
||||||
<div class="github-cta-content">
|
<div class="github-cta-content">
|
||||||
<i class="fab fa-github"></i>
|
<i class="fab fa-github"></i>
|
||||||
<p>Ещё 12 проектов на GitHub</p>
|
<p>Ещё 12 проектов на GitHub</p>
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue