forge / frontend /landing.css
juiceb0xc0de's picture
Add landing page at / (CTA enters app at /index.html)
cf92bd1
Raw
History Blame Contribute Delete
26.4 kB
/* ============================================================================
FORGE β€” landing page specific styles. Layered on top of styles.css
============================================================================ */
.lp {
min-height: 100vh;
position: relative;
z-index: 1;
}
.lp-shell {
max-width: 1180px;
margin: 0 auto;
padding: 0 32px;
}
/* ── Sticky top nav ───────────────────────────────────────────────────── */
.lp-nav {
position: sticky; top: 0;
z-index: 20;
background: linear-gradient(180deg, rgba(15,10,5,0.92) 0%, rgba(15,10,5,0.75) 100%);
backdrop-filter: blur(10px);
border-bottom: 1px solid rgba(212, 164, 68, 0.18);
box-shadow: 0 4px 16px rgba(0,0,0,0.5);
}
.lp-nav-inner {
max-width: 1180px;
margin: 0 auto;
padding: 14px 32px;
display: flex; align-items: center; gap: 24px;
}
.lp-nav .brand {
display: flex; align-items: center; gap: 12px;
}
.lp-nav .brand .mark {
width: 32px; height: 32px;
display: grid; place-items: center;
background: radial-gradient(circle at 50% 65%, #4a1c0a 0%, #0f0805 70%);
border: 1px solid #5a3010;
box-shadow: inset 0 0 12px rgba(255, 106, 31, 0.55), 0 0 10px rgba(255,106,31,0.20);
}
.lp-nav .brand .name {
font-family: var(--f-display);
font-size: 22px;
font-weight: 600;
letter-spacing: 0.18em;
color: #f6e4c8;
text-shadow: 0 1px 0 #000, 0 0 8px rgba(255, 138, 61, 0.25);
}
.lp-nav .links {
margin-left: auto;
display: flex; align-items: center; gap: 24px;
font-family: var(--f-display);
font-size: 11px;
letter-spacing: 0.22em;
text-transform: uppercase;
}
.lp-nav .links a {
color: var(--bone-3);
text-decoration: none;
padding: 6px 0;
border-bottom: 1px solid transparent;
transition: color 160ms ease, border 160ms ease;
}
.lp-nav .links a:hover { color: var(--brass-1); border-bottom-color: var(--brass-1); }
.lp-nav .cta-mini {
font-family: var(--f-display);
font-size: 11px;
letter-spacing: 0.22em;
text-transform: uppercase;
padding: 8px 16px;
color: #fff5e8;
background: linear-gradient(180deg, #ff8a3d 0%, #c46822 100%);
border: 1px solid #6a2a08;
text-decoration: none;
box-shadow: inset 0 1px 0 rgba(255,255,255,0.25), 0 2px 6px rgba(0,0,0,0.5), 0 0 8px var(--ember-glow);
}
.lp-nav .cta-mini:hover {
background: linear-gradient(180deg, #ffba5e 0%, #ff8a3d 100%);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.35), 0 2px 8px rgba(0,0,0,0.6), 0 0 16px var(--ember-1);
}
/* ── Hero ─────────────────────────────────────────────────────────────── */
.lp-hero {
padding: 90px 0 100px;
position: relative;
display: grid;
grid-template-columns: 1.15fr 1fr;
gap: 60px;
align-items: center;
}
.lp-hero::before {
/* ember bloom under the hero */
content: "";
position: absolute; left: 50%; bottom: -40px;
width: 80%; height: 220px;
transform: translateX(-50%);
background: radial-gradient(ellipse at 50% 100%, rgba(255, 106, 31, 0.18), transparent 60%);
pointer-events: none;
}
.lp-eyebrow {
font-family: var(--f-mono);
font-size: 11px;
letter-spacing: 0.30em;
text-transform: uppercase;
color: var(--brass-2);
margin-bottom: 22px;
display: inline-flex; align-items: center; gap: 12px;
}
.lp-eyebrow::before, .lp-eyebrow::after {
content: "";
display: inline-block;
width: 28px; height: 1px;
background: linear-gradient(90deg, transparent, var(--brass-2));
}
.lp-eyebrow::after { background: linear-gradient(90deg, var(--brass-2), transparent); }
.lp-title {
font-family: var(--f-display);
font-size: 92px;
font-weight: 600;
line-height: 0.92;
letter-spacing: 0.04em;
color: #f6e4c8;
margin: 0 0 28px;
text-shadow:
0 1px 0 #000,
0 2px 0 #000,
0 0 24px rgba(255, 138, 61, 0.25);
}
.lp-title em {
font-style: normal;
background: linear-gradient(180deg, #ffba5e 0%, #ff6a1f 70%, #8a3010 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
display: inline-block;
}
.lp-subtitle {
font-family: var(--f-serif);
font-style: italic;
font-size: 22px;
line-height: 1.45;
color: var(--bone-2);
margin: 0 0 38px;
max-width: 540px;
letter-spacing: 0.005em;
}
.lp-subtitle strong {
color: var(--brass-1);
font-style: normal;
font-weight: 500;
letter-spacing: 0.02em;
}
.lp-cta-row {
display: flex; align-items: center; gap: 18px;
margin-top: 8px;
}
.lp-cta-primary {
font-family: var(--f-display);
font-size: 13px;
letter-spacing: 0.26em;
text-transform: uppercase;
padding: 16px 28px;
color: #fff5e8;
background: linear-gradient(180deg, #ff8a3d 0%, #c46822 100%);
border: 1px solid #2a1a08;
text-decoration: none;
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.30),
inset 0 -2px 0 rgba(0,0,0,0.30),
0 4px 14px rgba(0,0,0,0.5),
0 0 16px var(--ember-glow);
position: relative;
transition: transform 120ms ease, box-shadow 200ms ease;
cursor: pointer;
display: inline-flex; align-items: center; gap: 12px;
}
.lp-cta-primary::before, .lp-cta-primary::after {
content: "";
position: absolute; top: 50%; transform: translateY(-50%);
width: 6px; height: 6px;
background: #ffba5e;
box-shadow: 0 0 6px #ffba5e;
}
.lp-cta-primary::before { left: -3px; }
.lp-cta-primary::after { right: -3px; }
.lp-cta-primary:hover {
transform: translateY(-1px);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.40),
inset 0 -2px 0 rgba(0,0,0,0.30),
0 6px 18px rgba(0,0,0,0.55),
0 0 28px var(--ember-1);
}
.lp-cta-secondary {
font-family: var(--f-display);
font-size: 12px;
letter-spacing: 0.22em;
text-transform: uppercase;
padding: 16px 22px;
color: var(--bone-2);
background: transparent;
border: 1px solid var(--steel-2);
text-decoration: none;
}
.lp-cta-secondary:hover { color: var(--bone-1); border-color: var(--brass-2); }
/* ── Hero right: floating anvil + mini graph demo ────────────────────── */
.lp-hero-art {
position: relative;
min-height: 480px;
display: grid;
place-items: center;
}
.lp-hero-art::before {
/* glowing forge ring behind the demo */
content: "";
position: absolute;
width: 480px; height: 480px;
border-radius: 50%;
background:
radial-gradient(circle at 50% 60%, rgba(255, 106, 31, 0.18) 0%, transparent 60%);
pointer-events: none;
}
.lp-hero-art::after {
content: "";
position: absolute;
width: 360px; height: 360px;
border-radius: 50%;
border: 1px dashed rgba(212, 164, 68, 0.18);
animation: gentle-rotate 60s linear infinite;
}
.demo-svg {
position: relative;
width: 460px; height: 460px;
display: block;
}
/* ── Sections ─────────────────────────────────────────────────────────── */
section.lp-section { padding: 80px 0; position: relative; scroll-margin-top: 80px; }
.lp-section + .lp-section { border-top: 1px solid rgba(212, 164, 68, 0.08); }
.lp-section-head {
text-align: center;
margin-bottom: 56px;
}
.lp-section-eyebrow {
font-family: var(--f-mono);
font-size: 11px;
letter-spacing: 0.30em;
text-transform: uppercase;
color: var(--brass-1);
margin-bottom: 14px;
}
.lp-section-title {
font-family: var(--f-display);
font-size: 44px;
font-weight: 500;
letter-spacing: 0.03em;
color: #f6e4c8;
margin: 0 0 14px;
text-shadow: 0 1px 0 #000;
}
.lp-section-sub {
font-family: var(--f-serif);
font-style: italic;
font-size: 17px;
line-height: 1.5;
color: var(--bone-3);
max-width: 620px;
margin: 0 auto;
}
/* What it does β€” three carved tablets */
.lp-tablets {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 24px;
}
.lp-tablet {
position: relative;
padding: 38px 28px 32px;
background:
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='p'><feTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='2' stitchTiles='stitch' seed='5'/><feColorMatrix values='0 0 0 0 0.30 0 0 0 0 0.22 0 0 0 0 0.12 0 0 0 0.14 0'/></filter><rect width='100%25' height='100%25' filter='url(%23p)'/></svg>"),
linear-gradient(180deg, rgba(40,30,18,0.45) 0%, rgba(15,12,8,0.85) 100%);
background-blend-mode: overlay, normal;
border: 1px solid rgba(70, 50, 28, 0.7);
border-top: 2px solid var(--brass-2);
box-shadow:
inset 0 1px 0 rgba(255,255,255,0.04),
0 8px 24px rgba(0,0,0,0.5);
}
.lp-tablet::before, .lp-tablet::after {
/* brass corner ornaments top-left + top-right */
content: "";
position: absolute; top: -1px;
width: 8px; height: 8px;
border: 2px solid var(--brass-2);
}
.lp-tablet::before { left: -1px; border-right: none; border-bottom: none; }
.lp-tablet::after { right: -1px; border-left: none; border-bottom: none; }
.lp-tablet-icon {
width: 56px; height: 56px;
margin-bottom: 22px;
display: grid; place-items: center;
border: 1px solid rgba(212, 164, 68, 0.30);
background:
radial-gradient(circle at 50% 35%, rgba(255, 138, 61, 0.18) 0%, rgba(0,0,0,0) 70%),
#0a0805;
color: var(--brass-1);
position: relative;
}
.lp-tablet-icon::before, .lp-tablet-icon::after {
/* corner ornaments */
content: "";
position: absolute;
width: 4px; height: 4px;
border: 1px solid var(--brass-2);
}
.lp-tablet-icon::before { top: -1px; left: -1px; border-right: none; border-bottom: none; }
.lp-tablet-icon::after { bottom: -1px; right: -1px; border-left: none; border-top: none; }
.lp-tablet-num {
position: absolute; top: 18px; right: 22px;
font-family: var(--f-display);
font-size: 38px;
font-weight: 600;
color: rgba(212, 164, 68, 0.20);
letter-spacing: 0.02em;
line-height: 1;
}
.lp-tablet h3 {
font-family: var(--f-display);
font-size: 22px;
font-weight: 500;
letter-spacing: 0.02em;
margin: 0 0 12px;
color: #fff5e8;
}
.lp-tablet p {
font-family: var(--f-serif);
font-size: 15px;
line-height: 1.55;
color: var(--bone-2);
margin: 0;
}
.lp-tablet p em {
color: var(--brass-1);
font-style: italic;
}
/* How to use β€” alternating numbered rows */
.lp-steps { display: flex; flex-direction: column; gap: 60px; }
.lp-step {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 60px;
align-items: center;
}
.lp-step:nth-child(even) .lp-step-text { order: 2; }
.lp-step:nth-child(even) .lp-step-art { order: 1; }
.lp-step-num {
display: inline-block;
font-family: var(--f-display);
font-size: 13px;
letter-spacing: 0.30em;
text-transform: uppercase;
color: var(--brass-1);
padding-bottom: 8px;
margin-bottom: 14px;
border-bottom: 1px solid var(--brass-2);
}
.lp-step h3 {
font-family: var(--f-display);
font-size: 36px;
font-weight: 500;
letter-spacing: 0.02em;
margin: 0 0 18px;
color: #fff5e8;
line-height: 1.05;
}
.lp-step p {
font-family: var(--f-serif);
font-size: 16.5px;
line-height: 1.6;
color: var(--bone-2);
margin: 0 0 14px;
max-width: 460px;
}
.lp-step .quote {
font-family: var(--f-serif);
font-style: italic;
font-size: 13px;
color: var(--bone-3);
border-left: 2px solid var(--brass-2);
padding-left: 14px;
margin: 18px 0 0;
max-width: 460px;
}
.lp-step-art {
position: relative;
min-height: 320px;
display: grid; place-items: center;
background:
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='p'><feTurbulence type='fractalNoise' baseFrequency='0.65' numOctaves='2' stitchTiles='stitch' seed='9'/><feColorMatrix values='0 0 0 0 0.25 0 0 0 0 0.20 0 0 0 0 0.10 0 0 0 0.10 0'/></filter><rect width='100%25' height='100%25' filter='url(%23p)'/></svg>"),
linear-gradient(180deg, rgba(20,14,10,0.6) 0%, rgba(8,6,4,0.85) 100%);
background-blend-mode: overlay, normal;
border: 1px solid rgba(60, 42, 22, 0.6);
padding: 32px;
}
/* Tier system explainer */
.lp-tiers {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 22px;
}
.lp-tier {
padding: 30px 26px;
background: linear-gradient(180deg, rgba(20,14,10,0.5) 0%, rgba(8,6,4,0.8) 100%);
border: 1px solid rgba(60, 42, 22, 0.7);
border-left: 3px solid var(--lp-tier-color, var(--brass-2));
position: relative;
}
.lp-tier-1 { --lp-tier-color: var(--brass-1); }
.lp-tier-2 { --lp-tier-color: var(--brass-2); }
.lp-tier-3 { --lp-tier-color: var(--brass-3); }
.lp-tier-coin {
width: 48px; height: 48px;
border-radius: 50%;
margin-bottom: 18px;
border: 1px solid rgba(0,0,0,0.5);
box-shadow: inset 0 1px 0 rgba(255,255,255,0.18), 0 1px 3px rgba(0,0,0,0.6);
display: grid; place-items: center;
font-family: var(--f-display);
font-size: 17px;
font-weight: 700;
color: var(--coal-0);
letter-spacing: 0.02em;
}
.lp-tier-1 .lp-tier-coin { background: radial-gradient(circle at 35% 30%, #ffd09a, #ff8a3d 50%, #6a2a08); box-shadow: 0 0 14px var(--tier1-glow), inset 0 1px 0 rgba(255,255,255,0.25); }
.lp-tier-2 .lp-tier-coin { background: radial-gradient(circle at 35% 30%, #b8d4f0, #5b9bd8 50%, #1c3a5a); box-shadow: 0 0 8px var(--tier2-glow), inset 0 1px 0 rgba(255,255,255,0.22); }
.lp-tier-3 .lp-tier-coin { background: radial-gradient(circle at 35% 30%, #cac4b6, #9a9285 50%, #3a3528); box-shadow: 0 0 4px var(--tier3-glow), inset 0 1px 0 rgba(255,255,255,0.18); }
.lp-tier-label {
font-family: var(--f-display);
font-size: 13px;
letter-spacing: 0.24em;
text-transform: uppercase;
color: var(--lp-tier-color);
margin-bottom: 6px;
}
.lp-tier h4 {
font-family: var(--f-display);
font-size: 22px;
font-weight: 500;
margin: 0 0 14px;
color: #fff5e8;
letter-spacing: 0.01em;
}
.lp-tier p {
font-family: var(--f-serif);
font-size: 14.5px;
line-height: 1.55;
color: var(--bone-2);
margin: 0 0 14px;
}
.lp-tier .example {
font-family: var(--f-mono);
font-size: 10.5px;
letter-spacing: 0.02em;
color: var(--bone-4);
padding: 8px 10px;
background: var(--coal-0);
border-left: 2px solid var(--lp-tier-color);
}
/* Scraper / live data section */
.lp-scraper {
display: grid;
grid-template-columns: 1.1fr 1fr;
gap: 60px;
align-items: center;
}
.lp-scraper p { font-family: var(--f-serif); font-size: 16px; line-height: 1.6; color: var(--bone-2); max-width: 520px; }
.lp-scraper p em { font-style: italic; color: var(--brass-2); }
.lp-pipeline {
display: flex; flex-direction: column; gap: 10px;
padding: 24px;
background: var(--coal-0);
border: 1px solid rgba(60, 42, 22, 0.6);
font-family: var(--f-mono);
font-size: 11.5px;
position: relative;
}
.lp-pipeline::before {
content: "scraper.log";
position: absolute; top: -10px; left: 16px;
background: var(--coal-0);
padding: 0 8px;
font-family: var(--f-display);
font-size: 10px;
letter-spacing: 0.20em;
text-transform: uppercase;
color: var(--brass-2);
}
.lp-pipeline-step {
display: grid;
grid-template-columns: auto 1fr auto;
gap: 12px;
padding: 8px 0;
border-bottom: 1px solid rgba(60,42,22,0.4);
color: var(--bone-2);
}
.lp-pipeline-step:last-child { border-bottom: none; }
.lp-pipeline-step .arrow { color: var(--ember-2); }
.lp-pipeline-step .src { color: var(--brass-2); }
.lp-pipeline-step .tier {
font-family: var(--f-display);
font-size: 9px;
padding: 1px 5px;
letter-spacing: 0.12em;
color: var(--coal-0);
text-transform: uppercase;
font-weight: 600;
}
.lp-pipeline-step .tier.t1 { background: var(--brass-1); }
.lp-pipeline-step .tier.t2 { background: var(--brass-2); color: #fff; }
.lp-pipeline-step .tier.t3 { background: var(--brass-3); }
/* Final CTA strip */
.lp-finale {
padding: 120px 0;
text-align: center;
position: relative;
}
.lp-finale::before {
content: "";
position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
width: 700px; height: 200px;
background: radial-gradient(ellipse, rgba(255, 106, 31, 0.18) 0%, transparent 70%);
pointer-events: none;
}
.lp-finale-title {
font-family: var(--f-display);
font-size: 64px;
font-weight: 500;
letter-spacing: 0.04em;
margin: 0 0 14px;
color: #f6e4c8;
position: relative;
text-shadow: 0 2px 0 #000, 0 0 22px rgba(255, 138, 61, 0.30);
}
.lp-finale-sub {
font-family: var(--f-serif);
font-style: italic;
font-size: 18px;
color: var(--bone-3);
margin: 0 0 38px;
position: relative;
}
.lp-finale .lp-cta-primary { font-size: 14px; padding: 18px 36px; }
.lp-foot {
border-top: 1px solid rgba(212, 164, 68, 0.10);
padding: 28px 0 40px;
text-align: center;
font-family: var(--f-mono);
font-size: 10.5px;
letter-spacing: 0.12em;
color: var(--bone-4);
}
.lp-foot a { color: var(--bone-3); text-decoration: none; border-bottom: 1px dotted var(--bone-4); }
/* ── Hero mini demo: 5 nodes, cyclic state animation ─────────────────── */
.demo-svg .lp-node { cursor: default; }
.demo-svg .lp-aura { fill: none; stroke: none; opacity: 0; }
.demo-svg .lp-frame-outer { fill: none; stroke: #2a2017; stroke-width: 2.2; }
.demo-svg .lp-plate { fill: var(--coal-2); stroke: rgba(0,0,0,0.5); stroke-width: 1.5; }
.demo-svg .lp-gem { fill: var(--type-color, #5fb3d4); opacity: 0.18; }
.demo-svg .lp-frame { fill: none; stroke: #6b5026; stroke-width: 1.2; }
.demo-svg .lp-stud { fill: #8a6a32; stroke: #2a2017; stroke-width: 0.6; }
.demo-svg .lp-icon { transition: stroke 240ms ease, opacity 240ms ease; opacity: 0.9; }
.demo-svg .lp-ribbon { fill: rgba(11,14,19,0.85); stroke: rgba(107, 80, 38, 0.7); stroke-width: 0.7; }
.demo-svg .lp-name {
fill: var(--bone-1);
font-family: var(--f-display);
font-size: 11.5px;
font-weight: 500;
letter-spacing: 0.04em;
}
.demo-svg .lp-lock { opacity: 0; transition: opacity 320ms ease; }
.demo-svg .lp-chip { opacity: 0; transition: opacity 320ms ease; }
/* type-color slots per node */
.demo-svg .lp-center { --type-color: var(--t-technique); }
.demo-svg .lp-outer-1 { --type-color: var(--t-technique); }
.demo-svg .lp-outer-2 { --type-color: var(--t-quantization); }
.demo-svg .lp-outer-3 { --type-color: var(--t-technique); }
.demo-svg .lp-outer-4 { --type-color: var(--t-architecture); }
.demo-svg .lp-outer-5 { --type-color: var(--t-technique); }
/* edges: base curves */
.demo-svg .lp-edge { fill: none; stroke-linecap: round; }
.demo-svg .lp-edge-breaks { stroke: rgba(200,64,60,0.4); stroke-width: 1.4; }
.demo-svg .lp-edge-requires,
.demo-svg .lp-edge-requires-2 { stroke: rgba(255,160,60,0.35); stroke-width: 1.4; }
.demo-svg .lp-edge-compatible,
.demo-svg .lp-edge-compatible-2 { stroke: rgba(212,164,68,0.20); stroke-width: 1.0; }
/* center β†’ selected (red-hot) */
.demo-svg .lp-center .lp-plate { animation: lp-plate-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-frame { animation: lp-frame-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-frame-outer { animation: lp-frame-outer-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-aura { animation: lp-aura-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-stud { animation: lp-stud-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-gem { animation: lp-gem-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-icon { animation: lp-icon-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-name { animation: lp-name-select 8s ease-in-out infinite; }
.demo-svg .lp-center .lp-ribbon { animation: lp-ribbon-select 8s ease-in-out infinite; }
@keyframes lp-plate-select {
0%, 12%, 92%, 100% { fill: var(--coal-2); filter: none; }
18%, 86% { fill: url(#lp-molten); filter: url(#lp-ember); }
}
@keyframes lp-frame-select {
0%, 12%, 92%, 100% { stroke: #6b5026; stroke-width: 1.2; }
18%, 86% { stroke: #d4a049; stroke-width: 1.5; }
}
@keyframes lp-frame-outer-select {
0%, 12%, 92%, 100% { stroke: #2a2017; }
18%, 86% { stroke: #3a1a08; }
}
@keyframes lp-aura-select {
0%, 12%, 92%, 100% { opacity: 0; stroke: var(--ember-1); stroke-width: 1.5; fill: none; }
18% { opacity: 1; stroke: var(--ember-1); stroke-width: 2; fill: none; }
50% { opacity: 0.4; stroke: var(--ember-1); stroke-width: 4; fill: none; }
86% { opacity: 1; stroke: var(--ember-1); stroke-width: 2; fill: none; }
}
@keyframes lp-stud-select {
0%, 12%, 92%, 100% { fill: #8a6a32; stroke: #2a2017; }
18%, 86% { fill: #d4a049; stroke: #3a1a08; }
}
@keyframes lp-gem-select {
0%, 12%, 92%, 100% { fill: var(--type-color); opacity: 0.18; }
18%, 86% { fill: var(--ember-1); opacity: 0.55; }
}
@keyframes lp-icon-select {
0%, 12%, 92%, 100% { stroke: var(--type-color); opacity: 0.9; }
18%, 86% { stroke: #fff5e8; opacity: 1; }
}
@keyframes lp-name-select {
0%, 12%, 92%, 100% { fill: var(--bone-1); }
18%, 86% { fill: #fff5e8; }
}
@keyframes lp-ribbon-select {
0%, 12%, 92%, 100% { fill: rgba(11,14,19,0.85); stroke: rgba(107, 80, 38, 0.7); }
18%, 86% { fill: rgba(40,15,5,0.92); stroke: #d4a049; }
}
/* outer-1: BLOCKED */
.demo-svg .lp-outer-1 .lp-plate { animation: lp-plate-block 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-frame { animation: lp-frame-block 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-icon { animation: lp-icon-block 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-aura { animation: lp-aura-block 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-stud { animation: lp-stud-block 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-gem { animation: lp-gem-fade 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-name { animation: lp-name-block 8s ease-in-out infinite; }
.demo-svg .lp-outer-1 .lp-lock { animation: lp-lock-show 8s ease-in-out infinite; }
@keyframes lp-plate-block {
0%, 12%, 92%, 100% { fill: var(--coal-2); filter: none; opacity: 1; }
18%, 86% { fill: var(--coal-1); filter: grayscale(100%) brightness(0.55); opacity: 0.55; }
}
@keyframes lp-frame-block {
0%, 12%, 92%, 100% { stroke: #6b5026; }
18%, 86% { stroke: var(--rust-2); }
}
@keyframes lp-icon-block {
0%, 12%, 92%, 100% { stroke: var(--type-color); opacity: 0.9; }
18%, 86% { stroke: var(--rust); opacity: 0.45; }
}
@keyframes lp-aura-block {
0%, 12%, 92%, 100% { opacity: 0; }
18%, 86% { opacity: 0.85; stroke: var(--rust); stroke-width: 1.2; fill: none; }
}
@keyframes lp-stud-block {
0%, 12%, 92%, 100% { fill: #8a6a32; }
18%, 86% { fill: var(--rust-2); }
}
@keyframes lp-gem-fade {
0%, 12%, 92%, 100% { opacity: 0.18; }
18%, 86% { opacity: 0; }
}
@keyframes lp-name-block {
0%, 12%, 92%, 100% { fill: var(--bone-1); }
18%, 86% { fill: var(--rust); opacity: 0.7; }
}
@keyframes lp-lock-show {
0%, 14%, 92%, 100% { opacity: 0; }
20%, 86% { opacity: 1; }
}
/* outer-2: CONDITIONAL ("needs Β· add") */
.demo-svg .lp-outer-2 .lp-plate { animation: lp-plate-cond 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-frame { animation: lp-frame-cond 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-icon { animation: lp-icon-cond 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-aura { animation: lp-aura-cond 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-stud { animation: lp-stud-cond 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-gem { animation: lp-gem-fade 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-name { animation: lp-name-cond 8s ease-in-out infinite; }
.demo-svg .lp-outer-2 .lp-chip { animation: lp-chip-show 8s ease-in-out infinite; }
@keyframes lp-plate-cond {
0%, 12%, 92%, 100% { fill: var(--coal-2); filter: none; opacity: 1; }
18%, 86% { fill: var(--coal-1); filter: grayscale(85%) brightness(0.7); opacity: 0.55; }
}
@keyframes lp-frame-cond {
0%, 12%, 92%, 100% { stroke: #6b5026; }
18%, 86% { stroke: #3a2f1c; }
}
@keyframes lp-icon-cond {
0%, 12%, 92%, 100% { stroke: var(--type-color); opacity: 0.9; }
18%, 86% { stroke: var(--bone-4); opacity: 0.5; }
}
@keyframes lp-aura-cond {
0%, 12%, 92%, 100% { opacity: 0; }
18%, 86% { opacity: 0.7; stroke: var(--amber); stroke-width: 1; fill: none; stroke-dasharray: 3 4; }
}
@keyframes lp-stud-cond {
0%, 12%, 92%, 100% { fill: #8a6a32; }
18%, 86% { fill: #3a2f1c; }
}
@keyframes lp-name-cond {
0%, 12%, 92%, 100% { fill: var(--bone-1); }
18%, 86% { fill: var(--bone-3); }
}
@keyframes lp-chip-show {
0%, 14%, 92%, 100% { opacity: 0; }
22%, 86% { opacity: 1; }
}
/* Edges: glow during the selected window */
.demo-svg .lp-edge-breaks { animation: lp-edge-breaks-anim 8s ease-in-out infinite; }
.demo-svg .lp-edge-requires { animation: lp-edge-requires-anim 8s ease-in-out infinite; }
.demo-svg .lp-edge-requires-2 { animation: lp-edge-requires-anim 8s ease-in-out infinite; }
.demo-svg .lp-edge-compatible,
.demo-svg .lp-edge-compatible-2 { animation: lp-edge-compat-anim 8s ease-in-out infinite; }
@keyframes lp-edge-breaks-anim {
0%, 12%, 92%, 100% { stroke: rgba(200,64,60,0.4); stroke-width: 1.4; filter: none; }
18%, 86% { stroke: var(--rust); stroke-width: 2.4; filter: drop-shadow(0 0 7px rgba(200,64,60,1)); }
}
@keyframes lp-edge-requires-anim {
0%, 12%, 92%, 100% { stroke: rgba(255,160,60,0.35); stroke-width: 1.4; filter: none; }
18%, 86% { stroke: var(--ember-2); stroke-width: 2.2; filter: drop-shadow(0 0 6px var(--ember-glow)); }
}
@keyframes lp-edge-compat-anim {
0%, 12%, 92%, 100% { stroke: rgba(212,164,68,0.20); stroke-width: 1.0; }
18%, 86% { stroke: rgba(255,191,90,0.65); stroke-width: 1.6; filter: drop-shadow(0 0 4px rgba(255,138,61,0.4)); }
}
/* ── Responsive ──────────────────────────────────────────────────────── */
@media (max-width: 920px) {
.lp-shell { padding: 0 22px; }
.lp-hero { grid-template-columns: 1fr; gap: 30px; padding: 60px 0 70px; }
.lp-hero-art { min-height: 320px; }
.lp-title { font-size: 60px; }
.lp-section-title { font-size: 32px; }
.lp-tablets { grid-template-columns: 1fr; }
.lp-step { grid-template-columns: 1fr; gap: 20px; }
.lp-step:nth-child(even) .lp-step-text { order: 1; }
.lp-step:nth-child(even) .lp-step-art { order: 2; }
.lp-tiers { grid-template-columns: 1fr; }
.lp-scraper { grid-template-columns: 1fr; }
.lp-finale-title { font-size: 42px; }
}