@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700;800&display=swap"); :root { --theme: #1d1e20; --primary: #d8d8d9; --secondary: #eb5234; --accent: #ff005a; --panel: rgba(216, 216, 217, 0.08); --panel-text: #303030; --menu-text-bg: #303030; --not-found: #030005; --border: rgba(216, 216, 217, 0.12); --muted: rgba(216, 216, 217, 0.72); --shadow: 0 16px 44px rgba(0, 0, 0, 0.18); --hero-glow-x: 50%; --hero-glow-y: 20%; --hero-glow-alt-x: 50%; --hero-glow-alt-y: 28%; --hero-glow-rotate: 0deg; --hero-glow-shift-x: 0px; --hero-glow-shift-y: 0px; } .light { --theme: #d8d8d9; --primary: rgba(0, 0, 0, 0.88); --secondary: #eb5234; --accent: #ff005a; --panel: rgba(0, 0, 0, 0.06); --panel-text: rgba(216, 216, 217); --menu-text-bg: #b7b7b7; --not-found: #303030; --border: rgba(0, 0, 0, 0.08); --muted: rgba(0, 0, 0, 0.68); --shadow: 0 16px 40px rgba(0, 0, 0, 0.08); --hero-glow-x: 50%; --hero-glow-y: 20%; --hero-glow-alt-x: 50%; --hero-glow-alt-y: 28%; --hero-glow-rotate: 0deg; --hero-glow-shift-x: 0px; --hero-glow-shift-y: 0px; } * { box-sizing: border-box; } html { scroll-behavior: smooth; } body { transition: 0.8s; font-size: 18px; line-height: 1.6; word-break: break-word; background: var(--theme); font-family: "Poppins", -apple-system, BlinkMacSystemFont, segoe ui, Roboto, Oxygen, Ubuntu, Cantarell, open sans, helvetica neue, sans-serif; min-height: 100vh; position: relative; overflow-x: hidden; } body::before, body::after { content: ""; position: fixed; inset: -20%; pointer-events: none; z-index: 0; transition: transform 0.18s ease-out, opacity 0.25s ease-out; } body::before { background: radial-gradient(circle at var(--hero-glow-x) var(--hero-glow-y), rgba(235, 82, 52, 0.24), transparent 18%), radial-gradient(circle at var(--hero-glow-alt-x) var(--hero-glow-alt-y), rgba(255, 0, 90, 0.14), transparent 20%); filter: blur(48px); opacity: 0.9; transform: translate3d(var(--hero-glow-shift-x), var(--hero-glow-shift-y), 0) rotate(var(--hero-glow-rotate)); } body::after { background: radial-gradient(circle at 20% 20%, rgba(235, 82, 52, 0.08), transparent 20%), radial-gradient(circle at 80% 18%, rgba(255, 0, 90, 0.05), transparent 18%); filter: blur(90px); opacity: 0.55; transform: translate3d(calc(var(--hero-glow-shift-x) * -0.35), calc(var(--hero-glow-shift-y) * -0.35), 0) rotate(calc(var(--hero-glow-rotate) * -0.45)); } body.js-stop-transition * { transition: none !important; } a:hover { cursor: pointer; } a, body, h1, h2, h3, h4, p, li, dd, dt { color: var(--primary); } header, nav { display: block; } header, main, .page-shell { position: relative; z-index: 1; } .header { position: relative; z-index: 1000; } ul { padding: 0; } ul li::before { content: ''; position: absolute; margin-top: 42pt; width: 0; background-color: var(--secondary); z-index: 9999; height: 3pt; transition: 0.8s all; } ul li#home-link:hover::before, ul li#about-link:hover::before { width: 45pt; } ul li#projects-link:hover::before { width: 58pt; } a { transition: 0.8s; text-decoration: none; } a:hover { color: var(--secondary); } body, ul { margin: 0; } .nav { color: var(--primary); display: flex; flex-wrap: wrap; justify-content: space-between; max-width: calc(1024pt + 24pt * 2); margin-inline-start: auto; margin-inline-end: auto; line-height: 60pt; } .nav a { display: block; } .logo, #menu { display: flex; margin: auto 24pt; } .logo { flex-wrap: inherit; align-items: center; gap: 4px; } .logo a { font-size: 24px; font-weight: 700; display: inline-flex; align-items: center; } .logo a img { display: block; pointer-events: none; border-radius: 6pt; margin-inline-end: 8pt; } #menu { list-style: none; word-break: keep-all; overflow-x: auto; white-space: nowrap; } #menu li + li { margin-inline-start: 24pt; } #menu a { font-size: 16px; } #menu .active { font-weight: 500; } .page-shell { width: min(1120px, calc(100% - 32px)); margin: 0 auto; padding-bottom: 32px; } .main { text-align: center; position: absolute; top: 52%; left: 50%; transform: translate(-50%, -50%); width: min(760px, calc(100% - 32px)); padding: 24px 12px 12px; color: var(--primary); } .hero-main { position: absolute; } .svg-wrapper { margin: 0 auto; width: 320pt; position: relative; height: 64pt; overflow-y: hidden; } .shape { z-index: 9999; stroke-dasharray: 140 540; stroke-dashoffset: -474; stroke-width: 8pt; fill: transparent; stroke: var(--secondary); transition: stroke-width 1s, stroke-dashoffset 1s, stroke-dasharray 1s; } .svg-wrapper:hover .shape { stroke-width: 2pt; stroke-dashoffset: 0; stroke-dasharray: 760; } .name { transition: 0.8s; font-size: 30px; font-weight: 900; margin-bottom: 10pt; transform: translate(0, -64pt); } .name:hover, .des:hover, .mobile-name:hover { color: var(--secondary); cursor: default; } .des { transition: 0.8s; font-size: 1.06rem; display: block; } .hero-description { margin: 0; } .hero-description-secondary { margin-top: 6px; color: var(--muted); } .profile { width: 190pt; height: 190pt; border-radius: 50%; transition: 0.8s; object-fit: cover; border: 4px solid rgba(235, 82, 52, 0.18); box-shadow: var(--shadow); } .hero-badges { display: flex; justify-content: center; gap: 10px; flex-wrap: wrap; margin-top: 18px; } .badge { border: 1px solid var(--border); background: var(--panel); color: var(--primary); border-radius: 999px; padding: 8px 14px; font-size: 0.88rem; } .hero-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 20px; } .button { display: inline-flex; align-items: center; justify-content: center; min-width: 148px; border-radius: 12px; padding: 12px 18px; font-weight: 600; border: 1px solid transparent; } .button-primary { background: var(--secondary); color: #fff; } .button-primary:hover { color: #fff; filter: brightness(1.04); } .button-secondary { background: transparent; border-color: var(--border); } .social-icons { padding: 12pt 0; } .social-icons a:not(:last-of-type) { margin-inline-end: 12pt; } .social-icons a svg { height: 26pt; width: 26pt; } .social-icons a { color: var(--primary); } .icon { transition: 0.8s; } .icon:hover { color: var(--secondary); } .logo-switches { flex-wrap: inherit; display: inline-flex; align-items: center; } #theme-toggle svg { height: 18pt; } button#theme-toggle { background-color: transparent; border: none; color: var(--primary); font-size: 26px; margin: 0 0 0 4pt; transition: 0.8s; display: inline-flex; align-items: center; justify-content: center; line-height: 1; padding: 0; height: 32px; } button#theme-toggle:hover { cursor: pointer; color: var(--secondary); } body.light #moon { vertical-align: middle; display: none; } body:not(.light) #sun { display: none; } .cta { cursor: pointer; font-weight: 600; transition: 0.8s; position: absolute; right: 14%; } .menu { display: none; color: var(--primary); size: 125%; } .overlay { position: fixed; inset: 0; z-index: 2147483647; isolation: isolate; background: rgba(20, 20, 24, 0.86); backdrop-filter: blur(14px) saturate(135%); -webkit-backdrop-filter: blur(14px) saturate(135%); overflow: hidden; opacity: 0; visibility: hidden; pointer-events: none; transition: opacity 0.28s ease, visibility 0.28s ease; } .overlay--active { opacity: 1; visibility: visible; pointer-events: auto; } .overlay__content { position: relative; z-index: 2; display: flex; min-height: 100%; width: 100%; flex-direction: column; align-items: center; justify-content: center; opacity: 0; transform: translateY(12px) scale(0.985); transition: opacity 0.24s ease, transform 0.24s ease; } .overlay--active .overlay__content { opacity: 1; transform: translateY(0) scale(1); } .overlay a { color: white; text-decoration: none; padding: 15pt; font-size: clamp(1.9rem, 5vw, 2.35rem); line-height: 1.1; display: block; text-align: center; transition: color 0.24s ease, transform 0.24s ease; } .overlay__content a { width: 100%; max-width: 320px; } .overlay a:hover, .overlay a:focus { color: var(--secondary); transform: translateY(-1px); } .overlay .close { position: absolute; z-index: 3; top: 20pt; right: 45pt; font-size: 60px; line-height: 1; color: #edf0f1; cursor: pointer; border: 0; background: transparent; padding: 0; appearance: none; } .mobile-name { display: none; transition: 0.8s; font-size: 30px; font-weight: 900; } body.menu-open { overflow: hidden; } body.menu-open main, body.menu-open .page-shell, body.menu-open .container, body.menu-open .projects-page, body.menu-open .entry-page, body.menu-open .footer { pointer-events: none; } body.menu-open .header, body.menu-open .overlay, body.menu-open .overlay * { pointer-events: auto; } .footer { display: flex; justify-content: space-between; align-items: center; gap: 16px; transition: 0.8s; padding: 12pt 18pt; background-color: var(--menu-text-bg); border-radius: 18px; } .footer p { margin: 0; } .loading-state { color: var(--muted); } @media screen and (max-width: 768pt) { .profile { width: 128pt; height: 128pt; } .footer { padding: 16px; } } @media only screen and (max-width: 740pt) { .nav__links li a, .svg-wrapper#main-wrapper { display: none; } .menu, .mobile-name { display: block; } .logo { margin-top: 12pt; } .logo-switches { margin-top: 4pt; } .main { position: static; transform: none; width: min(760px, calc(100% - 24px)); margin: 44px auto 0; padding-bottom: 40px; } .hero-main { position: static; } .page-shell { width: min(1120px, calc(100% - 20px)); } .footer { display: block; text-align: center; } .social-icons { margin-top: 6pt; } .overlay .close { right: 20px; top: 16px; } } @media (prefers-reduced-motion: reduce) { body::before, body::after { transition: none; transform: none !important; } .hero-main .profile, .hero-main .svg-wrapper, .hero-main .hero-description, .hero-main .hero-badges, .hero-main .hero-actions, .hero-main .social-icons { transition: none; transform: none !important; } } /* Glassy premium hero refinements */ :root { --hero-shell-spot-x: 50%; --hero-shell-spot-y: 28%; } body { background: linear-gradient(180deg, rgba(255, 255, 255, 0.015), transparent 28%), linear-gradient(140deg, rgba(235, 82, 52, 0.045), transparent 34%), linear-gradient(220deg, rgba(255, 0, 90, 0.03), transparent 30%), var(--theme); } body::before { background: radial-gradient(circle at var(--hero-glow-x) var(--hero-glow-y), rgba(255, 255, 255, 0.08), transparent 12%), radial-gradient(circle at var(--hero-glow-x) var(--hero-glow-y), rgba(235, 82, 52, 0.3), transparent 24%), radial-gradient(circle at var(--hero-glow-alt-x) var(--hero-glow-alt-y), rgba(255, 0, 90, 0.18), transparent 24%); filter: blur(78px); opacity: 1; } body::after { background: radial-gradient(circle at 18% 18%, rgba(255, 255, 255, 0.055), transparent 15%), radial-gradient(circle at 82% 14%, rgba(235, 82, 52, 0.08), transparent 18%), radial-gradient(circle at 70% 76%, rgba(255, 255, 255, 0.03), transparent 20%); filter: blur(110px); opacity: 0.82; } .logo { align-items: center; } .logo-switches { align-items: center; min-height: 32px; } button#theme-toggle { margin-top: 1px; } .hero-main { width: min(820px, calc(100% - 32px)); } .hero-shell { position: relative; overflow: hidden; border-radius: 30px; padding: 34px 28px 18px; border: 1px solid rgba(255, 255, 255, 0.13); background: linear-gradient(180deg, rgba(255, 255, 255, 0.12), rgba(255, 255, 255, 0.02)), linear-gradient(135deg, rgba(235, 82, 52, 0.09), transparent 42%), linear-gradient(225deg, rgba(255, 0, 90, 0.05), transparent 34%), rgba(20, 21, 24, 0.44); box-shadow: 0 24px 80px rgba(0, 0, 0, 0.22), inset 0 1px 0 rgba(255, 255, 255, 0.18), inset 0 -1px 0 rgba(255, 255, 255, 0.04); backdrop-filter: blur(22px) saturate(135%); -webkit-backdrop-filter: blur(22px) saturate(135%); isolation: isolate; transform: none; transition: transform 0.18s ease-out, border-color 0.25s ease-out, box-shadow 0.25s ease-out; } body.light .hero-shell { background: linear-gradient(180deg, rgba(255, 255, 255, 0.72), rgba(255, 255, 255, 0.4)), linear-gradient(135deg, rgba(235, 82, 52, 0.08), transparent 42%), linear-gradient(225deg, rgba(255, 0, 90, 0.04), transparent 34%), rgba(255, 255, 255, 0.42); border-color: rgba(255, 255, 255, 0.55); box-shadow: 0 24px 60px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.75), inset 0 -1px 0 rgba(255, 255, 255, 0.35); } .hero-shell::before, .hero-shell::after, .hero-shell__shine { content: ""; position: absolute; inset: 0; pointer-events: none; } .hero-shell::before { background: radial-gradient(circle at var(--hero-shell-spot-x) var(--hero-shell-spot-y), rgba(255, 255, 255, 0.14), transparent 26%); opacity: 0.85; z-index: 0; } .hero-shell::after { inset: 1px; border-radius: 29px; border: 1px solid rgba(255, 255, 255, 0.07); z-index: 1; } .hero-shell__shine { background: linear-gradient(115deg, transparent 18%, rgba(255, 255, 255, 0.085) 42%, transparent 68%); transform: translate3d(calc(var(--hero-glow-shift-x) * 0.18), calc(var(--hero-glow-shift-y) * 0.16), 0) rotate(0deg); opacity: 0.9; z-index: 0; } .hero-shell > * { position: relative; z-index: 2; } .profile { border: 4px solid rgba(255, 255, 255, 0.14); box-shadow: 0 16px 42px rgba(0, 0, 0, 0.22), 0 0 0 1px rgba(255, 255, 255, 0.05); } .shape { stroke: rgba(235, 82, 52, 0.95); filter: drop-shadow(0 6px 18px rgba(235, 82, 52, 0.18)); } .hero-description-secondary { max-width: 640px; margin-left: auto; margin-right: auto; } .badge { background: rgba(255, 255, 255, 0.07); border-color: rgba(255, 255, 255, 0.12); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); } body.light .badge { background: rgba(255, 255, 255, 0.55); border-color: rgba(255, 255, 255, 0.6); } .button { backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08); } .button-primary { background: linear-gradient(135deg, rgba(255, 108, 74, 0.96), rgba(235, 82, 52, 0.9)); box-shadow: 0 10px 24px rgba(235, 82, 52, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.14); } .button-secondary { background: rgba(255, 255, 255, 0.05); border-color: rgba(255, 255, 255, 0.12); } body.light .button-secondary { background: rgba(255, 255, 255, 0.55); border-color: rgba(255, 255, 255, 0.65); } .social-icons { padding-top: 16px; } @media only screen and (max-width: 740pt) { .hero-main { width: min(760px, calc(100% - 24px)); } .hero-shell { padding: 26px 18px 12px; border-radius: 24px; } } @media (prefers-reduced-motion: reduce) { .hero-shell { transform: none !important; } .hero-shell__shine { transform: none !important; } }