diff --git a/revati-kadam-portfolio/css/style.css b/revati-kadam-portfolio/css/style.css index 2b76e2b..25d70bb 100644 --- a/revati-kadam-portfolio/css/style.css +++ b/revati-kadam-portfolio/css/style.css @@ -1,395 +1,342 @@ -/* ================= CSS VARIABLES ================= */ :root { --bg: #0f172a; - --text: #e2e8f0; + --text: #fff; --primary: #3b82f6; --card: #1e293b; - --section-alt: #0d1b2e; - --border: rgba(255,255,255,0.08); - --shadow: rgba(0,0,0,0.4); - --text-muted-1: rgba(226,232,240,0.7); - --text-muted-2: rgba(226,232,240,0.6); - --text-muted-3: rgba(226,232,240,0.55); - --text-muted-4: rgba(226,232,240,0.45); + --sidebar: #020617; } -*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } -html { scroll-behavior: smooth; } - +/* ================= GLOBAL ================= */ body { + margin: 0; font-family: 'Segoe UI', sans-serif; - background: var(--bg); + background: linear-gradient(135deg, var(--bg), #020617); color: var(--text); - line-height: 1.7; - overflow-x: hidden; + scroll-behavior: smooth; } -/* ── SCROLL PROGRESS ── */ -#scroll-progress { +/* ================= SIDEBAR ================= */ +.sidebar { + width: 250px; + height: 100vh; + background: rgba(15, 23, 42, 0.7); + backdrop-filter: blur(10px); + padding: 20px; position: fixed; - top: 0; left: 0; - height: 3px; - width: 0%; - background: var(--primary); - z-index: 9999; - transition: width 0.1s linear; - border-radius: 0 2px 2px 0; + border-right: 1px solid rgba(255,255,255,0.1); } -/* ── NAVBAR ── */ -.navbar { - position: fixed; - top: 0; left: 0; - width: 100%; - height: 64px; - background: rgba(10, 17, 32, 0.9); - backdrop-filter: blur(14px); - border-bottom: 1px solid var(--border); - display: flex; - justify-content: space-between; - align-items: center; - padding: 0 40px; - z-index: 1000; -} - -.logo { - font-size: 20px; - font-weight: 700; +.sidebar h2 { color: var(--primary); } -.hamburger { - font-size: 26px; +.sidebar li { + list-style: none; + padding: 10px; cursor: pointer; - color: var(--text); - display: none; - transition: color 0.2s; + border-radius: 8px; + transition: 0.3s; } -.hamburger:hover { color: var(--primary); } -.nav-links { - list-style: none; - display: flex; - flex-direction: row; - gap: 4px; - padding: 0; - margin: 0; +.sidebar li:hover { + background: var(--primary); + color: white; + transform: translateX(5px); } -.nav-links li { - cursor: pointer; - color: var(--text); - font-size: 15px; - padding: 7px 16px; - border-radius: 8px; - transition: background 0.2s, color 0.2s; - white-space: nowrap; +/* ================= SOCIAL ================= */ +.social { + position: absolute; + bottom: 60px; } -.nav-links li a { + +.social a { + display: flex; + align-items: center; + gap: 10px; color: var(--text); text-decoration: none; - display: block; - width: 100%; - height: 100%; -} -.nav-links li:hover, -.nav-links li:hover a { - background: var(--primary); - color: #fff; + margin: 5px 0; } -/* ── SECTION BASE ── */ -.section { - padding: 100px 80px; - opacity: 0; - transform: translateY(30px); - transition: opacity 0.6s ease, transform 0.6s ease; +.social img { + width: 20px; } -.section.section-visible { - opacity: 1; - transform: translateY(0); +/* ================= MAIN ================= */ +.main { + + padding: 100px 60px 40px; } -.section:nth-child(even) { background: var(--section-alt); } - +/* ================= HEADINGS ================= */ .section h2 { - font-size: clamp(26px, 3vw, 36px); - font-weight: 700; - color: var(--text); - margin-bottom: 48px; + font-size: 28px; position: relative; - display: inline-block; + margin-bottom: 20px; } .section h2::after { content: ""; - position: absolute; - bottom: -8px; left: 0; - width: 50px; height: 3px; + width: 60px; + height: 3px; background: var(--primary); - border-radius: 2px; + position: absolute; + bottom: -5px; + left: 0; } -/* ── HERO ── */ -#home { - min-height: 100vh; - display: flex; - align-items: center; - padding: 100px 80px 60px; - background: linear-gradient(135deg, var(--bg) 0%, var(--section-alt) 60%, var(--bg) 100%); - position: relative; - overflow: hidden; +h2, #typing, a { + color: var(--primary); } -#home::before { - content: ""; - position: absolute; - inset: 0; - background-image: - linear-gradient(var(--border) 1px, transparent 1px), - linear-gradient(90deg, var(--border) 1px, transparent 1px); - background-size: 60px 60px; - opacity: 0.4; - pointer-events: none; +/* ================= SKILLS ================= */ +#skills-container { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); + gap: 20px; + margin-top: 20px; } -.hero-content { +.skill-card { + width: 120px; + height: 120px; + background: rgba(30, 41, 59, 0.7); + backdrop-filter: blur(10px); + border-radius: 15px; display: flex; + flex-direction: column; align-items: center; - justify-content: space-between; - gap: 48px; - width: 100%; - position: relative; - z-index: 1; + justify-content: center; + transition: 0.3s; + cursor: pointer; + border: 1px solid rgba(255,255,255,0.1); } -.hero-text { flex: 1; } - -.hello-tag { - color: var(--primary); - font-size: 13px; - font-weight: 600; - letter-spacing: 3px; - text-transform: uppercase; - margin-bottom: 16px; +.skill-card img { + width: 40px; + height: 40px; + margin-bottom: 10px; } -.hero-text h1 { - font-size: clamp(36px, 5vw, 60px); - font-weight: 800; +.skill-card p { + font-size: 14px; + margin: 0; color: var(--text); - line-height: 1.1; - margin-bottom: 16px; } -.hero-text h2 { - font-size: clamp(20px, 2.5vw, 28px); - font-weight: 400; - color: var(--text); - margin-bottom: 20px; +.skill-card:hover { + transform: translateY(-5px) scale(1.05); + box-shadow: 0 10px 25px rgba(0,0,0,0.4); + background: var(--primary); } -/* remove underline bar on hero h2 */ -.hero-text h2::after { display: none; } - -#typing { - color: var(--primary); - font-weight: 600; - border-right: 2px solid var(--primary); - padding-right: 4px; - animation: blink 0.75s step-end infinite; +.skill-card:hover p { + color: white; } -@keyframes blink { 50% { border-color: transparent; } } - -.hero-desc { - font-size: 15px; - color: var(--text-muted-3); - max-width: 420px; - line-height: 1.8; - margin-bottom: 32px; +/* ================= PROJECTS ================= */ +#projects-container div { + background: rgba(30, 41, 59, 0.7); + backdrop-filter: blur(10px); + padding: 15px; + margin: 15px 0; + border-radius: 12px; + transition: 0.3s; + border: 1px solid rgba(255,255,255,0.1); } -.hero-btns { - display: flex; - gap: 14px; - flex-wrap: wrap; - margin-bottom: 32px; +#projects-container div:hover { + transform: translateY(-5px); + box-shadow: 0 10px 30px rgba(0,0,0,0.5); } -.btn-primary { - background: var(--primary); - color: #fff; - padding: 12px 28px; +/* ================= CONTACT FORM ================= */ +form input, form textarea { + width: 100%; + padding: 12px; + margin: 10px 0; border-radius: 8px; - text-decoration: none; - font-weight: 600; - font-size: 15px; - transition: 0.3s; - box-shadow: 0 4px 15px rgba(59,130,246,0.35); + border: none; + outline: none; + background: rgba(30, 41, 59, 0.7); + color: var(--text); } -.btn-primary:hover { - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(59,130,246,0.5); +form input:focus, form textarea:focus { + border: 1px solid var(--primary); } -.btn-outline { - background: transparent; - color: var(--primary); - border: 1.5px solid var(--primary); - padding: 11px 28px; +form button { + width: 100%; + padding: 12px; + background: var(--primary); + border: none; border-radius: 8px; - text-decoration: none; - font-weight: 600; - font-size: 15px; + color: white; transition: 0.3s; } -.btn-outline:hover { - background: var(--primary); - color: #fff; - transform: translateY(-2px); -} - -.hero-social { - display: flex; - gap: 14px; +form button:hover { + transform: scale(1.03); } -.hero-social a { - width: 42px; height: 42px; - border-radius: 50%; - border: 1px solid var(--border); +/* ================= SETTINGS BUTTON ================= */ +.settings { + position: fixed; + bottom: 25px; + right: 25px; + cursor: pointer; + font-size: 28px; background: var(--card); + padding: 12px; + border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: 0.3s; + z-index: 2000; /* important */ } -.hero-social a:hover { +.settings:hover { + transform: scale(1.1); background: var(--primary); - border-color: var(--primary); - transform: translateY(-3px); } -.hero-social img { - width: 20px; height: 20px; - filter: brightness(10); +/* Settings dropdown */ +.menu { + display: none; + position: absolute; + bottom: 60px; + right: 0; + background: rgba(30, 41, 59, 0.95); + backdrop-filter: blur(10px); + padding: 15px; + border-radius: 12px; + width: 180px; + z-index: 9999; /* makes color options visible */ } -.hero-image { flex-shrink: 0; } - -.hero-img-circle { - width: 220px; height: 220px; - border-radius: 50%; - background: linear-gradient(135deg, #1e3a5f, #2563eb); - border: 4px solid rgba(59,130,246,0.5); +.menu.show { + display: block; +} +/* ================= COLOR OPTIONS ================= */ +.color-options { display: flex; - align-items: center; - justify-content: center; - font-size: 52px; - font-weight: 700; - color: #fff; - letter-spacing: 2px; - box-shadow: 0 0 60px rgba(59,130,246,0.25), 0 0 0 8px rgba(59,130,246,0.08); - overflow: hidden; + gap: 10px; + flex-wrap: wrap; + margin-top: 10px; } -.hero-img-circle img { - width: 100%; - height: 100%; - object-fit: cover; +.color-options span { + width: 22px; + height: 22px; border-radius: 50%; - display: block; + cursor: pointer; + display: inline-block; } -/* ── ABOUT ── */ -.about-grid { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 60px; - align-items: start; +/* ================= HEART SPARK ================= */ +.spark { + position: absolute; + width: 6px; + height: 6px; + background: var(--primary); + transform: rotate(45deg); + pointer-events: none; + opacity: 0.9; } -.about-left p { - font-size: 15px; - color: var(--text-muted-1); - line-height: 1.9; - margin-bottom: 24px; - max-width: 520px; +.spark::before, +.spark::after { + content: ""; + position: absolute; + width: 6px; + height: 6px; + background: var(--primary); + border-radius: 50%; } -.about-tags { - display: flex; - flex-wrap: wrap; - gap: 10px; - margin-bottom: 28px; +.spark::before { + top: -3px; + left: 0; } -.about-tag { - background: rgba(59,130,246,0.12); - color: var(--primary); - font-size: 13px; - padding: 6px 14px; - border-radius: 20px; - border: 1px solid rgba(59,130,246,0.25); +.spark::after { + left: -3px; + top: 0; } +/* ================= RESUME BUTTON ================= */ .resume-btn { - display: inline-flex; - align-items: center; - gap: 8px; - padding: 12px 28px; + display: inline-block; + margin-top: 20px; + padding: 12px 18px; background: var(--primary); - color: #fff; + color: white; text-decoration: none; border-radius: 8px; - font-weight: 600; - font-size: 15px; transition: 0.3s; - box-shadow: 0 4px 15px rgba(59,130,246,0.35); } .resume-btn:hover { - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(59,130,246,0.5); + transform: scale(1.05); + opacity: 0.9; } -.about-right { - display: grid; - grid-template-columns: 1fr 1fr; - gap: 16px; +/* ================= ANIMATION ================= */ +.section { + animation: fadeIn 1s ease; } -.stat-card { - background: var(--card); - border: 1px solid var(--border); - border-radius: 14px; - padding: 24px 16px; - text-align: center; - transition: 0.3s; +@keyframes fadeIn { + from { + opacity: 0; + transform: translateY(20px); + } + to { + opacity: 1; + transform: translateY(0); + } } -.stat-card:hover { - border-color: var(--primary); - transform: translateY(-4px); -} +/* ================= MOBILE ================= */ +@media (max-width: 768px) { -.stat-num { - font-size: 32px; - font-weight: 700; - color: var(--primary); -} + body { + flex-direction: column; + } -.stat-lbl { - font-size: 13px; - color: var(--text-muted-4); - margin-top: 6px; -} + .sidebar { + width: 100%; + height: auto; + position: relative; + display: flex; + flex-direction: column; + align-items: center; + } + + .sidebar ul { + display: flex; + flex-wrap: wrap; + justify-content: center; + padding: 0; + } + + .sidebar li { + margin: 5px 10px; + } + + .social { + position: relative; + bottom: 0; + margin-top: 10px; + } + .main { + margin-left: 0; + padding: 20px; + } /* ── SKILLS REDESIGN ── */ .skills-header { @@ -782,474 +729,219 @@ body { 0 10px 30px rgba(59,130,246,0.35); } -/* ── PROJECTS ── */ -#projects-container { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); - gap: 28px; -} + .section { + padding: 30px 0; + } -.project-card { - background: var(--card); - border: 1px solid var(--border); - border-radius: 16px; - overflow: hidden; - display: flex; - flex-direction: column; - transition: transform 0.3s, box-shadow 0.3s; -} + h1 { + font-size: 26px; + } -.project-card:hover { - transform: translateY(-6px); - box-shadow: 0 16px 40px var(--shadow); - border-color: rgba(59,130,246,0.3); -} + h2 { + font-size: 20px; + } -.project-thumb { - width: 100%; - height: 180px; - background: var(--section-alt); - overflow: hidden; - border-bottom: 1px solid var(--border); -} + #skills-container { + grid-template-columns: repeat(2, 1fr); + justify-items: center; + } -.project-thumb img { - width: 100%; - height: 100%; - object-fit: cover; - display: block; -} + .skill-card { + width: 100px; + height: 100px; + } -.project-info { - padding: 18px; - display: flex; - flex-direction: column; - flex: 1; -} + .skill-card img { + width: 30px; + height: 30px; + } -.project-info h3 { - font-size: 17px; - font-weight: 600; - color: var(--text); - margin-bottom: 8px; -} + #projects-container img { + width: 100%; + } -.project-info p { - font-size: 13px; - color: var(--text-muted-3); - line-height: 1.7; - margin-bottom: 14px; - flex: 1; -} + form input, + form textarea { + width: 100%; + } -.tech-tags { - display: flex; - flex-wrap: wrap; - gap: 8px; - margin-bottom: 16px; + .settings { + bottom: 15px; + right: 15px; + } } -.tech-tag { - background: rgba(59,130,246,0.12); - color: var(--primary); - font-size: 12px; - padding: 4px 10px; - border-radius: 20px; - border: 1px solid rgba(59,130,246,0.2); -} +/* ================= NAVBAR ================= */ +.navbar { + width: 100%; + height: 80px; -.project-links { display: flex; - gap: 10px; -} - -.project-links a { - padding: 8px 18px; - border-radius: 6px; - font-size: 13px; - font-weight: 600; - text-decoration: none; - transition: 0.2s; -} - -.project-links a:first-child { - background: var(--primary); - color: #fff; -} + align-items: center; + justify-content: space-between; -.project-links a:last-child { - background: transparent; - border: 1px solid var(--border); - color: var(--text); -} + padding: 0 90px; -.project-links a:hover { - opacity: 0.85; - transform: translateY(-1px); -} + position: fixed; + top: 0; + left: 0; -/* ── CONTACT ── */ -#contact { - background: linear-gradient(135deg, var(--bg), var(--section-alt)); -} + z-index: 1000; -.contact-grid { - display: grid; - grid-template-columns: 1fr 1.5fr; - gap: 60px; - align-items: start; + background: rgba(15, 23, 42, 0.95); + backdrop-filter: blur(10px); } -.contact-info p { - font-size: 15px; - color: var(--text-muted-2); - line-height: 1.8; - margin-bottom: 28px; +.logo { + font-size: 1.5rem; + font-weight: 700; + color: white; } -.contact-links { +/* Desktop Navbar */ +.nav-links { display: flex; - flex-direction: column; + align-items: center; gap: 12px; -} - -.contact-links a { - color: var(--primary); - text-decoration: none; - font-size: 15px; - font-weight: 500; - transition: 0.2s; -} - -.contact-links a:hover { opacity: 0.75; } - -#contact-form { - display: flex; - flex-direction: column; - gap: 14px; -} - -form input, -form textarea { - width: 100%; - padding: 14px 16px; - border-radius: 10px; - border: 1px solid var(--border); - outline: none; - background: var(--card); - color: var(--text); - font-size: 15px; - font-family: inherit; - transition: border 0.2s; -} -form textarea { - min-height: 140px; - resize: vertical; -} + list-style: none; -form input:focus, -form textarea:focus { - border-color: var(--primary); - box-shadow: 0 0 0 3px rgba(59,130,246,0.15); + margin-right: 90px; } -form button { - padding: 14px; - background: var(--primary); - border: none; - border-radius: 10px; - color: white; - font-size: 16px; - font-weight: 600; +.nav-links li { cursor: pointer; - transition: 0.3s; - box-shadow: 0 4px 15px rgba(59,130,246,0.35); -} - -form button:hover { - transform: translateY(-2px); - box-shadow: 0 8px 25px rgba(59,130,246,0.5); -} - -form button:disabled { - opacity: 0.6; - cursor: not-allowed; - transform: none; -} + transition: 0.3s ease; -/* ── SETTINGS ── */ -.settings { - position: fixed; - bottom: 25px; right: 25px; - cursor: pointer; - font-size: 26px; - background: var(--card); - padding: 12px; - border-radius: 50%; - display: flex; - align-items: center; - justify-content: center; - /* NO transform transition here — prevents menu tilt */ - transition: background 0.3s, border-color 0.3s; - z-index: 2000; - border: 1px solid var(--border); -} + padding: 20px 22px; + border-radius: 8px; -.settings:hover { - background: var(--primary); -} + font-size: 18px; -/* Only the icon spins, not the whole button */ -.settings-icon { - display: inline-block; - transition: transform 0.4s ease; - pointer-events: none; + color: white; } -.settings:hover .settings-icon { - transform: rotate(60deg); +.nav-links li:hover { + background: rgba(255,255,255,0.08); + color: #3b82f6; } -.menu { +/* Hamburger hidden on desktop */ +.hamburger { display: none; - position: absolute; - bottom: 64px; right: 0; - background: var(--card); - backdrop-filter: blur(12px); - padding: 18px; - border-radius: 14px; - width: 190px; - z-index: 9999; - border: 1px solid var(--border); - box-shadow: 0 10px 40px var(--shadow); -} - -.menu.show { display: block; } + font-size: 2rem; + color: white; + cursor: pointer; + padding: 6px 10px; -.menu p { - font-size: 12px; - text-transform: uppercase; - letter-spacing: 1px; - color: var(--text-muted-4); - margin-bottom: 10px; - margin-top: 10px; + z-index: 1200; } -.menu p:first-child { margin-top: 0; } - -.menu button { - background: var(--bg); - border: 1px solid var(--border); - color: var(--text); - border-radius: 8px; - padding: 6px 12px; - cursor: pointer; - margin-right: 6px; - font-size: 16px; - transition: 0.2s; -} +/* ================= SOCIAL ICONS ================= */ -.menu button:hover { background: var(--primary); color: #fff; } +/* Social icons */ +.social-top { + position: fixed; + top: 85px; + right: 30px; -.color-options { display: flex; - gap: 10px; - flex-wrap: wrap; - margin-top: 8px; + gap: 15px; } -.color-options span { - width: 24px; height: 24px; - border-radius: 50%; - cursor: pointer; - display: inline-block; - border: 2px solid transparent; - transition: 0.2s; +.social-top img { + width: 24px; + height: 24px; } -.color-options span:hover { - transform: scale(1.2); - border-color: var(--text); -} +/* ================= MAIN ================= */ -/* ── SPARK ── */ -.spark { - position: absolute; - width: 6px; height: 6px; - background: var(--primary); - transform: rotate(45deg); - pointer-events: none; - opacity: 0.9; - z-index: 9998; +.main { + padding-top: 100px; } -.spark::before, .spark::after { - content: ""; - position: absolute; - width: 6px; height: 6px; - background: var(--primary); - border-radius: 50%; -} +/* ================= MOBILE NAVBAR ================= */ -.spark::before { top: -3px; left: 0; } -.spark::after { left: -3px; top: 0; } +@media (max-width: 768px) { -/* ── REDUCED MOTION ── */ -@media (prefers-reduced-motion: reduce) { - .section { opacity: 1; transform: none; transition: none; } -} + .navbar { + padding: 0 20px; + } -/* ── MOBILE ── */ -@media (max-width: 768px) { - .navbar { padding: 0 20px; } - .hamburger { display: block; } + .hamburger { + display: block; + margin-left: auto; + } .nav-links { - position: absolute; - top: 64px; right: 20px; - background: var(--card); - backdrop-filter: blur(12px); - border: 1px solid var(--border); - border-radius: 12px; - flex-direction: column; - padding: 16px; - width: 180px; - box-shadow: 0 10px 30px var(--shadow); display: none; - } - .nav-links.show { display: flex; } + flex-direction: column; + align-items: flex-start; - #home { padding: 100px 24px 60px; } - .section { padding: 70px 24px; } + position: absolute; + top: 80px; + right: 20px; - .hero-content { flex-direction: column-reverse; text-align: center; } - .hero-desc { max-width: 100%; } - .hero-btns { justify-content: center; } - .hero-social { justify-content: center; } - .hero-img-circle { width: 160px; height: 160px; font-size: 36px; } + width: 220px; + #projects-container { grid-template-columns: 1fr; } - .about-grid { grid-template-columns: 1fr; gap: 32px; } - .about-right { grid-template-columns: 1fr 1fr; } + background: #0f172a; - #projects-container { grid-template-columns: 1fr; } + padding: 20px; - .contact-grid { grid-template-columns: 1fr; gap: 32px; } + border-radius: 12px; - .settings { bottom: 16px; right: 16px; } -} + box-shadow: 0 10px 25px rgba(0,0,0,0.35); + } -@media (min-width: 769px) { - .hamburger { display: none; } - .nav-links { display: flex !important; } -} -/* ══════════════════════════════════════════ - LIGHT THEME OVERRIDES - Applied via body.light-theme class - ══════════════════════════════════════════ */ -body.light-theme { - --bg: #f8fafc; - --text: #0f172a; - --card: #e2e8f0; - --section-alt: #f1f5f9; - --border: rgba(0,0,0,0.1); - --shadow: rgba(0,0,0,0.12); - --text-muted-1: rgba(15,23,42,0.75); - --text-muted-2: rgba(15,23,42,0.65); - --text-muted-3: rgba(15,23,42,0.6); - --text-muted-4: rgba(15,23,42,0.5); -} - -/* Navbar stays light-background-aware */ -body.light-theme .navbar { - background: rgba(248,250,252,0.95); - border-bottom: 1px solid rgba(0,0,0,0.1); -} - -/* Nav links: dark text on light bg, white on hover/active */ -body.light-theme .nav-links li { - color: #0f172a; -} -body.light-theme .nav-links li:hover, -body.light-theme .nav-links li.nav-active { - background: var(--primary); - color: #fff; -} -body.light-theme .hamburger { - color: #0f172a; -} + .nav-links.show { + display: flex; + } -/* Mobile dropdown bg */ -body.light-theme .nav-links { - background: #f1f5f9; - border-color: rgba(0,0,0,0.1); + .social-top { + top: 90px; + right: 20px; + } } -/* Section headings (About, Projects, etc.) stay dark, not pure black */ -body.light-theme .section h2 { - color: #1e293b; -} +/* ================= FORCE DESKTOP NAVBAR ================= */ -/* Hero text */ -body.light-theme .hero-text h1, -body.light-theme .hero-text h2 { - color: #0f172a; -} +@media (min-width: 769px) { -/* Stat cards */ -body.light-theme .stat-card { - background: #e2e8f0; - border-color: rgba(0,0,0,0.1); -} -body.light-theme .stat-lbl { - color: rgba(15,23,42,0.55); -} + .nav-links { + display: flex !important; + flex-direction: row !important; + } -/* Skill cards */ -body.light-theme .skill-card { - background: #e2e8f0; - border-color: rgba(0,0,0,0.1); -} -body.light-theme .skill-card p { - color: #0f172a; + .hamburger { + display: none !important; + } } -/* Project cards */ -body.light-theme .project-card { - background: #e2e8f0; - border-color: rgba(0,0,0,0.1); -} -body.light-theme .project-info h3 { color: #0f172a; } -body.light-theme .project-info p { color: rgba(15,23,42,0.6); } -body.light-theme .project-links a:last-child { - color: #0f172a; - border-color: rgba(0,0,0,0.2); -} +/* Show full navbar on large screens */ +@media (min-width: 992px) { + .nav-links { + display: flex !important; /* always visible */ + position: static; /* inline, not absolute */ + flex-direction: row; + gap: 20px; + background: transparent; + box-shadow: none; + padding: 0; + width: auto; + } -/* Form inputs */ -body.light-theme form input, -body.light-theme form textarea { - background: #e2e8f0; - color: #0f172a; - border-color: rgba(0,0,0,0.15); -} -body.light-theme form input::placeholder, -body.light-theme form textarea::placeholder { - color: rgba(15,23,42,0.4); -} + .hamburger { + display: none; /* hide hamburger on large screens */ + } -/* Settings menu */ -body.light-theme .settings { - background: #e2e8f0; - border-color: rgba(0,0,0,0.12); -} -body.light-theme .menu { - background: #f1f5f9; - border-color: rgba(0,0,0,0.1); + .nav-links li { + color: var(--text); + } + + .nav-links li:hover { + color: var(--primary); + transform: none; + } } -body.light-theme .menu button { - background: #e2e8f0; - color: #0f172a; - border-color: rgba(0,0,0,0.15); -} \ No newline at end of file diff --git a/revati-kadam-portfolio/index.html b/revati-kadam-portfolio/index.html index 1bf2a0c..0762082 100644 --- a/revati-kadam-portfolio/index.html +++ b/revati-kadam-portfolio/index.html @@ -2,30 +2,96 @@ + + + Revati Kadam Portfolio + - + + - -
+ + +
+ + + + + + + + + + + +
+ +
+
+

Hello!

+

I am Revati Kadam

+

I am a

+
+ +
+

About

+

+ I’m a passionate and driven Computer Science student with a strong interest in Web Development, Software Engineering, and problem-solving. + I enjoy building clean, responsive, and user-friendly web applications while continuously improving my skills in technologies like HTML, CSS, JavaScript, and backend development. + Alongside development, I actively practice Data Structures and Algorithms to strengthen my logical thinking and coding abilities. + I enjoy learning new technologies, working on real-world projects, and turning ideas into practical solutions. +

+ + + Download Resume + +
+ +
+

Skills

+
+
+ +
+

Projects

+
+
+ +
+

Contact Me

+
+ + + + + +
+
@@ -196,12 +262,15 @@

Contact Me

+
- ⚙️ + ⚙️
+ - + \ No newline at end of file diff --git a/revati-kadam-portfolio/js/navigation.js b/revati-kadam-portfolio/js/navigation.js index 28e9c4d..ef320dd 100644 --- a/revati-kadam-portfolio/js/navigation.js +++ b/revati-kadam-portfolio/js/navigation.js @@ -4,9 +4,18 @@ function showSection(id) { behavior: "smooth" }); - updateActiveNav(id); + document.getElementById(id).classList.add("active"); + + updateActiveNav(id); } +function toggleNavbar() { + const navLinks = document.getElementById("navLinks"); + navLinks.classList.toggle("show"); +} + + + // ── Active nav link highlight ────────────────────────────────────────────── function updateActiveNav(activeId) { document.querySelectorAll(".nav-links li").forEach(li => { @@ -70,4 +79,4 @@ document.addEventListener("DOMContentLoaded", () => { showSection("home"); initScrollProgress(); initSectionAnimations(); -}); \ No newline at end of file +}); diff --git a/revati-kadam-portfolio/js/script.js b/revati-kadam-portfolio/js/script.js index 660aad5..f1968d6 100644 --- a/revati-kadam-portfolio/js/script.js +++ b/revati-kadam-portfolio/js/script.js @@ -1,71 +1,77 @@ function showSection(id) { - document.getElementById(id).scrollIntoView({ behavior: "smooth" }); + document.getElementById(id).scrollIntoView({ + behavior: "smooth" + }); } -const roles = ["Web Developer", "Programmer", "Problem Solver", "Website Designer", "Tech Enthusiast"]; -let i = 0, j = 0, del = false; +// Typing +const roles=["Programmer", "Student","Web Developer","Website Designer","Problem Solver","Tech Enthusiast"]; +let i=0,j=0,del=false; + +function type(){ + let text=roles[i]; + j=del?j-1:j+1; + + document.getElementById("typing").innerText=text.substring(0,j); -function type() { - let text = roles[i]; - j = del ? j - 1 : j + 1; - document.getElementById("typing").innerText = text.substring(0, j); - if (!del && j === text.length) { - del = true; - return setTimeout(type, 1500); + if(!del && j===text.length){ + del=true; + return setTimeout(type,1500); } - if (del && j === 0) { - del = false; - i = (i + 1) % roles.length; + + if(del && j===0){ + del=false; + i=(i+1)%roles.length; } - setTimeout(type, del ? 80 : 180); + + setTimeout(type,del?80:180); } type(); -(function() { - const saved = localStorage.getItem("theme"); - if (saved === "light") document.body.classList.add("light-theme"); -})(); - -function setTheme(mode) { - if (mode === "light") { - document.body.classList.add("light-theme"); +// Theme +function setTheme(mode){ + if(mode==="light"){ + document.documentElement.style.setProperty('--bg','#f8fafc'); + document.documentElement.style.setProperty('--text','#000'); // BLACK text + document.documentElement.style.setProperty('--card','#e2e8f0'); } else { - document.body.classList.remove("light-theme"); + document.documentElement.style.setProperty('--bg','#0f172a'); + document.documentElement.style.setProperty('--text','#fff'); // WHITE text + document.documentElement.style.setProperty('--card','#1e293b'); } - localStorage.setItem("theme", mode); } -function setColor(color) { - document.documentElement.style.setProperty('--primary', color); +// Color +function setColor(color){ + document.documentElement.style.setProperty('--primary',color); } -function toggleSettings() { +// Settings +function toggleSettings(){ document.getElementById("settingsMenu").classList.toggle("show"); } -document.addEventListener("click", function (e) { +document.addEventListener("click", function(e){ const settings = document.querySelector(".settings"); + + if (!settings) return; + if (!settings.contains(e.target)) { document.getElementById("settingsMenu").classList.remove("show"); } }); -document.addEventListener("mousemove", e => { - const s = document.createElement("div"); - s.className = "spark"; - s.style.left = e.pageX + "px"; - s.style.top = e.pageY + "px"; +// ❤️ Spark +document.addEventListener("mousemove", e=>{ + const s=document.createElement("div"); + s.className="spark"; + s.style.left=e.pageX+"px"; + s.style.top=e.pageY+"px"; document.body.appendChild(s); - setTimeout(() => s.remove(), 100); + setTimeout(()=>s.remove(),100); }); -// Hamburger toggle -function toggleNavbar() { - const links = document.getElementById("navLinks"); - if (window.innerWidth <= 768) { - links.classList.toggle("show"); - } -} +// Skills const skillIcons = { "React": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/react/react-original.svg", "Node.js": "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/nodejs/nodejs-original.svg", @@ -91,6 +97,24 @@ const skillIcons = { }; fetch("data/skills.json") +.then(res => res.json()) +.then(data => { + const container = document.getElementById("skills-container"); + container.innerHTML = ""; + + data.forEach(skill => { + const card = document.createElement("div"); + card.className = "skill-card"; + + card.innerHTML = ` + +

