:root{
  --bg: #0b0e14;
  --bg-deep: #060810;
  --panel: #11151f;
  --line: rgba(217,166,92,0.18);
  --line-strong: rgba(217,166,92,0.35);
  --ink: #ede8dd;
  --muted: #9aa1b2;
  --brass: #d9a65c;
  --brass-soft: rgba(217,166,92,0.12);
  --serif: 'Fraunces', Georgia, serif;
  --mono: 'JetBrains Mono', ui-monospace, Menlo, Consolas, monospace;
}

*{box-sizing:border-box}

html,body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--mono);line-height:1.6;-webkit-font-smoothing:antialiased}

body{
  background-image:
    radial-gradient(1px 1px at 20% 30%, rgba(237,232,221,.5) 0, transparent 40%),
    radial-gradient(1px 1px at 70% 65%, rgba(237,232,221,.35) 0, transparent 40%),
    radial-gradient(1.5px 1.5px at 85% 20%, rgba(237,232,221,.4) 0, transparent 40%),
    radial-gradient(1px 1px at 40% 80%, rgba(237,232,221,.3) 0, transparent 40%),
    radial-gradient(1px 1px at 55% 10%, rgba(237,232,221,.4) 0, transparent 40%),
    radial-gradient(1.5px 1.5px at 10% 70%, rgba(237,232,221,.35) 0, transparent 40%),
    linear-gradient(180deg, var(--bg-deep), var(--bg) 40%);
  background-attachment:fixed;
}

a{color:var(--brass)}

.stage{max-width:980px;margin:0 auto;padding:0 20px 80px}

/* ---------- Topbar ---------- */
.topbar{
  display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:8px;
  padding:28px 0 18px;border-bottom:1px solid var(--line);
}
.wordmark{
  font-family:var(--serif);font-weight:600;font-size:1.3rem;letter-spacing:.01em;
}
.tagline{
  font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);
}
.topnav a{
  font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
  text-decoration:none;border-bottom:1px solid transparent;
}
.topnav a:hover{color:var(--brass);border-bottom-color:var(--line-strong)}

/* ---------- Hero ---------- */
.hero{padding:56px 0 40px;text-align:center}
.hero h1{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(1.9rem, 5vw, 3.2rem);
  line-height:1.2;margin:0 0 18px;letter-spacing:-.01em;
}
.hero h1 span{
  color:var(--brass);font-style:italic;font-weight:600;
  border-bottom:1px solid var(--line-strong);
}
.lede{
  max-width:560px;margin:0 auto 48px;color:var(--muted);font-size:.95rem;
}

/* ---------- Generator layout ---------- */
.generator{
  display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start;
  text-align:left;
}
@media (max-width:820px){
  .generator{grid-template-columns:1fr}
}

/* ---------- Planet frame ---------- */
.planet-frame{
  position:relative;
  aspect-ratio:1/1;
  border:1px solid var(--line);
  background:radial-gradient(circle at 50% 45%, rgba(217,166,92,0.05), transparent 60%), var(--panel);
  display:grid;place-items:center;
  border-radius:4px;
}
#planetCanvas{
  width:78%;height:78%;display:block;
}
.frame-corner{
  position:absolute;width:18px;height:18px;
  border:1px solid var(--brass);opacity:.6;
}
.frame-corner.tl{top:-1px;left:-1px;border-right:none;border-bottom:none}
.frame-corner.tr{top:-1px;right:-1px;border-left:none;border-bottom:none}
.frame-corner.bl{bottom:-1px;left:-1px;border-right:none;border-top:none}
.frame-corner.br{bottom:-1px;right:-1px;border-left:none;border-top:none}

/* ---------- Control panel ---------- */
.control-panel{display:flex;flex-direction:column;gap:6px}

.field-label{
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  margin-bottom:6px;
}

#nameInput{
  font-family:var(--serif);font-size:1.6rem;
  background:transparent;border:none;border-bottom:1px solid var(--line-strong);
  color:var(--ink);padding:6px 2px 12px;width:100%;
  border-radius:0;
}
#nameInput:focus{
  outline:none;border-bottom-color:var(--brass);
}
#nameInput::placeholder{color:rgba(237,232,221,.28);font-style:italic}

