/* Kích thước theo vai trò, nạp sau CSS trang. Không đổi màu, độ rộng cột hay vị trí sticky.
   Token gốc ở brand.css; ô nội dung nhiều dòng và nút icon có quy tắc riêng. */
#app .tts-shell { font-size: var(--tts-font-body); }
#app :is(.result-page, .message-page, .contact-page, .money-page, .balance-page,
  .setting-page, .company-page, .transactions-page, .blog-management-page,
  .msg-modal, .contact-modal, .company-modal, .blog-management-modal) {
  font-size: var(--tts-font-body);
}

/* Nút chính và ô nhập một dòng trên các màn quản lý cũ lẫn mới. */
#app :where(.tts-shell, .msg-modal, .contact-modal, .company-modal, .blog-management-modal) :is(
  .btn, .contact-button, .message-button, .rv-button, .company-button,
  .transactions-button, .setting-save, .bm-button, .balance-page button,
  .result-shortcuts button, .result-lookup-submit, .result-lookup-clear,
  .secretary-toolbar button) {
  box-sizing: border-box;
  min-height: var(--tts-control-height);
  padding-block: 6px;
  font-size: var(--tts-font-control);
  line-height: 1.4;
  border-radius: var(--tts-control-radius);
}
#app :where(.tts-shell, .msg-modal, .contact-modal, .company-modal, .blog-management-modal) :is(
  input.form-control:where(:not([type="checkbox"]):not([type="radio"])), select.form-control,
  .setting-field input, .company-field input:where(:not([type="checkbox"]):not([type="radio"])),
  .company-password input, .company-search input, .company-field select,
  .transactions-select select, .secretary-toolbar input, .bm-field input,
  .result-edit-date input, .result-lookup input, .result-lookup select,
  .balance-date input, .balance-common input, .contact-select-button) {
  box-sizing: border-box;
  height: var(--tts-control-height);
  min-height: var(--tts-control-height);
  font-size: var(--tts-font-control);
  border-radius: var(--tts-control-radius);
}
/* Các ô tìm có icon bao ngoài: giữ nguyên padding ngang của trang. */
#app :is(.contact-search, .message-search, .transactions-search, .balance-search, .rv-inline-search) {
  box-sizing: border-box;
  min-height: var(--tts-control-height);
  height: var(--tts-control-height);
}
#app :is(.contact-search, .message-search, .transactions-search, .balance-search, .rv-inline-search) input {
  height: 100%; min-height: 0;
  font-size: var(--tts-font-control);
}
#app .balance-page .balance-search input { border-radius: 0; }
#app .message-date input { height: var(--tts-control-height); min-height: var(--tts-control-height); font-size: var(--tts-font-control); }
#app :is(.rv-range-toggle, .rv-quick, .result-region-picker) { box-sizing: border-box; padding: 2px; }
#app .result-page { --result-control-height: var(--tts-control-height); --result-control-font: var(--tts-font-control); }
#app .result-date-control :is(input, button) { min-height: calc(var(--tts-control-height) - 2px); font-size: var(--tts-font-control); }

/* Nhóm chọn ngày/miền có viền bao ngoài; nút bên trong thấp hơn 6px. */
#app :is(.rv-range-choice, .rv-quick .rv-button, .result-region-picker button,
  .balance-tabs button, .message-tab, .secretary-region-tabs button) {
  min-height: var(--tts-control-compact);
  height: var(--tts-control-compact);
  padding-block: 0;
  font-size: var(--tts-font-control);
  line-height: 1.4;
}

