Brand System · Command Center · v1 · 2026-05-20
The one system every Drey site inherits. Dark, technical, alive. Open this first — match its tokens and modules exactly, and anything you build is on-brand without thinking.
00 · North Star
An ops-room run by a systems architect with taste. Builder + security + "aura" energy, made visual. It says: this person ships things that actually work — and operates at a level you don't usually see.
01 · Tokens
Near-black + bone + gold. Gold is the only accent — quiet luxury: black + gold, bone as light. Used sparingly it reads as taste; the retired amber+cyan two-accent system is gone.
#0B0B0D cool near-black. Competence + premium. ~85% of the surface.#131318 panel / code / elevated surface.#F4F1EC bone white. Body + display.#7E7C84 meta, captions, secondary copy.#C2A878 GOLD — the one accent. Brand signal, headlines, the glow, key marks, live data. One signal at a time — never a fill.#E4CC93 bright gold — emphasis, live numbers, hovers, link/code text.#2C2C34 hairline borders + faint blueprint grid (#1C1C24).// labels, captions, code. The connective tissue that makes it feel built.Branded assets are the kit's, not freelance. Pull them verbatim from the live kit — never redraw them. Recolor the system around them; never restyle the marks themselves.
loader.html · drey-brand-kit.pages.dev/loader.clamp(18px,3.5vw,56px) · max width 1180px.clamp(44px,6vw,104px). Dense with live detail, never cramped.prefers-reduced-motion disables it.02 · Signature Modules
Drop these on any page and it's instantly Drey. Each one says something — don't add a 9th, compose with these.
/* Drey Brand System — Command Center · Bone + Gold. Paste in :root */
:root{
--bg:#0B0B0D; --bg2:#131318; --fg:#F4F1EC; --soft:#7E7C84;
--gold:#C2A878; --gold-hi:#E4CC93; --gold-deep:#A98D5F; --rule:#2C2C34;
--hero:"Unbounded",sans-serif; --disp:"Space Grotesk",sans-serif; --mono:"Martian Mono",monospace;
}
/* blueprint grid + scanlines — module 8, set on body */
body::before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.45;
background-image:linear-gradient(#1C1C24 1px,transparent 1px),linear-gradient(90deg,#1C1C24 1px,transparent 1px);
background-size:46px 46px;mask-image:radial-gradient(circle at 50% 0%,#000,transparent 80%)}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:50;opacity:.26;
background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.16) 3px,transparent 4px)}
<div id="term"></div>
<script>
var term=document.getElementById('term');
var L={p:'drey@command ~ % ',c:'./boot',o:'builder · st. pete · systems online'};
var el=document.createElement('div'),s=document.createElement('span');
s.style.color='var(--gold)';s.textContent=L.p;el.appendChild(s);
var cm=document.createElement('span');el.appendChild(cm);term.appendChild(el);var i=0;
(function tc(){if(i<L.c.length){cm.textContent+=L.c[i++];setTimeout(tc,30+Math.random()*40);}
else{var o=document.createElement('div');o.style.color='var(--soft)';o.textContent=' '+L.o;term.appendChild(o);}})();
</script>
// scrambles random chars, then resolves to the target word
function decode(el,target){
var ch='ABCDEFGHJKLMNPQRSTUVWXYZ#%$&/<>_',f=0;
var iv=setInterval(function(){var s='';
for(var k=0;k<target.length;k++) s+=(f>k*3)?target[k]:ch[Math.floor(Math.random()*ch.length)];
el.firstChild.nodeValue=s; f++;
if(f>target.length*3+2){clearInterval(iv);el.firstChild.nodeValue=target+'.';}
},52);
}
// usage: decode(document.getElementById('name'),'DREY');
<div class="panel"><div class="ph">live_status <span class="cy">● streaming</span></div>
<div class="stat">ships deployed <b id="s1">0</b></div>
<div class="meter"><i id="m1"></i></div></div>
<script>// count-up; numbers + meter in gold
function an(id,b,suf){var el=document.getElementById(id),t0=performance.now();
(function f(t){var p=Math.min((t-t0)/1400,1);el.textContent=(b%1?(b*p).toFixed(1):Math.round(b*p))+(suf||'');
if(p<1)requestAnimationFrame(f);})(performance.now());}
an('s1',47);document.getElementById('m1').style.width='94%';
</script>
<svg viewBox="0 0 300 90">
<path class="edge" d="M40 45 L150 45"/> // stroke-draws in
<circle class="node" cx="150" cy="45" r="18"/> // build → drey → ship → aura
</svg>
/* CSS */ .edge{fill:none;stroke:var(--gold);stroke-width:1.3;
stroke-dasharray:300;stroke-dashoffset:300;animation:draw 2s ease forwards}
@keyframes draw{to{stroke-dashoffset:0}}
.node{fill:var(--bg2);stroke:var(--gold);stroke-width:1.3;filter:drop-shadow(0 0 6px rgba(194,168,120,.4))}
02 · Modules 5–8
<div class="ticker"><div class="t" id="tk"></div></div>
/* CSS */ .ticker{background:linear-gradient(90deg,var(--gold-deep),var(--gold));color:var(--bg);overflow:hidden;white-space:nowrap}
.ticker .t{display:inline-block;padding:7px 0;font-family:var(--disp);font-weight:700;font-size:12px;
text-transform:uppercase;animation:scr 24s linear infinite}@keyframes scr{to{transform:translateX(-50%)}}
<script>var it=['Ships things that work','Learn','Build with','Build for','Dottie','Trace','Aura'];
var h=it.map(function(t){return '<span>'+t+' —</span>'}).join('');
document.getElementById('tk').innerHTML=h+h;// doubled for seamless loop</script>
<a class="door"><span class="w mag">Learn</span></a>
<script>document.querySelectorAll('.mag').forEach(function(el){var p=el.parentElement;
p.addEventListener('pointermove',function(e){var r=el.getBoundingClientRect();
el.style.transform='translate('+((e.clientX-(r.left+r.width/2))*0.1)+'px,'+((e.clientY-(r.top+r.height/2))*0.16)+'px)';});
p.addEventListener('pointerleave',function(){el.style.transform='translate(0,0)';});});</script>
/* .w needs: display:inline-block; transition:transform .18s ease,color .18s */
<div class="glow" id="glow"></div>
/* CSS */ .glow{position:fixed;width:560px;height:560px;border-radius:50%;pointer-events:none;z-index:0;
background:radial-gradient(circle,rgba(194,168,120,.13),transparent 64%);transform:translate(-50%,-50%)}
<script>var g=document.getElementById('glow');
addEventListener('pointermove',function(e){g.style.left=e.clientX+'px';g.style.top=e.clientY+'px';},{passive:true});</script>
Included in the drop-in foundation above (the two body::before / body::after rules). Always on — it's the ambient texture that kills "plain."
03 · Voice
Short. Specific. Active. Like a smart friend who builds systems — never corporate, never hype.
// select a process, ~/ships, live_status. They carry real info, never decoration.· — > ● or mono glyphs instead.04 · Apply it anywhere
Every Drey site, page, OG image, deck, or social chrome starts here.
#F4F1EC on #0B0B0D ≈ 17:1 (AAA). Gold #C2A878 passes WCAG AA at 14px+. Keep focus rings (gold outline).05 · Implementation
Next.js + Tailwind is the default stack. Port the vars anywhere else.
tailwind.config.tsexport default {
theme:{extend:{
colors:{ bg:"#0B0B0D","bg-2":"#131318", fg:"#F4F1EC","fg-soft":"#7E7C84",
gold:"#C2A878","gold-hi":"#E4CC93","gold-deep":"#A98D5F", rule:"#2C2C34" },
fontFamily:{ hero:['Unbounded','sans-serif'], disp:['"Space Grotesk"','sans-serif'], mono:['"Martian Mono"','monospace'] },
letterSpacing:{ tightest:'-.04em', tight2:'-.02em', wide2:'.2em' },
}},
} satisfies import('tailwindcss').Config;
app/layout.tsximport { Unbounded, Space_Grotesk, Martian_Mono } from "next/font/google";
const hero = Unbounded({ subsets:["latin"], weight:["700","800","900"], variable:"--font-hero", display:"swap" });
const disp = Space_Grotesk({ subsets:["latin"], weight:["500","600","700"], variable:"--font-disp", display:"swap" });
const mono = Martian_Mono({ subsets:["latin"], weight:["400","500","700"], variable:"--font-mono", display:"swap" });
// body className: ${hero.variable} ${disp.variable} ${mono.variable} bg-bg text-fg font-mono
1. Paste the drop-in foundation CSS (Section 02) into :root + body.
2. Build the hero with module 1 (boot) or 2 (decode) + at least one more module.
3. Lean on near-black + bone; let gold appear once per view; follow the voice rules.
4. Reference the live flagship: ~/Desktop/drey-style-v2/mixes/MIX4-command-center.html.
This system is the floor, not the ceiling. Compose the 8 modules into new layouts — but every Drey surface should be recognizable as this in 3 seconds.