/* ============================================================
   PAGES — /craft and /archive
   Layered on top of site.css. Uses the same tokens throughout.
   ============================================================ */

/* subpages have no preloader and no hero, so the nav needs breathing room */
.page {
  padding: 9rem var(--gutter) var(--section);
}
@media (max-width: 640px) { .page { padding-top: 7rem; } }

/* ---------- page masthead ---------- */
.page-head {
  border-bottom: 1px solid var(--line);
  padding-bottom: 2.5rem;
}
.page-title {
  margin-top: 1.5rem;
  font-family: var(--font-display);
  text-transform: uppercase;
  line-height: 0.95;
  letter-spacing: -0.01em;
  font-size: var(--fs-h1);
}
@media (min-width: 640px) { .page-title { font-size: var(--fs-display); } }

/* the one line that stops "Craft" and "Archive" having to carry their own meaning */
.page-what {
  margin-top: 1.75rem;
  max-width: 52ch;
  font-size: var(--fs-lead);
  line-height: var(--lh-lead);
  color: var(--muted);
}
.page-what strong { color: var(--foreground); font-weight: 500; }

.page-count {
  margin-top: 1.5rem;
  font-family: var(--font-sans);
  font-size: var(--fs-eyebrow);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--muted);
}

/* ---------- the shelf (/craft) ---------- */
.shelf { margin-top: 3.5rem; border-top: 1px solid var(--line); }

.shelf-item {
  display: grid;
  grid-template-columns: 4.5rem 1fr;
  gap: 0 1.5rem;
  align-items: baseline;
  border-bottom: 1px solid var(--line);
  padding: 1.6rem 0;
  transition: background-color 340ms ease-out;
}
@media (min-width: 768px) {
  .shelf-item { grid-template-columns: 4.5rem 1fr 9rem; }
}
.shelf-item:hover { background-color: rgba(243, 241, 234, 0.02); }

.shelf-n {
  font-family: var(--font-mono, var(--font-sans));
  font-size: var(--fs-eyebrow);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.14em;
  color: var(--muted);
}
.shelf-item:hover .shelf-n { color: var(--accent); }

.shelf-title {
  font-family: var(--font-sans);
  font-size: var(--fs-h3);
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.shelf-desc {
  margin-top: 0.4rem;
  max-width: 62ch;
  font-size: var(--fs-body);
  color: var(--muted);
}
.shelf-meta {
  margin-top: 0.6rem;
  font-size: var(--fs-eyebrow);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--muted);
}
@media (min-width: 768px) {
  .shelf-meta { margin-top: 0; text-align: right; align-self: baseline; }
}
.shelf-meta .tag { color: var(--accent); }

/* ---------- archive ---------- */
.arc { margin-top: 3.5rem; }

.arc-block {
  border-top: 1px solid var(--line-strong);
  padding: 2.5rem 0 0.5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}
@media (min-width: 1024px) {
  .arc-block { grid-template-columns: 20rem 1fr; gap: var(--gutter); }
}

.arc-when {
  font-size: var(--fs-eyebrow);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--muted);
}
.arc-where {
  margin-top: 0.5rem;
  font-family: var(--font-display);
  text-transform: uppercase;
  font-size: var(--fs-h2);
  line-height: 1;
  letter-spacing: -0.01em;
}
.arc-role {
  margin-top: 0.65rem;
  font-size: var(--fs-body);
  color: var(--muted);
}

.arc-list { margin: 0; }
.arc-list li {
  border-bottom: 1px solid var(--line);
  padding: 0 0 1.5rem;
  margin-bottom: 1.5rem;
}
.arc-list li:last-child { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }
.arc-h {
  font-family: var(--font-sans);
  font-size: var(--fs-h3);
  font-weight: 600;
  letter-spacing: -0.01em;
  line-height: 1.2;
}
.arc-p {
  margin-top: 0.6rem;
  max-width: 60ch;
  font-size: var(--fs-body);
  color: var(--muted);
}
.arc-note {
  margin-top: 0.75rem;
  font-size: var(--fs-eyebrow);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--accent);
}