/* Cân chuyển: bảng dày số vẫn có cỡ thao tác đủ đọc, không phóng tất cả thành nút chính. */
#app .balance-page :is(.balance-choice-row button, .balance-group-actions button,
  .balance-manual > button, .balance-manual > input, .balance-card-head input,
  .balance-scroll input, .balance-chips button, .balance-collapse) {
  height: var(--tts-control-compact);
  min-height: var(--tts-control-compact);
  padding-block: 3px;
  font-size: var(--tts-font-control);
}
#app :is(.btn-sm, .contact-actions button, .message-icon-button,
  .company-actions button, .transactions-icon-button, .money-page .rv-icon,
  .balance-page .balance-scroll td > button) {
  box-sizing: border-box;
  min-width: var(--tts-control-compact);
  min-height: var(--tts-control-compact);
  padding-block: 3px;
  font-size: var(--tts-font-control);
}
#app :is(.contact-actions button, .message-icon-button, .company-actions button,
  .transactions-icon-button, .money-page .rv-icon, .balance-page .balance-scroll td > button) {
  width: var(--tts-control-compact); height: var(--tts-control-compact);
}


/* Select2 (Thêm tin, Cân chuyển) cùng kích thước với select dùng chung. */
#app :is(.msg-modal, .balance-page) .select2-container .select2-selection--single {
  height: var(--tts-control-height); min-height: var(--tts-control-height);
  font-size: var(--tts-font-control);
}
#app :is(.msg-modal, .balance-page) .select2-container .select2-selection__rendered {
  line-height: calc(var(--tts-control-height) - 2px); font-size: var(--tts-font-control);
}
#app :is(.msg-modal, .balance-page) .select2-container .select2-selection__arrow { height: calc(var(--tts-control-height) - 2px); }
.contact-select-menu, .ui-datepicker.ui-widget { font-size: var(--tts-font-control); }

/* Bảng 12px; tiêu đề cột/ghi chú 11px. Không ép chữ số xổ số hoặc số tổng về cỡ bảng. */
#app .tts-shell :is(.table, .message-table, .contact-table, .mn-table, .rv-table,
  .secretary-table, .company-table, .transactions-table, .balance-scroll table) {
  font-size: var(--tts-font-data);
}
#app :is(.contact-heading h1, .setting-heading h1, .company-heading h1, .bm-heading h1) { font-size: var(--tts-font-title); }
#app :is(.balance-page h2, .balance-page h3, .setting-type-name, .transactions-list-heading h2) { font-size: var(--tts-font-section); }
#app :is(.msg-modal .modal-title, .contact-modal .modal-title, .company-modal-header h2, .blog-management-modal .modal-title) { font-size: var(--tts-font-dialog); }
#app :is(.msg-modal-sub, .money-summary-main dt, .money-summary-extra dt,
  .secretary-summary dt, .balance-manual-hint, .setting-hint) { font-size: var(--tts-font-caption); }
#app :is(.money-summary-main dd, .secretary-summary-settle dd) { font-size: var(--tts-font-dialog); }
#app :is(.money-summary-extra dd, .secretary-summary dd:not(.secretary-summary-settle dd)) { font-size: var(--tts-font-data); }
#app :is(.contact-toolbar, .message-toolbar, .rv-toolbar, .company-toolbar,
  .transactions-filters, .balance-toolbar) { gap: var(--tts-space-small); }

#app :is(.company-field label, .company-field legend, .contact-modal label,
  .msg-modal label, .bm-field label, .balance-field, .result-lookup label) { font-size: var(--tts-font-control); }

/* Textarea và lớp tô lỗi phải có cùng cỡ chữ/line-height để không lệch vị trí lỗi. */
#app .msg-modal .tts-highlights-textarea :is(textarea, .highlights) {
  font-size: var(--tts-font-body); line-height: 1.6;
}
#app .msg-modal :is(#messageOrigin, #messageEdit) { font-size: var(--tts-font-body); }

/* Đăng nhập và trang công khai có nội dung đọc dài: dùng cỡ lớn hơn bảng quản lý. */
#app .tts-login-main { --login-control-h: var(--tts-control-touch); }
#app .tts-login-main :is(input, .login_btn) { font-size: var(--tts-font-reading); }
/* Nút dùng thử viết hoa nên nhỏ hơn Đăng nhập; giữ cỡ responsive riêng của login.css. */
#app .tts-login-main .trial-login { font-size: var(--login-fs-trial); }
/* Trang công khai giữ cỡ đọc riêng của public-pages.css (không ép về cỡ bảng quản lý); chỉ tăng vùng bấm cảm ứng bên dưới. */

