/* ============================================================
   PixelLock — neon "pixel lab" UI (matches the product mockup)
   dark navy base · violet + cyan neon · crisp pixels
   ============================================================ */
:root{
  --bg:#06060d; --bg2:#0a0a16;
  --panel:rgba(18,18,32,.72); --panel2:rgba(26,26,44,.6);
  --line:rgba(150,140,210,.16); --line2:rgba(150,140,210,.34);
  --ink:#eceaff; --dim:#a8a3c8; --faint:#6d688d;
  --violet:#a06bff; --violet-hi:#c4a3ff; --cyan:#00e5d4; --cyan-hi:#6ff5ea;
  --amber:#ffd166; --lime:#7dff6a; --rose:#ff5ab3;
  --ok:#39e08a; --warn:#ffb347; --err:#ff5d6c;
  --radius:14px; --mono:"JetBrains Mono",ui-monospace,monospace; --sans:"Space Grotesk",system-ui,sans-serif;
}
*{box-sizing:border-box}
[hidden]{display:none!important}   /* author display rules must not override the hidden attribute */
html,body{margin:0;padding:0}
body{
  font-family:var(--sans); color:var(--ink); background:var(--bg);
  min-height:100vh; overflow-x:hidden; line-height:1.45;
}
.bg-glow{position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(60% 50% at 18% 0%, rgba(160,107,255,.20), transparent 70%),
    radial-gradient(55% 45% at 92% 8%, rgba(0,229,212,.16), transparent 70%),
    radial-gradient(80% 60% at 50% 110%, rgba(160,107,255,.10), transparent 70%),
    var(--bg);}
.scanlines{position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.35;
  background:repeating-linear-gradient(to bottom,rgba(255,255,255,.018) 0 1px,transparent 1px 3px);}
.pixelated{image-rendering:pixelated;image-rendering:crisp-edges}

/* ───── header ───── */
.appbar{display:flex;align-items:center;gap:18px;padding:14px 22px;
  border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(12,12,22,.9),rgba(12,12,22,.55));
  backdrop-filter:blur(8px);position:sticky;top:0;z-index:10;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:12px}
.logo{display:grid;grid-template-columns:repeat(2,11px);grid-auto-rows:11px;gap:3px;
  padding:6px;border:1px solid var(--line2);border-radius:9px;background:#0c0c18}
.logo i{width:11px;height:11px;border-radius:2px}
.logo i:nth-child(1){background:var(--violet)} .logo i:nth-child(2){background:var(--cyan)}
.logo i:nth-child(3){background:var(--cyan)} .logo i:nth-child(4){background:var(--violet);
  animation:blink 2.4s steps(1) infinite}
@keyframes blink{0%,80%{opacity:1}90%{opacity:.25}}
.wordmark{font-size:24px;font-weight:700;margin:0;letter-spacing:.5px}
.wordmark b{color:var(--cyan);text-shadow:0 0 18px rgba(0,229,212,.5)}
.brand-div{color:var(--faint)}
.brand-sub{font-family:var(--mono);font-size:12.5px;color:var(--dim)}
.fp-pill{display:inline-flex;align-items:center;gap:7px;margin-left:6px;
  font-family:var(--mono);font-size:12.5px;color:var(--cyan-hi);
  padding:7px 14px;border-radius:999px;border:1px solid rgba(0,229,212,.4);
  background:rgba(0,229,212,.07);box-shadow:0 0 22px rgba(0,229,212,.18) inset}
.appbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.server-pill{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);
  font-size:12px;color:var(--dim);padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:var(--panel2)}
.dot{width:8px;height:8px;border-radius:50%}
.dot.up{background:var(--ok);box-shadow:0 0 10px var(--ok)} .dot.down{background:var(--err);box-shadow:0 0 10px var(--err)}
.ghost-btn{font-family:var(--mono);font-size:12px;color:var(--dim);text-decoration:none;
  padding:6px 12px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);transition:.15s}
.ghost-btn:hover{color:var(--ink);border-color:var(--line2)}

/* ───── how-it-works strip + "see the LLM output" reveal ───── */
.howbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 22px;border-bottom:1px solid var(--line);
  background:rgba(160,107,255,.045);font-family:var(--mono);font-size:12px;color:var(--dim);line-height:1.5}
