/* Shared geometry and interaction states; typography stays in each page stylesheet. */
main:is(.home-page, .about-page, .curriculum-page, .contact-page, .account-main) :is(.home-cta, .about-contact-link, .cr-button, .sc-inquiry, .naver-booking-action, .account-form button),
main.contact-page .button {
  min-height:var(--ui-control-height);
  height:auto;
  padding:10px var(--space-20);
  border-radius:var(--ui-button-radius);
}

main.jobs-page .jobs-search-tools>button,
main.guides-page .guide-find form button {
  min-height:var(--ui-control-height);
  height:var(--ui-control-height);
  border-radius:var(--ui-button-radius);
}

main.contact-page :is(input:not([type=checkbox],[type=radio],[type=hidden]), select),
main.account-main .account-form input:not([type=checkbox],[type=radio],[type=hidden]),
main.jobs-page .jobs-filters :is(input:not([type=hidden]), select),
main.guides-page .guide-find input[type=search] {
  box-sizing:border-box;
  height:var(--ui-control-height);
  min-height:var(--ui-control-height);
  padding:10px var(--space-12);
  border-radius:var(--ui-button-radius);
}

main.contact-page textarea {
  border-radius:var(--ui-button-radius);
}

main.guides-page .guide-list-back {
  border-radius:var(--ui-button-radius);
  min-height:var(--ui-secondary-height);
}

main:is(.jobs-page, .guides-page) .content-actions button {
  min-height:var(--ui-secondary-height);
}

main.jobs-page .jobs-filters,
main.guides-page .guide-find,
main.guides-page .guide-card:not(.guide-story-card),
main.about-page .about-ob-card,
main.home-page .home-intensive-card,
main.home-page #main-instructor-card,
main.contact-page .form,
main.account-main .account-card {
  border-radius:var(--ui-card-radius);
}

main.jobs-page .jobs-filters,
main.guides-page .guide-find,
main.guides-page .guide-card:not(.guide-story-card),
main.about-page .about-ob-card,
main.contact-page .form {
  padding:var(--ui-card-padding);
}

@media(max-width:767px) {
  :root {
    --ui-card-padding:20px;
  }
}

main.home-page .class-poll-invite button,
main #login-submit {
  min-height:var(--ui-control-height);
  height:auto;
  padding:10px var(--space-20);
  border-radius:var(--ui-button-radius);
}

main.about-page .profile-open-button {
  min-height:var(--ui-secondary-height);
  border-radius:var(--ui-button-radius);
}

main #login-input-text input {
  height:var(--ui-control-height);
  border-radius:var(--ui-button-radius);
}

main.home-page .home-cta:focus-visible {
  outline-color:var(--brand-lime);
}

main.guides-page #guide-clear {
  min-height:var(--ui-control-height);
  height:var(--ui-control-height);
}

/* Admin components use compact controls; public conversion actions use regular controls. */
main.contact-page #submitBtn {
  min-height:var(--control-height);
  border-radius:var(--radius-control);
}

main :is(.lecture-primary, .lecture-secondary, .lecture-danger, .ga-primary, .jobs-admin-primary) {
  min-height:var(--control-compact-height);
  border-radius:var(--radius-control);
}

main :is(.lecture-primary, .ga-primary) {
  background:var(--action-primary);
  border-color:var(--action-primary);
  color:var(--gray-white);
}

main :is(.lecture-primary, .ga-primary):not(:disabled):hover {
  background:var(--action-primary-hover);
  border-color:var(--action-primary-hover);
}

main .lecture-secondary {
  background:var(--surface-page);
  border-color:var(--border-default);
  color:var(--text-primary);
}

main .lecture-secondary:not(:disabled):hover {
  background:var(--surface-muted);
  border-color:var(--gray-300);
}

main :is(.lecture-field, .payment-filters, .payment-list-tools, .student-filters, .sms-filters) :is(input:not([type=hidden],[type=checkbox],[type=radio]), select, textarea) {
  border-color:var(--border-default);
  border-radius:var(--radius-control);
  background:var(--surface-page);
  color:var(--text-primary);
}

main :is(.lecture-field, .payment-filters, .payment-list-tools, .student-filters, .sms-filters) :is(input:not([type=hidden],[type=checkbox],[type=radio]), select) {
  min-height:var(--control-compact-height);
}

main :is(.lecture-summary, .lecture-group, .payment-table, .payment-detail-summary) {
  border-color:var(--border-default);
  border-radius:var(--radius-card);
}

main .lecture-summary {
  background:var(--surface-muted);
}

main .lecture-summary :is(span, strong) {
  color:var(--text-primary);
}

main .account-form button:not(:disabled) {
  background:var(--action-primary);
}

main .account-form button:not(:disabled):hover {
  background:var(--action-primary-hover);
}

/* Cover actual controls, including checkboxes and dynamically loaded admin forms. */
main :is(a[href], button, input:not([type=hidden]), select, textarea, summary):not(:where(.ck *, #map *)):focus-visible {
  outline:2px solid var(--focus-ring);
  outline-offset:3px;
}

main :is(button, input[type=submit]):not(:where(.ck *, #map *)):disabled {
  cursor:not-allowed;
}

main.contact-page .button:disabled {
  opacity:.5;
  cursor:not-allowed;
}

/* Placeholder is a visual example, separate from entered text and field labels.
   Priority keeps legacy page/ID selectors and lazy-loaded forms consistent. */
:root {
  --text-placeholder:var(--gray-400);
}

:is(input, textarea):not(:where(.ck *))::placeholder {
  color:var(--text-placeholder) !important;
  opacity:1;
}

/* Responsive reading: keep Korean question endings together and balance headings.
   Font sizes and deliberate <br> breaks remain owned by the typography system. */
main :is(.sc-faq, .cr-faq) summary {
  word-break:keep-all;
  overflow-wrap:anywhere;
  text-wrap:balance;
}

main.sc-detail .sc-audience h3,
main.guides-page .guide-story-card h2 {
  word-break:keep-all;
  overflow-wrap:anywhere;
  text-wrap:balance;
}

main.jobs-page .jobs-row h2 {
  word-break:keep-all;
  overflow-wrap:anywhere;
  text-wrap:pretty;
}

main.contact-page .privacy-consent label {
  word-break:keep-all;
  overflow-wrap:anywhere;
}

body.admin-shell .dashboard-panel-heading h2 {
  word-break:keep-all;
  overflow-wrap:anywhere;
  text-wrap:balance;
}
