/* Project directory and detail components share the Rude Valley tokens. */
.project-shell, .project-shell *, .skip-link { box-sizing: border-box; }
.project-shell { width: min(1200px, calc(100% - var(--space-8))); margin: 0 auto; padding: var(--space-8) 0; font-size: 14px; line-height: 1.7; }
.project-shell a { color: inherit; }
.project-shell a:focus-visible, .project-shell button:focus-visible, .skip-link:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }
.skip-link { position: fixed; top: var(--space-2); left: var(--space-4); z-index: 10; padding: var(--space-3) var(--space-4); background: var(--color-accent); color: var(--color-bg); transform: translateY(-150%); font: 14px var(--font-ui); }
.skip-link:focus { transform: translateY(0); }
.section-code { color: var(--color-text-muted); font-size: 11px; letter-spacing: 1.4px; line-height: 1.5; }
.breadcrumb { display: flex; gap: var(--space-3); align-items: center; margin-bottom: var(--space-6); color: var(--color-text-muted); font-size: 12px; }
.breadcrumb a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; }
.breadcrumb a:hover, .project-footer a:hover { color: var(--color-accent); }
.breadcrumb [aria-current] { color: var(--color-text); }
.directory-heading { display: flex; justify-content: space-between; align-items: end; gap: var(--space-6); padding: var(--space-4) 0 var(--space-8); border-bottom: 1px solid var(--color-border); margin-bottom: var(--space-8); }
.directory-heading h1 { font-size: clamp(32px, 5vw, 48px); margin: var(--space-3) 0; line-height: 1.15; letter-spacing: -2px; }
.directory-heading p { color: var(--color-text-muted); max-width: 600px; margin-bottom: 0; }
.directory-count { white-space: nowrap; font-size: 11px; color: var(--color-text-muted); padding-bottom: var(--space-1); }
.project-card { display: grid; grid-template-columns: minmax(200px, .7fr) 1fr; border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; background: var(--color-surface); }
.project-card-art { display: grid; place-content: center; min-height: 300px; border-right: 1px solid var(--color-border); background: var(--color-bg); position: relative; overflow: hidden; }
.project-card-art::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(var(--color-border) 1px, transparent 1px), linear-gradient(90deg, var(--color-border) 1px, transparent 1px); background-size: 40px 40px; opacity: .18; }
.project-card-art svg { width: 160px; height: 160px; color: var(--color-accent); z-index: 1; }
.project-art-label { position: absolute; bottom: var(--space-4); left: var(--space-4); font-size: 9px; color: var(--color-text-muted); letter-spacing: 1px; }
.project-card-body { padding: var(--space-8); }
.project-card h2 { font-size: 30px; font-weight: 600; letter-spacing: -1px; line-height: 1.2; margin: var(--space-6) 0 var(--space-4); }
.project-card p { color: var(--color-text-muted); max-width: 52ch; }
.project-tags { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: var(--space-6) 0; }
.project-tags span { border: 1px solid var(--color-border); padding: var(--space-1) var(--space-2); border-radius: var(--radius-sm); color: var(--color-text-muted); font-size: 11px; }
.lab-button { display: inline-flex; justify-content: center; align-items: center; min-height: 46px; gap: var(--space-3); padding: var(--space-3) var(--space-4); border: 1px solid var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface-raised); color: var(--color-text); text-decoration: none; font: 600 13px/1.5 var(--font-ui); }
.lab-button:hover { border-color: var(--color-accent); }
.project-shell .lab-button--primary { color: var(--color-bg); background: var(--color-accent); border-color: var(--color-accent); }
.project-shell .lab-button--primary:hover { background: var(--color-accent-hover); border-color: var(--color-accent-hover); }
.status-badge { display: inline-flex; align-items: center; gap: var(--space-2); color: var(--color-accent); font-size: 11px; line-height: 1.5; }
.status-badge span { font-size: 8px; }
.status-badge--alpha { color: var(--color-warning); }
.stack-list { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-2); }
.stack-list span { display: inline-block; }
.stack-list span:not(:last-child)::after { content: ' /'; color: var(--color-text-muted); }
.project-card + .project-card { margin-top: var(--space-6); }
.project-eyebrow { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-6); }
.project-hero { display: grid; grid-template-columns: minmax(0, 1fr) 250px; border: 1px solid var(--color-border); border-radius: var(--radius-md); background: var(--color-surface); overflow: hidden; }
.project-hero-main { padding: var(--space-12); }
.project-hero h1 { font-size: clamp(36px, 5vw, 64px); letter-spacing: -3px; font-weight: 600; line-height: 1.08; margin: var(--space-6) 0; overflow-wrap: anywhere; }
.title-period { color: var(--color-accent); }
.hero-description { color: var(--color-text-muted); max-width: 50ch; margin-bottom: var(--space-8); }
.hero-footnote { margin: var(--space-3) 0 0; color: var(--color-text-muted); font-size: 9px; letter-spacing: 1px; }
.project-specs { display: flex; flex-direction: column; justify-content: center; gap: var(--space-6); margin: var(--space-8) 0; padding: 0 var(--space-8); border-left: 1px solid var(--color-border); }
.project-specs dt { color: var(--color-text-muted); font-size: 10px; letter-spacing: 1.4px; }
.project-specs dd { margin: var(--space-1) 0 0; font-size: 13px; }
.text-warning { color: var(--color-warning); }
.project-tabs { grid-column: 1/-1; display: flex; gap: var(--space-2); padding: var(--space-3) var(--space-6); border-top: 1px solid var(--color-border); background: var(--color-bg); }
.project-tabs[hidden], .project-panel[hidden] { display: none; }
.project-tabs button { background: transparent; font: inherit; font-size: 13px; gap: var(--space-3); cursor: pointer; }
.project-tabs [aria-selected=true] { background: var(--color-nav-active); border-color: var(--color-nav-active-border); color: var(--color-accent); }
.project-tabs button:hover { color: var(--color-accent-hover); }
.project-content { outline: none; }
.project-content:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }
.project-panel { padding-top: var(--space-12); }
.project-panel:focus-visible { outline: 2px solid var(--color-accent); outline-offset: 4px; }
.panel-heading { margin-bottom: var(--space-8); }
.panel-heading .section-code { margin-top: 0; }
.panel-heading h2 { font-size: 26px; letter-spacing: -1px; font-weight: 500; margin: var(--space-2) 0; line-height: 1.3; }
.panel-heading>p:last-child:not(.section-code) { color: var(--color-text-muted); font-size: 13px; }
.overview-layout { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: var(--space-12); }
.project-panel h3 { font-size: 16px; font-weight: 500; line-height: 1.5; margin: 0 0 var(--space-4); }
.project-prose p, .controls-panel p, .devlog-entry p { color: var(--color-text-muted); font-size: 14px; line-height: 1.85; }
.prototype-note { border-left: 2px solid var(--color-warning); padding-left: var(--space-4); margin-top: var(--space-6); }
.controls-panel { padding: var(--space-6); border: 1px solid var(--color-border); background: var(--color-surface); border-radius: var(--radius-sm); align-self: start; }
.controls-panel .section-code { font-size: 10px; margin-top: 0; }
.control-hint { display: block; border-top: 1px solid var(--color-border); padding-top: var(--space-4); margin-top: var(--space-4); color: var(--color-text-muted); font-size: 11px; }
.empty-state { padding: var(--space-8); border: 1px dashed var(--color-border); border-radius: var(--radius-sm); background: var(--color-surface); }
.empty-state h3 { margin-top: var(--space-4); }
.empty-state p { color: var(--color-text-muted); font-size: 13px; max-width: 65ch; margin-bottom: 0; }
.devlog-entry { padding: var(--space-6) 0; border-top: 1px solid var(--color-border); }
.devlog-entry time { display: block; color: var(--color-accent); font-size: 11px; margin-bottom: var(--space-3); }
.devlog-entry p { max-width: 80ch; white-space: pre-line; overflow-wrap: anywhere; }
.project-footer { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: var(--space-4); border-top: 1px solid var(--color-border); margin-top: var(--space-12); padding-top: var(--space-4); font-size: 11px; color: var(--color-text-muted); }
.project-footer a { display: inline-flex; min-height: 44px; align-items: center; text-decoration: none; }
.project-footer span { font-size: 9px; letter-spacing: 1px; }
@media (max-width: 800px) {
  .project-hero { grid-template-columns: minmax(0, 1fr) 180px; }
  .project-hero-main { padding: var(--space-8); }
  .project-specs { padding-inline: var(--space-6); }
  .overview-layout { grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
  .project-card-body { padding: var(--space-6); }
}
@media (max-width: 640px) {
  .project-shell { padding-top: var(--space-6); }
  .directory-heading { align-items: start; flex-direction: column; gap: var(--space-3); }
  .directory-heading h1 { letter-spacing: -1px; }
  .project-card, .project-hero { grid-template-columns: minmax(0, 1fr); }
  .project-card-art { min-height: 200px; border-right: 0; border-bottom: 1px solid var(--color-border); }
  .project-card-art svg { width: 130px; height: 130px; }
  .project-hero-main { padding: var(--space-6); }
  .project-hero h1 { letter-spacing: -2px; }
  .project-specs { display: grid; grid-template-columns: 1fr 1fr; margin: 0; padding: var(--space-6); border-left: 0; border-top: 1px solid var(--color-border); gap: var(--space-4); }
  .project-eyebrow { gap: var(--space-3); }
  .project-tabs { padding: var(--space-3); }
  .project-panel { padding-top: var(--space-8); }
  .project-footer { margin-top: var(--space-8); }
  .lab-button { width: 100%; }
}


/* Long-form project notes and original development captures. */
.editorial-section { margin-top: var(--space-8); }
.project-prose { max-width: 76ch; }
.project-shell .devlog-title { max-width: 32ch; margin-bottom: var(--space-6); font-size: clamp(22px, 3vw, 32px); line-height: 1.35; letter-spacing: -.6px; }
.devlog-entry { max-width: 1000px; }
.devlog-entry p { max-width: 76ch; white-space: normal; }
.devlog-entry h4 { max-width: 60ch; margin: 0 0 var(--space-4); color: var(--color-text); font-size: 17px; font-weight: 500; line-height: 1.55; }
.editorial-images { display: grid; gap: var(--space-6); margin: var(--space-6) 0 var(--space-8); }
.editorial-images figure { min-width: 0; margin: 0; }
.editorial-images a { display: block; border: 1px solid var(--color-border); border-radius: var(--radius-sm); overflow: hidden; background: var(--color-bg); }
.editorial-images a:hover { border-color: var(--color-accent); }
.editorial-images img { display: block; width: 100%; height: auto; image-rendering: pixelated; }
.editorial-images figcaption { max-width: 90ch; margin-top: var(--space-3); color: var(--color-text-muted); font-size: 12px; line-height: 1.7; }
.editorial-images--pair { grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (max-width: 640px) {
  .editorial-images--pair { grid-template-columns: minmax(0, 1fr); }
  .project-shell .devlog-title { font-size: 23px; }
}

.project-prose p, .devlog-entry p { font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 16px; line-height: 1.85; }
