/* ============================================================
   CodyKeegan.AI — The Engine Room
   Operator/editorial theme matched to codykeegan.ai's language:
   uppercase display, eyebrow labels, serial plates, one accent.
   Signature: the amber "ignition" — locked plates are dark and
   machined; unlocking lights the ignition.
   ------------------------------------------------------------
   RETHEME: change the 6 tokens below to snap to exact brand hex.
   ============================================================ */
:root{
  --void:#000000;      /* pure black base               */
  --panel:#0C0C0C;     /* plate face                    */
  --panel-2:#151515;   /* raised plate                  */
  --line:#262626;      /* hairlines / machined edges    */
  --ink:#FFFFFF;       /* white text                    */
  --muted:#9A9A9A;     /* captions / secondary          */
  --signal:#FF4D00;    /* IGNITION — the one accent     */
  --signal-deep:#CC3D00;
  --danger:#E06A5B;
  --r:4px;             /* machined, low radius          */
  --maxw:1180px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--void);color:var(--ink);
  font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  line-height:1.55;-webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(1100px 520px at 82% -8%, rgba(255,77,0,.10), transparent 60%),
    radial-gradient(760px 420px at -8% 4%, rgba(255,77,0,.05), transparent 55%);
  background-attachment:fixed;
}
/* fine machined grain overlay */
body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px;position:relative;z-index:1}
.mono{font-family:'Space Mono',ui-monospace,Menlo,monospace}

/* ---- Display type -------------------------------------- */
.eyebrow{
  font-family:'Space Mono',monospace;font-size:11.5px;font-weight:700;
  letter-spacing:.28em;text-transform:uppercase;color:var(--signal);
}
h1,h2,h3{font-family:Archivo,sans-serif;font-weight:800;letter-spacing:-.01em;margin:0}

/* ============ HEADER ==================================== */
.top{position:sticky;top:0;z-index:30;
  background:linear-gradient(180deg,rgba(14,14,16,.92),rgba(14,14,16,.72));
  backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:16px;height:66px}
.brand{display:flex;align-items:center;gap:11px;font-family:Archivo,sans-serif;
  font-weight:800;font-size:16px;letter-spacing:.02em;text-transform:uppercase}
.brand .ignition{width:11px;height:11px;border-radius:50%;background:var(--signal);
  box-shadow:0 0 0 3px rgba(255,77,0,.16),0 0 16px var(--signal)}
.brand small{color:var(--muted);font-weight:600;letter-spacing:.14em;font-size:10.5px}
.spacer{flex:1}
.pill{display:inline-flex;align-items:center;gap:8px;font-family:'Space Mono',monospace;
  font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;
  padding:7px 12px;border:1px solid var(--signal);border-radius:999px;color:var(--signal);
  background:rgba(255,77,0,.07)}
.pill .dot{width:7px;height:7px;border-radius:50%;background:var(--signal);box-shadow:0 0 10px var(--signal)}
.acct{font-size:12.5px;color:var(--muted);font-family:'Space Mono',monospace;letter-spacing:.02em}
.acct a{color:var(--ink);border-bottom:1px solid var(--line)}
.acct a:hover{border-color:var(--signal);color:var(--signal)}

/* ============ BUTTONS =================================== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;cursor:pointer;
  font-family:Archivo,sans-serif;font-weight:700;font-size:13px;letter-spacing:.02em;
  text-transform:uppercase;padding:12px 18px;border-radius:var(--r);border:1px solid transparent;
  transition:transform .12s ease,background .15s,border-color .15s,box-shadow .15s;white-space:nowrap}
.btn:active{transform:translateY(1px)}
.btn-ignite{background:var(--signal);color:#1A0700;box-shadow:0 6px 22px -10px rgba(255,77,0,.8)}
.btn-ignite:hover{background:#FF6A2A;box-shadow:0 8px 26px -8px rgba(255,77,0,.9)}
.btn-key{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-key:hover{border-color:var(--signal);color:var(--signal)}
.btn-ghost{background:var(--panel-2);border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--muted)}
.btn-block{width:100%}

/* ============ HERO ====================================== */
.hero{padding:64px 0 26px}
.hero .eyebrow{display:block;margin-bottom:18px}
.hero h1{font-size:clamp(40px,7vw,88px);line-height:.94;text-transform:uppercase}
.hero h1 .amp{color:var(--signal)}
.hero .lede{margin:22px 0 0;max-width:60ch;color:var(--muted);font-size:16px}
.hero .lede b{color:var(--ink);font-weight:600}

