/* trinket — neocities promotional microsite
   static HTML + CSS only. no JS, no build step. see README for handoff notes. */

@import url('https://fonts.googleapis.com/css2?family=DM+Serif+Display&family=Space+Mono:wght@400;700&family=DM+Sans:wght@400;500;700&display=swap');

:root{
  --paper:#F6F1EA;
  --cream:#FFFAF4;
  --ink:#2F2A27;
  --taupe:#8A7770;
  --terracotta:#C9835A;
  --line:#D8CEC1;
  --oat:#EBE2D8;

  --font-display: 'DM Serif Display', Georgia, 'Times New Roman', serif;
  --font-mono: 'Space Mono', 'Courier New', monospace;
  --font-sans: 'DM Sans', -apple-system, Segoe UI, Helvetica, Arial, sans-serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-sans);
  line-height:1.6;
  background-image:radial-gradient(rgba(0,0,0,.025) 1px, transparent 1.3px);
  background-size:9px 9px;
}
img{max-width:100%;display:block}
a{color:var(--terracotta)}
a:focus-visible, button:focus-visible, summary:focus-visible{
  outline:2px solid var(--terracotta);
  outline-offset:3px;
}

h1,h2,h3{font-family:var(--font-display);font-weight:400;line-height:1.2;margin:0 0 .4em}
h1{font-size:clamp(2rem, 5vw, 3rem)}
h2{font-size:clamp(1.5rem, 3.4vw, 2.1rem)}
h3{font-size:1.25rem}
p{margin:0 0 1em}
.eyebrow{
  font-family:var(--font-mono);
  font-size:.7rem;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--taupe);
}

.wrap{max-width:980px;margin:0 auto;padding:0 20px}
.wrap-narrow{max-width:680px;margin:0 auto;padding:0 20px}

/* ---------- skip link ---------- */
.skip-link{
  position:absolute;left:-999px;top:auto;
  background:var(--ink);color:var(--paper);
  padding:10px 16px;border-radius:0 0 8px 0;
  font-family:var(--font-mono);font-size:.8rem;
  z-index:100;
}
.skip-link:focus{left:0;top:0}

/* ---------- nav ---------- */
.site-nav{
  border-bottom:1px solid var(--line);
  background:var(--cream);
}
.site-nav .wrap{
  display:flex;
  align-items:center;
  justify-content:space-between;
  flex-wrap:wrap;
  gap:12px;
  padding-top:14px;
  padding-bottom:14px;
}
.brand-mark{
  font-family:var(--font-display);
  font-size:1.25rem;
  color:var(--ink);
  text-decoration:none;
  display:inline-flex;
  align-items:center;
  gap:8px;
}
.brand-mark:hover{color:var(--terracotta)}
.nav-links{
  display:flex;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
  font-family:var(--font-mono);
  font-size:.78rem;
  letter-spacing:.02em;
  list-style:none;
  margin:0;padding:0;
}
.nav-links a{
  color:var(--taupe);
  text-decoration:none;
  padding:4px 2px;
  border-bottom:1px solid transparent;
}
.nav-links a:hover, .nav-links a[aria-current="page"]{
  color:var(--ink);
  border-bottom-color:var(--terracotta);
}
.nav-links .enter-link{
  color:var(--paper);
  background:var(--ink);
  padding:7px 14px;
  border-radius:999px;
  border-bottom:none !important;
}
.nav-links .enter-link:hover{background:var(--terracotta)}

/* ---------- buttons / CTAs ---------- */
.btn{
  display:inline-block;
  font-family:var(--font-mono);
  font-size:.85rem;
  text-decoration:none;
  padding:12px 22px;
  border-radius:999px;
  border:1.5px solid var(--ink);
  color:var(--ink);
  background:transparent;
  transition:transform .15s ease, background .15s ease, color .15s ease;
}
.btn:hover{background:var(--ink);color:var(--paper);transform:translateY(-2px)}
.btn-primary{background:var(--ink);color:var(--paper)}
.btn-primary:hover{background:var(--terracotta);border-color:var(--terracotta)}
.cta-row{display:flex;gap:12px;flex-wrap:wrap;align-items:center}

/* ---------- hero ---------- */
.hero{
  padding:64px 0 48px;
  text-align:center;
}
.hero .eyebrow{display:block;margin-bottom:14px}
.hero p.lede{
  max-width:520px;
  margin:18px auto 6px;
  font-size:1.05rem;
  color:#4b433d;
}
.hero p.support{
  font-family:var(--font-mono);
  font-size:.82rem;
  color:var(--taupe);
  letter-spacing:.02em;
}
.hero .cta-row{justify-content:center;margin-top:26px}

/* ---------- shelf component ---------- */
.shelf-card{
  background:var(--cream);
  border:1px solid var(--line);
  border-radius:22px;
  padding:20px;
  box-shadow:0 18px 40px rgba(60,45,35,.08);
  position:relative;
}
.shelf-card .shelf-heading{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:10px;
  flex-wrap:wrap;
  margin-bottom:14px;
}
.shelf-card h3{margin:0}
.shelf-card .shelf-caption{
  font-family:var(--font-mono);
  font-size:.72rem;
  color:var(--taupe);
  text-transform:uppercase;
  letter-spacing:.08em;
}
.shelf-grid{
  display:grid;
  grid-template-columns:repeat(3, 1fr);
  gap:10px;
}
.shelf-slot{
  position:relative;
  background:var(--paper);
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px 12px 30px;
  min-height:104px;
  transition:transform .18s ease, box-shadow .18s ease;
}
.shelf-slot:nth-child(3n+2){transform:rotate(.6deg)}
.shelf-slot:nth-child(3n){transform:rotate(-.5deg)}
.shelf-slot:hover, .shelf-slot:focus-within{
  transform:translateY(-3px) rotate(0deg);
  box-shadow:0 10px 20px rgba(60,45,35,.14);
  z-index:2;
}
.shelf-slot .obj{font-size:1.5rem;line-height:1}
.shelf-slot .slot-label{
  display:block;
  margin-top:10px;
  font-family:var(--font-mono);
  font-size:.62rem;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--taupe);
}
.shelf-slot .slot-title{
  display:block;
  font-family:var(--font-display);
  font-size:.95rem;
  margin-top:2px;
  color:var(--ink);
}
/* museum tag: always in the DOM (readable by anyone), visually a quiet
   footer line on the slot rather than something hidden behind hover.
   hover/focus just nudges the card up a bit — see above — so nothing
   essential depends on hover to be understood. */
