Integrate the Blender grand tourer with a cohesive shader-driven road, terrain, atmosphere, lighting, and post-processing pass. Refine responsive drive dynamics and sign lifecycle behavior, and add durable visual, accessibility, and performance verification evidence.
330 lines
6.8 KiB
CSS
330 lines
6.8 KiB
CSS
:root {
|
||
--site-navigation-block-size: 53px;
|
||
}
|
||
|
||
.portfolio-shell {
|
||
min-width: 0;
|
||
}
|
||
|
||
.site-header {
|
||
min-block-size: 0;
|
||
}
|
||
|
||
.site-navigation {
|
||
position: fixed;
|
||
z-index: var(--z-navigation);
|
||
inset: 0 0 auto;
|
||
min-block-size: var(--site-navigation-block-size);
|
||
border-block-end: 1px solid var(--line);
|
||
background: var(--surface-strong);
|
||
}
|
||
|
||
.site-navigation__disclosure {
|
||
max-inline-size: 96rem;
|
||
margin-inline: auto;
|
||
}
|
||
|
||
.site-navigation summary {
|
||
display: none;
|
||
}
|
||
|
||
.site-navigation ul {
|
||
display: grid !important;
|
||
grid-template-columns: repeat(8, minmax(0, 1fr));
|
||
grid-auto-rows: 52px;
|
||
margin: 0;
|
||
padding: 0;
|
||
list-style: none;
|
||
}
|
||
|
||
.site-navigation a {
|
||
display: inline-flex;
|
||
inline-size: 100%;
|
||
min-block-size: 44px;
|
||
align-items: center;
|
||
justify-content: center;
|
||
padding-inline: 0.45rem;
|
||
border-block-end: 2px solid transparent;
|
||
color: var(--text-muted);
|
||
font: 520 0.78rem/1 var(--mono);
|
||
letter-spacing: 0.06em;
|
||
text-decoration: none;
|
||
transition:
|
||
color var(--transition),
|
||
background-color var(--transition),
|
||
border-color var(--transition);
|
||
}
|
||
|
||
.site-navigation a:hover,
|
||
.site-navigation a:focus-visible {
|
||
background: rgb(120 216 229 / 8%);
|
||
color: var(--text);
|
||
}
|
||
|
||
.site-navigation a[aria-current="page"] {
|
||
border-block-end-color: var(--cyan);
|
||
color: var(--cyan);
|
||
}
|
||
|
||
.site-navigation a:focus-visible {
|
||
outline-offset: -3px;
|
||
}
|
||
|
||
.portfolio-main {
|
||
min-width: 0;
|
||
padding-block: var(--site-navigation-block-size) 18vh;
|
||
}
|
||
|
||
.hero-journey {
|
||
display: grid;
|
||
min-block-size: calc(100svh - var(--site-navigation-block-size));
|
||
align-items: start;
|
||
padding: clamp(3.5rem, 12vh, 8rem) 4vw 16vh;
|
||
scroll-margin-block-start: var(--site-navigation-block-size);
|
||
}
|
||
|
||
.hero-journey__content {
|
||
display: grid;
|
||
inline-size: min(34rem, 39vw);
|
||
gap: 1rem;
|
||
padding: clamp(1.4rem, 2.2vw, 2.1rem);
|
||
border: 1px solid var(--line);
|
||
border-inline-start: 3px solid var(--cyan);
|
||
border-inline-end: 0;
|
||
border-radius: 3px 0 0 3px;
|
||
background: linear-gradient(
|
||
90deg,
|
||
rgb(5 12 23 / 96%) 0 72%,
|
||
rgb(5 12 23 / 74%) 88%,
|
||
rgb(5 12 23 / 0%) 100%
|
||
);
|
||
box-shadow: -1.4rem 2rem 4rem rgb(0 5 15 / 24%);
|
||
}
|
||
|
||
.portfolio-section {
|
||
position: relative;
|
||
min-width: 0;
|
||
margin-block: clamp(6rem, 16vh, 11rem);
|
||
padding: clamp(1.5rem, 2.6vw, 2.7rem);
|
||
scroll-margin-block-start: calc(
|
||
var(--site-navigation-block-size) + var(--space-3)
|
||
);
|
||
border: var(--panel-border);
|
||
border-radius: var(--radius-surface);
|
||
background: var(--surface);
|
||
box-shadow: var(--panel-shadow);
|
||
}
|
||
|
||
.portfolio-section[data-layout="right-rail"] {
|
||
inline-size: 42%;
|
||
margin-inline: 54% 4%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="left-timeline"] {
|
||
inline-size: 46%;
|
||
margin-inline: 4% 50%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="full-diagram"] {
|
||
inline-size: 68%;
|
||
margin-inline: 16%;
|
||
padding: 0;
|
||
border: 0;
|
||
background: transparent;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.portfolio-section[data-layout="project-stage"] {
|
||
inline-size: 92%;
|
||
margin-inline: 4%;
|
||
padding: 0;
|
||
border: 0;
|
||
background: transparent;
|
||
box-shadow: none;
|
||
}
|
||
|
||
.portfolio-section[data-layout="project-stage"] > h2,
|
||
.portfolio-section[data-layout="project-stage"] > .section-eyebrow {
|
||
inline-size: fit-content;
|
||
padding: 0.55rem 0.8rem;
|
||
border-inline-start: 2px solid var(--cyan);
|
||
background: var(--surface-strong);
|
||
}
|
||
|
||
.portfolio-section[data-layout="compact-rail"] {
|
||
inline-size: 42%;
|
||
margin-inline: 54% 4%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="toolkit-field"] {
|
||
inline-size: 68%;
|
||
margin-inline: 16%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="destination"] {
|
||
inline-size: min(42rem, 46%);
|
||
margin-inline: 4% auto;
|
||
}
|
||
|
||
.portfolio-section footer {
|
||
min-width: 0;
|
||
}
|
||
|
||
@media (min-width: 768px) and (max-width: 1279px) {
|
||
.hero-journey {
|
||
padding-inline: 4vw;
|
||
}
|
||
|
||
.hero-journey__content {
|
||
inline-size: min(31rem, 58vw);
|
||
}
|
||
|
||
.portfolio-section[data-layout="right-rail"] {
|
||
inline-size: 60%;
|
||
margin-inline: 36% 4%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="left-timeline"] {
|
||
inline-size: 60%;
|
||
margin-inline: 4% 36%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="full-diagram"],
|
||
.portfolio-section[data-layout="toolkit-field"] {
|
||
inline-size: 84%;
|
||
margin-inline: 8%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="project-stage"] {
|
||
inline-size: 92%;
|
||
margin-inline: 4%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="compact-rail"] {
|
||
inline-size: 62%;
|
||
margin-inline: 34% 4%;
|
||
}
|
||
|
||
.portfolio-section[data-layout="destination"] {
|
||
inline-size: 70%;
|
||
}
|
||
}
|
||
|
||
@media (max-width: 767px) {
|
||
:root {
|
||
--site-navigation-block-size: 53px;
|
||
}
|
||
|
||
.site-navigation__disclosure {
|
||
position: relative;
|
||
}
|
||
|
||
.site-navigation summary {
|
||
display: flex;
|
||
min-block-size: 52px;
|
||
align-items: center;
|
||
justify-content: space-between;
|
||
padding-inline: 1rem;
|
||
color: var(--text);
|
||
cursor: pointer;
|
||
font: 560 0.76rem/1 var(--mono);
|
||
letter-spacing: 0.08em;
|
||
list-style: none;
|
||
}
|
||
|
||
.site-navigation summary::after {
|
||
color: var(--cyan);
|
||
content: "+";
|
||
font-size: 1.1rem;
|
||
}
|
||
|
||
.site-navigation details[open] summary::after {
|
||
content: "−";
|
||
}
|
||
|
||
.site-navigation summary::-webkit-details-marker {
|
||
display: none;
|
||
}
|
||
|
||
.site-navigation summary:focus-visible {
|
||
outline: none;
|
||
box-shadow: inset 0 0 0 2px var(--focus);
|
||
}
|
||
|
||
.site-navigation ul {
|
||
position: absolute;
|
||
inset: 100% 0 auto;
|
||
display: grid !important;
|
||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||
grid-auto-rows: 48px;
|
||
border-block: 1px solid var(--line);
|
||
background: var(--surface-strong);
|
||
box-shadow: var(--panel-shadow);
|
||
}
|
||
|
||
.site-navigation details:not([open]) ul {
|
||
display: none !important;
|
||
}
|
||
|
||
.portfolio-main {
|
||
padding-block-end: 8rem;
|
||
}
|
||
|
||
.hero-journey {
|
||
min-block-size: calc(100svh - var(--site-navigation-block-size));
|
||
align-items: start;
|
||
padding: clamp(2rem, 9vh, 4.5rem) 1rem 8rem;
|
||
}
|
||
|
||
.hero-journey__content {
|
||
inline-size: 100%;
|
||
gap: 0.9rem;
|
||
padding: 1.25rem 1.15rem 1.35rem;
|
||
background: linear-gradient(
|
||
90deg,
|
||
rgb(5 12 23 / 97%) 0 82%,
|
||
rgb(5 12 23 / 58%) 94%,
|
||
rgb(5 12 23 / 0%) 100%
|
||
);
|
||
}
|
||
|
||
.portfolio-section,
|
||
.portfolio-section[data-layout] {
|
||
inline-size: calc(100% - 2rem);
|
||
margin: 6rem 1rem;
|
||
padding: 1.4rem;
|
||
background: var(--surface-strong);
|
||
}
|
||
|
||
.portfolio-section[data-layout="project-stage"] {
|
||
padding: 0;
|
||
border: 0;
|
||
background: transparent;
|
||
}
|
||
|
||
.portfolio-section[data-layout="project-stage"] > h2,
|
||
.portfolio-section[data-layout="project-stage"] > .section-eyebrow {
|
||
margin-inline-start: 0;
|
||
background: var(--surface-strong);
|
||
}
|
||
|
||
.project-link,
|
||
.contact-link,
|
||
.contact-social-link {
|
||
min-inline-size: 44px;
|
||
min-block-size: 44px;
|
||
}
|
||
}
|
||
|
||
@media (max-height: 420px) {
|
||
.hero-journey {
|
||
min-block-size: auto;
|
||
padding-block: 4rem 3rem;
|
||
}
|
||
|
||
.portfolio-section,
|
||
.portfolio-section[data-layout] {
|
||
margin-block: 4rem;
|
||
}
|
||
}
|