/* hero CTA row */
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px;
  animation:riseLine .7s ease both;animation-delay:.24s}
.hero-cta .btn{padding:14px 24px;font-size:13.5px}
@media (max-width:520px){.hero-cta{gap:10px}.hero-cta .btn{flex:1 1 100%}}

/* stat strip — echoes codykeegan.ai's numbers */
.stats{display:flex;flex-wrap:wrap;gap:0;margin:38px 0 4px;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)}
.stat{padding:18px 26px 16px;border-right:1px solid var(--line);flex:1;min-width:120px}
.stat:last-child{border-right:0}
.stat .n{font-family:Archivo,sans-serif;font-weight:800;font-size:30px;line-height:1;letter-spacing:-.02em}
.stat .n .live-n{color:var(--signal)}
.stat .l{font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--muted);margin-top:8px}

/* ============ SECTION HEADINGS ========================= */
.sec-head{display:flex;align-items:baseline;gap:16px;margin:56px 0 20px}
.sec-head h2{font-size:clamp(22px,3vw,30px);text-transform:uppercase}
.sec-head .eyebrow{margin-left:auto;letter-spacing:.22em}

/* ============ PACKS (bundles) ========================== */
.packs { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; }
.pack { display: flex; flex-direction: column; gap: 13px; padding: 22px 22px 20px; background: var(--panel); border: 1px solid var(--line); border-radius: var(--r); position: relative; overflow: hidden; }
.pack::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: var(--line); }
.pack.owned::before, .pack.community::before { background: var(--signal); }

.pack-cover {
  position: relative;
  height: 300px;
  border-radius: var(--r);
  overflow: hidden;
  border: 1px solid var(--line);
  display: flex;
  align-items: center;
  justify-content: center;
  background: repeating-linear-gradient(135deg, rgba(255,255,255,.02) 0 8px, transparent 8px 16px), var(--panel-2);
}

.pack-cover img { 
  position: absolute; 
  inset: 0; 
  width: 100%; 
  height: 100%; 
  object-fit: cover; /* Fits image as cover */
  display: block; 
  transition: transform .4s cubic-bezier(.2,.7,.2,1); 
}

