Files
ProjectQuint/Website/projectquint-site/src/styles/global.css
T

1156 lines
18 KiB
CSS

@font-face {
font-family: "Rajdhani";
src: url("/fonts/Rajdhani-Bold.ttf") format("truetype");
font-style: normal;
font-weight: 700;
font-display: swap;
}
@font-face {
font-family: "Pretendard";
src: url("/fonts/Pretendard-SemiBold.otf") format("opentype");
font-style: normal;
font-weight: 600;
font-display: swap;
}
:root {
--navy-950: #070e22;
--navy-900: #0d1732;
--navy-800: #172544;
--ink: #142248;
--muted: #647595;
--line: #d8e0ee;
--surface: #ffffff;
--surface-muted: #eef3fa;
--canvas: #f5f7fb;
--cyan: #23afe1;
--cyan-soft: #d9f4ff;
--violet: #6751e8;
--coral: #f36f7e;
--yellow: #f3bf41;
--radius-sm: 12px;
--radius-md: 20px;
--radius-lg: 30px;
--shadow: 0 24px 70px rgba(10, 25, 58, 0.12);
--page: min(1480px, calc(100vw - 48px));
}
* {
box-sizing: border-box;
}
html {
background: var(--canvas);
color: var(--ink);
font-family: "Pretendard", system-ui, sans-serif;
scroll-behavior: smooth;
}
body {
margin: 0;
min-width: 320px;
background:
linear-gradient(135deg, rgba(35, 175, 225, 0.045) 0 12%, transparent 12% 100%),
var(--canvas);
}
a {
color: inherit;
text-decoration: none;
}
p,
h1,
h2,
h3 {
margin-top: 0;
}
.skip-link {
position: fixed;
z-index: 99;
top: 12px;
left: 12px;
padding: 10px 14px;
transform: translateY(-150%);
border-radius: 8px;
background: var(--navy-950);
color: white;
}
.skip-link:focus {
transform: translateY(0);
}
.page-shell {
min-height: 100vh;
overflow: hidden;
}
.site-header {
width: var(--page);
min-height: 92px;
margin: 0 auto;
display: grid;
grid-template-columns: auto 1fr auto;
align-items: center;
gap: 38px;
border-bottom: 1px solid var(--line);
}
.brand {
display: inline-flex;
align-items: center;
gap: 12px;
}
.brand__mark {
display: grid;
width: 36px;
height: 36px;
place-items: center;
border-radius: 10px;
background: var(--navy-900);
color: white;
font-family: "Rajdhani", sans-serif;
font-size: 24px;
line-height: 1;
}
.brand__name,
.alpha-tag,
.site-nav__link,
.eyebrow,
h1,
h2,
h3,
.button,
.release-status,
.resource-count,
.card-kicker,
.resource-row small,
.resource-row__index,
.resource-row__language,
.timeline-entry__date,
.site-footer__brand {
font-family: "Rajdhani", "Pretendard", sans-serif;
font-weight: 700;
letter-spacing: 0.05em;
}
.brand__name {
font-size: 21px;
}
.site-nav {
display: flex;
justify-content: center;
gap: 8px;
}
.site-nav__link {
position: relative;
padding: 12px 14px;
color: var(--muted);
font-size: 14px;
}
.site-nav__link::after {
content: "";
position: absolute;
right: 14px;
bottom: 5px;
left: 14px;
height: 2px;
transform: scaleX(0);
background: var(--cyan);
transition: transform 140ms ease;
}
.site-nav__link:hover,
.site-nav__link:focus-visible,
.site-nav__link.is-current {
color: var(--ink);
}
.site-nav__link.is-current::after {
transform: scaleX(1);
}
.alpha-tag {
padding: 8px 13px;
border: 1px solid rgba(103, 81, 232, 0.26);
border-radius: 999px;
background: rgba(103, 81, 232, 0.08);
color: var(--violet);
font-size: 12px;
}
main {
width: var(--page);
margin: 0 auto;
}
.hero {
min-height: 720px;
display: grid;
grid-template-columns: minmax(0, 0.85fr) minmax(560px, 1.15fr);
align-items: center;
gap: 70px;
padding: 72px 0 92px;
}
.eyebrow {
margin-bottom: 20px;
color: var(--cyan);
font-size: 15px;
}
.hero h1,
.page-hero h1 {
margin-bottom: 28px;
color: var(--navy-900);
font-size: clamp(68px, 7.2vw, 118px);
line-height: 0.83;
letter-spacing: 0.01em;
}
.hero__lead,
.page-hero__lead {
max-width: 640px;
color: var(--muted);
font-size: 18px;
line-height: 1.8;
}
.hero__actions {
display: flex;
flex-wrap: wrap;
gap: 12px;
margin-top: 38px;
}
.button {
min-height: 54px;
padding: 0 22px;
display: inline-flex;
align-items: center;
justify-content: center;
gap: 26px;
border: 1px solid var(--line);
border-radius: 14px;
font-size: 15px;
transition:
transform 140ms ease,
background 140ms ease,
border-color 140ms ease;
}
.button:hover {
transform: translateY(-2px);
}
.button:focus-visible,
.resource-row:focus-visible,
.site-nav__link:focus-visible,
.brand:focus-visible {
outline: 3px solid rgba(35, 175, 225, 0.34);
outline-offset: 3px;
}
.button--primary {
border-color: var(--violet);
background: var(--violet);
color: white;
}
.button--ghost {
background: rgba(255, 255, 255, 0.7);
}
.hero__facts {
margin: 36px 0 0;
padding: 0;
display: flex;
flex-wrap: wrap;
gap: 10px;
list-style: none;
}
.hero__facts li {
padding: 8px 12px;
border-radius: 999px;
background: var(--surface-muted);
color: var(--muted);
font-family: "Rajdhani", sans-serif;
font-size: 13px;
font-weight: 700;
}
.select-preview {
position: relative;
overflow: hidden;
min-height: 510px;
padding: 26px;
border: 1px solid rgba(138, 157, 193, 0.38);
border-radius: var(--radius-lg);
background: var(--navy-900);
box-shadow: var(--shadow);
color: white;
}
.select-preview::before,
.select-preview::after {
content: "";
position: absolute;
pointer-events: none;
transform: rotate(-30deg);
}
.select-preview::before {
top: -80px;
right: -90px;
width: 320px;
height: 100px;
background: var(--coral);
}
.select-preview::after {
right: -100px;
bottom: 50px;
width: 360px;
height: 70px;
background: rgba(103, 81, 232, 0.56);
}
.select-preview__top,
.select-preview__bottom {
position: relative;
z-index: 1;
display: flex;
align-items: center;
justify-content: space-between;
font-family: "Rajdhani", sans-serif;
font-weight: 700;
letter-spacing: 0.08em;
}
.select-preview__top {
padding-bottom: 22px;
font-size: 20px;
}
.select-preview__tools {
display: flex;
gap: 8px;
}
.select-preview__tools i {
width: 44px;
height: 22px;
border: 1px solid rgba(255, 255, 255, 0.22);
border-radius: 999px;
background: rgba(255, 255, 255, 0.08);
}
.select-preview__body {
position: relative;
z-index: 1;
display: grid;
grid-template-columns: 180px 1fr;
gap: 20px;
}
.select-preview__info {
padding: 14px;
border-radius: 18px;
background: rgba(3, 8, 20, 0.72);
}
.jacket-motif {
aspect-ratio: 1;
display: grid;
place-items: center;
overflow: hidden;
border-radius: 12px;
background:
linear-gradient(140deg, transparent 0 28%, var(--cyan) 28% 42%, transparent 42% 59%, var(--coral) 59% 70%, transparent 70%),
#111c39;
}
.jacket-motif span {
font-family: "Rajdhani", sans-serif;
font-size: 74px;
font-weight: 700;
}
.select-preview__info p {
margin: 16px 0 10px;
font-family: "Rajdhani", sans-serif;
font-size: 18px;
font-weight: 700;
}
.select-preview__info strong {
display: block;
color: var(--cyan);
font-family: "Rajdhani", sans-serif;
font-size: 28px;
}
.select-preview__info small {
color: #aebbd3;
}
.track-list {
display: grid;
gap: 10px;
}
.track {
min-height: 64px;
padding: 0 18px;
display: grid;
grid-template-columns: 34px 1fr 36px;
align-items: center;
gap: 12px;
border-radius: 16px;
background: rgba(255, 255, 255, 0.95);
color: var(--navy-900);
}
.track b,
.track span {
font-family: "Rajdhani", sans-serif;
font-weight: 700;
}
.track b {
color: var(--violet);
font-size: 20px;
}
.track span {
font-size: 18px;
}
.track em {
width: 24px;
height: 5px;
justify-self: end;
border-radius: 999px;
background: var(--cyan);
}
.track.is-selected {
background: var(--violet);
color: white;
}
.track.is-selected b {
color: white;
}
.select-preview__bottom {
position: absolute;
z-index: 2;
right: 26px;
bottom: 22px;
left: 226px;
justify-content: flex-end;
gap: 8px;
}
.select-preview__bottom span {
padding: 7px 10px;
border-radius: 999px;
background: rgba(255, 255, 255, 0.12);
font-size: 11px;
}
.feature-section {
padding: 110px 0;
border-top: 1px solid var(--line);
}
.section-heading {
display: grid;
grid-template-columns: 0.55fr 1.45fr;
gap: 40px;
margin-bottom: 56px;
}
.section-heading h2 {
margin-bottom: 0;
color: var(--navy-900);
font-size: clamp(38px, 4vw, 66px);
line-height: 1.05;
}
.feature-grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 16px;
}
.feature-card {
min-height: 280px;
padding: 30px;
border: 1px solid var(--line);
border-radius: var(--radius-md);
background: rgba(255, 255, 255, 0.75);
}
.feature-card > span {
display: inline-grid;
width: 42px;
height: 42px;
place-items: center;
border-radius: 10px;
background: var(--surface-muted);
color: var(--violet);
font-family: "Rajdhani", sans-serif;
font-weight: 700;
}
.feature-card h3 {
margin: 60px 0 12px;
font-size: 27px;
}
.feature-card p {
margin-bottom: 0;
color: var(--muted);
font-size: 15px;
line-height: 1.8;
}
.page-hero {
min-height: 390px;
padding: 92px 0 74px;
border-bottom: 1px solid var(--line);
}
.page-hero h1 {
font-size: clamp(64px, 8vw, 110px);
}
.page-hero--split {
display: grid;
grid-template-columns: 1fr auto;
align-items: end;
gap: 60px;
}
.release-status {
min-width: 250px;
padding: 22px;
display: flex;
align-items: center;
gap: 16px;
border: 1px solid var(--line);
border-radius: 16px;
background: white;
}
.release-status__dot {
width: 14px;
height: 14px;
border-radius: 50%;
background: var(--cyan);
}
.release-status small,
.release-status strong {
display: block;
}
.release-status small {
color: var(--muted);
font-size: 11px;
}
.release-status strong {
margin-top: 4px;
font-size: 22px;
}
.content-grid {
padding: 58px 0;
display: grid;
grid-template-columns: 1.4fr 0.6fr;
gap: 16px;
}
.content-card,
.prose-card {
padding: 34px;
border: 1px solid var(--line);
border-radius: var(--radius-md);
background: var(--surface);
}
.content-card h2,
.prose-card h2 {
color: var(--navy-900);
font-size: 30px;
}
.card-kicker {
color: var(--violet);
font-size: 13px;
}
.check-list {
margin: 28px 0 0;
padding: 0;
list-style: none;
}
.check-list li {
padding: 16px 0 16px 34px;
position: relative;
border-top: 1px solid var(--line);
color: var(--muted);
}
.check-list li::before {
content: "";
position: absolute;
top: 21px;
left: 3px;
width: 12px;
height: 12px;
border: 2px solid #aab6ca;
border-radius: 50%;
}
.check-list li.is-done {
color: var(--ink);
}
.check-list li.is-done::before {
border-color: var(--cyan);
background: var(--cyan);
box-shadow: inset 0 0 0 3px white;
}
.install-list {
margin: 28px 0 0;
padding: 0;
display: grid;
gap: 10px;
list-style: none;
}
.install-list li {
padding: 20px;
display: grid;
grid-template-columns: 52px 1fr;
gap: 18px;
border: 1px solid var(--line);
border-radius: 14px;
background: var(--surface-muted);
}
.install-list > li > span {
color: var(--cyan);
font-family: "Rajdhani", sans-serif;
font-size: 24px;
font-weight: 700;
}
.install-list strong {
color: var(--navy-900);
}
.install-list p {
margin: 5px 0 0;
color: var(--muted);
font-size: 14px;
line-height: 1.65;
}
.checksum {
margin-top: 24px;
padding: 18px;
border-radius: 12px;
background: var(--surface-muted);
}
.checksum small,
.checksum code {
display: block;
}
.checksum small {
margin-bottom: 8px;
color: var(--muted);
font-family: "Rajdhani", sans-serif;
font-weight: 700;
}
.checksum code {
overflow-wrap: anywhere;
color: var(--ink);
font-size: 11px;
line-height: 1.6;
}
.spec-list {
margin: 0;
}
.spec-list div {
padding: 18px 0;
display: flex;
justify-content: space-between;
gap: 20px;
border-bottom: 1px solid var(--line);
}
.spec-list dt {
color: var(--muted);
font-family: "Rajdhani", sans-serif;
font-weight: 700;
}
.spec-list dd {
margin: 0;
text-align: right;
}
.notice-strip {
margin: 0 0 90px;
padding: 22px 26px;
display: flex;
align-items: center;
gap: 22px;
border-left: 5px solid var(--cyan);
border-radius: 0 12px 12px 0;
background: var(--cyan-soft);
}
.notice-strip span {
color: var(--muted);
font-size: 14px;
}
.step-list {
padding: 58px 0;
display: grid;
gap: 12px;
}
.step {
padding: 28px 34px;
display: grid;
grid-template-columns: 76px 1fr;
gap: 26px;
border: 1px solid var(--line);
border-radius: 16px;
background: var(--surface);
}
.step__number {
color: var(--cyan);
font-family: "Rajdhani", sans-serif;
font-size: 34px;
font-weight: 700;
}
.step h2 {
margin-bottom: 8px;
font-size: 25px;
}
.step p {
max-width: 840px;
margin-bottom: 0;
color: var(--muted);
line-height: 1.75;
}
.resource-count {
display: flex;
align-items: center;
gap: 16px;
}
.resource-count strong {
color: var(--violet);
font-size: 72px;
line-height: 0.8;
}
.resource-count span {
color: var(--muted);
font-size: 12px;
line-height: 1.35;
}
.resource-list {
padding: 52px 0;
display: grid;
gap: 12px;
}
.resource-row {
min-height: 160px;
padding: 28px 30px;
display: grid;
grid-template-columns: 64px 1fr auto 38px;
align-items: center;
gap: 22px;
border: 1px solid var(--line);
border-radius: 18px;
background: var(--surface);
transition:
transform 140ms ease,
border-color 140ms ease,
box-shadow 140ms ease;
}
.resource-row:hover {
transform: translateY(-2px);
border-color: rgba(103, 81, 232, 0.5);
box-shadow: 0 18px 40px rgba(10, 25, 58, 0.07);
}
.resource-row__index {
color: var(--cyan);
font-size: 27px;
}
.resource-row__main small {
color: var(--violet);
font-size: 11px;
}
.resource-row__main h2 {
margin: 5px 0 7px;
font-size: 27px;
}
.resource-row__main p {
margin: 0;
color: var(--muted);
font-size: 14px;
}
.resource-row__language {
padding: 8px 12px;
border-radius: 999px;
background: var(--surface-muted);
color: var(--muted);
font-size: 11px;
}
.resource-row__arrow {
font-size: 24px;
}
.legal-note,
.prose-card {
max-width: 1000px;
margin: 0 0 94px;
}
.legal-note {
padding: 32px 0 0;
border-top: 1px solid var(--line);
}
.legal-note h2 {
font-size: 23px;
}
.legal-note p,
.prose-card p {
color: var(--muted);
line-height: 1.85;
}
.prose-card {
margin-top: 56px;
}
.prose-card h2:not(:first-child) {
margin-top: 36px;
}
.timeline {
padding: 60px 0 96px;
}
.timeline-entry {
display: grid;
grid-template-columns: 160px 1fr;
gap: 24px;
}
.timeline-entry__date {
padding: 24px;
border-radius: 16px;
background: var(--navy-900);
color: white;
}
.timeline-entry__date span,
.timeline-entry__date strong {
display: block;
}
.timeline-entry__date span {
color: #8797b4;
font-size: 12px;
}
.timeline-entry__date strong {
margin-top: 6px;
color: var(--cyan);
font-size: 30px;
}
.timeline-entry__body {
padding: 30px;
border: 1px solid var(--line);
border-radius: 16px;
background: white;
}
.timeline-entry__body h2 {
font-size: 30px;
}
.timeline-entry__body ul {
margin: 22px 0 0;
padding-left: 20px;
color: var(--muted);
line-height: 1.9;
}
.site-footer {
background: var(--navy-950);
color: white;
}
.site-footer__inner {
width: var(--page);
min-height: 190px;
margin: 0 auto;
display: grid;
grid-template-columns: 1fr auto auto;
align-items: center;
gap: 50px;
}
.site-footer__brand {
margin-bottom: 7px;
font-size: 21px;
}
.site-footer__copy,
.site-footer__legal {
margin: 0;
color: #7f8ba6;
font-size: 12px;
}
.site-footer nav {
display: flex;
gap: 24px;
color: #aab5cc;
font-family: "Rajdhani", sans-serif;
font-size: 13px;
font-weight: 700;
}
@media (max-width: 1050px) {
:root {
--page: min(100% - 34px, 900px);
}
.site-header {
grid-template-columns: 1fr auto;
gap: 18px;
}
.site-nav {
grid-column: 1 / -1;
grid-row: 2;
justify-content: flex-start;
overflow-x: auto;
padding-bottom: 12px;
}
.alpha-tag {
grid-column: 2;
grid-row: 1;
}
.hero {
grid-template-columns: 1fr;
}
.select-preview {
min-height: 500px;
}
.feature-grid,
.content-grid {
grid-template-columns: 1fr;
}
.page-hero--split {
grid-template-columns: 1fr;
}
.release-status {
width: fit-content;
}
}
@media (max-width: 700px) {
:root {
--page: calc(100% - 24px);
--radius-lg: 22px;
}
.site-header {
min-height: 76px;
}
.brand__name {
font-size: 18px;
}
.site-nav__link {
padding-inline: 10px;
}
.hero {
min-height: auto;
gap: 54px;
padding: 62px 0 72px;
}
.hero h1,
.page-hero h1 {
font-size: clamp(56px, 18vw, 82px);
}
.hero__lead,
.page-hero__lead {
font-size: 16px;
}
.hero__actions {
display: grid;
}
.select-preview {
min-height: 480px;
padding: 18px;
}
.select-preview__body {
grid-template-columns: 104px 1fr;
gap: 10px;
}
.select-preview__info {
padding: 8px;
}
.select-preview__info p {
font-size: 13px;
}
.select-preview__info strong {
font-size: 21px;
}
.select-preview__info small {
display: none;
}
.track {
min-height: 58px;
padding: 0 10px;
grid-template-columns: 24px 1fr;
}
.track span {
overflow: hidden;
font-size: 14px;
text-overflow: ellipsis;
white-space: nowrap;
}
.track em {
display: none;
}
.select-preview__bottom {
right: 18px;
bottom: 18px;
left: 132px;
}
.section-heading {
grid-template-columns: 1fr;
}
.page-hero {
min-height: 340px;
padding-top: 70px;
}
.notice-strip {
align-items: flex-start;
flex-direction: column;
gap: 6px;
}
.step {
padding: 24px;
grid-template-columns: 48px 1fr;
gap: 12px;
}
.resource-count {
justify-content: flex-start;
}
.resource-row {
padding: 24px;
grid-template-columns: 40px 1fr 26px;
gap: 12px;
}
.resource-row__language {
display: none;
}
.resource-row__main p {
font-size: 13px;
line-height: 1.6;
}
.timeline-entry {
grid-template-columns: 1fr;
}
.timeline-entry__date {
width: 150px;
}
.site-footer__inner {
padding: 42px 0;
grid-template-columns: 1fr;
gap: 24px;
}
}