.hint{
  font-size:.78rem;color:var(--muted);margin:8px 0 22px;
}

/* ---------- Specimen card ---------- */
.specimen-card{
  margin:0 0 16px;border:1px solid var(--line);border-radius:4px;
  padding:14px 16px;background:var(--brass-soft);
}
.specimen-row{
  display:flex;justify-content:space-between;gap:12px;
  padding:6px 0;border-bottom:1px solid var(--line);
  font-size:.85rem;
}
.specimen-row:last-child{border-bottom:none}
.specimen-row dt{color:var(--muted);font-weight:400}
.specimen-row dd{margin:0;text-align:right;font-weight:500}
.specimen-row.specimen-id dd{color:var(--brass);letter-spacing:.04em}

.record-text{
  font-family:var(--serif);font-style:italic;color:var(--muted);
  font-size:.95rem;line-height:1.6;margin:0 0 22px;min-height:3.2em;
}

.claim-btn{
  font-family:var(--mono);font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  font-size:.85rem;padding:14px 20px;border:1px solid var(--brass);
  background:var(--brass);color:#1a1305;cursor:pointer;border-radius:2px;
  transition:transform .12s ease, box-shadow .12s ease, opacity .15s ease;
}
.claim-btn:hover:not(:disabled){
  transform:translateY(-1px);
  box-shadow:0 4px 16px rgba(217,166,92,.25);
}
.claim-btn:disabled{
  opacity:.35;cursor:not-allowed;background:transparent;color:var(--muted);border-color:var(--line-strong);
}
.claim-btn:focus-visible{
  outline:2px solid var(--brass);outline-offset:2px;
}

/* ---------- Action row (claim + print) ---------- */
.action-row{display:flex;gap:10px;flex-wrap:wrap}
.action-row .claim-btn{flex:1;min-width:200px}

.print-btn{
  font-family:var(--mono);font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  font-size:.85rem;padding:14px 18px;border:1px solid var(--line-strong);
  background:transparent;color:var(--ink);cursor:pointer;border-radius:2px;
  transition:border-color .12s ease, color .12s ease;
}
.print-btn:hover{border-color:var(--brass);color:var(--brass)}
.print-btn:focus-visible{outline:2px solid var(--brass);outline-offset:2px}

/* ---------- Print title (hidden on screen) ---------- */
.print-title{display:none}

