/* 在 Simple.css 之上的少量补充：状态标签、素材网格、人像选择器、窄屏适配。 */
.state { display: inline-block; padding: 0.1rem 0.6rem; border-radius: 1rem; font-size: 0.9rem; background: var(--accent-bg); }
.state-succeeded { background: #d7f5dd; color: #11632a; }
.state-failed, .state-recovery_required { background: #fde0e0; color: #8a1c1c; }
.state-cancelled, .state-cancel_requested { background: #eee; color: #555; }
.state-running, .state-preparing, .state-saving { background: #e1ecff; color: #1d4f9c; }
@media (prefers-color-scheme: dark) {
  .state-succeeded { background: #12381c; color: #b6f0c3; }
  .state-failed, .state-recovery_required { background: #4a1616; color: #ffc9c9; }
  .state-cancelled, .state-cancel_requested { background: #333; color: #ccc; }
  .state-running, .state-preparing, .state-saving { background: #172f55; color: #c8dbff; }
}
.asset-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: 1rem; }
.asset-grid article { margin: 0; padding: 0.6rem; }
.asset-grid img, .asset-grid audio { width: 100%; }
.asset-grid p { margin: 0.3rem 0 0; font-size: 0.85rem; overflow-wrap: anywhere; }
.picker { display: grid; grid-template-columns: repeat(auto-fill, minmax(9rem, 1fr)); gap: 0.6rem; margin-bottom: 1rem; }
.pick { display: block; border: 2px solid var(--border); border-radius: 6px; padding: 0.3rem; cursor: pointer; font-size: 0.8rem; overflow-wrap: anywhere; }
.pick input { margin: 0 0.3rem 0 0; }
.pick img { display: block; width: 100%; margin-top: 0.3rem; }
.pick:has(input:checked) { border-color: var(--accent); }
#job-form input:not([type=radio]):not([type=hidden]), #job-form select { width: 100%; }
#job-form #seed { width: 12rem; }
video { width: 100%; max-height: 70vh; }
#flash:empty { display: none; }
table { display: block; overflow-x: auto; }
#job-status { border: 0; margin: 1rem 0; padding: 0; }  /* 不用 Simple.css 给 section 的大边距与边线 */
header h1 { font-size: clamp(1.8rem, 6vw, 3rem); overflow-wrap: anywhere; }
@media (max-width: 40rem) {
  nav a { margin: 0.2rem; }
}