.pack:hover .pack-cover img { transform: scale(1.05); }
.pack-cover .pack-mark { display: none; color: var(--muted); font-size: 20px; }
.pack-cover.noimg .pack-mark { display: block; }
.pack.owned .pack-cover { border-color: rgba(255,77,0,.4); }
.pack .pk-copy { flex: 1; }
.pack h3 { font-size: 16px; text-transform: uppercase; margin-bottom: 6px; line-height: 1.25; }
.pack h3 .count { display: block; font-family: 'Space Mono', monospace; font-size: 11px; color: var(--muted); text-transform: none; letter-spacing: .02em; font-weight: 400; margin-top: 4px; }
.pack p { margin: 0; color: var(--muted); font-size: 13px; }
.pack .btn { width: 100%; }
.pack .owned-tag { font-family: 'Space Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: .14em; color: var(--signal); text-transform: uppercase; white-space: nowrap; border: 1px solid rgba(255,77,0,.4); border-radius: var(--r); padding: 11px; text-align: center; }

@media (max-width: 860px) { .packs { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .packs { grid-template-columns: 1fr; } }



/* ============ TOOLBAR (filter) ========================= */
.toolbar{display:flex;gap:12px;align-items:center;margin:26px 0 18px;flex-wrap:wrap}
.search{flex:1;min-width:200px;padding:12px 14px;background:var(--panel);border:1px solid var(--line);
  border-radius:var(--r);color:var(--ink);font-family:'Space Mono',monospace;font-size:13px}
.search::placeholder{color:var(--muted)}
.search:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px rgba(255,77,0,.14)}
.segmented{display:flex;border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.segmented button{background:var(--panel);color:var(--muted);border:0;padding:11px 16px;cursor:pointer;
  font-family:'Space Mono',monospace;font-size:11px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;border-right:1px solid var(--line)}
.segmented button:last-child{border-right:0}
.segmented button.on{background:var(--signal);color:#1A0700}

/* ============ ENGINE GRID ============================== */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:16px;margin:8px 0 70px}
.engine{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:0;display:flex;flex-direction:column;overflow:hidden;transition:transform .16s,border-color .16s,box-shadow .16s}
.engine .plate{display:flex;align-items:center;justify-content:space-between;
  padding:11px 14px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.serial{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.14em;color:var(--muted)}
.status{font-family:'Space Mono',monospace;font-size:10.5px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;display:inline-flex;align-items:center;gap:6px}
.status.live{color:var(--signal)}
.status.locked{color:var(--muted)}
.status .sd{width:7px;height:7px;border-radius:50%;background:currentColor}
.status.live .sd{box-shadow:0 0 9px var(--signal)}

.face{aspect-ratio:1.5/1;display:flex;align-items:center;justify-content:center;position:relative;
  overflow:hidden;
  background:
    repeating-linear-gradient(135deg,rgba(255,255,255,.015) 0 8px,transparent 8px 16px),
    var(--panel)}
/* cover image */
.face .cover{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .4s cubic-bezier(.2,.7,.2,1),filter .3s,opacity .3s}
.engine.locked .face .cover{filter:grayscale(.85) brightness(.42) contrast(1.05)}
.engine.locked:hover .face .cover{filter:grayscale(.6) brightness(.55)}
.engine.live .face .cover{filter:none}
.engine:hover .face .cover{transform:scale(1.05)}
/* mark: always shown when locked (lock badge), or when image is missing */
.engine.live .face .mark{display:none}
.engine.live .face.noimg .mark{display:flex}
.engine.locked .face .mark{position:relative;z-index:2;background:rgba(0,0,0,.55);backdrop-filter:blur(2px)}
.face .mark{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);
  display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:18px}
.engine.locked .face .mark{border-color:var(--line)}
.engine.live .face{background:
  radial-gradient(120px 90px at 50% 40%, rgba(255,77,0,.16), transparent 70%),
  repeating-linear-gradient(135deg,rgba(255,77,0,.05) 0 8px,transparent 8px 16px),var(--panel)}
.engine.live .face .mark{border-color:var(--signal);color:var(--signal);
  box-shadow:0 0 0 4px rgba(255,77,0,.10),0 0 22px -4px rgba(255,77,0,.55)}

.engine .body{padding:14px 15px 16px;display:flex;flex-direction:column;gap:12px;flex:1}
.engine-title{font-family:Archivo,sans-serif;font-weight:700;font-size:14.5px;line-height:1.3;
  letter-spacing:0;text-transform:none;min-height:38px}
.engine .lockrow{display:flex;align-items:center;gap:10px;margin-top:auto}
.price{font-family:'Space Mono',monospace;font-size:13px;color:var(--muted)}
.lockrow .btn{margin-left:auto}
.engine .foot{margin-top:auto}

/* states */
.engine.locked{filter:saturate(.7)}
.engine.live{border-color:rgba(255,77,0,.42);
  box-shadow:0 0 0 1px rgba(255,77,0,.06),0 16px 40px -26px rgba(255,77,0,.6)}
.engine.live:hover{transform:translateY(-3px);box-shadow:0 22px 50px -24px rgba(255,77,0,.7)}
.engine.locked:hover{transform:translateY(-2px);border-color:var(--muted)}
.engine.hide{display:none}

/* ============ AUTH ===================================== */
.auth{min-height:100vh;display:grid;place-items:center;padding:44px 22px;position:relative;z-index:1}
.auth .box{width:100%;max-width:412px;background:var(--panel);border:1px solid var(--line);
  border-radius:6px;padding:34px 32px;position:relative;overflow:hidden}
.auth .box::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--signal),var(--signal-deep))}
.auth .eyebrow{display:block;text-align:center;margin-bottom:14px}
.auth .brand{justify-content:center;margin-bottom:2px}
.auth h2{font-family:Archivo,sans-serif;text-align:center;font-size:25px;text-transform:uppercase;
  letter-spacing:-.01em;margin:8px 0 4px}