/* ---------- Print stylesheet ---------- */
@media print{
  html, body{background:#fff !important;color:#1a1305 !important;background-image:none !important}
  body::before, body::after{display:none !important}
  #stars{display:none !important}
  .topbar, .lede, .field-label, #nameInput, #nameHint, .action-row, .claim-msg, .owner-code-box,
  .lookup, .about, .faq, .site-footer{display:none !important}
  .hero h1{display:none}
  .print-title{
    display:block;font-family:var(--serif);font-size:1.6rem;font-weight:600;
    margin:0 0 16px;color:#1a1305;text-align:center;
  }
  .stage{padding:24px 16px}
  .hero{padding:0}
  .generator{display:block !important;max-width:600px;margin:0 auto}
  .planet-frame{
    border:1px solid #ccc;background:#fff;margin:0 auto 20px;max-width:320px;
  }
  .specimen-card{
    background:#fafafa !important;border:1px solid #ccc;color:#1a1305;
  }
  .specimen-row{border-bottom:1px solid #ddd}
  .specimen-row dt, .specimen-row dd{color:#1a1305 !important}
  .specimen-row.specimen-id dd{color:#9a6a1f !important}
  .record-text{color:#444 !important}
}

.claim-msg{
  font-size:.85rem;color:var(--brass);min-height:1.4em;margin:12px 0 0;
}

/* ---------- About ---------- */
.about{
  padding:56px 0;border-top:1px solid var(--line);max-width:680px;margin:0 auto;text-align:center;
}
.about h2{
  font-family:var(--serif);font-weight:500;font-size:1.6rem;margin:0 0 16px;
}
.about p{color:var(--muted);font-size:.92rem}

/* ---------- FAQ ---------- */
.faq{
  padding:40px 0 60px;border-top:1px solid var(--line);max-width:680px;margin:0 auto;
}
.faq h2{
  font-family:var(--serif);font-weight:500;font-size:1.6rem;margin:0 0 24px;text-align:center;
}
.faq details{
  border:1px solid var(--line);border-radius:4px;padding:14px 16px;margin-bottom:10px;
  background:rgba(217,166,92,0.03);
}
.faq summary{
  cursor:pointer;font-weight:500;font-size:.92rem;
}
.faq details[open] summary{color:var(--brass)}
.faq details p{
  color:var(--muted);font-size:.88rem;margin:12px 0 0;line-height:1.65;
}

/* ---------- Footer ---------- */
.site-footer{
  text-align:center;padding-top:32px;border-top:1px solid var(--line);
  color:var(--muted);font-size:.78rem;
}

/* ---------- Owner code box ---------- */
.owner-code-box{
  margin-top:18px;border:1px solid var(--line-strong);border-radius:4px;
  padding:16px;background:rgba(217,166,92,0.06);text-align:center;
}
.owner-code-label{
  font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);
  margin:0 0 8px;
}
.owner-code-value{
  font-family:var(--mono);font-size:1.3rem;font-weight:700;letter-spacing:.08em;
  color:var(--brass);margin:0 0 8px;
}
.owner-code-hint{
  font-size:.78rem;color:var(--muted);margin:0 0 14px;line-height:1.5;
}
.copy-btn{
  font-family:var(--mono);font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  font-size:.78rem;padding:8px 16px;border:1px solid var(--line-strong);
  background:transparent;color:var(--ink);cursor:pointer;border-radius:2px;
  transition:border-color .12s ease, color .12s ease;
}
.copy-btn:hover{border-color:var(--brass);color:var(--brass)}
.copy-btn:focus-visible{outline:2px solid var(--brass);outline-offset:2px}

/* ---------- Lookup section ---------- */
.lookup{
  padding:48px 0;border-top:1px solid var(--line);max-width:520px;margin:0 auto;text-align:center;
}
.lookup h2{
  font-family:var(--serif);font-weight:500;font-size:1.5rem;margin:0 0 8px;
}
.lookup .lede{margin:0 0 20px}

/* ---------- Support / donation ---------- */
.support{
  padding:40px 0 56px;border-top:1px solid var(--line);max-width:480px;margin:0 auto;text-align:center;
}
.support h2{
  font-family:var(--serif);font-weight:500;font-size:1.3rem;margin:0 0 8px;
}
.support .lede{margin:0 0 18px}
.support-btn{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--mono);font-weight:700;letter-spacing:.04em;
  font-size:.9rem;padding:12px 22px;border:1px solid var(--brass);border-radius:2px;
  color:var(--brass);text-decoration:none;
  transition:background .12s ease, color .12s ease;
}
.support-btn:hover{background:var(--brass);color:#1a1305}
.support-btn:focus-visible{outline:2px solid var(--brass);outline-offset:2px}
.lookup-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
#lookupInput{
  font-family:var(--mono);font-size:.95rem;letter-spacing:.04em;
  background:transparent;border:1px solid var(--line-strong);border-radius:2px;
  color:var(--ink);padding:12px 14px;flex:1;min-width:200px;
}
#lookupInput:focus{outline:none;border-color:var(--brass)}
#lookupInput::placeholder{color:rgba(237,232,221,.28)}
.lookup-btn{
  font-family:var(--mono);font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  font-size:.85rem;padding:12px 20px;border:1px solid var(--brass);
  background:transparent;color:var(--brass);cursor:pointer;border-radius:2px;
  transition:background .12s ease, color .12s ease;
}
.lookup-btn:hover{background:var(--brass);color:#1a1305}
.lookup-btn:focus-visible{outline:2px solid var(--brass);outline-offset:2px}

/* ---------- Honeypot (hidden from real users) ---------- */
.hp-field{
  position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden;
}
@media (prefers-reduced-motion: reduce){
  *{transition:none !important}
}