.how-tag{color:var(--violet-hi);font-weight:700;border:1px solid rgba(160,107,255,.4);border-radius:999px;padding:4px 11px;background:rgba(160,107,255,.08);white-space:nowrap}
.how-steps b{color:var(--cyan-hi)} .how-steps em{color:var(--ink);font-style:normal;font-weight:700}
.proofbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;
  max-width:1480px;margin:14px auto 0;padding:0 22px}
.proof-card{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:12px;
  background:linear-gradient(180deg,rgba(20,20,34,.82),rgba(10,10,18,.72));padding:13px 16px}
.proof-card::before{content:"";position:absolute;inset:0 0 auto;height:2px;
  background:linear-gradient(90deg,var(--violet),var(--cyan),var(--amber))}
.proof-card:nth-child(2)::before{background:linear-gradient(90deg,var(--amber),var(--rose),var(--violet))}
.proof-card:nth-child(3)::before{background:linear-gradient(90deg,var(--lime),var(--cyan),var(--violet))}
.proof-k{display:block;font-family:var(--mono);font-size:12px;font-weight:700;color:var(--ink);
  letter-spacing:.8px;text-transform:uppercase}
.proof-v{display:block;margin-top:3px;font-family:var(--mono);font-size:11px;color:var(--faint)}
.wire-reveal{background:#08080f;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.wire-reveal summary{cursor:pointer;list-style:none;padding:11px 16px;font-family:var(--mono);font-size:12.5px;color:var(--cyan-hi);user-select:none}
.wire-reveal summary::-webkit-details-marker{display:none}
.wire-reveal summary b{color:var(--ink)}
.wire-reveal summary:hover{background:rgba(0,229,212,.05)}
.wire-reveal[open] summary{border-bottom:1px solid var(--line)}
.wire{margin:0;padding:14px 16px;max-height:300px;overflow:auto;font-family:var(--mono);font-size:11px;line-height:1.5;color:#9fe6dd;white-space:pre-wrap;word-break:break-word}

/* ───── layout ───── */
.layout{display:grid;grid-template-columns:372px 1fr;gap:20px;padding:20px 22px;max-width:1480px;margin:0 auto;align-items:start}

/* ───── controls ───── */
.controls{display:flex;flex-direction:column;gap:16px;min-width:0;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.step h2{display:flex;align-items:center;gap:9px;margin:0 0 9px;font-size:13px;font-weight:600;
  text-transform:uppercase;letter-spacing:1.2px;color:var(--dim)}
.step .num{font-family:var(--mono);font-size:11px;color:var(--violet-hi);
  border:1px solid rgba(160,107,255,.4);border-radius:6px;padding:2px 6px;background:rgba(160,107,255,.08)}
.step .opt{font-family:var(--mono);font-size:10px;color:var(--faint);text-transform:none;letter-spacing:0}

.dropzone{border:1.5px dashed var(--line2);border-radius:12px;padding:22px 14px;text-align:center;
  cursor:pointer;transition:.15s;background:rgba(160,107,255,.03)}
.dropzone:hover,.dropzone.dragover{border-color:var(--violet);background:rgba(160,107,255,.08);box-shadow:0 0 26px rgba(160,107,255,.14) inset}
.dz-ico{font-size:26px;color:var(--violet-hi);margin-bottom:6px}
.dz-main{margin:0;font-size:14px} .dz-main .link{color:var(--cyan-hi)}
.dz-hint{margin:4px 0 0;font-family:var(--mono);font-size:11px;color:var(--faint)}
.dz-tag{display:inline-block;margin-top:10px;font-family:var(--mono);font-size:10px;color:var(--violet-hi);
  border:1px solid rgba(160,107,255,.4);border-radius:6px;padding:2px 9px}
.dz-loaded{display:flex;flex-direction:column;align-items:center;gap:8px}
#dz-preview{width:96px;height:96px;object-fit:contain;background:#0c0c18;border:1px solid var(--line);border-radius:8px}
.dz-meta{display:flex;gap:10px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--dim)}
.link-btn{background:none;border:none;color:var(--cyan-hi);cursor:pointer;font-family:var(--mono);font-size:11px;padding:0;text-decoration:underline}

.starter-step{margin-top:-2px}
.asset-strip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}
.asset-tile{min-width:0;border:1px solid var(--line);border-radius:10px;background:rgba(10,10,20,.7);
  padding:7px 6px 6px;color:var(--dim);cursor:pointer;transition:.14s}
.asset-tile:hover,.asset-tile:focus{border-color:var(--cyan);transform:translateY(-1px);
  box-shadow:0 0 18px rgba(0,229,212,.14);outline:none}
.asset-img{display:flex;align-items:center;justify-content:center;aspect-ratio:1/1;border-radius:8px;
  border:1px solid rgba(150,140,210,.12);overflow:hidden}
.asset-img img{width:100%;height:100%;object-fit:contain;padding:10%;image-rendering:pixelated}
.asset-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:5px;
  font-family:var(--mono);font-size:9.5px;text-align:center;color:var(--faint)}
