/* A · existing business classes mapped to shared form / dialog components.
   Information technology rules are preserved separately in school.css. */
#modal { width: min(640px, calc(100% - 32px)); max-width: 640px; max-height: 86dvh; padding: var(--space-8); overflow: auto; overscroll-behavior: contain; }
.modal-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 24px; }
.modal-header h2 { font-size: 23px; margin-top: 6px; }
.modal-header > div, #modal-content, #modal form { min-width: 0; }
#modal-content { overflow-wrap: anywhere; }
#modal-content h3 { margin: 20px 0 12px; }
#modal-content h3:first-child { margin-top: 0; }
#modal-content p { margin: 12px 0; }
.form-field { display: grid; gap: 8px; min-width: 0; margin: 16px 0; color: var(--text); font-size: var(--text-sm); font-weight: 600; }
.form-field:first-child { margin-top: 0; }
.form-field input, .form-field select, .form-field textarea, #modal textarea, #modal select { width: 100%; min-width: 0; min-height: 46px; padding: 10px 13px; border: 1px solid var(--input-line); border-radius: var(--radius-control); background: var(--surface); color: var(--text); font-size: var(--text-base); font-weight: 400; }
.form-field textarea, #modal textarea { resize: vertical; line-height: 1.6; }
#modal input[type=checkbox] { flex-shrink: 0; vertical-align: middle; }
#modal input[type=file] { max-width: 100%; font-size: var(--text-sm); }
.form-footer { display: flex; justify-content: flex-end; gap: 10px; flex-wrap: wrap; margin-top: 24px; }
.primary-button, .secondary-button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: 1px solid var(--line); border-radius: var(--radius-control); min-height: 44px; padding: 10px 16px; font-size: var(--text-sm); font-weight: 600; }
.primary-button { color: var(--on-accent); background: var(--accent-gradient); border-color: transparent; }
.secondary-button { color: var(--text); background: var(--surface); }
.dialog-note { margin: 12px 0; font-size: var(--text-sm); line-height: 1.8; color: var(--muted); }
.cloud-error, #modal .cloud-error { color: var(--error); white-space: pre-wrap; overflow-wrap: anywhere; }
.cloud-error:empty { display: none; }
.cloud-error:not(:empty) { padding: 12px 14px; border-radius: var(--radius-control); background: var(--error-bg); }
#modal fieldset { min-width: 0; margin: 20px 0; padding: 16px; border: 1px solid var(--line); border-radius: var(--radius-control); }
#modal legend { max-width: 100%; font-size: var(--text-sm); padding: 0 8px; }
#modal details { margin: 16px 0; border-top: 1px solid var(--line); }
#modal summary { padding: 12px 0; min-height: 44px; cursor: pointer; color: var(--accent-deep); }
.ai-actions, .cloud-task > div, .cloud-links article > div { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ai-actions { margin: 20px 0; }
.cloud-task, .cloud-links article { border: 1px solid var(--line); background: var(--surface); border-radius: var(--radius-control); margin: 12px 0; padding: 16px; }
.cloud-task p, .cloud-task small, .cloud-links small { color: var(--muted); font-size: var(--text-sm); }
.cloud-task label { display: flex; gap: 10px; align-items: flex-start; }
.cloud-task label input { margin-top: 3px; }
.full-task-list { margin: 16px 0; }
.cloud-links article > a { display: block; font-weight: 600; color: var(--accent-deep); }
.cloud-links small { display: block; margin: 6px 0; }
.source-text, .conflict-panel pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.conflict-panel { margin-top: 16px; }
.conflict-panel pre { max-height: 240px; overflow: auto; font-size: var(--text-xs); }
.calendar-week { display: grid; grid-template-columns: 100px repeat(2, minmax(0, 1fr)); gap: 12px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--line); }
.calendar-week .form-field { margin: 0; }
.cloud-exception { display: block; padding: 10px 0; font-size: var(--text-sm); }
.image-previews { display: flex; gap: 10px; flex-wrap: wrap; }
.image-previews > div { width: 110px; }
.image-previews img { width: 100%; height: 120px; object-fit: contain; background: var(--surface-soft); border-radius: var(--radius-sm); }
.image-previews button { display: block; min-height: 44px; margin: 6px auto; color: var(--accent); }
.stat-detail-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.stat-detail-grid > div { padding: 18px 12px; border-radius: var(--radius-control); background: var(--accent-soft); text-align: center; }
.stat-detail-grid b { display: block; font-size: 33px; font-weight: 700; color: var(--accent-deep); font-variant-numeric: tabular-nums; }
.stat-detail-grid span { font-size: var(--text-xs); color: var(--muted); }
/* Shared tab treatment also covers tabs emitted by existing dialogs. */
#modal .module-tabs, #modal .sub-tabs { display: flex; flex-wrap: wrap; gap: 8px; padding: 4px; border-bottom: 1px solid var(--line); }
#modal .module-tabs button, #modal .sub-tabs button { min-height: 46px; padding: 10px 16px; border-radius: 10px 10px 0 0; color: var(--muted); }
#modal .module-tabs button[aria-pressed=true], #modal .sub-tabs button[aria-selected=true] { color: var(--accent-deep); background: var(--accent-soft); box-shadow: inset 0 -3px var(--accent); }
#toast { position: fixed; bottom: 24px; left: 50%; transform: translate(-50%, 20px); opacity: 0; pointer-events: none; max-width: calc(100% - 32px); padding: 12px 20px; border-radius: var(--radius-control); color: var(--surface); background: var(--text); z-index: 20; box-shadow: var(--shadow-hover); transition: opacity var(--duration), transform var(--duration); }
#toast.visible { opacity: 1; transform: translate(-50%, 0); }
@media (hover: hover) { .secondary-button:hover { background: var(--accent-soft); } }
@media (max-width: 760px) {
 #modal { padding: 24px 20px; }
 .modal-header h2 { font-size: 21px; }
 .calendar-week { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
 .calendar-week > label:first-child { grid-column: 1 / -1; }
 .form-footer > button { flex: 1; }
 .stat-detail-grid { gap: 8px; }
 .stat-detail-grid > div { padding: 16px 8px; }
}
