[hidden] { display: none !important; }

/*
 * 공통 웹사이트 기본 스타일
 * 프로젝트별 디자인은 이 파일을 기준으로 확장/수정합니다.
 */

:root {
    --app-bg: #f5f6f8;
    --app-surface: #ffffff;
    --app-text: #1f2937;
    --app-muted: #6b7280;
    --app-border: #e5e7eb;
    --app-primary: #2563eb;
    --app-primary-hover: #1d4ed8;
    --app-danger: #b91c1c;
    --app-danger-bg: #fef2f2;
    --app-warning: #92400e;
    --app-warning-bg: #fffbeb;
    --app-radius: 12px;
    --app-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
}

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    min-height: 100%;
}

body {
    color: var(--app-text);
    background: var(--app-bg);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
        "Noto Sans KR", "Apple SD Gothic Neo", Arial, sans-serif;
    line-height: 1.5;
}

button,
input,
select,
textarea {
    font: inherit;
}

a {
    color: inherit;
}

/* 로그인 */
.auth-page {
    display: flex;
    min-height: 100vh;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.auth-container {
    width: 100%;
    max-width: 440px;
}

.auth-card {
    padding: 36px;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface);
    box-shadow: var(--app-shadow);
}

.auth-logo-link {
    display: flex;
    min-height: 44px;
    align-items: center;
    justify-content: center;
    margin-bottom: 28px;
    text-decoration: none;
}

.auth-logo {
    display: block;
    max-width: 220px;
    max-height: 64px;
}

.auth-site-name {
    font-size: 22px;
    font-weight: 700;
}

.auth-heading {
    margin-bottom: 24px;
    text-align: center;
}

.auth-heading h1 {
    margin: 0 0 8px;
    font-size: 26px;
    line-height: 1.3;
}

.auth-heading p {
    margin: 0;
    color: var(--app-muted);
    font-size: 14px;
}

.auth-form {
    display: grid;
    gap: 18px;
}

.auth-field {
    display: grid;
    gap: 7px;
}

.auth-field label {
    font-size: 14px;
    font-weight: 600;
}

.auth-field input {
    width: 100%;
    min-height: 46px;
    padding: 10px 12px;
    border: 1px solid var(--app-border);
    border-radius: 8px;
    background: #fff;
    color: var(--app-text);
    outline: none;
}

.auth-field input:focus {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.12);
}

.auth-button {
    display: inline-flex;
    min-height: 46px;
    align-items: center;
    justify-content: center;
    padding: 10px 16px;
    border: 1px solid var(--app-primary);
    border-radius: 8px;
    background: var(--app-primary);
    color: #fff;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

.auth-button:hover {
    background: var(--app-primary-hover);
    border-color: var(--app-primary-hover);
}

.auth-button-secondary {
    border-color: var(--app-border);
    background: #fff;
    color: var(--app-text);
}

.auth-button-secondary:hover {
    border-color: #cbd5e1;
    background: #f8fafc;
}

.auth-actions {
    display: grid;
    gap: 10px;
}

.auth-actions form,
.auth-actions .auth-button {
    width: 100%;
}

.auth-warning,
.auth-error {
    margin-bottom: 18px;
    padding: 12px 14px;
    border-radius: 8px;
    font-size: 13px;
}

.auth-warning {
    border: 1px solid #fde68a;
    background: var(--app-warning-bg);
    color: var(--app-warning);
}

.auth-error {
    border: 1px solid #fecaca;
    background: var(--app-danger-bg);
    color: var(--app-danger);
}

.auth-back-link {
    display: block;
    margin-top: 20px;
    color: var(--app-muted);
    font-size: 13px;
    text-align: center;
    text-decoration: none;
}

.auth-back-link:hover {
    text-decoration: underline;
}

/* 기존 화면에서 사용하는 공통 오버레이 영역 */
#darkcurtain,
#loaddiv,
#loaddiv1,
#loaddiv_rside {
    display: none;
}

@media (max-width: 640px) {
    .auth-page {
        padding: 16px;
    }

    .auth-card {
        padding: 28px 22px;
    }
}


/* 회원가입 */
.auth-container-wide {
    max-width: 720px;
}

.auth-fieldset {
    display: grid;
    gap: 18px;
    margin: 0;
    padding: 20px;
    border: 1px solid var(--app-border);
    border-radius: 10px;
}

.auth-fieldset legend {
    padding: 0 8px;
    font-size: 15px;
    font-weight: 700;
}

.auth-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
}

.auth-help {
    margin: -6px 0 0;
    color: var(--app-muted);
    font-size: 12px;
}

.auth-success {
    margin-bottom: 18px;
    padding: 12px 14px;
    border: 1px solid #bbf7d0;
    border-radius: 8px;
    background: #f0fdf4;
    color: #166534;
    font-size: 13px;
}

.auth-secondary-links {
    display: flex;
    justify-content: center;
    gap: 16px;
    margin-top: 20px;
    color: var(--app-muted);
    font-size: 13px;
}

.auth-secondary-links a {
    text-decoration: none;
}

.auth-secondary-links a:hover {
    text-decoration: underline;
}

/* 관리자 */
.admin-page {
    min-height: 100vh;
    background: var(--app-bg);
}

.admin-topbar {
    display: flex;
    min-height: 64px;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 0 28px;
    border-bottom: 1px solid var(--app-border);
    background: var(--app-surface);
}