.shelf-slot .tag{
  position:absolute;
  left:12px; right:12px; bottom:8px;
  font-family:var(--font-mono);
  font-size:.6rem;
  color:#a8988d;
  letter-spacing:.03em;
}

/* ---------- stamps / tickets / FOMO notices ---------- */
.notice-field{
  display:flex;
  flex-wrap:wrap;
  gap:14px;
  justify-content:center;
  padding:36px 0;
}
.stamp{
  font-family:var(--font-mono);
  font-size:.74rem;
  color:var(--ink);
  background:var(--oat);
  border:1px solid var(--line);
  border-radius:10px;
  padding:9px 14px;
  display:inline-block;
}
.stamp:nth-child(odd){transform:rotate(-1.4deg)}
.stamp:nth-child(even){transform:rotate(1.2deg)}
.stamp.ticket{
  background:var(--cream);
  border-style:dashed;
}

/* ---------- mini cards ("what happens there") ---------- */
.mini-cards{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));
  gap:14px;
  margin:28px 0;
}
.mini-card{
  background:var(--cream);
  border:1px solid var(--line);
  border-radius:16px;
  padding:18px;
}
.mini-card .verb{
  font-family:var(--font-mono);
  font-size:.7rem;
  letter-spacing:.1em;
  text-transform:uppercase;
  color:var(--terracotta);
  display:block;
  margin-bottom:6px;
}
.mini-card p{margin:0;font-size:.92rem;color:#4b433d}

/* ---------- feature sections (lore page) ---------- */
.feature-row{
  display:grid;
  grid-template-columns:64px 1fr;
  gap:16px;
  padding:22px 0;
  border-bottom:1px solid var(--line);
}
.feature-row:last-of-type{border-bottom:0}
.feature-row .glyph{font-size:1.8rem;line-height:1}
.feature-row h3{margin-bottom:6px}

/* details/summary "what is this?" pattern */
details.reveal{
  background:var(--cream);
  border:1px solid var(--line);
  border-radius:14px;
  padding:14px 18px;
  margin:16px 0;
}
details.reveal summary{
  cursor:pointer;
  font-family:var(--font-mono);
  font-size:.82rem;
  color:var(--terracotta);
  list-style:none;
}
details.reveal summary::-webkit-details-marker{display:none}
details.reveal summary::before{content:"+ "}
details.reveal[open] summary::before{content:"– "}
details.reveal .reveal-body{margin-top:10px;font-size:.92rem;color:#4b433d}

/* :target pop-open lore note pattern */
.lore-note{
  display:none;
  background:var(--oat);
  border:1px dashed var(--line);
  border-radius:14px;
  padding:16px 18px;
  margin:14px 0;
  font-size:.9rem;
}
.lore-note:target{display:block}
.lore-note .close-note{
  float:right;
  font-family:var(--font-mono);
  font-size:.72rem;
  color:var(--taupe);
  text-decoration:none;
}

/* ---------- horizontal scroll strip ---------- */
.scroll-strip{
  display:flex;
  gap:14px;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  padding:6px 0 18px;
  margin:0 -20px;
  padding-left:20px;
  padding-right:20px;
}
.scroll-strip .shelf-card{
  flex:0 0 82%;
  max-width:340px;
  scroll-snap-align:start;
}
@media (min-width:640px){
  .scroll-strip .shelf-card{flex-basis:44%}
}

/* ---------- stickers / decorative floats ---------- */
.sticker{
  display:inline-block;
  font-size:1.6rem;
  transform:rotate(-8deg);
}
.sticker.float{
  animation:sticker-float 6s ease-in-out infinite;
}
@keyframes sticker-float{
  0%,100%{transform:rotate(-8deg) translateY(0)}
  50%{transform:rotate(-6deg) translateY(-6px)}
}
@media (prefers-reduced-motion: reduce){
  .sticker.float, html{animation:none !important; scroll-behavior:auto !important}
}

/* ---------- footer ---------- */
.site-footer{
  border-top:1px solid var(--line);
  background:var(--cream);
  padding:34px 0;
  margin-top:50px;
  text-align:center;
}
.site-footer .eyebrow{margin-bottom:8px}
.site-footer p{font-size:.85rem;color:var(--taupe)}

/* ---------- sections ---------- */
section{padding:36px 0}
section.tight{padding:20px 0}
hr.rule{border:none;border-top:1px solid var(--line);margin:0}

/* ---------- shelves gallery ---------- */
.shelf-gallery{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));
  gap:22px;
  margin:30px 0;
}

@media (max-width:600px){
  .shelf-grid{gap:8px}
  .shelf-slot{padding:10px 8px 26px;min-height:92px}
  .feature-row{grid-template-columns:44px 1fr}
}
@media (max-width:420px){
  .shelf-grid{grid-template-columns:repeat(2, 1fr)}
  .nav-links{gap:10px;font-size:.7rem}
  .nav-links .enter-link{padding:6px 11px}
}
