/* Projects (portal/static/projects.js) */
.publish-bar { display: flex; align-items: center; justify-content: space-between; gap: 12px 20px; flex-wrap: wrap; margin-bottom: 24px; }
.publish-bar.pending { border-color: var(--bronze); }
.publish-state p { margin: 0; }
.publish-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.build-log { flex-basis: 100%; }
.build-log pre { max-height: 240px; overflow: auto; font-size: 0.8125rem; white-space: pre-wrap; background: var(--bg); padding: 10px; border-radius: 8px; }

.project-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 16px; }
.project-card { padding: 0; overflow: hidden; display: flex; flex-direction: column; }
.project-cover { display: block; aspect-ratio: 4 / 3; background: var(--bg); }
.project-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.no-photo { display: grid; place-items: center; height: 100%; color: var(--muted); font-size: 0.9375rem; }
.project-body { padding: 14px 16px 16px; }
.project-title { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.project-title h2 { font-size: 1.25rem; margin: 0; }
.project-title h2 a { text-decoration: none; }
.project-body > p { margin: 4px 0 0; }
.add-project { max-width: 560px; }

.back { text-decoration: none; color: var(--muted); }
.project-form { max-width: 760px; margin-top: 0; }
.problems { margin: 12px 0 0; padding-left: 20px; color: var(--warn); }
.photos { margin-top: 32px; }
.photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 14px; margin: 14px 0; }
.photo { margin: 0; padding: 0; overflow: hidden; }
.photo.is-cover { border-color: var(--bronze); box-shadow: 0 0 0 1px var(--bronze); }
.photo img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; background: var(--bg); }
.photo figcaption { padding: 10px 12px 12px; }
.photo figcaption label:first-child { margin-top: 0; }
.photo-roles { margin-top: 6px; }
.photo-roles label.check { margin: 6px 0; font-size: 0.9375rem; }
.danger-zone { margin-top: 40px; padding-top: 20px; border-top: 1px solid var(--line); }