/* Cảm ứng: tăng vùng bấm, giữ chữ input 16px để Safari không tự phóng khi focus. */
@media (max-width: 767px) and (pointer: coarse) {
  #app :where(.tts-shell, .msg-modal, .contact-modal, .company-modal, .blog-management-modal) :is(
    .btn, .contact-button, .message-button, .rv-button, .company-button,
    .transactions-button, .setting-save, .bm-button, .balance-page button,
    .result-shortcuts button, .result-region-picker button, .result-lookup-submit,
    .result-lookup-clear, .contact-select-button, .secretary-region-tabs button) {
    min-height: var(--tts-control-touch); height: auto;
  }
  #app :where(.tts-shell, .msg-modal, .contact-modal, .company-modal, .blog-management-modal) :is(
    input.form-control:where(:not([type="checkbox"]):not([type="radio"])), select.form-control,
    .setting-field input, .company-field input:where(:not([type="checkbox"]):not([type="radio"])),
    .company-password input, .company-search input, .company-field select,
    .transactions-select select, .secretary-toolbar input, .result-edit-date input,
    .result-lookup input, .result-date-control input, .message-date input,
    .balance-page input:where(:not([type="checkbox"]):not([type="radio"])), .contact-select-button) {
    min-height: var(--tts-control-touch); height: var(--tts-control-touch);
  }
  #app :is(.contact-search, .message-search, .transactions-search, .balance-search, .rv-inline-search) { height: var(--tts-control-touch); }
  #app :is(.contact-search, .message-search, .transactions-search, .balance-search, .rv-inline-search) input { min-height: 0; height: 100%; }
  #app :is(.result-date-control button, .contact-actions button, .message-icon-button,
    .company-actions button, .transactions-icon-button, .money-page .rv-icon,
    .balance-page .balance-scroll td > button) {
    width: var(--tts-control-touch); min-width: var(--tts-control-touch);
    min-height: var(--tts-control-touch); height: var(--tts-control-touch);
  }
  #app .msg-modal .tts-highlights-textarea :is(textarea, .highlights) { font-size: var(--tts-font-reading) !important; }
  #app .msg-modal :is(#messageOrigin, #messageEdit) { font-size: var(--tts-font-reading) !important; }
  #app .tts-public :is(.public-button, .xs-date-shortcuts button, .news-search button,
    .result-lookup-submit, .public-login, .contact-select-button) { min-height: var(--tts-control-touch); }
  #app :is(.rv-range-choice, .rv-quick .rv-button, .result-region-picker button,
    .balance-tabs button, .message-tab, .secretary-region-tabs button) {
    min-height: var(--tts-control-touch); height: auto;
  }
  #app :is(.tts-menu-toggle, .tts-close-menu) { min-width: var(--tts-control-touch); min-height: var(--tts-control-touch); }
  #app .balance-page :is(.balance-choice-row button, .balance-group-actions button,
    .balance-manual > button, .balance-manual > input, .balance-card-head input,
    .balance-scroll input, .balance-chips button, .balance-collapse) {
    min-height: var(--tts-control-touch); height: var(--tts-control-touch);
  }
  #app :is(.tts-shell, .msg-modal) .btn.btn-sm { min-height: var(--tts-control-touch); height: auto; }
  #app :is(.msg-modal, .balance-page) .select2-container .select2-selection--single {
    height: var(--tts-control-touch); min-height: var(--tts-control-touch);
  }
  #app :is(.msg-modal, .balance-page) .select2-container .select2-selection__rendered {
    line-height: calc(var(--tts-control-touch) - 2px); font-size: var(--tts-font-reading);
  }
  #app :is(.msg-modal, .balance-page) .select2-container .select2-selection__arrow { height: calc(var(--tts-control-touch) - 2px); }
  .contact-select-option { min-height: var(--tts-control-touch); }

}