.auth .sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:24px}
.field{margin-bottom:15px}
.field label{display:block;font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:7px}
.field input{width:100%;padding:13px 14px;border-radius:var(--r);border:1px solid var(--line);
  background:var(--void);color:var(--ink);font-size:14.5px;font-family:inherit}
.field input:focus{outline:none;border-color:var(--signal);box-shadow:0 0 0 3px rgba(255,77,0,.14)}
.auth .alt{text-align:center;margin-top:18px;font-size:13px;color:var(--muted)}
.auth .alt a{color:var(--signal);font-weight:600}
.notice{padding:12px 14px;border-radius:var(--r);font-size:13px;margin-bottom:16px;
  font-family:'Space Mono',monospace}
.notice.err{background:rgba(224,106,91,.12);border:1px solid rgba(224,106,91,.4);color:#F0A99E}
.notice.ok{background:rgba(255,77,0,.12);border:1px solid rgba(255,77,0,.4);color:#F1C877}

/* ============ FOOTER =================================== */
.foot-bar{border-top:1px solid var(--line);margin-top:40px}
.foot-bar .wrap{padding:26px 24px 54px;color:var(--muted);font-family:'Space Mono',monospace;
  font-size:11.5px;letter-spacing:.06em;display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.foot-bar .sep{color:var(--line)}

/* ============ A11Y / RESPONSIVE ======================== */
a:focus-visible,.btn:focus-visible,input:focus-visible,button:focus-visible{
  outline:2px solid var(--signal);outline-offset:2px}
@media (max-width:600px){
  .top .wrap{gap:10px;height:60px}
  .acct{display:none}
  .brand small{display:none}
  .grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
  .stat{min-width:50%;flex:1 0 50%;border-bottom:1px solid var(--line)}
  .engine-title{min-height:auto}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ============================================================
   MOTION — orchestrated "powering on the engine room"
   All disabled under prefers-reduced-motion (see bottom).
   ============================================================ */

/* scroll progress — a hot ignition line across the top */
.scrollbar{position:fixed;top:0;left:0;height:2px;width:0;z-index:60;
  background:linear-gradient(90deg,var(--signal-deep),var(--signal));
  box-shadow:0 0 10px var(--signal);transition:width .08s linear}

/* header powers on */
@keyframes powerOn{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}
.top{animation:powerOn .5s ease both}

/* ignition dot — heartbeat */
@keyframes beat{
  0%,100%{box-shadow:0 0 0 3px rgba(255,77,0,.16),0 0 12px var(--signal)}
  50%{box-shadow:0 0 0 5px rgba(255,77,0,.06),0 0 22px var(--signal)}
}
.brand .ignition{animation:beat 2.4s ease-in-out infinite}
.pill .dot{animation:beat 2s ease-in-out infinite}

/* scroll reveal — elements rise as they enter */
.reveal{opacity:0;transform:translateY(18px)}
.reveal.in{opacity:1;transform:none;
  transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1)}

/* hero headline sweeps in on load */
@keyframes riseLine{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
.hero h1{animation:riseLine .7s cubic-bezier(.2,.7,.2,1) both;animation-delay:.08s}
.hero .eyebrow{animation:riseLine .6s ease both}
.hero .lede{animation:riseLine .7s ease both;animation-delay:.16s}

/* live engines: ambient ember pulse on the ignition mark */
@keyframes ember{
  0%,100%{box-shadow:0 0 0 4px rgba(255,77,0,.10),0 0 18px -4px rgba(255,77,0,.5)}
  50%{box-shadow:0 0 0 5px rgba(255,77,0,.05),0 0 30px -2px rgba(255,77,0,.8)}
}
.engine.live .face .mark{animation:ember 2.6s ease-in-out infinite}

/* live engines: a slow scanline sweep across the face */
.engine.live .face::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 40%,rgba(255,77,0,.10) 50%,transparent 60%);
  background-size:250% 100%;animation:sweep 3.4s linear infinite}
@keyframes sweep{from{background-position:130% 0}to{background-position:-130% 0}}

/* hover "rev" — glow intensifies */
.engine.live:hover .face .mark{animation-duration:1s}
.btn-ignite:hover{animation:revGlow 1.1s ease-in-out infinite}
@keyframes revGlow{
  0%,100%{box-shadow:0 6px 22px -10px rgba(255,77,0,.8)}
  50%{box-shadow:0 8px 30px -6px rgba(255,77,0,1)}
}

/* filter change — visible cards pop back in */
.grid.pop .engine:not(.hide){animation:popIn .35s cubic-bezier(.2,.7,.2,1) both}
@keyframes popIn{from{opacity:0;transform:scale(.94)}to{opacity:1;transform:none}}

/* auth box rises in with an ignition bar wipe */
@keyframes riseIn{from{opacity:0;transform:translateY(20px) scale(.98)}to{opacity:1;transform:none}}
.auth .box{animation:riseIn .55s cubic-bezier(.2,.7,.2,1) both}
@keyframes barWipe{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.auth .box::before{transform-origin:left;animation:barWipe .7s ease both;animation-delay:.2s}

/* stat count-up sizing stays stable while numbers tick */
.stat .n{font-variant-numeric:tabular-nums}

@media (prefers-reduced-motion:reduce){
  .scrollbar,.top,.brand .ignition,.pill .dot,.reveal,.hero h1,.hero .eyebrow,.hero .lede,
  .engine.live .face .mark,.engine.live .face::after,.btn-ignite:hover,.grid.pop .engine,
  .auth .box,.auth .box::before{animation:none!important}
  .reveal{opacity:1!important;transform:none!important}
}


/* ============================================================
   UNLOCK MODAL
   ============================================================ */
.modal{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;padding:22px}
.modal[hidden]{display:none}
.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.78);backdrop-filter:blur(6px);
  opacity:0;transition:opacity .18s ease}
.modal.open .modal-backdrop{opacity:1}
.modal-box{position:relative;z-index:1;width:100%;max-width:430px;background:var(--panel);
  border:1px solid var(--line);border-radius:6px;padding:30px 28px 26px;
  opacity:0;transform:translateY(14px) scale(.985);
  transition:opacity .22s ease,transform .22s cubic-bezier(.2,.7,.2,1);
  max-height:88vh;overflow-y:auto}
.modal.open .modal-box{opacity:1;transform:none}
.modal-box::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,var(--signal),var(--signal-deep))}
.modal-x{position:absolute;top:12px;right:12px;background:transparent;border:0;color:var(--muted);
  font-size:15px;cursor:pointer;padding:8px;line-height:1;border-radius:var(--r)}
.modal-x:hover{color:var(--signal)}
.modal-box .eyebrow{display:block;margin-bottom:10px}
.modal-box h3{font-family:Archivo,sans-serif;font-size:21px;text-transform:uppercase;
  line-height:1.2;margin-bottom:8px}
.modal-sub{color:var(--muted);font-size:13px;margin:0 0 20px}
.modal-actions{display:flex;flex-direction:column;gap:10px}
.modal-actions .btn{flex-direction:column;gap:3px;padding:14px 16px;text-align:center}
.btn-note{font-family:'Space Mono',monospace;font-size:10.5px;font-weight:400;letter-spacing:.1em;
  text-transform:uppercase;opacity:.72}
.btn-solo{background:var(--panel-2);border-color:rgba(255,77,0,.45);color:var(--signal)}
.btn-solo:hover{background:rgba(255,77,0,.10);border-color:var(--signal)}
@media (prefers-reduced-motion:reduce){
  .modal-backdrop,.modal-box{transition:none!important}
}
@media (max-width:480px){.modal-box{padding:26px 20px 22px}}
