/*
 * Korean Equation final control finish.
 *
 * This file deliberately loads after every page stylesheet. It supplies the
 * missing visual contract for native controls and classless legacy buttons,
 * while feature-specific components keep their established layout.
 */
body.korean-site {
    --kor-control-border: #ccd9e8;
    --kor-control-border-strong: #9db6d4;
    --kor-control-ink: #17304f;
    --kor-control-muted: #6f8198;
    --kor-control-surface: #ffffff;
    --kor-control-soft: #f4f8fd;
    --kor-control-blue: #2869e6;
    --kor-control-blue-deep: #174bb5;
    --kor-control-blue-soft: #eaf2ff;
    --kor-control-shadow: 0 8px 20px rgba(22, 52, 91, 0.1);
    --kor-control-shadow-hover: 0 12px 26px rgba(35, 91, 190, 0.18);
    --kor-control-focus: 0 0 0 4px rgba(40, 105, 230, 0.15);
}

body.korean-site main :where(button, [role="button"], input, select, textarea) {
    -webkit-tap-highlight-color: transparent;
}

body.korean-site main :where(button, [role="button"]) {
    font-family: inherit;
    text-rendering: optimizeLegibility;
}

body.korean-site main button:not(:disabled) {
    cursor: pointer;
}

/* Legacy buttons without a component class must never fall back to the
 * browser default. Icon-only and quantity controls retain their own rules. */
