Dots v2: lighter palette, bigger soft dots, parallax drift on scroll; restore section shading alternation
This commit is contained in:
1 parent
a351c5af2e
commit
6d9619d976
1 file changed
+90
-2
+90
-2
@@ -323,10 +323,98 @@
|
|||||||
h2 { font-size: 27px; }
|
h2 { font-size: 27px; }
|
||||||
.hero h1 { font-size: 36px; }
|
.hero h1 { font-size: 36px; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Decorative dots: light green + bronze, varied sizes, scattered across the
|
||||||
|
page background. Implemented as a fixed full-viewport SVG layer behind
|
||||||
|
content (pointer-events: none, very low contrast so text stays readable).
|
||||||
|
Echoes the logo's pine-silhouette dot motif. */
|
||||||
|
.bg-dots {
|
||||||
|
position: fixed;
|
||||||
|
inset: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
z-index: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.bg-dots circle {
|
||||||
|
opacity: 0.28;
|
||||||
|
}
|
||||||
|
.bg-dots .big { opacity: 0.22; }
|
||||||
|
/* Parallax: dots scroll at a fraction of page speed (JS below) */
|
||||||
|
.bg-dots {
|
||||||
|
will-change: transform;
|
||||||
|
}
|
||||||
|
.wrap, header.site-header, section, footer {
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
|
<!-- Decorative background dots (logo motif echo) -->
|
||||||
|
<svg class="bg-dots" aria-hidden="true">
|
||||||
|
<!-- scattered greens: light + a few big soft ones -->
|
||||||
|
<circle cx="4%" cy="12%" r="5" fill="#a8cdb4"/>
|
||||||
|
<circle cx="12%" cy="34%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="7%" cy="58%" r="16" class="big" fill="#b7d8c2"/>
|
||||||
|
<circle cx="16%" cy="78%" r="5" fill="#a8cdb4"/>
|
||||||
|
<circle cx="24%" cy="6%" r="9" fill="#b7d8c2"/>
|
||||||
|
<circle cx="31%" cy="22%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="28%" cy="52%" r="20" class="big" fill="#bfdccd"/>
|
||||||
|
<circle cx="38%" cy="70%" r="5" fill="#a8cdb4"/>
|
||||||
|
<circle cx="47%" cy="10%" r="6" fill="#b7d8c2"/>
|
||||||
|
<circle cx="55%" cy="30%" r="24" class="big" fill="#bfdccd"/>
|
||||||
|
<circle cx="52%" cy="55%" r="4" fill="#a8cdb4"/>
|
||||||
|
<circle cx="63%" cy="14%" r="5" fill="#b5d4c0"/>
|
||||||
|
<circle cx="68%" cy="42%" r="18" class="big" fill="#b7d8c2"/>
|
||||||
|
<circle cx="61%" cy="66%" r="6" fill="#bfdccd"/>
|
||||||
|
<circle cx="72%" cy="58%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="78%" cy="8%" r="8" fill="#a8cdb4"/>
|
||||||
|
<circle cx="83%" cy="26%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="76%" cy="48%" r="6" fill="#bfdccd"/>
|
||||||
|
<circle cx="86%" cy="38%" r="22" class="big" fill="#b7d8c2"/>
|
||||||
|
<circle cx="93%" cy="16%" r="5" fill="#a8cdb4"/>
|
||||||
|
<circle cx="90%" cy="60%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="81%" cy="72%" r="17" class="big" fill="#bfdccd"/>
|
||||||
|
<circle cx="95%" cy="46%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="89%" cy="86%" r="5" fill="#a8cdb4"/>
|
||||||
|
<circle cx="9%" cy="88%" r="16" class="big" fill="#b7d8c2"/>
|
||||||
|
<circle cx="40%" cy="88%" r="4" fill="#b5d4c0"/>
|
||||||
|
<circle cx="57%" cy="84%" r="5" fill="#a8cdb4"/>
|
||||||
|
<circle cx="70%" cy="80%" r="18" class="big" fill="#bfdccd"/>
|
||||||
|
<!-- bronze accents, sparser -->
|
||||||
|
<circle cx="20%" cy="44%" r="5" fill="#d9c3a8"/>
|
||||||
|
<circle cx="44%" cy="38%" r="4" fill="#e0cbb2"/>
|
||||||
|
<circle cx="66%" cy="30%" r="18" class="big" fill="#d9c3a8"/>
|
||||||
|
<circle cx="87%" cy="70%" r="5" fill="#e0cbb2"/>
|
||||||
|
<circle cx="33%" cy="76%" r="4" fill="#d9c3a8"/>
|
||||||
|
<circle cx="58%" cy="72%" r="5" fill="#e0cbb2"/>
|
||||||
|
<circle cx="97%" cy="78%" r="6" fill="#d9c3a8"/>
|
||||||
|
<circle cx="3%" cy="72%" r="4" fill="#e0cbb2"/>
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Gentle parallax: the dot layer scrolls at ~12% of page speed and drifts
|
||||||
|
// slightly sideways, so the background feels alive without distracting.
|
||||||
|
(function () {
|
||||||
|
var el = document.querySelector('.bg-dots');
|
||||||
|
if (!el) return;
|
||||||
|
var ticking = false;
|
||||||
|
window.addEventListener('scroll', function () {
|
||||||
|
if (ticking) return;
|
||||||
|
ticking = true;
|
||||||
|
requestAnimationFrame(function () {
|
||||||
|
var y = window.scrollY || 0;
|
||||||
|
el.style.transform = 'translateY(' + (y * -0.12) + 'px)';
|
||||||
|
ticking = false;
|
||||||
|
});
|
||||||
|
}, { passive: true });
|
||||||
|
})();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
<!-- Hero -->
|
<!-- Hero -->
|
||||||
<section class="hero">
|
<section class="hero">
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
@@ -383,7 +471,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Membership -->
|
<!-- Membership -->
|
||||||
<section class="alt">
|
<section>
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h2>One membership. A fair price, a full seat.</h2>
|
<h2>One membership. A fair price, a full seat.</h2>
|
||||||
<p class="lede">Everyone joins the same way, and everyone gets the same things — the difference is what you can afford to give, not what you get back.</p>
|
<p class="lede">Everyone joins the same way, and everyone gets the same things — the difference is what you can afford to give, not what you get back.</p>
|
||||||
@@ -414,7 +502,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<!-- Values / usage -->
|
<!-- Values / usage -->
|
||||||
<section>
|
<section class="alt">
|
||||||
<div class="wrap">
|
<div class="wrap">
|
||||||
<h2>Choose by what you value.</h2>
|
<h2>Choose by what you value.</h2>
|
||||||
<p class="lede">Different members care about different things. So we let you choose your AI by the values that matter to you — not lock you to a single provider.</p>
|
<p class="lede">Different members care about different things. So we let you choose your AI by the values that matter to you — not lock you to a single provider.</p>
|
||||||
|
|||||||
Reference in new issue
Block a user