@font-face {
font-family: 'Nunito';
font-style: normal;
font-weight: 400 900;
font-display: swap;
src: url(/assets/fonts/nunito-cyrillic-ext.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
font-family: 'Nunito';
font-style: normal;
font-weight: 400 900;
font-display: swap;
src: url(/assets/fonts/nunito-cyrillic.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
font-family: 'Nunito';
font-style: normal;
font-weight: 400 900;
font-display: swap;
src: url(/assets/fonts/nunito-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Nunito';
font-style: normal;
font-weight: 400 900;
font-display: swap;
src: url(/assets/fonts/nunito-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(/assets/fonts/russo-one-cyrillic.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(/assets/fonts/russo-one-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Russo One';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(/assets/fonts/russo-one-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
:root {
--bg-rgb: 22 16 11;
--deep-rgb: 15 10 7;
--outline-rgb: 42 23 12;
--tan-rgb: 217 168 102;
--parchment-rgb: 241 215 168;
--cream-rgb: 246 234 214;
--gold-rgb: 255 207 90;
--ember-rgb: 255 138 31;
--teal-rgb: 70 211 200;
--sky-rgb: 61 180 230;
--bg: rgb(var(--bg-rgb));
--bg-alt: #1e150e;
--bg-deep: rgb(var(--deep-rgb));
--wood-light: #5b3b24;
--wood: #4a3020;
--wood-dark: #3e2819;
--outline: rgb(var(--outline-rgb));
--tan: rgb(var(--tan-rgb));
--tan-deep: #b9844a;
--parchment: rgb(var(--parchment-rgb));
--parchment-deep: #e2bd84;
--cream: rgb(var(--cream-rgb));
--muted: #cdb89a;
--ember-1: rgb(var(--gold-rgb));
--ember-2: rgb(var(--ember-rgb));
--ember-3: #e2521b;
--ember-ink: #2a1206;
--teal: rgb(var(--teal-rgb));
--teal-dark: #123c3a;
--teal-light: #bff6f1;
--sky: rgb(var(--sky-rgb));
--font-body: "Nunito", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
--font-display: "Russo One", "Nunito", system-ui, sans-serif;
--radius: 1.25rem;
--gutter: clamp(1rem, 4vw, 2.5rem);
--container: 75rem;
--header-h: 3.5rem;
--ring: inset 0 2px 0 rgba(255, 225, 180, .16);
--drop: 0 .4rem 0 rgba(0, 0, 0, .38), 0 1.1rem 2.4rem rgba(0, 0, 0, .45);
--wood-fill: linear-gradient(180deg, var(--wood-light) 0%, var(--wood) 45%, var(--wood-dark) 100%);
--frame-fill: linear-gradient(180deg, #74492b, #3c2517);
--parchment-fill: linear-gradient(180deg, #fbe9c6 0%, var(--parchment) 45%, var(--parchment-deep) 100%);
--ember-fill: linear-gradient(180deg, #ffe07a 0%, #ffbb45 26%, var(--ember-2) 60%, var(--ember-3) 100%);
--noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .95 0 0 0 0 .75 0 0 0 0 .5 .07 0 0 0 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
--diamond: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M10 1.8 18.2 10 10 18.2 1.8 10z' fill='%23d9a866' stroke='%232a170c' stroke-width='2.2' stroke-linejoin='round'/%3E%3Cpath d='M10 6.2 13.8 10 10 13.8 6.2 10z' fill='%23f1d7a8'/%3E%3C/svg%3E");
color-scheme: dark;
}
@media (min-width: 900px) {
:root { --header-h: 4.25rem; }
}
html:lang(zh) {
--font-body: "Nunito", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, sans-serif;
--font-display: "Russo One", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Source Han Sans SC", system-ui, sans-serif;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html {
-webkit-text-size-adjust: 100%;
text-size-adjust: 100%;
background: var(--bg);
scroll-padding-top: calc(var(--header-h) + 1rem);
scroll-padding-bottom: var(--consent-space, 0px);
}
html.has-modal { overflow: hidden; }
@media (prefers-reduced-motion: no-preference) {
html { scroll-behavior: smooth; }
}
body {
margin: 0;
min-height: 100vh;
overflow-x: clip;
background: var(--noise), var(--bg);
color: var(--cream);
font-family: var(--font-body);
font-size: clamp(1rem, .95rem + .22vw, 1.125rem);
line-height: 1.6;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
:lang(zh) body, body:lang(zh) { line-height: 1.8; }
img, video, svg { max-width: 100%; }
img, video { height: auto; }
p { margin: 0 0 1rem; }
h1, h2, h3, h4 { overflow-wrap: anywhere; text-wrap: balance; }
:lang(de) h1, :lang(de) h2, :lang(de) h3, :lang(de) h4, :lang(ru) h1, :lang(ru) h2, :lang(ru) h3, :lang(ru) h4 { hyphens: auto; }
a { color: var(--parchment); text-decoration-thickness: .08em; text-underline-offset: .2em; }
a:hover { color: #fff; }
strong { font-weight: 800; }
:focus-visible { outline: 3px solid var(--teal); outline-offset: 3px; }
main:focus { outline: none; }
.icon { width: 1.25em; height: 1.25em; flex: none; }
.visually-hidden {
position: absolute !important;
width: 1px; height: 1px;
margin: -1px; padding: 0; border: 0;
overflow: hidden;
clip: rect(0 0 0 0);
clip-path: inset(50%);
white-space: nowrap;
}
.skip-link {
position: fixed;
top: .75rem; left: .75rem;
z-index: 100;
padding: .6rem 1rem;
border: 3px solid var(--outline);
border-radius: .75rem;
background: var(--parchment);
color: var(--outline);
font-weight: 800;
text-decoration: none;
transform: translateY(-250%);
transition: transform .2s;
}
.skip-link:focus { transform: none; color: var(--outline); }
.container {
width: min(100% - 2 * var(--gutter), var(--container));
margin-inline: auto;
}
.section-title-text, .about-heading > span, .final-title, .legal-title, .notfound-code {
--o: max(2px, .05em);
text-shadow:
calc(var(--o) * -1) calc(var(--o) * -1) 0 var(--outline),
0 calc(var(--o) * -1) 0 var(--outline),
var(--o) calc(var(--o) * -1) 0 var(--outline),
var(--o) 0 0 var(--outline),
var(--o) var(--o) 0 var(--outline),
0 var(--o) 0 var(--outline),
calc(var(--o) * -1) var(--o) 0 var(--outline),
calc(var(--o) * -1) 0 0 var(--outline),
0 calc(var(--o) * 2.4) 0 var(--outline),
0 .18em .5em rgba(0, 0, 0, .45);
}
.btn {
--btn-shadow: var(--outline);
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
gap: .6em;
min-height: 3.25rem;
max-width: 100%;
padding: .55rem 1.3rem;
border: 3px solid var(--outline);
border-radius: 1rem;
color: var(--outline);
font-family: var(--font-display);
font-size: 1rem;
font-weight: 400;
line-height: 1.15;
letter-spacing: .02em;
text-align: center;
text-decoration: none;
text-transform: uppercase;
overflow-wrap: anywhere;
cursor: pointer;
box-shadow:
0 5px 0 var(--btn-shadow),
0 10px 22px rgba(0, 0, 0, .35),
inset 0 2px 0 rgba(255, 255, 255, .55),
inset 0 -4px 0 rgba(90, 40, 10, .22);
transition: transform .15s ease, box-shadow .15s ease, filter .15s ease, background-color .15s ease;
-webkit-tap-highlight-color: transparent;
}
.btn:hover { color: var(--outline); transform: translateY(-2px); box-shadow: 0 7px 0 var(--btn-shadow), 0 14px 26px rgba(0, 0, 0, .4), inset 0 2px 0 rgba(255, 255, 255, .6), inset 0 -4px 0 rgba(90, 40, 10, .22); }
.btn:active { transform: translateY(4px); box-shadow: 0 1px 0 var(--btn-shadow), 0 4px 10px rgba(0, 0, 0, .3), inset 0 2px 0 rgba(255, 255, 255, .4), inset 0 -2px 0 rgba(90, 40, 10, .2); }
.btn:focus-visible { outline: 3px solid var(--teal); outline-offset: 4px; }
:lang(zh) .btn { text-transform: none; letter-spacing: 0; font-weight: 700; }
.btn-label { min-width: 0; }
.btn-icon { display: inline-grid; place-items: center; flex: none; }
.btn-icon .icon { width: 1.4em; height: 1.4em; }
.btn-wishlist {
overflow: hidden;
padding-left: .55rem;
background: var(--ember-fill);
color: var(--ember-ink);
text-shadow: 0 1px 0 rgba(255, 236, 190, .55);
}
.btn-wishlist::after {
content: "";
position: absolute;
inset: -20% auto -20% -40%;
width: 30%;
background: linear-gradient(100deg, transparent, rgba(255, 255, 255, .55), transparent);
transform: skewX(-18deg) translateX(0);
pointer-events: none;
animation: shine 5.5s ease-in-out 2s infinite;
}
.btn-wishlist:hover {
color: var(--ember-ink);
filter: saturate(1.1) brightness(1.04);
box-shadow:
0 7px 0 var(--btn-shadow),
0 0 0 4px rgba(255, 190, 80, .28),
0 0 42px rgb(var(--ember-rgb) / .65),
inset 0 2px 0 rgba(255, 255, 255, .65),
inset 0 -4px 0 rgba(120, 40, 0, .25);
}
.btn-medallion {
width: 2.35em;
height: 2.35em;
margin-block: -.35em;
flex: none;
border-radius: 50%;
filter: drop-shadow(0 2px 0 rgb(var(--outline-rgb) / .55));
transition: transform .3s ease;
}
.btn-wishlist:hover .btn-medallion { transform: rotate(-14deg) scale(1.05); }
@keyframes shine {
0%, 70% { transform: skewX(-18deg) translateX(0); }
100% { transform: skewX(-18deg) translateX(560%); }
}
.btn-lg { min-height: 4rem; padding: .6rem 1.6rem .6rem .65rem; border-radius: 1.15rem; font-size: clamp(1.1rem, .98rem + .45vw, 1.3rem); }
.btn-xl { min-height: 4.6rem; padding: .7rem 2rem .7rem .75rem; border-radius: 1.3rem; font-size: clamp(1.2rem, 1rem + .8vw, 1.6rem); }
.btn-sm { min-height: 2.75rem; gap: .45em; padding: .3rem .85rem .3rem .3rem; border-radius: .8rem; font-size: .82rem; box-shadow: 0 3px 0 var(--btn-shadow), inset 0 2px 0 rgba(255, 255, 255, .55), inset 0 -3px 0 rgba(90, 40, 10, .22); }
.btn-sm:hover { box-shadow: 0 4px 0 var(--btn-shadow), 0 0 22px rgb(var(--ember-rgb) / .55), inset 0 2px 0 rgba(255, 255, 255, .6); }
.btn-sm:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--btn-shadow); }
.btn-sm .btn-medallion { width: 2em; height: 2em; margin-block: -.3em; }
.btn-sm .btn-label { white-space: nowrap; }
@media (max-width: 400px) {
.btn-sm { gap: .35em; padding-right: .6rem; font-size: .74rem; letter-spacing: 0; }
.btn-sm .btn-medallion { width: 1.85em; height: 1.85em; }
.header-logo { width: 4.6rem; }
.badge { font-size: .86rem; }
}
.btn-demo, .btn-choice {
background: var(--parchment-fill);
color: #3b2414;
}
.btn-demo .icon { color: #5a3a24; }
.btn-demo:hover, .btn-choice:hover { color: var(--outline); filter: brightness(1.05); }
.btn-ghost {
background: rgb(var(--deep-rgb) / .55);
border-color: rgb(var(--cream-rgb) / .85);
color: var(--cream);
box-shadow: 0 4px 0 rgba(0, 0, 0, .35);
-webkit-backdrop-filter: blur(6px);
backdrop-filter: blur(6px);
}
.btn-ghost:hover { color: #fff; border-color: #fff; background: rgb(var(--cream-rgb) / .14); box-shadow: 0 6px 0 rgba(0, 0, 0, .35); }
.btn-ghost:active { box-shadow: 0 1px 0 rgba(0, 0, 0, .35); }
.btn-icon-round { width: 1.85em; height: 1.85em; border-radius: 50%; background: var(--cream); color: var(--outline); }
.btn-icon-round .icon { width: 1em; height: 1em; margin-left: .14em; }
.cta-row {
display: flex;
flex-wrap: wrap;
align-items: center;
justify-content: center;
gap: 1.1rem 1.1rem;
}
@media (max-width: 599px) {
.cta-row { flex-direction: column; align-items: stretch; width: min(100%, 24rem); margin-inline: auto; }
}
.site-header {
position: fixed;
inset: 0 0 auto;
z-index: 50;
height: var(--header-h);
}
.site-header::before {
content: "";
position: absolute;
inset: 0;
border-bottom: 3px solid var(--outline);
background: linear-gradient(180deg, #5d3c25 0%, #462d1c 100%);
box-shadow: inset 0 -2px 0 rgb(var(--tan-rgb) / .45), inset 0 1px 0 rgba(255, 225, 180, .15), 0 8px 22px rgba(0, 0, 0, .45);
opacity: 0;
transition: opacity .3s ease;
}
.site-header.is-solid::before { opacity: 1; }
.site-header:has(.lang-menu:not([hidden])) { z-index: 75; }
.header-inner {
position: relative;
display: flex;
align-items: center;
gap: clamp(.5rem, 1.6vw, 1.5rem);
width: min(100% - 2 * var(--gutter), 90rem);
height: 100%;
margin-inline: auto;
}
.header-logo {
display: block;
flex: none;
width: clamp(5.25rem, 3.5rem + 6vw, 8.75rem);
line-height: 0;
transition: opacity .3s ease, transform .3s ease, visibility .3s;
}
.header-logo img { display: block; width: 100%; height: auto; filter: drop-shadow(0 2px 2px rgba(0, 0, 0, .4)); }
.site-header.is-over-hero:not(.is-solid) .header-logo { opacity: 0; visibility: hidden; transform: translateY(-.4rem); }
.header-nav { display: none; }
.header-nav ul { display: flex; gap: .15rem; margin: 0; padding: 0; list-style: none; }
.header-nav a {
display: block;
padding: .45rem .75rem;
border-radius: .6rem;
color: var(--cream);
font-size: .9rem;
font-weight: 800;
letter-spacing: .07em;
text-decoration: none;
text-transform: uppercase;
text-shadow: 0 2px 0 rgba(0, 0, 0, .45);
white-space: nowrap;
transition: background-color .2s, color .2s, box-shadow .2s;
}
:lang(zh) .header-nav a { letter-spacing: 0; }
.header-nav a:hover { background: rgba(0, 0, 0, .28); color: var(--parchment); }
.header-nav a.is-active { color: var(--parchment); box-shadow: inset 0 -3px 0 var(--ember-2); border-radius: .6rem .6rem .2rem .2rem; }
@media (min-width: 1040px) {
.header-nav { display: block; }
}
.is-over-hero:not(.is-solid) .header-nav ul {
padding: .25rem;
border: 2px solid rgb(var(--tan-rgb) / .5);
border-radius: .95rem;
background: rgb(var(--deep-rgb) / .72);
-webkit-backdrop-filter: blur(6px);
backdrop-filter: blur(6px);
}
.is-over-hero:not(.is-solid) :is(.header-nav a, .lang-btn, .btn-sm):focus-visible { box-shadow: 0 0 0 .55rem rgb(var(--deep-rgb) / .9); }
.header-actions { display: flex; align-items: center; gap: clamp(.4rem, 1.2vw, .75rem); margin-left: auto; }
.lang { position: relative; }
.lang-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: .4rem;
min-width: 2.75rem;
min-height: 2.75rem;
padding: .3rem .7rem;
border: 2px solid rgb(var(--tan-rgb) / .75);
border-radius: .8rem;
background: rgb(var(--deep-rgb) / .62);
color: var(--cream);
font: 800 .9rem/1 var(--font-body);
cursor: pointer;
transition: border-color .2s, background-color .2s;
}
.lang-btn:hover, .lang-btn[aria-expanded="true"] { border-color: var(--parchment); background: rgb(var(--deep-rgb) / .85); }
.lang-btn .icon { width: 1.25rem; height: 1.25rem; }
.lang-btn .icon-chevron { width: 1rem; height: 1rem; transition: transform .2s; }
.lang-btn[aria-expanded="true"] .icon-chevron { transform: rotate(180deg); }
.lang-current { white-space: nowrap; }
@media (max-width: 719px) {
.lang { position: static; }
.lang-btn { padding: 0; }
.lang-current, .lang-btn .icon-chevron { display: none; }
}
.lang-menu {
position: absolute;
top: calc(100% + .55rem);
right: 0;
z-index: 60;
width: max-content;
min-width: 14.5rem;
max-width: calc(100vw - 2rem);
max-height: calc(100vh - var(--header-h) - 1.5rem);
max-height: calc(100dvh - var(--header-h) - 1.5rem);
overflow: auto;
padding: .45rem;
border: 3px solid var(--outline);
border-radius: 1rem;
background: var(--wood-fill);
box-shadow: inset 0 0 0 2px rgb(var(--tan-rgb) / .3), var(--drop);
}
.lang-menu ul { display: grid; gap: 2px; margin: 0; padding: 0; list-style: none; }
.lang-menu a {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: .55rem .8rem;
border-radius: .6rem;
color: var(--cream);
font-weight: 700;
text-decoration: none;
}
.lang-menu a:hover, .lang-menu a:focus-visible { background: rgb(var(--parchment-rgb) / .15); color: #fff; }
.lang-menu a:focus-visible { outline-offset: -3px; }
.lang-menu a[aria-current] { background: var(--parchment-fill); color: var(--outline); font-weight: 800; }
.lang-menu .icon-check { width: 1.1rem; height: 1.1rem; stroke-width: 3; }
.hero {
position: relative;
isolation: isolate;
overflow: hidden;
padding-top: var(--header-h);
}
.hero-art {
position: relative;
aspect-ratio: 16 / 9;
background: linear-gradient(var(--sky), #6fc25a);
}
.hero-img { display: block; width: 100%; height: 100%; object-fit: cover; }
.hero-art::after {
content: "";
position: absolute;
inset: 0;
pointer-events: none;
background:
linear-gradient(to bottom, rgb(var(--bg-rgb) / .55) 0, rgb(var(--bg-rgb) / 0) 14%),
linear-gradient(to top, var(--bg) 0, rgb(var(--bg-rgb) / .6) 9%, rgb(var(--bg-rgb) / 0) 24%);
}
.hero-title {
position: absolute;
z-index: 2;
top: 5%;
left: 50%;
width: clamp(10rem, 48%, 28rem);
margin: 0;
line-height: 0;
transform: translateX(-50%);
filter: drop-shadow(0 6px 12px rgba(20, 50, 80, .35));
}
.hero-title img { display: block; width: 100%; height: auto; }
@media (prefers-reduced-motion: no-preference) {
.hero-title img { animation: float 6s ease-in-out infinite; }
}
@keyframes float {
0%, 100% { transform: translateY(0); }
50% { transform: translateY(-6px); }
}
.hero-content {
position: relative;
width: min(100% - 2 * var(--gutter), 62rem);
margin: .35rem auto 0;
padding-bottom: clamp(3rem, 7vw, 4rem);
text-align: center;
}
.hero-content > * { position: relative; z-index: 2; }
.hero-tagline {
max-width: 46rem;
margin: 0 auto 1.35rem;
color: var(--cream);
font-size: clamp(1rem, .92rem + .5vw, 1.25rem);
font-weight: 700;
line-height: 1.55;
text-wrap: pretty;
text-shadow: 0 2px 10px rgba(0, 0, 0, .75), 0 1px 2px rgba(0, 0, 0, .8);
}
.hero-badges {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: .55rem .65rem;
margin: 0 0 1.75rem;
padding: 0;
list-style: none;
}
.badge {
display: inline-flex;
align-items: center;
gap: .5rem;
padding: .38rem .95rem .38rem .75rem;
border: 2px solid rgb(var(--tan-rgb) / .6);
border-radius: 999px;
background: rgb(var(--deep-rgb) / .72);
color: var(--muted);
font-size: .92rem;
font-weight: 700;
line-height: 1.35;
-webkit-backdrop-filter: blur(6px);
backdrop-filter: blur(6px);
}
.badge strong { color: var(--parchment); font-weight: 800; }
.badge .icon { width: 1.15em; height: 1.15em; color: var(--tan); }
.badge-demo { border-color: rgb(var(--teal-rgb) / .65); color: #cdf5f1; }
.pulse-dot {
flex: none;
width: .6rem;
height: .6rem;
border-radius: 50%;
background: var(--teal);
box-shadow: 0 0 0 0 rgb(var(--teal-rgb) / .7);
}
@media (prefers-reduced-motion: no-preference) {
.pulse-dot { animation: pulse 2.2s ease-out infinite; }
}
@keyframes pulse {
0% { box-shadow: 0 0 0 0 rgb(var(--teal-rgb) / .7); }
70%, 100% { box-shadow: 0 0 0 .55rem rgb(var(--teal-rgb) / 0); }
}
@media (min-width: 900px) {
.hero {
--logo-top: calc(var(--header-h) + clamp(1.25rem, 2.6vw, 3.5rem));
--logo-w: clamp(24rem, 36vw, 46rem);
display: flex;
flex-direction: column;
justify-content: flex-end;
min-height: max(38rem, min(100svh, 62vw));
padding-top: 0;
}
.hero-art { position: absolute; inset: 0; aspect-ratio: auto; }
.hero-img { object-position: 50% 35%; }
.hero-art::after {
background:
linear-gradient(to bottom, rgb(var(--deep-rgb) / .55) 0, rgb(var(--deep-rgb) / 0) 9rem),
radial-gradient(ellipse 46% 34% at 50% 74%, rgb(var(--deep-rgb) / .62), rgb(var(--deep-rgb) / 0) 100%);
}
.hero-title { top: var(--logo-top); width: var(--logo-w); }
.hero-content {
margin-top: calc(var(--logo-top) + var(--logo-w) * .311 + 3rem);
padding-bottom: clamp(2.5rem, 6vh, 4.5rem);
}
.hero-content::before {
content: "";
position: absolute;
z-index: 0;
inset: -3rem calc(50% - 50vw) 0;
background: linear-gradient(rgb(var(--bg-rgb) / 0), rgb(var(--bg-rgb) / .55) 3rem, rgb(var(--bg-rgb) / .8) 11rem, var(--bg));
pointer-events: none;
}
}
.embers { position: absolute; inset: 0; z-index: 1; overflow: hidden; pointer-events: none; }
.embers span {
--size: 6px;
--dx: 30px;
position: absolute;
bottom: -12px;
left: 50%;
width: var(--size);
height: var(--size);
border-radius: 50%;
background: radial-gradient(circle, #fff6cf 0, var(--ember-1) 40%, rgb(var(--ember-rgb) / 0) 72%);
box-shadow: 0 0 10px 2px rgb(var(--ember-rgb) / .55);
opacity: 0;
animation: ember 9s linear infinite;
}
.embers span:nth-child(1) { left: 4%; --dx: 40px; animation-duration: 8s; animation-delay: -1s; }
.embers span:nth-child(2) { left: 13%; --size: 4px; --dx: -30px; animation-duration: 11s; animation-delay: -6s; }
.embers span:nth-child(3) { left: 21%; --dx: 25px; animation-duration: 9.5s; animation-delay: -3s; }
.embers span:nth-child(4) { left: 30%; --size: 5px; --dx: -45px; animation-duration: 12s; animation-delay: -8s; }
.embers span:nth-child(5) { left: 38%; --size: 3px; --dx: 20px; animation-duration: 8.5s; animation-delay: -2s; }
.embers span:nth-child(6) { left: 47%; --size: 7px; --dx: -20px; animation-duration: 10s; animation-delay: -5s; }
.embers span:nth-child(7) { left: 56%; --size: 4px; --dx: 35px; animation-duration: 9s; animation-delay: -7s; }
.embers span:nth-child(8) { left: 64%; --dx: -25px; animation-duration: 11.5s; animation-delay: -4s; }
.embers span:nth-child(9) { left: 72%; --size: 3px; --dx: 30px; animation-duration: 8s; animation-delay: -9s; }
.embers span:nth-child(10) { left: 80%; --size: 5px; --dx: -40px; animation-duration: 10.5s; animation-delay: -1.5s; }
.embers span:nth-child(11) { left: 88%; --dx: 15px; animation-duration: 9.2s; animation-delay: -6.5s; }
.embers span:nth-child(12) { left: 95%; --size: 4px; --dx: -30px; animation-duration: 12.5s; animation-delay: -3.5s; }
@keyframes ember {
0% { transform: translate3d(0, 0, 0) scale(1); opacity: 0; }
12% { opacity: .95; }
60% { opacity: .7; }
100% { transform: translate3d(var(--dx), -34rem, 0) scale(.35); opacity: 0; }
}
.hero-embers { top: auto; height: 60%; }
@media (max-width: 899px) {
.hero-embers { display: none; }
}
.section {
position: relative;
padding-block: clamp(3.75rem, 8vw, 6.5rem);
}
.section-about, .section-details { background: var(--noise), var(--bg-alt); }
.section-trailer::before, .section-screenshots::before {
content: "";
position: absolute;
inset: 12% 0 auto;
height: 70%;
background: radial-gradient(ellipse 55% 50% at 50% 50%, rgb(var(--ember-rgb) / .13), rgb(var(--ember-rgb) / 0) 70%);
pointer-events: none;
}
.section-screenshots::before { background: radial-gradient(ellipse 55% 50% at 50% 50%, rgb(var(--sky-rgb) / .08), rgb(var(--sky-rgb) / 0) 70%); }
.section > .container { position: relative; }
.section-title {
display: flex;
align-items: center;
justify-content: center;
gap: clamp(.6rem, 2vw, 1.25rem);
margin: 0 auto clamp(2.25rem, 4.5vw, 3.25rem);
color: var(--tan);
font-family: var(--font-display);
font-size: clamp(1.85rem, 1.25rem + 2.6vw, 3.25rem);
font-weight: 400;
line-height: 1.12;
letter-spacing: .02em;
text-align: center;
text-transform: uppercase;
}
.section-title::before, .section-title::after {
content: "";
flex: 1 1 0;
min-width: 1.5rem;
max-width: 8rem;
height: 1.1rem;
background:
var(--diamond) right center / 1.1rem 1.1rem no-repeat,
linear-gradient(90deg, rgb(var(--tan-rgb) / 0), var(--tan)) left center / calc(100% - 1rem) 3px no-repeat;
}
.section-title::after { transform: scaleX(-1); }
.section-title-text { min-width: 0; }
:lang(zh) .section-title, :lang(zh) .about-heading, :lang(zh) .final-title, :lang(zh) .legal-title, :lang(zh) .panel-title { text-transform: none; letter-spacing: 0; font-weight: 800; }
.divider {
position: relative;
z-index: 3;
display: flex;
align-items: center;
justify-content: center;
gap: 1rem;
width: min(100% - 2 * var(--gutter), 44rem);
height: 0;
margin-inline: auto;
}
.divider-line { flex: 1; height: 3px; border-radius: 3px; background: linear-gradient(90deg, rgb(var(--tan-rgb) / 0), rgb(var(--tan-rgb) / .7)); }
.divider-line:last-child { background: linear-gradient(270deg, rgb(var(--tan-rgb) / 0), rgb(var(--tan-rgb) / .7)); }
.divider .anvil {
flex: none;
width: 3.4rem;
height: auto;
color: var(--tan);
filter: drop-shadow(0 3px 0 rgba(0, 0, 0, .5)) drop-shadow(0 0 14px rgb(var(--ember-rgb) / .35));
}
.anvil .svg-body { stroke: var(--outline); }
.anvil .svg-shine { stroke: var(--parchment); }
.crystal .svg-body { fill: var(--teal); stroke: var(--teal-dark); }
.crystal .svg-shine { stroke: var(--teal-light); }
.media-frame {
position: relative;
padding: clamp(.4rem, .9vw, .65rem);
border: 3px solid var(--outline);
border-radius: var(--radius);
background: var(--frame-fill);
box-shadow: var(--ring), var(--drop);
}
.media-inner {
position: relative;
overflow: hidden;
border-radius: calc(var(--radius) - .55rem);
background: #000;
box-shadow: 0 0 0 2px rgb(var(--tan-rgb) / .65), 0 0 0 4px var(--outline);
}
.media-inner video { display: block; width: 100%; height: auto; background: #000; }
.trailer { max-width: 70rem; margin-inline: auto; }
.trailer-video { aspect-ratio: 16 / 9; }
.video-fallback { padding: 2rem; text-align: center; }
.trailer-cover {
position: absolute;
inset: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: clamp(.5rem, 1.5vw, 1rem);
width: 100%;
padding: 0;
border: 0;
background: #000;
color: var(--cream);
font: inherit;
cursor: pointer;
}
.trailer-cover img {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: cover;
transition: transform .7s ease, filter .3s ease;
}
.trailer-cover::after {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(ellipse at 50% 62%, rgba(0, 0, 0, .1), rgba(0, 0, 0, .4) 75%);
transition: opacity .3s;
}
.trailer-cover:hover img { transform: scale(1.03); filter: brightness(1.06); }
.trailer-cover:focus-visible { outline-offset: -6px; }
.play-badge {
position: relative;
z-index: 1;
display: grid;
place-items: center;
width: clamp(4.25rem, 10vw, 7rem);
aspect-ratio: 1;
margin-top: 12%;
border: 4px solid var(--outline);
border-radius: 50%;
background: var(--ember-fill);
color: var(--ember-ink);
box-shadow: 0 6px 0 var(--outline), 0 0 0 .55rem rgb(var(--gold-rgb) / .25), 0 0 3.5rem rgb(var(--ember-rgb) / .7), inset 0 3px 0 rgba(255, 255, 255, .55);
transition: transform .2s ease, box-shadow .2s ease;
}
.play-badge .icon { width: 46%; height: 46%; margin-left: 9%; }
.trailer-cover:hover .play-badge { transform: scale(1.08); box-shadow: 0 6px 0 var(--outline), 0 0 0 .8rem rgb(var(--gold-rgb) / .3), 0 0 4.5rem rgb(var(--ember-rgb) / .85), inset 0 3px 0 rgba(255, 255, 255, .6); }
@media (prefers-reduced-motion: no-preference) {
.play-badge::before {
content: "";
position: absolute;
inset: -4px;
border-radius: 50%;
border: 3px solid rgb(var(--gold-rgb) / .7);
animation: ring 2.4s ease-out infinite;
}
}
@keyframes ring {
0% { transform: scale(1); opacity: .9; }
100% { transform: scale(1.6); opacity: 0; }
}
.play-label {
position: relative;
z-index: 1;
padding: .3rem .9rem;
border-radius: 999px;
background: rgb(var(--deep-rgb) / .7);
font-family: var(--font-display);
font-size: clamp(.8rem, .7rem + .4vw, 1rem);
letter-spacing: .06em;
text-transform: uppercase;
}
:lang(zh) .play-label { text-transform: none; letter-spacing: 0; }
@media (max-width: 479px) {
.play-label { display: none; }
}
.about {
display: grid;
grid-template-columns: 1fr min(46rem, 100%) 1fr;
}
.about > * { grid-column: 2; }
.about > .clip, .about > .about-builds { grid-column: 1 / -1; justify-self: center; width: min(100%, 58rem); }
.about-question {
margin: 0 0 1.1rem;
color: var(--parchment);
font-size: clamp(1.45rem, 1.1rem + 1.4vw, 2.1rem);
font-weight: 900;
line-height: 1.3;
letter-spacing: -.005em;
text-shadow: 0 3px 0 var(--outline);
}
.about-intro { margin-bottom: 0; font-size: 1.1em; }
.about p { color: var(--cream); }
.clip { margin-block: clamp(2.25rem, 5vw, 3.25rem); }
.clip-video { aspect-ratio: 854 / 480; }
.about-builds { margin-block: .5rem 1rem; }
.about-heading {
display: flex;
align-items: center;
gap: .7rem;
margin: 0 0 .8rem;
color: var(--tan);
font-family: var(--font-display);
font-size: clamp(1.3rem, 1.05rem + 1vw, 1.8rem);
font-weight: 400;
line-height: 1.2;
letter-spacing: .02em;
text-transform: uppercase;
}
.about-heading > span { min-width: 0; }
.about-heading .crystal { width: .75em; height: 1.05em; flex: none; filter: drop-shadow(0 0 8px rgb(var(--teal-rgb) / .55)); }
.about-heading-center { display: block; margin-bottom: 1.5rem; text-align: center; }
.about-heading-center .crystal { display: inline-block; margin-right: .55rem; vertical-align: -.12em; }
.about-block { margin-top: clamp(2.25rem, 4vw, 3rem); }
.about-block p { margin: 0; }
.builds {
display: grid;
grid-template-columns: 1fr;
gap: 1.25rem;
margin: 0;
padding: 0;
list-style: none;
}
@media (min-width: 760px) {
.builds { grid-template-columns: 1fr 1fr; }
}
.build-card {
position: relative;
display: grid;
grid-template-columns: auto minmax(0, 1fr);
grid-template-rows: auto 1fr;
align-items: start;
column-gap: 1.1rem;
padding: 1.35rem 1.35rem 1.45rem;
border: 3px solid var(--outline);
border-radius: var(--radius);
background: var(--wood-fill);
box-shadow: var(--ring), var(--drop);
transition: transform .2s ease, box-shadow .2s ease;
}
.build-card::before, .panel::before, .consent::before {
content: "";
position: absolute;
inset: 6px;
border: 2px solid rgb(var(--tan-rgb) / .36);
border-radius: calc(var(--radius) - 6px);
pointer-events: none;
}
.build-card:hover { transform: translateY(-3px); box-shadow: var(--ring), 0 .6rem 0 rgba(0, 0, 0, .38), 0 1.4rem 2.6rem rgba(0, 0, 0, .5), 0 0 0 2px rgb(var(--gold-rgb) / .25); }
.medallion {
position: relative;
display: grid;
flex: none;
place-items: center;
width: clamp(4.25rem, 3.5rem + 2vw, 5rem);
aspect-ratio: 1;
border: 3px solid var(--outline);
border-radius: 50%;
background: radial-gradient(circle at 50% 32%, #fdebc8 0%, #ecc890 55%, #d3a265 100%);
box-shadow: inset 0 0 0 3px #f7dfb3, inset 0 0 0 5px rgba(120, 75, 35, .45), inset 0 -5px 0 rgba(120, 70, 30, .3), 0 4px 0 rgba(0, 0, 0, .35);
transition: transform .3s ease;
}
.medallion img { width: 64%; height: auto; filter: drop-shadow(0 2px 1px rgb(var(--outline-rgb) / .35)); }
.build-card:hover .medallion { transform: rotate(-8deg) scale(1.05); }
.build-body { display: contents; }
.build-card .medallion { grid-row: 1 / span 2; }
.build-card p { grid-column: 2; }
@media (max-width: 559px) {
.build-card { grid-template-rows: auto auto; align-items: center; }
.build-card .medallion { grid-row: 1; }
.build-card p { grid-column: 1 / -1; margin-top: .9rem; }
}
@media (max-width: 400px) {
.build-card { column-gap: .8rem; padding: 1.15rem 1.1rem 1.25rem; }
.build-card .medallion { width: 3.6rem; }
.build-title { font-size: 1rem; }
}
.build-title {
margin: .15rem 0 .4rem;
color: var(--parchment);
font-family: var(--font-display);
font-size: clamp(1.05rem, 1rem + .3vw, 1.2rem);
font-weight: 400;
line-height: 1.25;
text-wrap: pretty;
text-shadow: 0 2px 0 var(--outline);
}
:lang(zh) .build-title { font-weight: 800; }
.build-card p { margin: 0; color: var(--muted); font-size: .97em; line-height: 1.55; }
.about-outro {
margin: clamp(3rem, 6vw, 4.5rem) 0 0;
padding-top: clamp(2rem, 4vw, 2.75rem);
background: var(--diamond) center top / 1.4rem 1.4rem no-repeat;
color: var(--parchment);
font-size: clamp(1.5rem, 1.05rem + 1.9vw, 2.4rem);
font-weight: 900;
line-height: 1.25;
text-align: center;
text-wrap: balance;
text-shadow: 0 3px 0 var(--outline), 0 0 34px rgb(var(--ember-rgb) / .4);
}
.shots {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: clamp(.7rem, 1.6vw, 1.35rem);
margin: 0;
padding: 0;
list-style: none;
}
.shots > li:first-child { grid-column: 1 / -1; }
@media (min-width: 900px) {
.shots { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.shots > li:first-child { grid-column: auto; }
}
.shot {
position: relative;
display: block;
width: 100%;
padding: clamp(3px, .5vw, 6px);
border: 3px solid var(--outline);
border-radius: 1rem;
background: var(--frame-fill);
box-shadow: var(--ring), 0 .35rem 0 rgba(0, 0, 0, .38), 0 .8rem 1.6rem rgba(0, 0, 0, .35);
cursor: zoom-in;
transition: transform .2s ease, box-shadow .2s ease;
}
.shot img {
display: block;
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
object-fit: cover;
border-radius: .6rem;
box-shadow: 0 0 0 2px rgb(var(--tan-rgb) / .55);
}
.shot:hover { transform: translateY(-4px); box-shadow: var(--ring), 0 .6rem 0 rgba(0, 0, 0, .38), 0 1.2rem 2rem rgba(0, 0, 0, .45), 0 0 0 3px rgb(var(--gold-rgb) / .4); }
.shot-zoom {
position: absolute;
right: clamp(.6rem, 1.2vw, 1rem);
bottom: clamp(.6rem, 1.2vw, 1rem);
display: grid;
place-items: center;
width: 2.4rem;
height: 2.4rem;
border: 2px solid var(--outline);
border-radius: 50%;
background: var(--parchment-fill);
color: var(--outline);
opacity: 0;
transform: scale(.8);
transition: opacity .2s, transform .2s;
}
.shot-zoom .icon { width: 1.15rem; height: 1.15rem; }
.shot:hover .shot-zoom, .shot:focus-visible .shot-zoom { opacity: 1; transform: none; }
.lightbox {
width: 100%;
max-width: none;
height: 100%;
max-height: none;
margin: 0;
padding: 0;
border: 0;
overflow: hidden;
background: rgb(var(--deep-rgb) / .92);
color: var(--cream);
}
.lightbox::backdrop { background: rgb(var(--deep-rgb) / .6); }
.lightbox-stage {
position: absolute;
inset: 0;
display: grid;
place-items: center;
padding: 4.5rem clamp(.75rem, 7vw, 6rem) 4.5rem;
}
.lightbox-img {
display: block;
width: auto;
max-width: 100%;
height: auto;
max-height: calc(100vh - 9rem);
max-height: calc(100dvh - 9rem);
border: 3px solid var(--outline);
border-radius: .8rem;
box-shadow: 0 0 0 2px rgb(var(--tan-rgb) / .55), 0 2rem 4rem rgba(0, 0, 0, .6);
opacity: 0;
transition: opacity .25s ease;
user-select: none;
}
.lightbox-img.is-loaded { opacity: 1; }
.lightbox-counter {
position: absolute;
top: 1.2rem;
left: 50%;
margin: 0;
padding: .3rem 1rem;
border: 2px solid rgb(var(--tan-rgb) / .5);
border-radius: 999px;
background: rgb(var(--deep-rgb) / .8);
font-weight: 800;
transform: translateX(-50%);
}
.lightbox-btn {
position: absolute;
z-index: 1;
display: grid;
place-items: center;
width: 3rem;
height: 3rem;
padding: 0;
border: 3px solid var(--outline);
border-radius: 50%;
background: var(--parchment-fill);
color: var(--outline);
cursor: pointer;
box-shadow: 0 4px 0 rgba(0, 0, 0, .45), inset 0 2px 0 rgba(255, 255, 255, .5);
transition: transform .15s, filter .15s;
}
.lightbox-btn:hover { filter: brightness(1.07); }
.lightbox-btn .icon { width: 1.4rem; height: 1.4rem; stroke-width: 2.8; }
.lightbox-close { top: 1rem; right: 1rem; }
.lightbox-prev, .lightbox-next { top: 50%; transform: translateY(-50%); }
.lightbox-prev { left: clamp(.5rem, 2vw, 1.5rem); }
.lightbox-next { right: clamp(.5rem, 2vw, 1.5rem); }
@media (max-width: 699px) {
.lightbox-prev, .lightbox-next { top: auto; bottom: 1rem; transform: none; }
.lightbox-prev { left: calc(50% - 4rem); }
.lightbox-next { right: calc(50% - 4rem); }
}
.details-grid {
display: grid;
grid-template-columns: minmax(0, 1fr);
gap: 3.25rem clamp(1.25rem, 2.5vw, 2rem);
padding-top: 1rem;
}
@media (min-width: 880px) {
.details-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.panel-sysreq { grid-column: 1 / -1; }
}
.panel {
position: relative;
padding: 2.6rem clamp(1.1rem, 2.6vw, 2rem) clamp(1.4rem, 2.6vw, 2rem);
border: 3px solid var(--outline);
border-radius: var(--radius);
background: var(--wood-fill);
box-shadow: var(--ring), var(--drop);
}
.panel-title {
position: relative;
display: flex;
align-items: center;
gap: .7rem;
width: fit-content;
max-width: 100%;
margin: -4.05rem auto 1.6rem;
padding: .5rem 1rem;
border: 3px solid var(--outline);
border-radius: .85rem;
background: linear-gradient(180deg, #7e5232, var(--wood-light));
box-shadow: inset 0 2px 0 rgba(255, 225, 180, .25), 0 .3rem 0 rgba(0, 0, 0, .35);
color: var(--cream);
font-family: var(--font-display);
font-size: clamp(1.02rem, .95rem + .4vw, 1.25rem);
font-weight: 400;
line-height: 1.2;
letter-spacing: .03em;
text-align: center;
text-shadow: 0 2px 0 var(--outline);
text-transform: uppercase;
}
.panel-title::before, .panel-title::after {
content: "";
flex: none;
width: .75rem;
height: .75rem;
border: 2px solid var(--outline);
border-radius: 50%;
background: radial-gradient(circle at 40% 35%, #f6ddb0, var(--tan-deep) 75%);
}
.panel > :last-child { margin-bottom: 0; }
@media (max-width: 400px) {
.panel { padding-inline: .95rem; }
.panel-title { gap: .5rem; padding-inline: .7rem; font-size: .95rem; }
.panel-title::before, .panel-title::after { width: .6rem; height: .6rem; }
}
@media (max-width: 359px) {
.section-title { gap: .45rem; font-size: 1.5rem; }
.section-title::before, .section-title::after { min-width: .8rem; }
.panel-title { font-size: .88rem; }
.panel-title::before, .panel-title::after { display: none; }
}
.info-list { display: grid; margin: 0 0 1.5rem; }
.info-row {
display: grid;
grid-template-columns: minmax(6.5rem, 40%) minmax(0, 1fr);
gap: .25rem 1rem;
padding: .55rem .35rem;
border-bottom: 1px dashed rgb(var(--tan-rgb) / .28);
}
.info-row dt { color: var(--muted); font-weight: 700; }
.info-row dd { margin: 0; color: var(--cream); font-weight: 800; overflow-wrap: anywhere; }
@media (max-width: 419px) {
.info-row { grid-template-columns: minmax(0, 1fr); gap: 0; }
.info-row dt { font-size: .85em; }
}
.platform { display: inline-flex; align-items: center; gap: .45rem; }
.platform .icon { width: 1.05em; height: 1.05em; color: var(--sky); }
.mini-title {
margin: 1.6rem 0 .65rem;
color: var(--tan);
font-size: .8rem;
font-weight: 800;
letter-spacing: .09em;
line-height: 1.4;
text-transform: uppercase;
}
:lang(zh) .mini-title, :lang(zh) .sysreq-heading, :lang(zh) .lang-table thead th, :lang(zh) .footer-heading { letter-spacing: 0; font-size: .88rem; }
.feature-list { display: grid; gap: .45rem; margin: 0; padding: 0; list-style: none; }
.feature-list li {
display: flex;
align-items: center;
gap: .65rem;
padding: .55rem .8rem;
border-radius: .75rem;
background: rgb(var(--deep-rgb) / .32);
font-weight: 700;
}
.feature-list .icon { width: 1.35rem; height: 1.35rem; color: var(--teal); }
.tags { display: flex; flex-wrap: wrap; gap: .45rem; margin: 0; padding: 0; list-style: none; }
.tags li {
padding: .28rem .75rem;
border: 1.5px solid rgb(var(--tan-rgb) / .45);
border-radius: .6rem;
background: rgb(var(--parchment-rgb) / .08);
color: var(--parchment);
font-size: .88rem;
font-weight: 700;
}
.panel-langs { display: flex; flex-direction: column; }
.table-wrap { flex: 1; overflow-x: auto; }
.lang-table { width: 100%; height: 100%; border-collapse: collapse; font-size: .95rem; }
.lang-table th, .lang-table td { padding: .55rem .45rem; border-bottom: 1px solid rgb(var(--tan-rgb) / .18); text-align: center; }
.lang-table thead th {
color: var(--tan);
font-size: .72rem;
font-weight: 800;
letter-spacing: .06em;
line-height: 1.3;
text-transform: uppercase;
vertical-align: bottom;
hyphens: auto;
overflow-wrap: anywhere;
}
@media (max-width: 479px) {
.lang-table thead th:not(:first-child) { writing-mode: vertical-rl; transform: rotate(180deg); text-align: left; vertical-align: middle; padding: .5rem 0; }
}
@media (max-width: 559px) {
.lang-table { font-size: .9rem; }
.lang-table th, .lang-table td { padding: .5rem .3rem; }
.lang-table th[scope="row"] { padding-left: .45rem; }
.lang-table thead th { font-size: .62rem; letter-spacing: .01em; }
.lang-table thead th:first-child { padding-left: .45rem; }
}
.lang-table thead th:first-child, .lang-table th[scope="row"] { text-align: left; }
.lang-table th[scope="row"] { color: var(--cream); font-weight: 700; }
.lang-table tbody tr:nth-child(odd) { background: rgb(var(--deep-rgb) / .25); }
.lang-table tbody tr:last-child > * { border-bottom: 0; }
.lang-table .icon-check { width: 1.3rem; height: 1.3rem; color: var(--teal); stroke-width: 3; vertical-align: middle; }
.sysreq { display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem 2.5rem; }
@media (min-width: 700px) {
.sysreq { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.sysreq-heading { margin: 0 0 .7rem; color: var(--tan); font-size: .85rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; }
.sysreq ul { display: grid; gap: .45rem; margin: 0; padding: 0; list-style: none; color: var(--muted); }
.sysreq li { position: relative; padding-left: 1.1rem; }
.sysreq li::before { content: ""; position: absolute; left: 0; top: .62em; width: .45rem; height: .45rem; background: var(--tan); transform: rotate(45deg); border-radius: 1px; }
.sysreq li strong { color: var(--cream); }
.final-cta {
position: relative;
isolation: isolate;
overflow: hidden;
padding-block: clamp(5rem, 12vw, 9rem);
border-top: 3px solid var(--outline);
text-align: center;
}
.final-bg { position: absolute; inset: 0; z-index: -2; }
.final-bg img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 60%; }
.final-cta::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
background:
radial-gradient(ellipse 70% 60% at 50% 55%, rgb(var(--bg-rgb) / .45), rgb(var(--bg-rgb) / .9) 75%),
linear-gradient(to bottom, rgb(var(--bg-rgb) / .75), rgb(var(--bg-rgb) / 0) 30%, rgb(var(--bg-rgb) / 0) 70%, rgb(var(--deep-rgb) / .95));
}
.final-inner { position: relative; z-index: 2; }
.final-title {
margin: 0 0 .9rem;
color: var(--tan);
font-family: var(--font-display);
font-size: clamp(1.6rem, .6rem + 5.2vw, 4.75rem);
font-weight: 400;
line-height: 1.05;
letter-spacing: .02em;
text-transform: uppercase;
}
.final-text {
max-width: 36rem;
margin: 0 auto 2.5rem;
color: var(--cream);
font-size: clamp(1.1rem, 1rem + .5vw, 1.35rem);
font-weight: 700;
text-wrap: balance;
text-shadow: 0 2px 10px rgba(0, 0, 0, .8);
}
.site-footer {
position: relative;
overflow: hidden;
padding: clamp(3rem, 6vw, 4.5rem) 0 2.5rem;
border-top: 3px solid var(--outline);
background: var(--noise), var(--bg-deep);
color: var(--muted);
font-size: .95rem;
}
.footer-glow { position: absolute; inset: auto 0 0; height: 60%; background: radial-gradient(ellipse 50% 70% at 50% 100%, rgb(var(--ember-rgb) / .08), rgb(var(--ember-rgb) / 0)); pointer-events: none; }
.footer-inner {
position: relative;
display: grid;
justify-items: center;
gap: 2rem;
text-align: center;
}
@media (min-width: 900px) {
.footer-inner { grid-template-columns: auto 1fr; justify-items: stretch; align-items: center; text-align: left; }
.footer-links { justify-content: flex-end; }
}
.footer-brand { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 1.25rem; }
.footer-logo { display: block; line-height: 0; }
.footer-logo img { width: 9.5rem; height: auto; }
.publisher-badge {
display: inline-flex;
padding: .45rem .85rem;
border: 3px solid var(--outline);
border-radius: .9rem;
background: #fbf3e4;
box-shadow: inset 0 0 0 2px rgb(var(--tan-rgb) / .65), 0 .25rem 0 rgba(0, 0, 0, .45);
line-height: 0;
}
.publisher-badge img { width: 5.25rem; height: auto; }
.footer-links { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 1.6rem; margin: 0; padding: 0; list-style: none; }
.footer-link, .link-button {
display: inline-flex;
align-items: center;
min-height: 2.75rem;
padding: 0;
border: 0;
background: none;
color: var(--cream);
font: inherit;
font-weight: 800;
text-decoration: none;
cursor: pointer;
}
.footer-link:hover, .link-button:hover { color: var(--parchment); text-decoration: underline; text-decoration-color: var(--ember-2); text-decoration-thickness: 2px; }
.footer-langs { grid-column: 1 / -1; width: 100%; padding-top: 1.75rem; border-top: 1px solid rgb(var(--tan-rgb) / .2); }
.footer-heading { margin: 0 0 .75rem; color: var(--tan); font-size: .78rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.footer-langs ul, .notfound-langs { display: flex; flex-wrap: wrap; justify-content: center; gap: .4rem .45rem; margin: 0; padding: 0; list-style: none; }
@media (min-width: 900px) {
.footer-langs ul { justify-content: flex-start; }
}
.footer-langs a, .notfound-langs a {
display: inline-flex;
align-items: center;
min-height: 2.75rem;
padding: .2rem .8rem;
border: 1px solid rgb(var(--tan-rgb) / .3);
border-radius: .55rem;
color: var(--muted);
font-size: .9rem;
font-weight: 700;
text-decoration: none;
transition: background-color .2s, color .2s, border-color .2s;
}
.footer-langs a:hover, .notfound-langs a:hover { border-color: var(--tan); color: var(--cream); background: rgb(var(--parchment-rgb) / .08); }
.footer-langs a[aria-current] { border-color: var(--tan); background: var(--tan); color: var(--outline); }
.footer-legal { grid-column: 1 / -1; font-size: .85rem; }
.footer-legal p { margin: 0 0 .35rem; }
.footer-trademark { max-width: 52rem; color: #b6a286; font-size: .8rem; }
.consent {
position: fixed;
bottom: 1rem;
left: 1rem;
z-index: 70;
width: min(27rem, calc(100% - 2rem));
padding: 1.35rem 1.35rem 1.25rem;
border: 3px solid var(--outline);
border-radius: var(--radius);
background: var(--wood-fill);
box-shadow: var(--ring), 0 .4rem 0 rgba(0, 0, 0, .4), 0 1.25rem 3rem rgba(0, 0, 0, .65);
color: var(--cream);
}
.consent:focus { outline: none; }
.consent > * { position: relative; }
.consent-title { margin: 0 0 .45rem; color: var(--parchment); font-family: var(--font-display); font-size: 1.15rem; font-weight: 400; line-height: 1.25; text-shadow: 0 2px 0 var(--outline); }
:lang(zh) .consent-title { font-weight: 800; }
.consent-text { margin: 0 0 1.1rem; font-size: .92rem; line-height: 1.5; }
.consent-actions { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.btn-choice { min-height: 2.8rem; padding: .4rem .8rem; font-size: .9rem; box-shadow: 0 4px 0 var(--outline), inset 0 2px 0 rgba(255, 255, 255, .55); }
@media (max-width: 599px) {
.consent {
right: 0;
bottom: 0;
left: 0;
width: auto;
padding-bottom: calc(1.1rem + env(safe-area-inset-bottom));
border-bottom: 0;
border-radius: 1.15rem 1.15rem 0 0;
}
.consent::before { border-bottom: 0; border-radius: .9rem .9rem 0 0; bottom: 0; }
}
@media (max-width: 359px) {
.consent-actions { grid-template-columns: 1fr; }
}
.toast {
position: fixed;
bottom: 1.25rem;
left: 50%;
z-index: 80;
width: max-content;
max-width: calc(100vw - 2rem);
margin: 0;
padding: .55rem 1.15rem;
border: 3px solid var(--outline);
border-radius: 999px;
background: var(--parchment-fill);
box-shadow: 0 .3rem 0 rgba(0, 0, 0, .45);
color: var(--outline);
font-weight: 800;
text-align: center;
opacity: 0;
pointer-events: none;
transform: translate(-50%, 1rem);
transition: opacity .25s ease, transform .25s ease;
}
.toast.is-visible { opacity: 1; transform: translate(-50%, 0); }
.legal-main { padding: calc(var(--header-h) + clamp(2.5rem, 6vw, 4.5rem)) 0 clamp(3.5rem, 7vw, 5.5rem); }
.legal { max-width: 52rem; margin-inline: auto; padding: clamp(1.1rem, 4.5vw, 3.25rem); }
.legal-title { margin: 0 0 .5rem; color: var(--tan); font-family: var(--font-display); font-size: clamp(1.25rem, .75rem + 2.9vw, 3rem); font-weight: 400; line-height: 1.15; }
.legal-updated { margin: 0 0 1.6rem; color: var(--muted); font-size: .92rem; font-weight: 700; }
.legal-intro { font-size: 1.1em; }
.legal-section h2 { margin: 2.1rem 0 .6rem; color: var(--parchment); font-family: var(--font-display); font-size: clamp(1.15rem, 1.05rem + .5vw, 1.4rem); font-weight: 400; line-height: 1.25; text-shadow: 0 2px 0 var(--outline); }
:lang(zh) .legal-section h2 { font-weight: 800; }
.legal strong { color: #fff; }
.legal-back { margin-top: 2.5rem; }
.notfound {
display: grid;
min-height: 100vh;
min-height: 100svh;
place-items: center;
padding: 2rem var(--gutter);
background: radial-gradient(ellipse 60% 50% at 50% 45%, rgb(var(--ember-rgb) / .14), rgb(var(--ember-rgb) / 0) 70%);
}
.notfound-inner { width: min(100%, 38rem); padding: clamp(2rem, 5vw, 3rem) clamp(1.25rem, 4vw, 2.5rem); text-align: center; }
.notfound-logo { display: inline-block; line-height: 0; }
.notfound-logo img { width: min(17rem, 75vw); height: auto; }
.notfound-code { margin: 1.25rem 0 0; color: var(--ember-1); font-family: var(--font-display); font-size: clamp(4rem, 3rem + 6vw, 7rem); line-height: 1; }
.notfound-title { margin: .75rem 0 .5rem; color: var(--parchment); font-family: var(--font-display); font-size: clamp(1.5rem, 1.2rem + 1.3vw, 2.1rem); font-weight: 400; line-height: 1.2; text-transform: uppercase; }
.notfound-text { margin-bottom: 1.75rem; }
.notfound-langs { margin-top: 2rem; }
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after {
animation-duration: .01ms !important;
animation-iteration-count: 1 !important;
transition-duration: .01ms !important;
scroll-behavior: auto !important;
}
.embers, .btn-wishlist::after { display: none; }
}
@media (scripting: none) {
.site-header::before { opacity: 1; }
.site-header.is-over-hero:not(.is-solid) .header-logo { opacity: 1; visibility: visible; transform: none; }
.is-over-hero:not(.is-solid) .header-nav ul { border-color: transparent; background: none; }
.media-inner video { background: #000 center / cover no-repeat; }
.media-inner .trailer-video { background-image: url("/assets/img/keyart-logo-960.jpg"); }
.media-inner .clip-builds { background-image: url("/assets/img/clip-builds-poster.jpg"); }
.media-inner .clip-arsenal { background-image: url("/assets/img/clip-arsenal-poster.jpg"); }
}
@media print {
:root { color-scheme: light; }
*, *::before, *::after { background: transparent !important; color: #000 !important; box-shadow: none !important; text-shadow: none !important; }
.site-header, .skip-link, .consent, .toast, .embers, .divider, .footer-langs { display: none !important; }
.legal-main { padding-top: 0; }
.panel, .btn { border-color: #000; }
.panel::before { display: none; }
}