body.korean-site main button:not([class]):not([aria-label]) {
    display: inline-flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 0 17px;
    border: 1px solid var(--kor-control-border);
    border-radius: 11px;
    background: linear-gradient(180deg, #ffffff, #f6f9fd);
    color: var(--kor-control-ink);
    font-size: 14px;
    font-weight: 850;
    line-height: 1;
    box-shadow: 0 4px 12px rgba(22, 52, 91, 0.075), inset 0 1px 0 #fff;
    transition: border-color 160ms ease, background 160ms ease, color 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

body.korean-site main button[type="submit"]:not([class]),
body.korean-site main :is(
    [data-mypage-phone-send],
    [data-mypage-phone-verify],
    [data-bank-alert-submit]
) {
    border-color: var(--kor-control-blue);
    background: linear-gradient(135deg, #3b7cf0 0%, var(--kor-control-blue) 52%, var(--kor-control-blue-deep) 100%);
    color: #fff;
    box-shadow: 0 9px 20px rgba(40, 105, 230, 0.23), inset 0 1px 0 rgba(255, 255, 255, 0.28);
}

body.korean-site main button[data-bank-alert-submit]:disabled {
    border-color: #cbd5e1;
    background: #cbd5e1;
    color: #f8fafc;
    box-shadow: none;
    cursor: not-allowed;
    transform: none;
}

/* Keep paired filter actions on one optical baseline across legacy/admin CSS. */
body.korean-site main .assigned-filter-btn {
    min-height: 44px;
    height: 44px;
}

body.korean-site main button:not([class]):not([aria-label]):hover:not(:disabled) {
    border-color: var(--kor-control-border-strong);
    background: linear-gradient(180deg, #fff, var(--kor-control-blue-soft));
    color: var(--kor-control-blue-deep);
    box-shadow: var(--kor-control-shadow-hover), inset 0 1px 0 #fff;
    transform: translateY(-1px);
}

body.korean-site main button[type="submit"]:not([class]):hover:not(:disabled),
body.korean-site main :is(
    [data-mypage-phone-send],
    [data-mypage-phone-verify],
    [data-bank-alert-submit]
):hover:not(:disabled) {
    border-color: #133f9b;
    background: linear-gradient(135deg, #2869e6, #153f9b);
    color: #fff;
}

body.korean-site main button:not([class]):not([aria-label]):active:not(:disabled) {
    box-shadow: 0 2px 7px rgba(22, 52, 91, 0.1);
    transform: translateY(0);
}

/* Custom native choices: clear checked/indeterminate/disabled states with a
 * consistent 20px control. Existing switch inputs are reset below. */
body.korean-site main input[type="checkbox"]:not([hidden]),
body.korean-site main input[type="radio"]:not([hidden]) {
    appearance: none;
    -webkit-appearance: none;
    box-sizing: border-box;
    display: inline-grid;
    width: 20px;
    height: 20px;
    min-width: 20px;
    min-height: 20px;
    margin: 0;
    place-content: center;
    border: 1.5px solid #afc0d4;
    background-color: #fff;
    background-position: center;
    background-repeat: no-repeat;
    box-shadow: 0 2px 5px rgba(23, 48, 79, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.95);
    vertical-align: -4px;
    cursor: pointer;
    transition: border-color 150ms ease, background-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

body.korean-site main input[type="checkbox"]:not([hidden]) {
    border-radius: 6px;
}

body.korean-site main input[type="checkbox"]:not([hidden]):checked {
    border-color: var(--kor-control-blue);
    background-color: var(--kor-control-blue);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4L19 6'/%3E%3C/svg%3E");
    box-shadow: 0 5px 12px rgba(40, 105, 230, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.28);
}

body.korean-site main input[type="checkbox"]:not([hidden]):indeterminate {
    border-color: var(--kor-control-blue);
    background-color: var(--kor-control-blue);
    background-image: linear-gradient(#fff, #fff);
    background-position: center;
    background-size: 10px 2px;
}

body.korean-site main input[type="radio"]:not([hidden]) {
    border-radius: 50%;
}

body.korean-site main input[type="radio"]:not([hidden]):checked {
    border: 5px solid var(--kor-control-blue);
    background: #fff;
    box-shadow: 0 5px 12px rgba(40, 105, 230, 0.22);
}

body.korean-site main .user-sms-select-cell input[type="checkbox"] {
    width: var(--ui-control-xs);
    height: var(--ui-control-xs);
    min-width: var(--ui-control-xs);
    min-height: var(--ui-control-xs);
    border-radius: 9px;
    background-size: 18px;
}

body.korean-site main :where(input[type="checkbox"], input[type="radio"]):not([hidden]):hover:not(:disabled) {
    border-color: var(--kor-control-blue);
    box-shadow: 0 0 0 4px rgba(40, 105, 230, 0.09), 0 3px 8px rgba(23, 48, 79, 0.1);
}

body.korean-site main :where(input[type="checkbox"], input[type="radio"]):not([hidden]):focus-visible {
    border-color: var(--kor-control-blue);
    outline: 0;
    box-shadow: var(--kor-control-focus), 0 3px 8px rgba(23, 48, 79, 0.1);
}

body.korean-site main :where(input[type="checkbox"], input[type="radio"]):not([hidden]):disabled {
    border-color: #d6dee8;
    background-color: #edf1f5;
    background-image: none;
    box-shadow: inset 0 1px 2px rgba(23, 48, 79, 0.04);
    cursor: not-allowed;
    opacity: 0.72;
}

/* Switch inputs are intentionally visually hidden; the track is the control. */
body.korean-site main :is(
    .user-active-toggle,
    .admin-status-toggle,
    .setting-toggle,
    .setting-toggle-control,
    .switch-line,
    .textbook-visibility-toggle,
    .popup-notice-toggle,
    .payment-online-toggle,
    .kor-upload-switch,
    .kor-detail-edit-switch
) input[type="checkbox"] {
    position: absolute;
    width: 1px;
    height: 1px;
    min-width: 0;
    min-height: 0;
    margin: -1px;
    overflow: hidden;
    border: 0;
    background: none;
    box-shadow: none;
    opacity: 0;
    clip: rect(0 0 0 0);
}

body.korean-site main :is(
    .user-active-toggle,
    .admin-status-toggle,
    .payment-online-toggle,
    .tuition-visible-toggle
) {
    box-shadow: 0 5px 13px rgba(22, 52, 91, 0.09), inset 0 1px 0 rgba(255, 255, 255, 0.86);
    transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease, transform 160ms ease;
}

body.korean-site main :is(
    .user-active-toggle,
    .admin-status-toggle,
    .payment-online-toggle,
    .tuition-visible-toggle
):hover:not(.is-disabled) {
    border-color: #91acd0;
    box-shadow: 0 8px 18px rgba(40, 105, 230, 0.14), inset 0 1px 0 #fff;
    transform: translateY(-1px);
}

body.korean-site main :is(
    .user-active-track,
    .admin-status-track,
    .payment-online-track,
    .switch-track,
    .tuition-visible-switch,
    .popup-notice-toggle-track
) {
    box-shadow: inset 0 2px 4px rgba(23, 48, 79, 0.18), 0 1px 0 rgba(255, 255, 255, 0.8);
}

body.korean-site main :is(
    .user-active-toggle.is-active .user-active-track,
    .admin-status-toggle.is-active .admin-status-track,
    .payment-online-toggle.is-active .payment-online-track,
    .tuition-visible-toggle.is-visible .tuition-visible-switch,
    .switch-line input:checked + .switch-track,
    .popup-notice-toggle > input:checked ~ .popup-notice-toggle-track
) {
    background: linear-gradient(135deg, #2fd179, #12ad61);
    box-shadow: inset 0 1px 2px rgba(0, 89, 47, 0.16), 0 5px 12px rgba(18, 173, 97, 0.24);
}

/* Search and filters share one raised surface and a recognizable action. */
body.korean-site main :is(
    .user-filter-panel,
    .kor-filter-panel,
    .materials-filter-panel,
    .mypage-history-filter,
    .payment-filter-panel,
    .assigned-filter-panel
) {
    border-color: #d4e0ed;
    background: linear-gradient(145deg, rgba(255, 255, 255, 0.99), rgba(246, 250, 255, 0.99));
    box-shadow: 0 14px 34px rgba(21, 50, 87, 0.085), inset 0 1px 0 #fff;
}

body.korean-site main :is(
    .user-filter-field,
    .materials-filter-group,
    .kor-filter,
    .mypage-history-filter
) :where(label, legend) {
    color: #294767;
    font-weight: 850;
}

body.korean-site main :is(
    .user-filter-field,
    .kor-filter-panel,
    .materials-filter-panel,
    .mypage-history-filter,
    .payment-filter-panel
) :where(input[type="search"], select) {
    border-color: var(--kor-control-border);
    background-color: #fff;
    color: var(--kor-control-ink);
    box-shadow: 0 4px 12px rgba(21, 50, 87, 0.055), inset 0 1px 0 #fff;
}

body.korean-site main :is(
    .user-filter-field,
    .kor-filter-panel,
    .materials-filter-panel,
    .mypage-history-filter,
    .payment-filter-panel
) :where(input[type="search"], select):hover:not(:disabled) {
    border-color: var(--kor-control-border-strong);
}

body.korean-site main :is(
    .user-filter-field,
    .kor-filter-panel,
    .materials-filter-panel,
    .mypage-history-filter,
    .payment-filter-panel
) :where(input[type="search"], select):focus {
    border-color: var(--kor-control-blue);
    box-shadow: var(--kor-control-focus), 0 7px 16px rgba(21, 50, 87, 0.08);
}

body.korean-site main .user-search-panel .search-icon-btn {
    right: 5px;
    bottom: 3px;
    display: grid;
    width: 38px;
    min-width: 38px;
    height: 38px;
    min-height: 38px;
    place-items: center;
    border: 1px solid #2e70e8;
    border-radius: 10px;
    background: linear-gradient(135deg, #3b7cf0, #215acb);
    color: #fff;
    box-shadow: 0 7px 15px rgba(40, 105, 230, 0.23), inset 0 1px 0 rgba(255, 255, 255, 0.25);
    transition: background 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

body.korean-site main .user-search-panel .search-icon-btn::before {
    content: "";
    width: 17px;
    height: 17px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-4-4'/%3E%3C/svg%3E") center / contain no-repeat;
}

body.korean-site main .user-search-panel .search-icon-btn:hover:not(:disabled) {
    border-color: #1746a5;
    background: linear-gradient(135deg, #2869e6, #163f99);
    color: #fff;
    box-shadow: 0 10px 20px rgba(40, 105, 230, 0.29);
    transform: translateY(-1px);
}

body.korean-site main :is(
    .user-filter-reset,
    .korean-material-filter-reset,
    .assigned-filter-btn.subtle,
    button[type="reset"]
) {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: center;
    gap: 7px;
    padding: 0 14px;
    border: 1px solid #c8d7e8;
    border-radius: 10px;
    background: linear-gradient(180deg, #fff, #f3f7fc);
    color: #526985;
    font-size: 13px;
    font-weight: 850;
    box-shadow: 0 4px 11px rgba(21, 50, 87, 0.07), inset 0 1px 0 #fff;
    transition: border-color 150ms ease, background 150ms ease, color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

body.korean-site main :is(
    .user-filter-reset,
    .korean-material-filter-reset,
    .assigned-filter-btn.subtle,
    button[type="reset"]
)::before {
    content: "";
    width: 15px;
    height: 15px;
    flex: 0 0 15px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 12a9 9 0 1 0 3-6.7L3 8'/%3E%3Cpath d='M3 3v5h5'/%3E%3C/svg%3E") center / contain no-repeat;
}

body.korean-site main .assigned-filter-btn:has(> svg)::before {
    display: none;
}

body.korean-site main :is(
    .user-filter-reset,
    .korean-material-filter-reset,
    .assigned-filter-btn.subtle,
    button[type="reset"]
):hover:not(:disabled) {
    border-color: #9ab4d3;
    background: var(--kor-control-blue-soft);
    color: var(--kor-control-blue-deep);
    box-shadow: 0 8px 18px rgba(40, 105, 230, 0.13);
    transform: translateY(-1px);
}

/* Table and compact actions need the same depth without becoming oversized. */
body.korean-site main :is(.table-btn, .payment-action-btn, .materials-icon-btn) {
    border-radius: 9px;
    box-shadow: 0 4px 11px rgba(21, 50, 87, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.84);
    transition: border-color 150ms ease, background 150ms ease, color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

body.korean-site main :is(.table-btn, .payment-action-btn, .materials-icon-btn):hover:not(:disabled) {
    box-shadow: 0 8px 17px rgba(40, 105, 230, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.8);
    transform: translateY(-1px);
}

body.korean-site main :where(button, [role="button"]):disabled,
body.korean-site main :where(button, [role="button"])[aria-disabled="true"] {
    border-color: #d7e0ea;
    background: linear-gradient(180deg, #f3f6f9, #e9eef3);
    color: #94a3b5;
    box-shadow: inset 0 1px 0 #fff;
    cursor: not-allowed;
    transform: none;
}

@media (max-width: 640px) {
    body.korean-site main button:not([class]):not([aria-label]) {
        min-height: 44px;
        padding-right: 14px;
        padding-left: 14px;
    }

    body.korean-site main :is(
        .user-filter-panel,
        .kor-filter-panel,
        .materials-filter-panel,
        .mypage-history-filter,
        .payment-filter-panel,
        .assigned-filter-panel
    ) {
        box-shadow: 0 10px 24px rgba(21, 50, 87, 0.075), inset 0 1px 0 #fff;
    }
}

@media (prefers-reduced-motion: reduce) {
    body.korean-site main :where(button, input, select, textarea, [role="button"]) {
        transition: none !important;
        transform: none !important;
    }
}

@media (forced-colors: active) {
    body.korean-site main :where(input[type="checkbox"], input[type="radio"]):not([hidden]) {
        appearance: auto;
        -webkit-appearance: auto;
        background: Canvas;
    }
}
