/* 폼 전용: 공용 입력 스타일의 48px 최소 높이보다 본문 편집 높이를 우선한다. */
body.tn-app .student-form-page .form-card .form-group textarea.form-textarea,
body.tn-app .modal.form-modal textarea,
body.tn-app .modal.form-modal .form-group textarea,
body.master-notices-page .form-group textarea.form-textarea {
    min-height: var(--form-body-min-height, 140px);
    max-height: max(var(--form-body-min-height, 140px), calc(var(--viewport-height, 100dvh) / 2));
    width: 100%;
    line-height: 1.6;
    resize: vertical;
    overflow-y: auto;
}

.form-textarea-long {
    --form-body-min-height: 200px;
}

.form-modal .ai-draft {
    --form-body-min-height: 220px;
}

/* AI 초안은 .form-group 밖에 있어 기본 입력 표면도 직접 적용한다. */
.tn-app .form-modal textarea.ai-draft {
    padding: 12px 14px;
    border: 1px solid var(--tn-border-strong);
    border-radius: 9px;
    background: var(--tn-surface);
    color: var(--tn-text);
    font-size: 16px;
}

.tn-app .form-modal textarea.ai-draft:focus {
    border-color: var(--tn-blue);
}

.tn-app .form-modal .form-control-label {
    display: block;
    margin-bottom: var(--tn-space-8);
    color: var(--tn-ink);
    font-size: 14px;
    font-weight: 600;
}

@supports (field-sizing: content) {
    textarea.form-textarea,
    .form-modal textarea {
        field-sizing: content;
    }
}

.tn-app .student-form-page .field-hint,
.tn-app .form-modal .field-hint,
.auth-shell .field-hint,
.master-notices-page .field-hint {
    margin: 0 0 var(--tn-space-8);
    color: var(--tn-text-muted);
    font-size: var(--tn-text-sm);
    line-height: 1.6;
    overflow-wrap: anywhere;
}

.tn-app .student-form-page :is(input, textarea, select),
.tn-app .form-modal :is(input, textarea, select) {
    scroll-margin-block: var(--tn-space-24);
}

/* 폼 모달의 위치·높이는 components/interactions.css 가 한 곳에서 정한다.
   여기서도 정하면 둘이 어긋나 키보드가 뜰 때 한쪽만 따라간다. */

.tn-app .modal.form-modal .modal-content {
    max-height: calc(var(--viewport-height, 100dvh) - 32px);
    scroll-padding-block: 24px 88px;
}

/* 뒤에 삭제·되돌리기 버튼이 있어도 확정 버튼을 스크롤 영역 아래에 유지한다. */
.tn-app .form-modal .form-submit,
.tn-app .form-modal .form-actions {
    position: sticky;
    bottom: 0;
    z-index: 2;
    box-shadow: 0 0 0 12px var(--tn-surface), 0 20px 0 20px var(--tn-surface);
}

.tn-app .form-modal .form-submit {
    min-height: 48px;
}

.tn-app .form-modal .form-actions {
    background: var(--tn-surface);
}

.tn-app .form-modal .form-actions .form-submit {
    position: static;
    box-shadow: none;
}

.tn-app .form-modal .modal-content:has(.form-actions) {
    scroll-padding-bottom: 180px;
}

/* 기존 전체 메모 편집기는 넓은 공간을 유지하고, 키보드가 열리면 내부만 줄인다. */
.tn-app .form-modal .memo-modal-large {
    height: calc(var(--viewport-height, 100dvh) - 32px);
}

.tn-app .form-modal .memo-modal-large .form-group {
    flex-direction: column;
}

.tn-app .form-modal .memo-modal-large .field-hint,
.tn-app .form-modal .memo-modal-large .form-submit {
    flex-shrink: 0;
}

body.tn-app .modal.form-modal .memo-modal-large .form-group textarea {
    min-height: 0;
    max-height: none;
    field-sizing: fixed;
}

.tn-app .form-modal .form-actions .ai-actions {
    position: static;
}
