Files
.profile/public/css/style.css
T

952 lines
18 KiB
CSS
Executable File

@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: 16pt 0 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 svg {
display: none;
}
.menu {
display: block;
}
.svg-wrapper#main-wrapper {
width: auto;
height: auto;
overflow: visible;
}
.svg-wrapper#main-wrapper .name {
margin: 2pt 0 10pt;
transform: none;
}
.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;
}
}