${skill}

+ `; + + container.appendChild(card); + }); +}); + .then(res => res.json()) .then(data => { @@ -209,56 +233,56 @@ fetch("data/skills.json") } ); +// Projects fetch("data/projects.json") - .then(res => res.json()) - .then(data => { - const c = document.getElementById("projects-container"); - c.innerHTML = ""; - data.forEach(p => { - const d = document.createElement("div"); - d.className = "project-card"; - const techTags = (p.tech || []).map(t => `${t}`).join(""); - d.innerHTML = ` -
- ${p.name} -
-
-

${p.name}

-

${p.description || ""}

-
${techTags}
- -
- `; - c.appendChild(d); - }); - }) - .catch(() => { - document.getElementById("projects-container").innerHTML = "

Could not load projects.

"; +.then(res => res.json()) +.then(data => { + const c = document.getElementById("projects-container"); + + c.innerHTML = ""; // clear first + + data.forEach(p => { + let d = document.createElement("div"); + + d.innerHTML = ` +

${p.name}

+ +
+ Live | + GitHub + `; + + c.appendChild(d); }); +}) +.catch(err => { + document.getElementById("projects-container").innerHTML = "Error loading projects"; +}); -// ── EMAILJS ── -(function () { +// Initialize EmailJS +(function(){ emailjs.init("kqnCcPYqtdwl_Oaqt"); })(); -document.getElementById("contact-form").addEventListener("submit", function (e) { +// Send form +document.getElementById("contact-form").addEventListener("submit", function(e){ e.preventDefault(); - const btn = this.querySelector("button"); - btn.textContent = "Sending..."; - btn.disabled = true; - - emailjs.sendForm("service_08nkbcb", "template_2yrnipb", this) - .then(() => { - alert("Message sent successfully!"); - this.reset(); - btn.textContent = "Send Message"; - btn.disabled = false; - }, () => { - alert("Failed to send. Please try again."); - btn.textContent = "Send Message"; - btn.disabled = false; - }); -}); \ No newline at end of file + + emailjs.sendForm( + "service_08nkbcb", + "template_2yrnipb", + this + ) + .then(function () { + alert("Message sent successfully!"); + }) + .catch(function () { + alert("Failed to send message."); + }); +}); + +// Navbar Toggle +function toggleNavbar() { + document.getElementById("navLinks").classList.toggle("show"); +} +