.admin-topbar > div:first-child {
    display: flex;
    align-items: center;
    gap: 10px;
}

.admin-topbar span {
    color: var(--app-muted);
    font-size: 13px;
}

.admin-topbar-actions {
    display: flex;
    align-items: center;
    gap: 16px;
    font-size: 13px;
}

.admin-topbar-actions a,
.link-button {
    border: 0;
    background: transparent;
    color: var(--app-muted);
    text-decoration: none;
    cursor: pointer;
}

.admin-topbar-actions a:hover,
.link-button:hover {
    color: var(--app-text);
    text-decoration: underline;
}

.admin-topbar-actions form {
    margin: 0;
}

.admin-container {
    width: min(1180px, calc(100% - 32px));
    margin: 0 auto;
    padding: 36px 0 60px;
}

.admin-container-narrow {
    width: min(760px, calc(100% - 32px));
}

.admin-page-heading {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin-bottom: 24px;
}

.admin-page-heading h1 {
    margin: 0 0 8px;
    font-size: 28px;
}

.admin-page-heading p {
    margin: 0;
    color: var(--app-muted);
}

.admin-primary-action {
    white-space: nowrap;
}

.admin-filter-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.admin-filter-tab {
    padding: 8px 12px;
    border: 1px solid var(--app-border);
    border-radius: 999px;
    background: var(--app-surface);
    color: var(--app-muted);
    font-size: 13px;
    text-decoration: none;
}

.admin-filter-tab.is-active {
    border-color: var(--app-primary);
    background: var(--app-primary);
    color: #fff;
}

.admin-card {
    overflow: hidden;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface);
    box-shadow: var(--app-shadow);
}

.admin-form-card {
    padding: 28px;
}

.admin-table-wrap {
    overflow-x: auto;
}

.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.admin-table th,
.admin-table td {
    padding: 13px 14px;
    border-bottom: 1px solid var(--app-border);
    text-align: left;
    vertical-align: middle;
    white-space: nowrap;
}

.admin-table th {
    background: #f8fafc;
    color: var(--app-muted);
    font-weight: 700;
}

.admin-table tbody tr:last-child td {
    border-bottom: 0;
}

.admin-empty {
    padding: 40px !important;
    color: var(--app-muted);
    text-align: center !important;
}

.admin-status {
    display: inline-flex;
    padding: 4px 8px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
}

.admin-status-pending {
    background: #fffbeb;
    color: #92400e;
}

.admin-status-active {
    background: #f0fdf4;
    color: #166534;
}

.admin-status-inactive {
    background: #f3f4f6;
    color: #4b5563;
}

.admin-row-actions {
    display: flex;
    gap: 6px;
}

.admin-row-actions form {
    margin: 0;
}

.admin-small-button {
    min-height: 32px;
    padding: 5px 10px;
    border: 1px solid var(--app-primary);
    border-radius: 7px;
    background: var(--app-primary);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
}

.admin-small-button-muted {
    border-color: var(--app-border);
    background: #fff;
    color: var(--app-text);
}

@media (max-width: 700px) {
    .auth-form-grid {
        grid-template-columns: 1fr;
    }

    .admin-topbar {
        padding: 0 16px;
    }

    .admin-page-heading {
        flex-direction: column;
    }

    .admin-primary-action {
        width: 100%;
    }
}

/* 학교 기본정보 관리 */
.app-flash {
    margin-bottom: 18px;
    padding: 12px 14px;
    border: 1px solid var(--app-border);
    border-radius: 8px;
    background: #fff;
    font-size: 13px;
}

.app-flash-success {
    border-color: #bbf7d0;
    background: #f0fdf4;
    color: #166534;
}

.app-flash-error {
    border-color: #fecaca;
    background: #fef2f2;
    color: #b91c1c;
}

.app-flash-warning {
    border-color: #fde68a;
    background: #fffbeb;
    color: #92400e;
}

.basic-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    margin-bottom: 20px;
}

.school-home-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.basic-nav-card {
    display: grid;
    grid-template-columns: 48px 1fr;
    column-gap: 14px;
    row-gap: 3px;
    min-height: 118px;
    align-items: center;
    padding: 22px;
    border: 1px solid var(--app-border);
    border-radius: var(--app-radius);
    background: var(--app-surface);
    box-shadow: var(--app-shadow);
    text-decoration: none;
}

.basic-nav-card:hover:not(.is-disabled) {
    border-color: #bfdbfe;
    transform: translateY(-1px);
}

.basic-nav-card.is-disabled {
    color: #94a3b8;
    box-shadow: none;
}

.basic-nav-card strong {
    align-self: end;
    font-size: 17px;
}

.basic-nav-card > span:last-child {
    grid-column: 2;
    align-self: start;
    color: var(--app-muted);
    font-size: 13px;
}

.basic-nav-icon {
    display: inline-flex;
    grid-row: 1 / 3;
    width: 48px;
    height: 48px;
    align-items: center;
    justify-content: center;
    border-radius: 12px;
    background: #eff6ff;
    color: var(--app-primary);
    font-size: 20px;
}

.basic-notice-card {
    padding: 22px 24px;
}

.basic-notice-card p {
    margin: 8px 0 0;
    color: var(--app-muted);
    font-size: 13px;
}

.basic-form,
.basic-inline-form {
    display: grid;
    gap: 18px;
}

.basic-form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.basic-form-row {
    display: grid;
    gap: 7px;
}

