Files
portfoliowai/assets/css/modules/_responsive.css
T

243 lines
4.4 KiB
CSS

/* =====================================================
RESPONSIVE — TABLET (≤ 900px)
===================================================== */
@media (max-width: 900px) {
.hero {
gap: 40px;
}
.hero-img-container {
width: 220px;
height: 220px;
}
.about-content {
grid-template-columns: 1fr;
gap: 40px;
}
.stats-row {
grid-template-columns: repeat(3, 1fr);
}
}
/* =====================================================
RESPONSIVE — MOBILE (≤ 768px)
===================================================== */
@media (max-width: 768px) {
/* Hamburger visible */
.hamburger {
display: flex;
}
/* Nav desktop links hidden by default on mobile */
.nav-links {
position: fixed;
top: 0;
right: -280px; /* slide from right */
left: auto;
width: 280px;
height: 100vh;
flex-direction: column;
align-items: flex-start;
justify-content: flex-start;
text-align: left;
padding: 80px 28px 40px;
gap: 4px;
background: var(--glass-bg);
backdrop-filter: blur(28px);
-webkit-backdrop-filter: blur(28px);
border-left: 1px solid var(--border);
transition: right 0.35s var(--ease);
z-index: 1001;
box-shadow: -4px 0 40px rgba(0, 0, 0, 0.3);
pointer-events: none; /* prevent clicks when off-screen */
}
/* Slide in from right */
.nav-links.active {
right: 0;
pointer-events: auto; /* re-enable clicks when open */
}
.nav-links a {
font-size: 1.1rem;
font-weight: 600;
display: block;
padding: 12px 16px;
width: 100%;
border-radius: 12px;
}
/* Nav close button */
.nav-close-btn {
display: flex;
position: absolute;
top: 22px;
right: 20px;
background: var(--card-bg);
border: 1px solid var(--border);
color: var(--text-main);
width: 36px;
height: 36px;
border-radius: 9px;
align-items: center;
justify-content: center;
font-size: 1.1rem;
cursor: pointer;
transition: background 0.2s, border-color 0.2s, transform 0.2s;
z-index: 1002;
}
.nav-close-btn:hover {
background: rgba(37, 99, 235, 0.1);
border-color: var(--border-hover);
transform: rotate(90deg);
}
/* Nav overlay backdrop */
.nav-overlay {
display: block;
position: fixed;
inset: 0;
background: rgba(0, 0, 0, 0.45);
z-index: 1000;
opacity: 0;
pointer-events: none;
transition: opacity 0.35s var(--ease);
}
.nav-overlay.active {
opacity: 1;
pointer-events: auto;
}
/* Theme toggle — inside the slide panel on mobile */
.mode-btn-panel {
display: flex;
margin-top: 24px;
margin-left: 0;
align-self: flex-start;
}
/* Hide the nav-bar toggle on mobile (it's now inside the panel) */
.mode-btn-nav {
display: none;
}
/* Hero */
.hero {
flex-direction: column-reverse;
text-align: center;
gap: 30px;
}
.hero-btns {
justify-content: center;
flex-wrap: wrap;
}
.subtitle {
margin: 0 auto 24px;
}
.hero-badge {
margin: 0 auto 16px;
}
.hero-img-container {
width: 180px;
height: 180px;
}
/* Stats */
.stats-row {
grid-template-columns: repeat(3, 1fr);
gap: 8px;
}
.stat-number {
font-size: 1.6rem;
}
.stat-label {
font-size: 0.7rem;
}
/* Certs */
.cert-card {
flex-direction: column;
text-align: center;
}
/* Project grid single column on very narrow */
.project-grid,
.blog-grid {
grid-template-columns: 1fr;
}
/* Back to top smaller — centered */
#back-to-top {
bottom: 16px;
left: 50%;
right: auto;
width: 42px;
height: 42px;
}
/* Section divider */
.section-divider {
margin: 0 4%;
}
}
/* =====================================================
RESPONSIVE — SMALL MOBILE (≤ 480px)
===================================================== */
@media (max-width: 480px) {
h1 {
letter-spacing: -1px;
}
.stats-row {
grid-template-columns: repeat(3, 1fr);
}
.cert-grid {
grid-template-columns: 1fr;
}
.btn {
padding: 11px 18px;
font-size: 0.9rem;
}
.hero-img-container {
width: 150px;
height: 150px;
}
.social-links {
gap: 10px;
}
.social-btn {
width: 44px;
height: 44px;
}
/* Chatbot */
#portfolio-chatbot-widget {
bottom: 16px;
right: 16px;
}
#chatbot-window {
width: calc(100vw - 32px);
right: 16px;
bottom: 80px;
height: 60vh;
}
}