.asset-empty{grid-column:1/-1;font-family:var(--mono);font-size:11px;color:var(--faint);text-align:center;padding:8px}

.chips{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.chip{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12.5px;color:var(--ink);
  padding:9px 11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);cursor:pointer;transition:.13s}
.chip:hover{border-color:var(--line2);transform:translateY(-1px)}
.chip .swatch{width:11px;height:11px;border-radius:3px;box-shadow:0 0 8px currentColor}
.chip.active{border-color:var(--violet);background:rgba(160,107,255,.14);box-shadow:0 0 18px rgba(160,107,255,.2)}

.prompt{width:100%;resize:vertical;min-height:76px;font-family:var(--mono);font-size:12.5px;line-height:1.5;
  color:var(--ink);background:#0a0a16;border:1px solid var(--line);border-radius:10px;padding:11px}
.prompt:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 3px rgba(160,107,255,.16)}

.toggle{position:relative;display:grid;grid-template-columns:1fr 1fr;background:#0a0a16;border:1px solid var(--line);border-radius:10px;padding:4px}
.toggle-glider{position:absolute;top:4px;left:4px;width:calc(50% - 4px);height:calc(100% - 8px);
  border-radius:7px;background:linear-gradient(135deg,rgba(160,107,255,.9),rgba(0,229,212,.7));transition:transform .22s cubic-bezier(.4,1.3,.5,1);z-index:0}
.toggle-glider.right{transform:translateX(100%)}
.toggle-opt{position:relative;z-index:1;background:none;border:none;cursor:pointer;color:var(--dim);
  font-family:var(--mono);font-size:12.5px;padding:9px 4px;transition:.15s}
.toggle-opt.active{color:#0a0712;font-weight:700}

.run-btn{position:relative;margin-top:2px;border:none;cursor:pointer;border-radius:12px;padding:15px;
  font-family:var(--mono);font-weight:700;font-size:15px;letter-spacing:1px;color:#0a0712;
  background:linear-gradient(135deg,var(--violet) 0%,#c14bff 35%,var(--cyan) 72%,var(--amber) 100%);
  box-shadow:0 0 30px rgba(160,107,255,.4),0 6px 18px rgba(0,0,0,.4);transition:.15s}
.run-btn:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}
.run-btn:disabled{opacity:.4;cursor:not-allowed;filter:grayscale(.4)}
.run-btn .run-spinner{display:none;width:15px;height:15px;border:2px solid rgba(10,7,18,.4);border-top-color:#0a0712;border-radius:50%;vertical-align:-2px;margin-left:8px;animation:spin .7s linear infinite}
.run-btn.busy .run-spinner{display:inline-block} .run-btn.busy .run-label{opacity:.8}
@keyframes spin{to{transform:rotate(360deg)}}
.hint{margin:0;text-align:center;font-family:var(--mono);font-size:11px;color:var(--faint)}
.hint.error{color:var(--err)}

/* ───── stage ───── */
.stage{display:flex;flex-direction:column;gap:16px;min-width:0}
.compare{display:grid;grid-template-columns:1fr auto 1fr 232px;gap:14px;align-items:stretch;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.frame{margin:0;display:flex;flex-direction:column;gap:9px;min-width:0}
.frame figcaption{font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:1px;color:var(--ink)}
.frame figcaption span{color:var(--faint);font-weight:400;text-transform:none;margin-left:6px}
.canvas{position:relative;border-radius:12px;border:1px solid var(--line);aspect-ratio:1/1;overflow:hidden;display:flex;align-items:center;justify-content:center}
.canvas img:not([src]), .cell img:not([src]), #dz-preview:not([src]){display:none!important}
.checker{background-color:#11111c;
  background-image:linear-gradient(45deg,#1a1a2a 25%,transparent 25%),linear-gradient(-45deg,#1a1a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#1a1a2a 75%),linear-gradient(-45deg,transparent 75%,#1a1a2a 75%);
  background-size:18px 18px;background-position:0 0,0 9px,9px -9px,-9px 0}
#img-in,#img-out{width:100%;height:100%;object-fit:contain;padding:6%}
.arrow{align-self:center;color:var(--violet-hi);font-size:18px;text-shadow:0 0 12px var(--violet);animation:pulse 1.8s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.55;transform:translateX(0)}50%{opacity:1;transform:translateX(3px)}}
.frame-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;
  font-family:var(--mono);font-size:12px;color:var(--faint)}
.frame-empty::before{content:"";position:absolute;width:96px;height:96px;border-radius:18px;
  border:1px solid rgba(0,229,212,.24);background:
  linear-gradient(90deg,transparent 48%,rgba(0,229,212,.18) 49% 51%,transparent 52%),
  linear-gradient(transparent 48%,rgba(160,107,255,.18) 49% 51%,transparent 52%);
  box-shadow:0 0 34px rgba(0,229,212,.1)}
.frame-empty p{position:relative;z-index:1;margin:0;padding-top:128px}
.frame-loader{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:rgba(8,8,18,.78);backdrop-filter:blur(2px)}
.loader-grid{display:grid;grid-template-columns:repeat(3,12px);grid-auto-rows:12px;gap:4px}
.loader-grid span{background:var(--violet);border-radius:2px;animation:lg 1.1s ease-in-out infinite}
.loader-grid span:nth-child(2){animation-delay:.1s;background:var(--cyan)} .loader-grid span:nth-child(3){animation-delay:.2s}
.loader-grid span:nth-child(4){animation-delay:.1s} .loader-grid span:nth-child(5){animation-delay:.2s;background:var(--cyan)} .loader-grid span:nth-child(6){animation-delay:.3s}
.loader-grid span:nth-child(7){animation-delay:.2s} .loader-grid span:nth-child(8){animation-delay:.3s} .loader-grid span:nth-child(9){animation-delay:.4s;background:var(--cyan)}
@keyframes lg{0%,100%{opacity:.2;transform:scale(.8)}50%{opacity:1;transform:scale(1)}}
.frame-loader p{margin:0;font-family:var(--mono);font-size:12px;color:var(--dim)}

/* silhouette panel */
.sil-panel{display:flex;flex-direction:column;gap:9px;border:1px solid rgba(0,229,212,.28);border-radius:12px;
  padding:12px;background:linear-gradient(180deg,rgba(0,229,212,.05),rgba(8,8,18,.2))}
.sil-head{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:1px;color:var(--cyan-hi)}
.sil-art{border-radius:9px;border:1px solid var(--line);aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;overflow:hidden}
#sil-canvas{image-rendering:pixelated;width:84%;height:84%;object-fit:contain}
.sil-note{margin:0;font-family:var(--mono);font-size:10.5px;line-height:1.5;color:var(--faint)}

/* statusbar (chips) */
.statusbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:0 4px}
.badge{font-family:var(--mono);font-size:12px;padding:7px 13px;border-radius:999px;border:1px solid;}
.badge.ok{color:var(--ok);border-color:rgba(57,224,138,.4);background:rgba(57,224,138,.08)}
.badge.warn{color:var(--warn);border-color:rgba(255,179,71,.4);background:rgba(255,179,71,.08)}
.status{font-family:var(--mono);font-size:12.5px;color:var(--dim)} .status.error{color:var(--err)}
.dl-btn{margin-left:auto;font-family:var(--mono);font-size:12.5px;font-weight:700;color:#0a0712;text-decoration:none;
  padding:9px 18px;border-radius:10px;background:linear-gradient(135deg,var(--cyan),var(--cyan-hi));box-shadow:0 0 20px rgba(0,229,212,.35)}
.dl-btn:hover{filter:brightness(1.08)}

/* gallery */
.gallery-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.gallery-head{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.gallery-head h3{margin:0;font-size:14px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--ink)}
.hint-sm{font-family:var(--mono);font-size:11px;color:var(--faint)}
.gallery{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.card{cursor:pointer;border:1px solid var(--line);border-radius:11px;overflow:hidden;background:var(--panel2);transition:.15s}
.card:hover,.card:focus{border-color:var(--violet);transform:translateY(-3px);box-shadow:0 8px 24px rgba(0,0,0,.4),0 0 22px rgba(160,107,255,.18);outline:none}
.card-imgs{display:grid;grid-template-columns:1fr 1fr;position:relative}
.card-imgs::after{content:"";position:absolute;top:6%;bottom:6%;left:50%;width:1px;background:linear-gradient(var(--violet),var(--cyan));transform:translateX(-.5px)}
.cell{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;
  background-color:#11111c;background-image:linear-gradient(45deg,#1a1a2a 25%,transparent 25%),linear-gradient(-45deg,#1a1a2a 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#1a1a2a 75%),linear-gradient(-45deg,transparent 75%,#1a1a2a 75%);background-size:12px 12px;background-position:0 0,0 6px,6px -6px,-6px 0}
.cell img{width:100%;height:100%;object-fit:contain;padding:9%;image-rendering:pixelated}
.cell::before{content:attr(data-tag);position:absolute;top:5px;left:5px;font-family:var(--mono);font-size:8px;color:var(--faint);background:rgba(8,8,18,.7);padding:1px 4px;border-radius:4px}
.card-title{margin:8px 9px 2px;font-size:12.5px;font-weight:600;color:var(--ink)}
.card-prompt{margin:0 9px 10px;font-family:var(--mono);font-size:10px;line-height:1.45;color:var(--faint);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gallery-empty{color:var(--faint);font-family:var(--mono);font-size:12px;grid-column:1/-1;text-align:center;padding:20px}

/* footer */
.site-foot{display:flex;justify-content:center;align-items:center;gap:10px;flex-wrap:wrap;padding:22px;
  border-top:1px solid var(--line);margin-top:8px;font-size:12.5px}
.foot-strong{color:var(--dim)} .foot-dim{font-family:var(--mono);font-size:11px;color:var(--faint)} .sep{color:var(--faint)}

/* responsive */
@media(max-width:1080px){
  .layout{grid-template-columns:1fr}
  .proofbar{grid-template-columns:1fr}
  .compare{grid-template-columns:1fr auto 1fr;grid-template-rows:auto auto}
  .sil-panel{grid-column:1/-1;flex-direction:row;align-items:center}
  .sil-art{width:90px;height:90px;flex:0 0 auto}
  .gallery{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:900px){
  .appbar{align-items:flex-start;gap:10px;padding:12px 14px}
  .brand{min-width:0;flex-wrap:wrap}
  .brand-div,.brand-sub{display:none}
  .fp-pill{margin-left:0}
  .appbar-right{width:100%;margin-left:0;justify-content:flex-start;gap:8px;flex-wrap:wrap}
  .ghost-btn{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .howbar{display:block;padding:10px 14px}
  .how-tag{display:inline-flex;margin-bottom:8px}
  .how-steps{display:block;overflow-wrap:anywhere}
  .proofbar{padding:0 14px}
  .layout{padding:16px 14px}
}
@media(max-width:620px){
  .wordmark{font-size:22px}
  .server-pill{font-size:11px;padding:5px 10px}
  .compare{grid-template-columns:1fr;grid-template-rows:auto}
  .arrow{transform:rotate(90deg)}
  .gallery{grid-template-columns:repeat(2,1fr)}
  .asset-strip{grid-template-columns:repeat(4,minmax(0,1fr))}
  .chips{grid-template-columns:1fr 1fr}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