.basic-form-row-full {
    grid-column: 1 / -1;
}

.basic-form-row label {
    font-size: 14px;
    font-weight: 700;
}

.basic-form-row input,
.basic-form-row select,
.basic-form-row textarea {
    width: 100%;
    min-height: 42px;
    padding: 9px 11px;
    border: 1px solid var(--app-border);
    border-radius: 8px;
    background: #fff;
    color: var(--app-text);
    outline: none;
}

.basic-form-row textarea {
    min-height: 82px;
    resize: vertical;
}

.basic-form-row input:focus,
.basic-form-row select:focus,
.basic-form-row textarea:focus {
    border-color: var(--app-primary);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.10);
}

.required {
    color: #dc2626;
}

.form-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 4px;
}

.btn-primary,
.btn-secondary {
    display: inline-flex;
    min-height: 40px;
    align-items: center;
    justify-content: center;
    padding: 8px 14px;
    border-radius: 8px;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

.btn-primary {
    border: 1px solid var(--app-primary);
    background: var(--app-primary);
    color: #fff;
}

.btn-primary:hover {
    border-color: var(--app-primary-hover);
    background: var(--app-primary-hover);
}

.btn-secondary {
    border: 1px solid var(--app-border);
    background: #fff;
    color: var(--app-text);
}

.basic-inline-form-card {
    margin-bottom: 20px;
}

.basic-inline-form-card h2 {
    margin: 0 0 18px;
    font-size: 18px;
}

.basic-inline-form {
    grid-template-columns: repeat(3, minmax(0, 1fr)) auto;
    align-items: end;
}

.basic-inline-form .form-actions {
    align-self: end;
    margin: 0;
}

.basic-list-card {
    overflow: hidden;
}

.admin-small-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}

.admin-small-button-danger {
    border-color: #fecaca;
    background: #fff;
    color: #b91c1c;
}

.admin-small-button-danger:hover:not(:disabled) {
    background: #fef2f2;
}

.admin-small-button:disabled {
    opacity: .45;
    cursor: not-allowed;
}

.residence-fields {
    display: grid;
    grid-template-columns: 1fr auto 1fr auto;
    align-items: center;
    gap: 8px;
}

.residence-fields input {
    min-width: 0;
}

@media (max-width: 900px) {
    .basic-inline-form {
        grid-template-columns: 1fr 1fr;
    }

    .basic-inline-form .form-actions {
        grid-column: 1 / -1;
        justify-content: flex-end;
    }
}

@media (max-width: 700px) {
    .basic-card-grid,
    .school-home-grid,
    .basic-form-grid,
    .basic-inline-form {
        grid-template-columns: 1fr;
    }

    .basic-form-row-full,
    .basic-inline-form .form-actions {
        grid-column: auto;
    }

    .basic-nav-card {
        min-height: 104px;
        padding: 18px;
    }

    .admin-row-actions {
        min-width: 240px;
    }
}

/* =========================================================
 * 공통 사이트 레이아웃
 * Phase 21부터 로그인 후 shell/header/sidebar/footer의 최종 시각 규칙은
 * design-system.css에서만 관리합니다. 기능 컴포넌트 CSS는 이 파일에 유지합니다.
 * ========================================================= */

/* =========================================================
 * Phase 5 - 학교 교육신청
 * ========================================================= */
