body {
  font-family: "Yu Gothic UI", "Meiryo", sans-serif;
  margin: 1.5rem;
  color: #222;
  background: #fafafa;
}

h1 { font-size: 1.4rem; margin-bottom: 0.5rem; }
h2 { font-size: 1.15rem; border-bottom: 1px solid #ccc; padding-bottom: 0.2rem; }
h3 { font-size: 1rem; }

.note { color: #555; font-size: 0.9rem; }
.error { color: #b00020; font-weight: bold; min-height: 1.2em; }

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1rem;
}

fieldset {
  background: #fff;
  border: 1px solid #bbb;
  border-radius: 6px;
  padding: 0.8rem 1rem;
}

label {
  display: block;
  margin: 0.5rem 0;
}

select, input[type="file"] {
  margin-top: 0.2rem;
  max-width: 100%;
}

.actions { margin: 1rem 0; }

button {
  padding: 0.4rem 1rem;
  margin-right: 0.5rem;
  font-size: 0.95rem;
}

button:disabled, select:disabled {
  color: #888;
}

.summary {
  display: grid;
  grid-template-columns: max-content max-content;
  gap: 0.2rem 1rem;
  background: #fff;
  border: 1px solid #ccc;
  padding: 0.6rem 1rem;
  width: max-content;
}

.summary dt { font-weight: bold; }
.summary dd { margin: 0; text-align: right; }

.download { font-weight: bold; }

.table-wrap {
  overflow: auto;
  max-height: 60vh;
  background: #fff;
  border: 1px solid #ccc;
}

table {
  border-collapse: collapse;
  font-size: 0.9rem;
  white-space: pre;
}

th, td {
  border: 1px solid #ddd;
  padding: 0.25rem 0.6rem;
  text-align: left;
}

th {
  background: #eef3f8;
  position: sticky;
  top: 0;
}
