/* ===================================================== 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; } }