.application-type-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.application-type-card{display:grid;gap:8px;padding:26px;border:1px solid var(--app-border);border-radius:16px;background:#fff;color:var(--app-text);text-decoration:none;transition:.15s ease}.application-type-card:hover{border-color:var(--app-primary);box-shadow:0 8px 24px rgba(15,23,42,.08);transform:translateY(-1px)}.application-type-card strong{font-size:20px}.application-type-card span{color:var(--app-muted);font-size:14px;line-height:1.6}.application-rule-box{margin-bottom:18px;padding:20px 22px;border:1px solid #bfdbfe;border-radius:14px;background:#eff6ff}.application-rule-box>div{display:flex;align-items:center;gap:10px}.application-rule-box strong{font-size:16px}.application-rule-box>div span{padding:4px 9px;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-size:12px;font-weight:800}.application-rule-box ul{margin:12px 0 0;padding-left:20px;color:#334155;line-height:1.8;font-size:14px}.application-form-section{margin-bottom:18px}.application-form-section h2,.application-view-card h2{margin:0 0 18px;font-size:17px}.basic-form-row small{display:block;margin-top:6px;color:var(--app-muted);font-size:12px}.application-live-message{min-height:22px;margin-top:14px;padding:10px 12px;border-radius:10px;background:#f8fafc;color:var(--app-muted);font-size:13px}.application-live-message.is-success{background:#ecfdf5;color:#047857}.application-live-message.is-error{background:#fef2f2;color:#b91c1c}.application-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.application-section-heading h2{margin:0 0 4px}.application-section-heading p{margin:0;color:var(--app-muted);font-size:13px}.application-selected-count{flex:0 0 auto;padding:5px 10px;border-radius:999px;background:#f1f5f9;color:#475569;font-size:12px;font-weight:800}.application-student-list{display:grid;border-top:1px solid var(--app-border)}.application-student-row{display:grid;grid-template-columns:auto minmax(0,1fr) minmax(180px,auto);align-items:center;gap:14px;padding:14px 4px;border-bottom:1px solid var(--app-border);cursor:pointer}.application-student-row input{width:18px;height:18px}.application-student-main{display:grid;gap:3px}.application-student-main strong{font-size:14px}.application-student-main span{color:var(--app-muted);font-size:12px}.application-student-state{justify-self:end;color:#047857;font-size:12px;font-weight:700;text-align:right}.application-student-state.is-blocked{color:#b91c1c}.application-form-actions{position:sticky;bottom:0;z-index:10;margin-top:10px;padding:14px 0;background:linear-gradient(to top,var(--app-bg) 70%,rgba(248,250,252,0))}.application-status{display:inline-flex;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.application-status-draft{background:#f1f5f9;color:#475569}.application-status-submitted{background:#eff6ff;color:#1d4ed8}.application-status-revision_required{background:#fff7ed;color:#c2410c}.application-status-accepted{background:#ecfdf5;color:#047857}.application-status-rejected{background:#fef2f2;color:#b91c1c}.application-view-card{margin-bottom:18px}.application-view-status{display:flex;align-items:center;gap:12px;margin-bottom:18px;color:var(--app-muted);font-size:12px}.application-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin:0;border-top:1px solid var(--app-border)}.application-detail-grid>div{display:grid;grid-template-columns:120px minmax(0,1fr);border-bottom:1px solid var(--app-border)}.application-detail-grid>div:nth-child(odd):not(.full){border-right:1px solid var(--app-border)}.application-detail-grid>div.full{grid-column:1/-1}.application-detail-grid dt,.application-detail-grid dd{margin:0;padding:14px}.application-detail-grid dt{background:#f8fafc;color:#475569;font-size:13px;font-weight:800}.application-detail-grid dd{font-size:14px;line-height:1.6}.application-detail-grid dd small{color:var(--app-muted)}
@media(max-width:800px){.application-type-grid{grid-template-columns:1fr}.application-student-row{grid-template-columns:auto 1fr}.application-student-state{grid-column:2;justify-self:start;text-align:left}.application-detail-grid{grid-template-columns:1fr}.application-detail-grid>div,.application-detail-grid>div:nth-child(odd):not(.full){grid-column:1;border-right:0}.application-detail-grid>div{grid-template-columns:100px 1fr}}

/* Phase 5 validation feedback */
.application-error-summary {
    margin: 0 0 18px;
    padding: 18px 20px;
    border: 1px solid #fecaca;
    border-radius: 14px;
    background: #fef2f2;
    color: #991b1b;
}
.application-error-summary strong {
    display: block;
    margin-bottom: 8px;
    font-size: 15px;
}
.application-error-summary ul {
    margin: 0;
    padding-left: 20px;
    line-height: 1.7;
    font-size: 14px;
}
.basic-form-row.has-error label {
    color: #b91c1c;
}
.basic-form-row.has-error input:not([type="checkbox"]),
.basic-form-row.has-error select,
.basic-form-row.has-error textarea {
    border-color: #ef4444;
    background: #fffafa;
}
.application-student-section-error {
    border-color: #ef4444;
}

/* =========================================================
 * Phase 5 layout polish
 * - 공통 메뉴의 불필요한 스크롤바 제거
 * - 신청 상세 카드 내부 여백 보강
 * ========================================================= */

/* 신청 상세 카드의 내용이 카드 테두리에 붙지 않도록 공통 내부 여백을 둡니다. */
.application-view-card {
    padding: 22px 24px;
}

.application-view-card .application-detail-grid {
    border: 1px solid var(--app-border);
    border-radius: 10px;
    overflow: hidden;
}

.application-view-card .admin-table-wrap {
    border: 1px solid var(--app-border);
    border-radius: 10px;
}

/* detail grid 자체에 외곽선이 생겼으므로 마지막 행의 바닥선은 제거합니다. */
.application-detail-grid > div:nth-last-child(-n + 2) {
    border-bottom: 0;
}

.application-detail-grid > div.full:last-child {
    border-bottom: 0;
}

@media (max-width: 700px) {
    .application-view-card {
        padding: 18px 16px;
    }
}

/* =========================================================
 * Phase 6 - 관리자 신청 검토
 * ========================================================= */
.admin-filter-card{margin-bottom:18px;padding:20px 22px}.admin-filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:14px;align-items:end}.admin-filter-grid>div{display:grid;gap:7px}.admin-filter-grid label{font-size:12px;font-weight:800;color:#475569}.admin-filter-grid input,.admin-filter-grid select{width:100%;min-height:42px;padding:9px 11px;border:1px solid var(--app-border);border-radius:9px;background:#fff;color:var(--app-text)}.admin-filter-actions{display:flex!important;grid-auto-flow:column;gap:8px!important}.admin-section-description{margin:-8px 0 18px;color:var(--app-muted);font-size:13px}.application-review-card{margin-bottom:18px}.application-review-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}.application-review-button{min-height:42px;padding:0 18px}.application-review-history{margin-bottom:18px;padding:22px 24px}.application-review-history h2{margin:0 0 16px;font-size:17px}.review-history-list{display:grid;gap:12px}.review-history-item{padding:16px 18px;border:1px solid var(--app-border);border-radius:12px;background:#fff}.review-history-item>div{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.review-history-item strong{font-size:13px}.review-history-item time{margin-left:auto;color:var(--app-muted);font-size:12px}.review-history-item p{margin:10px 0 0;color:#334155;font-size:14px;line-height:1.7}.review-action{display:inline-flex;padding:4px 8px;border-radius:999px;font-size:11px;font-weight:800}.review-action-revision_required{background:#fff7ed;color:#c2410c}.review-action-accepted{background:#ecfdf5;color:#047857}.review-action-rejected{background:#fef2f2;color:#b91c1c}.application-review-notice{margin:0 0 18px;padding:18px 20px;border:1px solid #fed7aa;border-radius:14px;background:#fff7ed;color:#9a3412}.application-review-notice.is-rejected{border-color:#fecaca;background:#fef2f2;color:#991b1b}.application-review-notice strong{display:block;margin-bottom:7px}.application-review-notice p{margin:0;line-height:1.7}.application-review-notice span{display:block;margin-top:8px;font-size:12px;opacity:.75}
@media(max-width:900px){.admin-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-filter-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:600px){.admin-filter-grid{grid-template-columns:1fr}.admin-filter-actions{grid-column:auto}.application-review-actions{flex-direction:column}.application-review-actions>*{width:100%}.review-history-item time{width:100%;margin-left:0}}

/* Phase 6: 신청시간 변경 요청 */
.hour-change-badge {
    display: inline-flex;
    align-items: center;
    margin-left: 8px;
    padding: 3px 8px;
    border-radius: 999px;
    background: #fff4d6;
    color: #8a5a00;
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}

.hour-change-card .admin-section-description {
    margin-bottom: 18px;
}

.hour-change-request-form,
.hour-change-admin-form {
    margin-top: 18px;
    padding: 18px;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    background: #fafafa;
}

.hour-change-pending-notice {
    margin-top: 16px;
    padding: 14px 16px;
    border-radius: 10px;
    background: #fff8e8;
    color: #755000;
    font-weight: 600;
}

.hour-change-history {
    display: grid;
    gap: 14px;
    margin-top: 20px;
}

.hour-change-history h3 {
    margin: 0 0 2px;
    font-size: 16px;
}

.hour-change-history-item {
    padding: 16px;
    border: 1px solid #e5e7eb;
    border-radius: 12px;
    background: #fff;
}

.hour-change-history-item p {
    margin: 10px 0 0;
    line-height: 1.6;
}

.hour-change-history-head {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
}

.hour-change-history-head time {
    margin-left: auto;
    color: #6b7280;
    font-size: 13px;
}

.hour-change-status {
    display: inline-flex;
    align-items: center;
    padding: 4px 9px;
    border-radius: 999px;
    font-size: 12px;
    font-weight: 700;
}

.hour-change-status-pending {
    background: #fff4d6;
    color: #8a5a00;
}

.hour-change-status-approved {
    background: #e8f7ee;
    color: #216e3a;
}

.hour-change-status-rejected {
    background: #fdecec;
    color: #a33434;
}

@media (max-width: 720px) {
    .hour-change-history-head time {
        width: 100%;
        margin-left: 0;
    }

    .hour-change-request-form,
    .hour-change-admin-form {
        padding: 14px;
    }
}

/* Phase 6 - 신청서 개인정보 동의 / 출력 */
.application-email-notice{display:flex;align-items:center;gap:12px;margin:0 0 20px;padding:14px 16px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a8a;font-size:13px}.application-email-notice strong{white-space:nowrap}.consent-modal[hidden]{display:none!important}.consent-modal{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;padding:24px}.consent-modal-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.56)}.consent-modal-panel{position:relative;z-index:1;width:min(680px,100%);max-height:calc(100vh - 48px);overflow-y:auto;border-radius:16px;background:var(--app-surface);box-shadow:0 24px 70px rgba(15,23,42,.28)}.consent-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:24px 24px 18px;border-bottom:1px solid var(--app-border)}.consent-modal-header h2{margin:0 0 6px;font-size:20px}.consent-modal-header p{margin:0;color:var(--app-muted);font-size:13px}.consent-modal-close{width:34px;height:34px;border:0;border-radius:8px;background:#f1f5f9;color:#475569;font-size:24px;line-height:1;cursor:pointer}.consent-modal-body{padding:22px 24px}.consent-summary-box{margin-bottom:14px;padding:16px 18px;border:1px solid var(--app-border);border-radius:10px;background:#f8fafc}.consent-summary-box strong{display:block;margin-bottom:8px}.consent-summary-box ul{margin:0;padding-left:20px;color:#475569;font-size:13px;line-height:1.75}.consent-note{margin:10px 0 16px;color:#64748b;font-size:13px}.consent-check{display:flex;align-items:flex-start;gap:10px;padding:14px 16px;border:1px solid #bfdbfe;border-radius:10px;background:#eff6ff;color:#1e3a8a;font-size:14px;cursor:pointer}.consent-check input{margin-top:3px}.consent-modal-actions{display:flex;justify-content:flex-end;gap:10px;padding:18px 24px 24px}body.modal-open{overflow:hidden}.application-print-title{display:none}
@media print{@page{size:A4 portrait;margin:14mm}body{background:#fff!important}body *{visibility:hidden!important}.application-print-sheet,.application-print-sheet *{visibility:visible!important}.application-print-sheet{position:absolute;inset:0 auto auto 0;width:100%;color:#000}.application-print-title{display:block;margin-bottom:16px;text-align:center}.application-print-title h1{margin:0 0 6px;font-size:20pt}.application-print-title p{margin:0;font-size:10pt}.application-print-section{break-inside:avoid;margin-bottom:12px!important;border:1px solid #bbb!important;border-radius:0!important;box-shadow:none!important}.application-view-status,.application-inline-note{display:none!important}.application-detail-grid dt,.application-detail-grid dd,.admin-table th,.admin-table td{color:#000!important;font-size:9.5pt!important}.admin-table-wrap{overflow:visible!important}.admin-table{table-layout:fixed}.no-print{display:none!important}}

/* =========================================================
 * Phase 7 - 신청자 진행상황 / 관리자 총괄정보
 * ========================================================= */
.progress-list{display:grid;gap:18px}.progress-card{padding:22px 24px}.progress-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px}.progress-card-head h2{margin:0 0 6px;font-size:17px}.progress-card-head p{margin:0;color:var(--app-muted);font-size:13px}.progress-card-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.progress-steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border:1px solid var(--app-border);border-radius:12px;overflow:hidden;background:#fff}.progress-step{position:relative;min-width:0;padding:16px 14px;border-right:1px solid var(--app-border)}.progress-step:last-child{border-right:0}.progress-step-label{display:block;margin-bottom:7px;color:#64748b;font-size:12px;font-weight:800}.progress-step-value{display:block;color:#1e293b;font-size:14px;font-weight:800;line-height:1.45;word-break:keep-all}.progress-step-value a{color:var(--app-primary);text-decoration:none}.progress-step-value a:hover{text-decoration:underline}.progress-step-note{display:block;margin-top:7px;color:#64748b;font-size:12px;line-height:1.5}.progress-step-note.is-warning{color:#c2410c}.progress-step.is-complete{background:#f0fdf4}.progress-step.is-warning{background:#fff7ed}.progress-step.is-current{background:#eff6ff}.progress-step.is-rejected{background:#fef2f2}.progress-empty{padding:36px 20px;text-align:center;color:var(--app-muted)}
.admin-progress-table{min-width:1500px}.admin-progress-table th,.admin-progress-table td{vertical-align:top}.admin-progress-main{display:grid;gap:4px;min-width:150px}.admin-progress-main strong{font-size:13px}.admin-progress-main small{color:var(--app-muted);font-size:11px}.admin-progress-operation-form{display:grid;grid-template-columns:minmax(138px,1fr) minmax(138px,1fr) auto;gap:8px;align-items:end;min-width:390px}.admin-progress-operation-form label{display:grid;gap:5px;color:#64748b;font-size:11px;font-weight:800}.admin-progress-operation-form input{min-height:36px;padding:7px 8px;border:1px solid var(--app-border);border-radius:8px;background:#fff}.admin-progress-operation-form input:disabled{background:#f8fafc;color:#94a3b8}.admin-progress-operation-form button{min-height:36px}.admin-progress-actual{min-width:150px;font-size:12px;line-height:1.6}.admin-progress-actual strong{display:block;font-size:12px}.progress-export-link{white-space:nowrap}
@media(max-width:1100px){.progress-steps{grid-template-columns:repeat(3,minmax(0,1fr))}.progress-step:nth-child(3){border-right:0}.progress-step:nth-child(-n+3){border-bottom:1px solid var(--app-border)}}
@media(max-width:700px){.progress-card{padding:18px 16px}.progress-card-head{flex-direction:column}.progress-steps{grid-template-columns:1fr}.progress-step{border-right:0!important;border-bottom:1px solid var(--app-border)!important}.progress-step:last-child{border-bottom:0!important}.admin-progress-operation-form{grid-template-columns:1fr;min-width:200px}}

/* Phase 8 - 결과보고 */
.report-form .admin-card { margin-bottom: 18px; }
.report-form .admin-card > h2 { margin-top: 0; }
.report-student-checks { display: grid; gap: 8px; padding: 12px; border: 1px solid #dfe5ec; border-radius: 8px; background: #fafbfd; }
.report-student-checks label { display: flex; align-items: center; gap: 8px; font-weight: 400; }
.report-text-block { margin-bottom: 18px; }
.report-text-block > span { display: block; margin-bottom: 8px; color: #667085; font-size: 13px; }
.report-text-block > p { margin: 0; padding: 14px; border-radius: 8px; background: #f7f9fc; line-height: 1.7; white-space: normal; }
.report-file-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
.admin-heading-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.admin-help-text { margin-top: -4px; margin-bottom: 14px; color: #667085; font-size: 13px; }
.form-action-bar { display: flex; justify-content: flex-end; gap: 10px; margin-top: 18px; }
@media (max-width: 720px) {
  .form-action-bar { flex-direction: column; }
  .form-action-bar .btn-primary, .form-action-bar .btn-secondary { width: 100%; text-align: center; }
}

/* Phase 8 결과보고 */
.report-private-document-note p { margin: 6px 0 0; line-height: 1.7; }
.report-private-document-note p:first-of-type { margin-top: 0; }
.report-print-title { display: none; }

@media print {
    body * { visibility: hidden !important; }
    .report-print-sheet,
    .report-print-sheet * { visibility: visible !important; }
    .report-print-sheet { position: absolute; inset: 0 auto auto 0; width: 100%; color: #000; }
    .report-print-title { display: block; margin-bottom: 16px; text-align: center; }
    .report-print-title h1 { margin: 0; font-size: 20pt; }
    .report-print-section { break-inside: avoid; margin-bottom: 12px !important; border: 1px solid #bbb !important; border-radius: 0 !important; box-shadow: none !important; }
    .report-print-section h2 { color: #000 !important; }
    .report-print-section .detail-grid span,
    .report-print-section .detail-grid strong,
    .report-print-section .report-text-block span,
    .report-print-section .report-text-block p,
    .report-print-section .admin-table th,
    .report-print-section .admin-table td { color: #000 !important; }
    .report-print-section .admin-table-wrap { overflow: visible !important; }
    .no-print { display: none !important; }
}

/* Phase 10: 관리자 홈 + 카드형 진행현황 */
.admin-dashboard-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:18px}.admin-dashboard-metric{display:grid;grid-template-columns:1fr auto auto;align-items:end;gap:4px;padding:18px 20px;border:1px solid var(--app-border);border-radius:14px;background:#fff;color:var(--app-text);text-decoration:none;box-shadow:0 8px 24px rgba(15,23,42,.04)}.admin-dashboard-metric:hover{border-color:#bfdbfe;background:#f8fbff}.admin-dashboard-metric span{grid-column:1/-1;color:#64748b;font-size:12px;font-weight:800}.admin-dashboard-metric strong{font-size:26px;line-height:1}.admin-dashboard-metric small{padding-bottom:2px;color:#64748b;font-size:12px}.admin-dashboard-section{margin-bottom:18px;padding:22px 24px}.admin-dashboard-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.admin-dashboard-section-head h2{margin:0 0 5px;font-size:17px}.admin-dashboard-section-head p{margin:0;color:var(--app-muted);font-size:13px}.admin-task-list{display:grid;border-top:1px solid var(--app-border)}.admin-task-item{display:grid;grid-template-columns:120px minmax(0,1fr) auto;align-items:center;gap:16px;padding:15px 4px;border-bottom:1px solid var(--app-border)}.admin-task-kind{color:#1d4ed8;font-size:12px;font-weight:800}.admin-task-main{display:grid;gap:4px}.admin-task-main strong{font-size:14px}.admin-task-main span{color:var(--app-muted);font-size:12px;line-height:1.5}.admin-dashboard-flow .progress-step{min-height:80px}.admin-progress-guide{margin-bottom:18px}.admin-progress-card-list{margin-bottom:20px}.admin-progress-steps .progress-step{min-height:150px}.admin-progress-step-form{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-top:9px}.admin-progress-step-form input[type=date]{width:100%;min-width:0;min-height:34px;padding:6px 7px;border:1px solid var(--app-border);border-radius:8px;background:#fff;color:var(--app-text);font-size:12px}.admin-progress-step-form .admin-small-button{min-height:34px;padding:0 10px}.admin-progress-steps .progress-step-note a{color:var(--app-primary);font-weight:700;text-decoration:none}.admin-progress-steps .progress-step-note a:hover{text-decoration:underline}
@media(max-width:1200px){.admin-dashboard-summary{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:800px){.admin-dashboard-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-task-item{grid-template-columns:1fr auto}.admin-task-kind{grid-column:1/-1}.admin-dashboard-section-head{flex-direction:column}.admin-progress-steps .progress-step{min-height:0}}
@media(max-width:520px){.admin-dashboard-summary{grid-template-columns:1fr}.admin-task-item{grid-template-columns:1fr}.admin-task-item .admin-small-button{justify-self:start}}

/* Phase 11: 관리자 업무 큐 / 딥필터 */
.admin-dashboard-summary{grid-template-columns:repeat(7,minmax(0,1fr))}
.admin-filter-grid-five{grid-template-columns:repeat(5,minmax(0,1fr)) auto}
@media(max-width:1400px){.admin-dashboard-summary{grid-template-columns:repeat(4,minmax(0,1fr))}.admin-filter-grid-five{grid-template-columns:repeat(3,minmax(0,1fr))}.admin-filter-grid-five .admin-filter-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:900px){.admin-dashboard-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-filter-grid-five{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.admin-dashboard-summary,.admin-filter-grid-five{grid-template-columns:1fr}.admin-filter-grid-five .admin-filter-actions{grid-column:auto}}

/* Phase 12: 학교 홈 업무 대시보드 / 신청현황 포커스 */
.school-dashboard-summary{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:18px}.school-dashboard-metric{display:grid;grid-template-columns:1fr auto auto;align-items:end;gap:4px;padding:18px 20px;border:1px solid var(--app-border);border-radius:14px;background:#fff;color:var(--app-text);text-decoration:none;box-shadow:0 8px 24px rgba(15,23,42,.04)}.school-dashboard-metric:hover{border-color:#bfdbfe;background:#f8fbff}.school-dashboard-metric span{grid-column:1/-1;color:#64748b;font-size:12px;font-weight:800}.school-dashboard-metric strong{font-size:26px;line-height:1}.school-dashboard-metric small{padding-bottom:2px;color:#64748b;font-size:12px}.school-dashboard-section{margin-bottom:18px;padding:22px 24px}.school-dashboard-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.school-dashboard-section-head h2{margin:0 0 5px;font-size:17px}.school-dashboard-section-head p{margin:0;color:var(--app-muted);font-size:13px}.school-dashboard-columns{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:18px}.school-dashboard-empty{padding:22px 4px;color:var(--app-muted);font-size:13px}.school-task-list{display:grid;border-top:1px solid var(--app-border)}.school-task-item{display:grid;grid-template-columns:110px minmax(0,1fr) auto;align-items:center;gap:16px;padding:15px 4px;border-bottom:1px solid var(--app-border)}.school-task-kind{color:#1d4ed8;font-size:12px;font-weight:800}.school-task-main{display:grid;gap:4px}.school-task-main strong{font-size:14px}.school-task-main span{color:var(--app-muted);font-size:12px;line-height:1.5}.school-readiness-list{display:grid;border-top:1px solid var(--app-border)}.school-readiness-list>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 2px;border-bottom:1px solid var(--app-border);font-size:13px}.school-readiness-list strong{font-size:12px}.school-readiness-list .is-ready{color:#15803d}.school-readiness-list .is-needed{color:#c2410c}.school-recent-list{display:grid;border-top:1px solid var(--app-border)}.school-recent-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 2px;border-bottom:1px solid var(--app-border);color:var(--app-text);text-decoration:none}.school-recent-item:hover{background:#f8fafc}.school-recent-item>div{display:grid;gap:4px}.school-recent-item strong{font-size:14px}.school-recent-item>div span{color:var(--app-muted);font-size:12px}.school-recent-stage{display:grid;gap:2px;min-width:104px;padding:8px 10px;border-radius:9px;background:#f8fafc;text-align:right;font-size:12px;font-weight:800}.school-recent-stage small{color:#64748b;font-size:10px;font-weight:700}.school-recent-stage.is-current{background:#eff6ff;color:#1d4ed8}.school-recent-stage.is-warning{background:#fff7ed;color:#c2410c}.school-recent-stage.is-complete{background:#f0fdf4;color:#15803d}.school-recent-stage.is-rejected{background:#fef2f2;color:#b91c1c}.progress-card-title-line{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.progress-card-title-line h2{margin-bottom:0}.progress-focus-badge{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border-radius:999px;background:#dbeafe;color:#1d4ed8;font-size:11px;font-weight:800}.progress-card.is-focused{border-color:#60a5fa;box-shadow:0 0 0 3px rgba(96,165,250,.18),0 12px 30px rgba(15,23,42,.08);background:#f8fbff;transition:border-color .35s ease,box-shadow .35s ease,background .35s ease}.progress-card:not(.is-focused){transition:border-color .5s ease,box-shadow .5s ease,background .5s ease}
@media(max-width:1100px){.school-dashboard-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.school-dashboard-columns{grid-template-columns:1fr}}
@media(max-width:760px){.school-dashboard-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.school-task-item{grid-template-columns:1fr auto}.school-task-kind{grid-column:1/-1}.school-dashboard-section-head{flex-direction:column}.school-recent-item{grid-template-columns:1fr}.school-recent-stage{justify-self:start;text-align:left}}
@media(max-width:520px){.school-dashboard-summary{grid-template-columns:1fr}.school-task-item{grid-template-columns:1fr}.school-task-item .admin-small-button{justify-self:start}}

/* Phase 13: 학교 목록 복귀 포커스 */
.school-table-row-focused td{background:#eff6ff!important;transition:background 1.2s ease}
/* Phase 15 - admin statistics */
.admin-stat-filter-grid{grid-template-columns:repeat(4,minmax(0,1fr)) auto}.stat-method-note{display:flex;gap:10px;align-items:flex-start;margin:0 0 18px;padding:13px 16px;border:1px solid #dbeafe;border-radius:12px;background:#f8fbff;color:#475569;font-size:12px;line-height:1.65}.stat-method-note strong{flex:none;color:#1d4ed8}.stat-method-note code{padding:1px 4px;border-radius:4px;background:#eff6ff;color:#1e40af;font-size:11px}.stat-kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin-bottom:18px}.stat-kpi,.stat-score-card{display:grid;gap:7px;padding:20px;border:1px solid var(--app-border);border-radius:14px;background:#fff;box-shadow:0 8px 24px rgba(15,23,42,.04)}.stat-kpi>span,.stat-score-card>span{color:#64748b;font-size:12px;font-weight:800}.stat-kpi>strong,.stat-score-card>strong{font-size:26px;line-height:1.15}.stat-kpi>small,.stat-score-card>small{color:#94a3b8;font-size:11px}.stat-section{margin-bottom:18px}.stat-section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 22px 14px}.stat-section-head h2{margin:0 0 5px;font-size:17px}.stat-section-head p{margin:0;color:var(--app-muted);font-size:13px}.stat-satisfaction-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0 22px 22px}.stat-label-with-help{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.stat-help{position:relative;display:inline-block}.stat-help summary{display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;border:1px solid #cbd5e1;border-radius:50%;background:#fff;color:#64748b;font-size:11px;font-weight:900;cursor:pointer;list-style:none;user-select:none}.stat-help summary::-webkit-details-marker{display:none}.stat-help[open] summary{border-color:#93c5fd;background:#eff6ff;color:#1d4ed8}.stat-help div{position:absolute;z-index:20;top:25px;left:0;width:260px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:9px;background:#fff;color:#475569;font-size:12px;font-weight:500;line-height:1.55;box-shadow:0 10px 30px rgba(15,23,42,.14)}
@media(max-width:1100px){.stat-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.stat-satisfaction-grid{grid-template-columns:1fr}.admin-stat-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-stat-filter-grid .admin-filter-actions{grid-column:1/-1;justify-content:flex-end}}
@media(max-width:700px){.stat-kpi-grid,.admin-stat-filter-grid{grid-template-columns:1fr}.admin-stat-filter-grid .admin-filter-actions{grid-column:auto}.stat-method-note{display:grid}.stat-help div{left:auto;right:0;width:min(260px,80vw)}}