/* ---------- shared page footer ---------- */
.page-foot {
  margin-top: var(--section);
  border-top: 1px solid var(--line);
  padding-top: 2.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 1rem 2.5rem;
  align-items: baseline;
  justify-content: space-between;
}
.page-foot a {
  font-family: var(--font-sans);
  font-size: var(--fs-h3);
  font-weight: 600;
  letter-spacing: -0.01em;
  transition: color 340ms ease-out, transform 340ms ease-out;
  display: inline-block;
}
.page-foot a:hover, .page-foot a:focus-visible { color: var(--accent); transform: translateX(10px); }
.page-foot .copyright {
  font-size: var(--fs-eyebrow);
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--muted);
}

/* ============================================================
   CRAFT — card grid with generated visuals
   Every card draws itself from its own numbers. No screenshots,
   no client data, and the page demonstrates the claim it makes.
   ============================================================ */
.shelf-grid{
  margin-top:3.5rem;
  display:grid; grid-template-columns:1fr; gap:2.5rem var(--gutter);
}
@media (min-width:700px){ .shelf-grid{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1200px){ .shelf-grid{ grid-template-columns:repeat(3,1fr); } }

.card{ display:flex; flex-direction:column; }

.viz{
  position:relative; aspect-ratio:4/3; width:100%;
  border:1px solid var(--line); border-radius:0.125rem;
  background:linear-gradient(160deg, var(--surface-2), var(--background));
  overflow:hidden; display:grid; place-items:center;
  transition:border-color 340ms ease-out;
}
.card:hover .viz{ border-color:var(--line-strong); }
.viz svg{ width:100%; height:100%; }
.viz-txt{ font-family:var(--font-mono, var(--font-sans)); }

.card-head{
  margin-top:1.1rem; display:flex; align-items:baseline;
  justify-content:space-between; gap:1rem;
  border-top:1px solid var(--line); padding-top:0.85rem;
}
.card-n{
  font-size:var(--fs-eyebrow); font-variant-numeric:tabular-nums;
  letter-spacing:0.14em; color:var(--muted); flex:none;
}
.card:hover .card-n{ color:var(--accent); }
.card-title{
  font-family:var(--font-sans); font-size:1.0625rem; font-weight:600;
  letter-spacing:-0.01em; line-height:1.25;
}
.card-desc{
  margin-top:0.5rem; font-size:0.9375rem; line-height:1.55; color:var(--muted);
}
.card-meta{
  margin-top:0.75rem; display:flex; gap:0.75rem; align-items:center;
  font-size:var(--fs-eyebrow); text-transform:uppercase; letter-spacing:0.18em;
  color:var(--muted);
}
.card-meta .tag{ color:var(--accent); }
.card-meta .dot{ width:3px; height:3px; border-radius:9999px; background:var(--rule-firm); flex:none; }

/* the live conic-gradient CTA, rebuilt — this one is not a drawing, it runs */
.cta-demo{
  position:relative; display:inline-flex; align-items:center; justify-content:center;
  padding:0.85rem 1.9rem; border-radius:9999px;
  background:var(--surface); color:var(--foreground);
  font-family:var(--font-sans); font-size:0.9rem; font-weight:600; letter-spacing:-0.01em;
  isolation:isolate;
}
.cta-demo::before{
  content:""; position:absolute; inset:0; border-radius:inherit; padding:1.5px;
  background:conic-gradient(from var(--a), transparent 0deg, var(--accent) 70deg, var(--accent-2) 110deg, transparent 180deg, transparent 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  animation:cta-spin 6s linear infinite;
}
@property --a{ syntax:'<angle>'; initial-value:0deg; inherits:false; }
@keyframes cta-spin{ to{ --a:360deg; } }
.viz:hover .cta-demo::before{ animation-duration:3s; }
@media (prefers-reduced-motion:reduce){ .cta-demo::before{ animation:none; } }
