.admin-schedule-v2-panel {
    background: #f8fafc !important;
}

.admin-schedule-v2-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    margin-bottom: 14px;
}

.admin-schedule-v2-header h4 {
    margin: 0;
}

.admin-schedule-v2-subtitle {
    margin-top: 4px;
    font-size: 13px;
    font-weight: 700;
    color: #64748b;
}

.admin-schedule-v2-refresh {
    height: 36px;
    border: 1px solid #cbd5e1;
    border-radius: 10px;
    background: #ffffff;
    font-weight: 800;
}

.admin-schedule-v2-list {
    display: grid;
    gap: 12px;
    margin-top: 14px;
}

.admin-schedule-v2-day {
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 0;
    border: 1px solid #cbd5e1;
    border-radius: 12px;
    overflow: hidden;
    background: #ffffff;
}

.admin-schedule-v2-day-label {
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 72px;
    padding: 12px;
    border-right: 1px solid #cbd5e1;
    background: #eef2ff;
    color: #111827;
    font-weight: 900;
    text-align: center;
}

.admin-schedule-v2-day-label span {
    margin-top: 4px;
    color: #64748b;
    font-size: 12px;
    font-weight: 700;
}

.admin-schedule-v2-day-body {
    display: grid;
    gap: 8px;
    padding: 10px;
}

.admin-schedule-v2-item {
    display: grid;
    grid-template-columns: 110px minmax(180px, 1fr) auto;
    gap: 10px;
    align-items: center;
    padding: 10px 12px;
    border: 1px solid #e2e8f0;
    border-radius: 10px;
    background: #ffffff;
}

.admin-schedule-v2-time {
    font-weight: 900;
    color: #334155;
}

.admin-schedule-v2-student {
    font-weight: 900;
    color: #111827;
}

.admin-schedule-v2-meta {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.admin-schedule-v2-meta span {
    padding: 3px 7px;
    border-radius: 999px;
    background: #f1f5f9;
    color: #475569;
    font-size: 12px;
    font-weight: 800;
}

.admin-schedule-v2-comment,
.admin-schedule-v2-last {
    grid-column: 2 / 4;
    color: #64748b;
    font-size: 13px;
    font-weight: 700;
}

.admin-schedule-v2-empty {
    padding: 14px;
    color: #94a3b8;
    font-weight: 800;
}
/* Schedule v2 P0 visual cleanup */
.admin-schedule-v2-panel {
    max-height: 82vh;
    overflow: hidden;
}

.admin-schedule-v2-list {
    height: min(74vh, 780px);
    max-height: min(74vh, 780px);
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    padding-right: 6px;
    scrollbar-width: none;
    -ms-overflow-style: none;
}

.admin-schedule-v2-list::-webkit-scrollbar {
    display: none;
    width: 0;
    height: 0;
}

.admin-schedule-v2-day {
    grid-template-columns: 185px 1fr;
    border: 2px solid #94a3b8;
    border-radius: 8px;
    box-shadow: 0 0 0 1px #e2e8f0 inset;
}

.admin-schedule-v2-day-label {
    min-height: 94px;
    border-right: 3px solid #64748b;
    background: #f8fafc;
    font-size: 21px;
    line-height: 1.25;
}

.admin-schedule-v2-day-label span {
    font-size: 14px;
}

.admin-schedule-v2-item {
    min-height: 72px;
    grid-template-columns: 130px minmax(220px, 1fr) auto;
}

.admin-schedule-v2-time {
    display: flex;
    align-items: center;
    align-self: stretch;
    font-size: 21px;
    line-height: 1;
}

.admin-schedule-v2-student {
    display: flex;
    align-items: center;
    align-self: stretch;
    font-size: 20px;
    line-height: 1.15;
}

.admin-schedule-v2-empty {
    min-height: 72px;
    display: flex;
    align-items: center;
    font-size: 18px;
}
/* Schedule v2 visible layout fix */
#adminScheduleV2Result {
    display: none !important;
    margin: 0 !important;
    height: 0 !important;
}

.admin-schedule-v2-panel {
    margin-top: 18px !important;
    padding: 0 !important;
    border: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    max-height: none !important;
    overflow: visible !important;
}

.admin-schedule-v2-list {
    display: grid !important;
    gap: 14px !important;
    height: 780px !important;
    max-height: 780px !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain !important;
    padding: 0 6px 12px 0 !important;
    margin-top: 0 !important;
    background: transparent !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
}

.admin-schedule-v2-list::-webkit-scrollbar {
    display: none !important;
    width: 0 !important;
    height: 0 !important;
}

.admin-schedule-v2-day {
    display: grid !important;
    grid-template-columns: 165px minmax(0, 1fr) !important;
    min-height: 92px !important;
    border: 2px solid #94a3b8 !important;
    border-radius: 6px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    box-shadow: 0 0 0 1px #e2e8f0 inset !important;
}

.admin-schedule-v2-day-label {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 92px !important;
    height: auto !important;
    padding: 8px !important;
    border-right: 3px solid #64748b !important;
    background: #f8fafc !important;
    color: #111827 !important;
    font-size: 18px !important;
    line-height: 1.25 !important;
    font-weight: 900 !important;
    text-align: center !important;
    white-space: normal !important;
}

.admin-schedule-v2-day-label span {
    display: block !important;
    margin-top: 4px !important;
    color: #64748b !important;
    font-size: 13px !important;
    font-weight: 800 !important;
}

.admin-schedule-v2-day-body {
    display: grid !important;
    gap: 8px !important;
    align-content: start !important;
    min-height: 92px !important;
    padding: 10px !important;
    background: #ffffff !important;
}

.admin-schedule-v2-item {
    display: grid !important;
    grid-template-columns: 130px minmax(220px, 1fr) auto !important;
    gap: 0 !important;
    align-items: stretch !important;
    min-height: 58px !important;
    padding: 0 !important;
    border: 2px solid #cbd5e1 !important;
    border-left: 5px solid #4f46e5 !important;
    border-radius: 8px !important;
    background: #ffffff !important;
    color: #111827 !important;
    overflow: hidden !important;
}

.admin-schedule-v2-time {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 58px !important;
    padding: 0 10px !important;
    border-right: 2px solid #94a3b8 !important;
    background: #f8fafc !important;
    color: #111827 !important;
    font-size: 18px !important;
    line-height: 1.1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-student {
    display: flex !important;
    align-items: center !important;
    min-height: 58px !important;
    padding: 0 14px !important;
    color: #111827 !important;
    font-size: 19px !important;
    line-height: 1.15 !important;
    font-weight: 900 !important;
    white-space: normal !important;
}

.admin-schedule-v2-meta {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 6px !important;
    min-height: 58px !important;
    padding: 0 10px !important;
}

.admin-schedule-v2-meta span {
    display: inline-flex !important;
    align-items: center !important;
    min-height: 24px !important;
    padding: 3px 8px !important;
    border-radius: 999px !important;
    background: #f1f5f9 !important;
    color: #475569 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-empty {
    display: flex !important;
    align-items: center !important;
    min-height: 58px !important;
    padding: 0 14px !important;
    border: 1px dashed #cbd5e1 !important;
    border-radius: 8px !important;
    background: #f8fafc !important;
    color: #64748b !important;
    font-size: 16px !important;
    font-weight: 900 !important;
}
/* Schedule v2 mode icon column */
.admin-schedule-v2-item {
    grid-template-columns: 130px 44px minmax(220px, 1fr) !important;
}

.admin-schedule-v2-mode {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-height: 58px !important;
    padding: 0 !important;
    border: 0 !important;
    border-right: 2px solid #94a3b8 !important;
    background: #ffffff !important;
    color: #111827 !important;
    font-size: 18px !important;
    font-weight: 900 !important;
    cursor: pointer !important;
}

.admin-schedule-v2-mode:hover {
    background: #eef2ff !important;
}

.admin-schedule-v2-meta {
    display: none !important;
}
/* Schedule v2 old-style date cell */
.admin-schedule-v2-day {
    grid-template-columns: 230px minmax(0, 1fr) !important;
}

.admin-schedule-v2-day-label {
    min-height: 118px !important;
    padding: 12px 16px !important;
    background: #f8fafc !important;
    color: #111827 !important;
    font-size: 25px !important;
    line-height: 1.25 !important;
    font-weight: 900 !important;
    text-align: center !important;
    text-transform: none !important;
    border-right: 3px solid #64748b !important;
}

.admin-schedule-v2-day-label span {
    display: none !important;
}
/* Schedule v2 date vertical centering */
.admin-schedule-v2-day {
    min-height: 124px !important;
}

.admin-schedule-v2-day-label {
    min-height: 124px !important;
    height: 100% !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 12px 18px !important;
    overflow: visible !important;
    font-size: 24px !important;
    line-height: 1.22 !important;
}

.admin-schedule-v2-day-body {
    min-height: 124px !important;
    align-content: center !important;
}
/* Schedule v2 hour grid renderer */
.admin-schedule-v2-day {
    grid-template-columns: 230px minmax(0, 1fr) !important;
    min-height: auto !important;
}

.admin-schedule-v2-day-label {
    min-height: 100% !important;
    height: auto !important;
    align-self: stretch !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    overflow: visible !important;
}

.admin-schedule-v2-day-body {
    display: grid !important;
    gap: 0 !important;
    align-content: start !important;
    min-height: 0 !important;
    padding: 0 !important;
    background: #ffffff !important;
}

.admin-schedule-v2-hour-row {
    position: relative !important;
    display: grid !important;
    grid-template-columns: 150px 44px minmax(0, 1fr) !important;
    align-items: stretch !important;
    border-top: 1px solid #cbd5e1 !important;
    background: #ffffff !important;
}

.admin-schedule-v2-hour-row::after {
    content: "" !important;
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    top: 50% !important;
    border-top: 1px solid #e2e8f0 !important;
    pointer-events: auto !important;
}

.admin-schedule-v2-hour-row:last-child {
    border-bottom: 1px solid #cbd5e1 !important;
}

.admin-schedule-v2-hour-row--empty {
    min-height: 24px !important;
    color: #64748b !important;
}

.admin-schedule-v2-hour-row--occupied {
    min-height: 58px !important;
    color: #111827 !important;
}

.admin-schedule-v2-hour-time {
    position: relative !important;
    z-index: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 0 8px !important;
    border-right: 2px solid #94a3b8 !important;
    background: #f8fafc !important;
    color: #111827 !important;
    font-size: 14px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-hour-time {
    font-size: 20px !important;
}

.admin-schedule-v2-hour-mode {
    position: relative !important;
    z-index: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    border-right: 2px solid #94a3b8 !important;
    background: #ffffff !important;
    color: #64748b !important;
    font-size: 14px !important;
    font-weight: 900 !important;
}

.admin-schedule-v2-mode {
    position: relative !important;
    z-index: 1 !important;
    min-height: 58px !important;
    border-left: 0 !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    border-right: 2px solid #94a3b8 !important;
    border-radius: 0 !important;
    background: #ffffff !important;
}

.admin-schedule-v2-hour-content {
    position: relative !important;
    z-index: 1 !important;
    display: flex !important;
    align-items: center !important;
    min-width: 0 !important;
    padding: 0 14px !important;
    background: #ffffff !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-hour-content {
    border-left: 5px solid #4f46e5 !important;
}

.admin-schedule-v2-hour-content .admin-schedule-v2-student {
    min-height: 58px !important;
    padding: 0 !important;
    font-size: 21px !important;
    line-height: 1.15 !important;
}

.admin-schedule-v2-empty {
    min-height: 52px !important;
    margin: 10px !important;
}
/* Schedule v2 robust empty slot click target */
.admin-schedule-v2-empty-slot {
    pointer-events: auto !important;
    cursor: pointer !important;
}

.admin-schedule-v2-empty-slot * {
    pointer-events: auto !important;
}
/* Schedule v2 picker and progress field */
.admin-schedule-v2-hour-content {
    display: grid !important;
    grid-template-columns: minmax(220px, 1fr) 180px !important;
    gap: 0 !important;
    padding: 0 !important;
}

.admin-schedule-v2-hour-content .admin-schedule-v2-student {
    display: flex !important;
    align-items: center !important;
    padding: 0 14px !important;
    border-right: 2px solid #94a3b8 !important;
}

.admin-schedule-v2-progress {
    display: flex !important;
    align-items: center !important;
    padding: 0 14px !important;
    color: #111827 !important;
    font-size: 18px !important;
    line-height: 1.15 !important;
    font-weight: 900 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-empty-slot {
    width: 100% !important;
    min-height: 24px !important;
    padding: 0 !important;
    border: 0 !important;
    border-right: 2px solid #94a3b8 !important;
    border-radius: 0 !important;
    background: #ffffff !important;
    color: #64748b !important;
    font: inherit !important;
    font-size: 16px !important;
    font-weight: 900 !important;
    cursor: pointer !important;
}

.admin-schedule-v2-empty-slot:hover {
    background: #eef2ff !important;
    color: #111827 !important;
}

.admin-schedule-v2-picker-overlay {
    position: fixed !important;
    inset: 0 !important;
    z-index: 9999 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 24px !important;
    background: rgba(15, 23, 42, 0.32) !important;
}

.admin-schedule-v2-picker {
    width: min(720px, 96vw) !important;
    max-height: 82vh !important;
    overflow: hidden !important;
    border: 2px solid #94a3b8 !important;
    border-radius: 14px !important;
    background: #ffffff !important;
    box-shadow: 0 20px 50px rgba(15, 23, 42, 0.28) !important;
}

.admin-schedule-v2-picker-header {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 12px !important;
    padding: 14px 16px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}

.admin-schedule-v2-picker-title {
    color: #111827 !important;
    font-size: 18px !important;
    font-weight: 900 !important;
}

.admin-schedule-v2-picker-subtitle {
    margin-top: 2px !important;
    color: #64748b !important;
    font-size: 13px !important;
    font-weight: 800 !important;
}

.admin-schedule-v2-picker-close {
    border: 0 !important;
    border-radius: 8px !important;
    padding: 8px 12px !important;
    background: #f1f5f9 !important;
    font-weight: 900 !important;
    cursor: pointer !important;
}

.admin-schedule-v2-picker-search-wrap {
    padding: 12px 16px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}

.admin-schedule-v2-picker-search {
    width: 100% !important;
    box-sizing: border-box !important;
    padding: 11px 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 10px !important;
    font-size: 15px !important;
    font-weight: 800 !important;
}

.admin-schedule-v2-picker-list {
    max-height: 52vh !important;
    overflow-y: auto !important;
}

.admin-schedule-v2-picker-student {
    width: 100% !important;
    display: block !important;
    padding: 11px 14px !important;
    border: 0 !important;
    border-bottom: 1px solid #e2e8f0 !important;
    background: #ffffff !important;
    color: #111827 !important;
    text-align: left !important;
    font-size: 15px !important;
    font-weight: 900 !important;
    cursor: pointer !important;
}

.admin-schedule-v2-picker-student:hover {
    background: #eef2ff !important;
}

.admin-schedule-v2-picker-empty {
    padding: 14px !important;
    color: #64748b !important;
    font-weight: 900 !important;
}
/* Schedule v2 debug: show result errors */
#adminScheduleV2Result {
    display: block !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 0 10px 0 !important;
}
/* Schedule v2 created slot highlight */
.admin-schedule-v2-created-highlight {
    outline: 4px solid #22c55e !important;
    outline-offset: 2px !important;
    box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.18) !important;
}
/* Schedule v2 occupied row date/layout fix */
.admin-schedule-v2-day {
    grid-template-columns: 300px minmax(0, 1fr) !important;
    align-items: stretch !important;
}

.admin-schedule-v2-day-label {
    min-height: 58px !important;
    height: auto !important;
    align-self: stretch !important;
    box-sizing: border-box !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 4px 10px !important;
    overflow: hidden !important;
    background: #f8fafc !important;
    color: #111827 !important;
    font-size: 22px !important;
    line-height: 1.05 !important;
    font-weight: 900 !important;
    white-space: normal !important;
    text-align: center !important;
}

.admin-schedule-v2-hour-row--occupied {
    min-height: 74px !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-hour-time {
    min-height: 74px !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-mode {
    min-height: 74px !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-hour-content {
    min-height: 74px !important;
    grid-template-columns: minmax(280px, 1fr) 160px !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-student {
    min-height: 74px !important;
    max-height: 74px !important;
    overflow: hidden !important;
    display: flex !important;
    align-items: center !important;
    padding: 0 16px !important;
    font-size: 26px !important;
    line-height: 1.05 !important;
}

.admin-schedule-v2-hour-row--occupied .admin-schedule-v2-progress {
    min-height: 74px !important;
    max-height: 74px !important;
    overflow: hidden !important;
    display: flex !important;
    align-items: center !important;
    padding: 0 16px !important;
    font-size: 24px !important;
    line-height: 1.05 !important;
}

.admin-schedule-v2-hour-row--empty {
    min-height: 36px !important;
}

.admin-schedule-v2-hour-row--empty .admin-schedule-v2-hour-time,
.admin-schedule-v2-hour-row--empty .admin-schedule-v2-hour-mode,
.admin-schedule-v2-hour-row--empty .admin-schedule-v2-hour-content {
    min-height: 36px !important;
}
/* Schedule v2 row-based date cell */
.admin-schedule-v2-day-row {
    grid-template-columns: 300px minmax(0, 1fr) !important;
    align-items: stretch !important;
}

.admin-schedule-v2-day-row .admin-schedule-v2-day-label {
    min-height: 72px !important;
    height: auto !important;
    align-self: stretch !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 4px 10px !important;
    box-sizing: border-box !important;
    overflow: hidden !important;
    background: #f8fafc !important;
    color: #111827 !important;
    font-size: 22px !important;
    line-height: 1.05 !important;
    font-weight: 900 !important;
    text-align: center !important;
    white-space: normal !important;
}

.admin-schedule-v2-day-row .admin-schedule-v2-day-body {
    display: block !important;
    padding: 0 !important;
    min-height: 72px !important;
}

.admin-schedule-v2-day-row .admin-schedule-v2-hour-row {
    min-height: 72px !important;
}

.admin-schedule-v2-day-row .admin-schedule-v2-hour-time,
.admin-schedule-v2-day-row .admin-schedule-v2-hour-mode,
.admin-schedule-v2-day-row .admin-schedule-v2-mode,
.admin-schedule-v2-day-row .admin-schedule-v2-hour-content {
    min-height: 72px !important;
}

.admin-schedule-v2-day-row .admin-schedule-v2-student,
.admin-schedule-v2-day-row .admin-schedule-v2-progress {
    min-height: 72px !important;
    max-height: 72px !important;
}

.admin-schedule-v2-day-row .admin-schedule-v2-hour-content {
    grid-template-columns: minmax(280px, 1fr) 180px !important;
}
/* Schedule v2 emergency flat row renderer */
.admin-schedule-v2-list {
    display: block !important;
    height: 780px !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
}

.admin-schedule-v2-flat-row {
    display: grid !important;
    grid-template-columns: 300px 190px 56px minmax(0, 1fr) 180px !important;
    align-items: stretch !important;
    width: 100% !important;
    box-sizing: border-box !important;
    margin: 10px 0 !important;
    padding: 0 !important;
    border: 2px solid #94a3b8 !important;
    border-radius: 7px !important;
    overflow: hidden !important;
    background: #ffffff !important;
}

.admin-schedule-v2-flat-row::after {
    content: none !important;
    display: none !important;
}

.admin-schedule-v2-flat-row--empty {
    min-height: 44px !important;
}

.admin-schedule-v2-flat-row--occupied {
    min-height: 78px !important;
}

.admin-schedule-v2-flat-date,
.admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-progress {
    display: flex !important;
    align-items: center !important;
    box-sizing: border-box !important;
    min-width: 0 !important;
    min-height: inherit !important;
    background: #ffffff !important;
    color: #111827 !important;
    border-right: 2px solid #94a3b8 !important;
}

.admin-schedule-v2-flat-progress {
    border-right: 0 !important;
}

.admin-schedule-v2-flat-date {
    justify-content: center !important;
    padding: 4px 10px !important;
    background: #f8fafc !important;
    font-size: 24px !important;
    line-height: 1.05 !important;
    font-weight: 900 !important;
    text-align: center !important;
    white-space: normal !important;
    overflow: hidden !important;
}

.admin-schedule-v2-flat-time {
    justify-content: center !important;
    padding: 0 10px !important;
    background: #f8fafc !important;
    font-size: 18px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-time {
    font-size: 26px !important;
}

.admin-schedule-v2-flat-mode {
    justify-content: center !important;
    padding: 0 !important;
    border-top: 0 !important;
    border-left: 0 !important;
    border-bottom: 0 !important;
    border-radius: 0 !important;
    font-size: 24px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    cursor: pointer !important;
}

.admin-schedule-v2-flat-student {
    padding: 0 18px !important;
    border-left: 6px solid #4f46e5 !important;
    font-size: 26px !important;
    line-height: 1.05 !important;
    font-weight: 900 !important;
    overflow: hidden !important;
}

.admin-schedule-v2-flat-progress {
    padding: 0 18px !important;
    font-size: 24px !important;
    line-height: 1.05 !important;
    font-weight: 900 !important;
    overflow: hidden !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-student {
    border-left: 0 !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-date,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-progress {
    min-height: 44px !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-date {
    font-size: 23px !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-time {
    font-size: 18px !important;
}

.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-date,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-progress {
    min-height: 78px !important;
}

/* Schedule v2 final time font normalization */
.admin-schedule-v2-flat-time {
    font-size: 16px !important;
    font-weight: 800 !important;
    line-height: 1.1 !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-time {
    font-size: 16px !important;
    font-weight: 800 !important;
    line-height: 1.1 !important;
}

/* Schedule v2 compact old-style row proportions */
.admin-schedule-v2-flat-row {
    grid-template-columns: 240px 132px 44px minmax(0, 1fr) 140px !important;
    margin: 8px 0 !important;
}

.admin-schedule-v2-flat-row--empty {
    min-height: 42px !important;
}

.admin-schedule-v2-flat-row--occupied {
    min-height: 58px !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-date,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-progress {
    min-height: 42px !important;
}

.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-date,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-progress {
    min-height: 58px !important;
}

.admin-schedule-v2-flat-date {
    font-size: 20px !important;
    line-height: 1.05 !important;
    padding: 3px 8px !important;
}

.admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-time {
    font-size: 18px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    padding: 0 8px !important;
}

.admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-row--occupied .admin-schedule-v2-flat-mode {
    font-size: 22px !important;
    line-height: 1 !important;
}

.admin-schedule-v2-flat-student {
    display: block !important;
    align-content: center !important;
    padding: 0 14px !important;
    font-size: 21px !important;
    line-height: 58px !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-flat-progress {
    display: block !important;
    align-content: center !important;
    padding: 0 12px !important;
    font-size: 20px !important;
    line-height: 58px !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-row--empty .admin-schedule-v2-flat-progress {
    line-height: 42px !important;
}

/* Schedule v2 stable grouped day layout */
.admin-schedule-v2-list {
    display: block !important;
    height: 780px !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
}

.admin-schedule-v2-day-block {
    display: grid !important;
    grid-template-columns: 220px minmax(0, 1fr) !important;
    width: 100% !important;
    margin: 16px 0 !important;
    border: 2px solid #94a3b8 !important;
    border-radius: 8px !important;
    overflow: hidden !important;
    background: #ffffff !important;
    box-sizing: border-box !important;
}

.admin-schedule-v2-day-block-label {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    padding: 8px !important;
    background: #f8fafc !important;
    border-right: 2px solid #94a3b8 !important;
    color: #111827 !important;
    font-size: 22px !important;
    line-height: 1.12 !important;
    font-weight: 900 !important;
    text-align: center !important;
    white-space: normal !important;
    box-sizing: border-box !important;
}

.admin-schedule-v2-day-block-body {
    display: block !important;
    min-width: 0 !important;
    background: #ffffff !important;
}

.admin-schedule-v2-body-row {
    display: grid !important;
    grid-template-columns: 142px 48px minmax(0, 1fr) 140px !important;
    width: 100% !important;
    box-sizing: border-box !important;
    background: #ffffff !important;
    border-bottom: 1px solid #94a3b8 !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
}

.admin-schedule-v2-body-row:last-child {
    border-bottom: 0 !important;
}

.admin-schedule-v2-body-row--empty {
    min-height: 34px !important;
}

.admin-schedule-v2-body-row--occupied {
    min-height: 44px !important;
}

.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    display: flex !important;
    align-items: center !important;
    box-sizing: border-box !important;
    min-width: 0 !important;
    border-right: 1px solid #94a3b8 !important;
    background: #ffffff !important;
    color: #111827 !important;
    overflow: hidden !important;
}

.admin-schedule-v2-row-progress {
    border-right: 0 !important;
}

.admin-schedule-v2-row-time {
    justify-content: center !important;
    padding: 0 6px !important;
    background: #f8fafc !important;
    font-size: 17px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-row-mode {
    justify-content: center !important;
    padding: 0 !important;
    font-size: 20px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    cursor: pointer !important;
    border-top: 0 !important;
    border-left: 0 !important;
    border-bottom: 0 !important;
    border-radius: 0 !important;
}

.admin-schedule-v2-row-student {
    padding: 0 14px !important;
    border-left: 5px solid #4f46e5 !important;
    font-size: 20px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-row-progress {
    padding: 0 12px !important;
    font-size: 18px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student {
    border-left: 0 !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-progress {
    min-height: 34px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    min-height: 44px !important;
}

/* Schedule v2 old visual scale and colors */
.admin-schedule-v2-list {
    background: #f8fafc !important;
}

.admin-schedule-v2-day-block {
    grid-template-columns: 190px minmax(0, 1fr) !important;
    margin: 14px 0 !important;
    border: 2px solid #9aaec5 !important;
    border-radius: 7px !important;
    background: #f3f6fa !important;
}

.admin-schedule-v2-day-block-label {
    background: #eef2f7 !important;
    border-right: 2px solid #7f92aa !important;
    color: #111827 !important;
    font-size: 18px !important;
    line-height: 1.12 !important;
    font-weight: 900 !important;
    padding: 6px 8px !important;
}

.admin-schedule-v2-day-block-body {
    background: #f8fafc !important;
}

.admin-schedule-v2-body-row {
    grid-template-columns: 132px 40px minmax(0, 1fr) 132px !important;
    background: #f8fafc !important;
    border-bottom: 1px solid #aebdd0 !important;
}

.admin-schedule-v2-body-row--empty {
    min-height: 24px !important;
}

.admin-schedule-v2-body-row--occupied {
    min-height: 34px !important;
}

.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    background: #f8fafc !important;
    color: #111827 !important;
    border-right: 1px solid #aebdd0 !important;
}

.admin-schedule-v2-row-time {
    background: #f3f6fa !important;
    font-size: 15px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    padding: 0 6px !important;
}

.admin-schedule-v2-row-mode {
    font-size: 17px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
}

.admin-schedule-v2-row-student {
    border-left: 4px solid #4f46e5 !important;
    padding: 0 12px !important;
    font-size: 17px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-row-progress {
    padding: 0 10px !important;
    font-size: 16px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-progress {
    min-height: 24px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    min-height: 34px !important;
}

/* old schedule had a softer faded look for past-looking blocks */
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student {
    color: #111827 !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student {
    border-left: 0 !important;
}

/* Schedule v2 remove time cell fill */
.admin-schedule-v2-row-time {
    background: transparent !important;
    background-color: transparent !important;
}

.admin-schedule-v2-body-row {
    background: #f8fafc !important;
}

.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    background: transparent !important;
    background-color: transparent !important;
}

.admin-schedule-v2-day-block-label {
    background: #eef2f7 !important;
}

/* Schedule v2 compact empty hours x2 */
.admin-schedule-v2-body-row--empty {
    min-height: 12px !important;
    height: 12px !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-progress {
    min-height: 12px !important;
    height: 12px !important;
    font-size: 11px !important;
    line-height: 12px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode {
    font-size: 12px !important;
}

.admin-schedule-v2-body-row--occupied {
    min-height: 34px !important;
}

/* Schedule v2 balanced empty hours half height */
.admin-schedule-v2-body-row--occupied {
    min-height: 36px !important;
    height: 36px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    min-height: 36px !important;
    height: 36px !important;
}

.admin-schedule-v2-body-row--empty {
    min-height: 18px !important;
    height: 18px !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-progress {
    min-height: 18px !important;
    height: 18px !important;
    line-height: 18px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time {
    font-size: 13px !important;
    line-height: 18px !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode {
    font-size: 14px !important;
    line-height: 18px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time {
    font-size: 15px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student {
    font-size: 17px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    font-size: 16px !important;
}

/* Schedule v2 professional row rhythm */
.admin-schedule-v2-body-row--occupied {
    min-height: 36px !important;
    height: 36px !important;
}

.admin-schedule-v2-body-row--empty {
    min-height: 22px !important;
    height: 22px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    min-height: 36px !important;
    height: 36px !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-progress {
    min-height: 22px !important;
    height: 22px !important;
}

.admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time {
    font-size: 14px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
}

.admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode {
    font-size: 16px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
}

.admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student {
    font-size: 16px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-row-progress,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    font-size: 15px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-progress {
    font-size: 15px !important;
}

/* Schedule v2 centered plus and collapsed empty gaps */
.admin-schedule-v2-row-mode,
.admin-schedule-v2-empty-slot,
.admin-schedule-v2-gap-expand {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1 !important;
    appearance: none !important;
    -webkit-appearance: none !important;
    background: transparent !important;
    background-color: transparent !important;
}

.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-empty-slot,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-gap-expand {
    height: 22px !important;
    min-height: 22px !important;
    line-height: 1 !important;
}

.admin-schedule-v2-body-row--collapsed {
    cursor: pointer !important;
}

.admin-schedule-v2-body-row--collapsed .admin-schedule-v2-row-time {
    opacity: 0.82 !important;
}

.admin-schedule-v2-body-row--collapsed:hover {
    background: #eef2ff !important;
}

.admin-schedule-v2-body-row--collapsed:hover .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--collapsed:hover .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--collapsed:hover .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--collapsed:hover .admin-schedule-v2-row-progress {
    background: #eef2ff !important;
}

/* Schedule v2 weekly separator */
.admin-schedule-v2-week-separator {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 30px !important;
    margin: 18px 0 10px 0 !important;
    color: #475569 !important;
    font-size: 15px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    text-transform: lowercase !important;
    letter-spacing: 0.02em !important;
    position: relative !important;
    user-select: none !important;
    pointer-events: auto !important;
}

.admin-schedule-v2-week-separator::before,
.admin-schedule-v2-week-separator::after {
    content: "" !important;
    flex: 1 1 auto !important;
    height: 2px !important;
    background: #cbd5e1 !important;
}

.admin-schedule-v2-week-separator span {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 160px !important;
    padding: 0 14px !important;
    color: #334155 !important;
    background: #f8fafc !important;
}

/* Schedule v2 wide week separator and past days */
.admin-schedule-v2-week-separator {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 46px !important;
    margin: 22px 0 14px 0 !important;
    padding: 0 18px !important;
    box-sizing: border-box !important;
    border: 2px solid #cbd5e1 !important;
    border-radius: 10px !important;
    background: #eaf0f7 !important;
    color: #334155 !important;
    font-size: 17px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    letter-spacing: 0.02em !important;
    user-select: none !important;
    pointer-events: auto !important;
}

.admin-schedule-v2-week-separator::before,
.admin-schedule-v2-week-separator::after {
    content: none !important;
    display: none !important;
}

.admin-schedule-v2-week-separator span {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    min-width: 180px !important;
    padding: 0 !important;
    color: #334155 !important;
    background: transparent !important;
}

.admin-schedule-v2-day-block--past {
    opacity: 0.46 !important;
    filter: grayscale(0.2) !important;
}

.admin-schedule-v2-day-block--past:hover {
    opacity: 0.76 !important;
}
/* Schedule v2 stronger past dim + mode click */
.admin-schedule-v2-day--past,
.admin-schedule-v2-past {
    background: #eef2f7 !important;
}

.admin-schedule-v2-day--past .admin-schedule-v2-day-label,
.admin-schedule-v2-day--past .admin-schedule-v2-hour-time,
.admin-schedule-v2-day--past .admin-schedule-v2-flat-time,
.admin-schedule-v2-day--past .admin-schedule-v2-student,
.admin-schedule-v2-day--past .admin-schedule-v2-flat-student,
.admin-schedule-v2-day--past .admin-schedule-v2-progress,
.admin-schedule-v2-day--past .admin-schedule-v2-flat-progress,
.admin-schedule-v2-day--past .admin-schedule-v2-mode,
.admin-schedule-v2-day--past .admin-schedule-v2-hour-mode,
.admin-schedule-v2-past .admin-schedule-v2-day-label,
.admin-schedule-v2-past .admin-schedule-v2-hour-time,
.admin-schedule-v2-past .admin-schedule-v2-flat-time,
.admin-schedule-v2-past .admin-schedule-v2-student,
.admin-schedule-v2-past .admin-schedule-v2-flat-student,
.admin-schedule-v2-past .admin-schedule-v2-progress,
.admin-schedule-v2-past .admin-schedule-v2-flat-progress,
.admin-schedule-v2-past .admin-schedule-v2-mode,
.admin-schedule-v2-past .admin-schedule-v2-hour-mode {
    color: #8f97a8 !important;
}

.admin-schedule-v2-day--past .admin-schedule-v2-hour-row,
.admin-schedule-v2-day--past .admin-schedule-v2-flat-row,
.admin-schedule-v2-past .admin-schedule-v2-hour-row,
.admin-schedule-v2-past .admin-schedule-v2-flat-row {
    background: #f3f5f9 !important;
}

.admin-schedule-v2-day--past .admin-schedule-v2-mode,
.admin-schedule-v2-day--past .admin-schedule-v2-hour-mode,
.admin-schedule-v2-past .admin-schedule-v2-mode,
.admin-schedule-v2-past .admin-schedule-v2-hour-mode {
    opacity: 0.78 !important;
}

.admin-schedule-v2-mode-button {
    cursor: pointer !important;
    transition: background 0.15s ease, box-shadow 0.15s ease, opacity 0.15s ease;
}

.admin-schedule-v2-mode-button:hover {
    background: #eef2ff !important;
    box-shadow: inset 0 0 0 1px rgba(79, 70, 229, 0.16) !important;
}

/* Schedule v2 stronger real past day dim */
.admin-schedule-v2-day-block--past {
    opacity: 0.34 !important;
    filter: grayscale(0.45) !important;
}

.admin-schedule-v2-day-block--past:hover {
    opacity: 0.58 !important;
}

.admin-schedule-v2-day-block--past .admin-schedule-v2-day-block-label,
.admin-schedule-v2-day-block--past .admin-schedule-v2-row-time,
.admin-schedule-v2-day-block--past .admin-schedule-v2-row-mode,
.admin-schedule-v2-day-block--past .admin-schedule-v2-row-student,
.admin-schedule-v2-day-block--past .admin-schedule-v2-row-progress {
    color: #6b7280 !important;
}

.admin-schedule-v2-mode-button {
    cursor: pointer !important;
    pointer-events: auto !important;
}

.admin-schedule-v2-mode-button:hover {
    background: #eef2ff !important;
    box-shadow: inset 0 0 0 1px rgba(79, 70, 229, 0.22) !important;
}

.admin-schedule-v2-mode-button--saving {
    opacity: 0.55 !important;
    cursor: wait !important;
}

/* Schedule v2 empty preview in mode cycle */
.admin-schedule-v2-body-row--empty-preview {
    cursor: pointer !important;
    background: #eef2ff !important;
}

.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-progress {
    background: #eef2ff !important;
}

.admin-schedule-v2-empty-preview-restore {
    cursor: pointer !important;
    color: #4f46e5 !important;
    font-weight: 900 !important;
}

.admin-schedule-v2-body-row--clearing {
    opacity: 0.55 !important;
    cursor: wait !important;
}

/* Schedule v2 final mode icon centering */
.admin-schedule-v2-row-mode,
.admin-schedule-v2-mode-button,
.admin-schedule-v2-empty-slot,
.admin-schedule-v2-gap-expand,
.admin-schedule-v2-empty-preview-restore {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    text-align: center !important;
    padding: 0 !important;
    margin: 0 !important;
    line-height: 1 !important;
}

.admin-schedule-v2-mode-button {
    font-size: 17px !important;
    font-weight: 900 !important;
}

/* Schedule v2 occupied mode colors */
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-progress {
    background: #eef2ff !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-student {
    border-left-color: #4f46e5 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-progress {
    background: #f1f5ff !important;
    color: #475569 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-student {
    border-left-color: #818cf8 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-progress {
    background: #fee2e2 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-student {
    border-left-color: #dc2626 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-progress {
    background: #ecfdf5 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-student {
    border-left-color: #059669 !important;
}

.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty-preview .admin-schedule-v2-row-progress {
    background: #f8fafc !important;
}

/* Schedule v2 mode color refinement: stop edge tape + play/pause contrast */

/* play: active blue */
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular {
    position: relative !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-progress {
    background: #e8edff !important;
    color: #111827 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-student {
    border-left-color: #4338ca !important;
}

/* pause: same family, but visibly muted */
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused {
    position: relative !important;
    opacity: 0.86 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-progress {
    background: #f6f8ff !important;
    color: #64748b !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-student {
    border-left-color: #a5b4fc !important;
}

/* stopped: warm warning fill + bottom tape edge */
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped {
    position: relative !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-progress {
    background: #fff7ed !important;
    color: #431407 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-student {
    border-left-color: #f97316 !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped::after {
    content: "" !important;
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    height: 5px !important;
    pointer-events: auto !important;
    background: repeating-linear-gradient(
        135deg,
        #f97316 0,
        #f97316 8px,
        #fed7aa 8px,
        #fed7aa 16px
    ) !important;
    opacity: 0.95 !important;
}

/* manual: keep calm green */
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual {
    position: relative !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-progress {
    background: #ecfdf5 !important;
    color: #064e3b !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-student {
    border-left-color: #059669 !important;
}

/* Schedule v2 fix stopped tape: bottom edge only */
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped::after {
    content: none !important;
    display: none !important;
}

.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-progress {
    background-color: #fff7ed !important;
    background-image: repeating-linear-gradient(
        135deg,
        #f97316 0,
        #f97316 8px,
        #fed7aa 8px,
        #fed7aa 16px
    ) !important;
    background-repeat: repeat-x !important;
    background-size: 24px 5px !important;
    background-position: left bottom !important;
}

/* Schedule v2 empty day cyclic hour scroll */
.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: 148px !important;
    overflow-y: auto !important;
    overscroll-behavior: contain !important;
    scroll-behavior: smooth !important;
    scrollbar-width: thin;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-empty-day-hour-row {
    min-height: 34px !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-label {
    align-self: stretch !important;
}

/* Schedule v2 compact cyclic empty day window: no native scrollbar */
.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: none !important;
    overflow: hidden !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-body-row {
    min-height: 34px !important;
}

/* Schedule v2 real smooth cyclic empty day scroll */
.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: 76px !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    overscroll-behavior: contain !important;
    scroll-behavior: smooth !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-empty-day-scroll-range {
    min-height: 38px !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-label {
    align-self: stretch !important;
}

/* Schedule v2 empty day scroll fix: no auto scroll loop */
.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    overflow-y: auto !important;
    overflow-x: hidden !important;
    scroll-behavior: auto !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

/* Schedule v2 empty day stable wheel window: no physical scroll */
.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: none !important;
    overflow: hidden !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
    scroll-behavior: auto !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

/* Schedule v2 real moving empty-day rows */
.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: 76px !important;
    overflow-y: hidden !important;
    overflow-x: hidden !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
    scroll-behavior: auto !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-empty-day-scroll-range {
    min-height: 38px !important;
}

/* Schedule v2 real moving hour scroll for occupied days */
.admin-schedule-v2-day-block--hour-scroll .admin-schedule-v2-day-block-body {
    overflow-y: hidden !important;
    overflow-x: hidden !important;
    scrollbar-width: none !important;
    -ms-overflow-style: none !important;
    scroll-behavior: auto !important;
}

.admin-schedule-v2-day-block--hour-scroll .admin-schedule-v2-day-block-body::-webkit-scrollbar {
    width: 0 !important;
    height: 0 !important;
    display: none !important;
}

.admin-schedule-v2-day-block--occupied-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: 190px !important;
}

.admin-schedule-v2-day-block--occupied-hour-scroll .admin-schedule-v2-body-row {
    min-height: 38px !important;
}

.admin-schedule-v2-day-block--empty-hour-scroll .admin-schedule-v2-day-block-body {
    max-height: 76px !important;
}

/* Schedule v2 occupied day compact initial view */
.admin-schedule-v2-day-block--occupied-hour-scroll:not(.admin-schedule-v2-day-block--occupied-hour-scroll-active) .admin-schedule-v2-day-block-body {
    max-height: none !important;
    overflow: hidden !important;
}

.admin-schedule-v2-day-block--occupied-hour-scroll-active .admin-schedule-v2-day-block-body {
    max-height: 190px !important;
    overflow-y: hidden !important;
    overflow-x: hidden !important;
}

/* Schedule v2: half-hour line must stay behind time / mode / name / progress */
.admin-schedule-v2-body-row,
.admin-schedule-v2-hour-row,
.admin-schedule-v2-flat-row {
    position: relative;
}

/* probable half-hour overlay layer */
.admin-schedule-v2-body-row::before,
.admin-schedule-v2-body-row::after,
.admin-schedule-v2-hour-row::before,
.admin-schedule-v2-hour-row::after,
.admin-schedule-v2-flat-row::before,
.admin-schedule-v2-flat-row::after {
    z-index: 0 !important;
    pointer-events: auto !important;
}

/* content must be above the half-hour line */
.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress,
.admin-schedule-v2-hour-time,
.admin-schedule-v2-hour-mode,
.admin-schedule-v2-student,
.admin-schedule-v2-progress,
.admin-schedule-v2-flat-time,
.admin-schedule-v2-flat-mode,
.admin-schedule-v2-flat-student,
.admin-schedule-v2-flat-progress {
    position: relative !important;
    z-index: 2 !important;
}

/* occupied row inner separators / markers should also stay above the line */
.admin-schedule-v2-row-time *,
.admin-schedule-v2-row-mode *,
.admin-schedule-v2-row-student *,
.admin-schedule-v2-row-progress *,
.admin-schedule-v2-hour-time *,
.admin-schedule-v2-hour-mode *,
.admin-schedule-v2-student *,
.admin-schedule-v2-progress *,
.admin-schedule-v2-flat-time *,
.admin-schedule-v2-flat-mode *,
.admin-schedule-v2-flat-student *,
.admin-schedule-v2-flat-progress * {
    position: relative;
    z-index: 2;
}

/* Schedule v2: vertically center time in free rows */
.admin-schedule-v2-body-row:not(.admin-schedule-v2-body-row--occupied) .admin-schedule-v2-row-time,
.admin-schedule-v2-hour-row:not(.admin-schedule-v2-hour-row--occupied) .admin-schedule-v2-hour-time,
.admin-schedule-v2-flat-row:not(.admin-schedule-v2-flat-row--occupied) .admin-schedule-v2-flat-time {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    height: 100% !important;
    min-height: 100% !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.1 !important;
    box-sizing: border-box !important;
}

/* Schedule v2: temporarily enlarge day window while a gap is expanded */
.admin-schedule-v2-day-block--expanded-gap-active .admin-schedule-v2-day-block-body {
    max-height: 230px !important;
    overflow-y: hidden !important;
    overflow-x: hidden !important;
}

.admin-schedule-v2-day-block--expanded-gap-active .admin-schedule-v2-body-row,
.admin-schedule-v2-day-block--expanded-gap-active .admin-schedule-v2-expanded-gap-row,
.admin-schedule-v2-day-block--expanded-gap-active .admin-schedule-v2-empty-day-hour-row {
    min-height: 38px !important;
}

.admin-schedule-v2-day-block--expanded-gap-active .admin-schedule-v2-day-block-label {
    align-self: stretch !important;
}

/* Schedule v2 lesson resize visual preview */
.admin-schedule-v2-body-row--occupied {
    position: relative !important;
}

.admin-schedule-v2-resize-handle {
    position: absolute !important;
    left: 0 !important;
    right: 0 !important;
    height: 8px !important;
    z-index: 6 !important;
    opacity: 0 !important;
}

.admin-schedule-v2-resize-handle--top {
    top: -4px !important;
    cursor: ns-resize !important;
}

.admin-schedule-v2-resize-handle--bottom {
    bottom: -4px !important;
    cursor: ns-resize !important;
}

.admin-schedule-v2-body-row--occupied:hover .admin-schedule-v2-resize-handle {
    opacity: 1 !important;
}

.admin-schedule-v2-body-row--occupied:hover .admin-schedule-v2-resize-handle--top {
    background: linear-gradient(to bottom, rgba(79, 70, 229, 0.24), transparent) !important;
}

.admin-schedule-v2-body-row--occupied:hover .admin-schedule-v2-resize-handle--bottom {
    background: linear-gradient(to top, rgba(79, 70, 229, 0.24), transparent) !important;
}

.admin-schedule-v2-body-row--resize-preview {
    outline: 2px dashed rgba(79, 70, 229, 0.55) !important;
    z-index: 7 !important;
}

.admin-schedule-v2-body-row--resize-invalid {
    outline-color: rgba(220, 38, 38, 0.8) !important;
}

.admin-schedule-v2-body-row--resize-invalid .admin-schedule-v2-row-time {
    color: #b91c1c !important;
}

/* Schedule v2: resized lesson rows must visually grow with duration */
.admin-schedule-v2-body-row--occupied {
    align-items: stretch !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    height: 100% !important;
    min-height: inherit !important;
    display: flex !important;
    align-items: center !important;
    box-sizing: border-box !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    justify-content: flex-start !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode {
    justify-content: center !important;
}

/* Bigger resize hit zones */
.admin-schedule-v2-resize-handle {
    height: 14px !important;
    z-index: 20 !important;
}

.admin-schedule-v2-resize-handle--top {
    top: 0 !important;
    transform: translateY(-50%) !important;
}

.admin-schedule-v2-resize-handle--bottom {
    bottom: 0 !important;
    transform: translateY(50%) !important;
}

/* Schedule v2 final dynamic occupied duration height */
.admin-schedule-v2-body-row--occupied {
    height: var(--schedule-v2-occupied-row-height, 36px) !important;
    min-height: var(--schedule-v2-occupied-row-height, 36px) !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-time,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-progress {
    height: var(--schedule-v2-occupied-row-height, 36px) !important;
    min-height: var(--schedule-v2-occupied-row-height, 36px) !important;
    align-items: center !important;
}

.admin-schedule-v2-resize-handle {
    pointer-events: auto !important;
    z-index: 50 !important;
}

.admin-schedule-v2-resize-handle--top,
.admin-schedule-v2-resize-handle--bottom {
    cursor: ns-resize !important;
}

/* Schedule v2 final resize hit zones */
.admin-schedule-v2-body-row--occupied {
    position: relative !important;
}

.admin-schedule-v2-body-row--resize-zone {
    cursor: ns-resize !important;
}

.admin-schedule-v2-resize-handle {
    height: 18px !important;
    opacity: 0 !important;
    pointer-events: auto !important;
    z-index: 100 !important;
}

.admin-schedule-v2-resize-handle--top {
    top: 0 !important;
    transform: none !important;
    cursor: ns-resize !important;
}

.admin-schedule-v2-resize-handle--bottom {
    bottom: 0 !important;
    transform: none !important;
    cursor: ns-resize !important;
}

.admin-schedule-v2-body-row--occupied:hover .admin-schedule-v2-resize-handle {
    opacity: 0.2 !important;
}

/* Schedule v2: mode click must have priority over resize zones */
.admin-schedule-v2-resize-handle {
    pointer-events: auto !important;
}

.admin-schedule-v2-mode-button,
.admin-schedule-v2-row-mode {
    position: relative !important;
    z-index: 150 !important;
    cursor: pointer !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-mode-button {
    min-width: 46px !important;
    width: 46px !important;
    flex: 0 0 46px !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-mode:hover,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-mode-button:hover {
    box-shadow: inset 0 0 0 2px rgba(79, 70, 229, 0.35) !important;
}

/* Schedule v2: occupied compact overview must show the whole day */
.admin-schedule-v2-day-block--occupied-compact .admin-schedule-v2-day-block-body {
    max-height: none !important;
    height: auto !important;
    overflow: visible !important;
}

.admin-schedule-v2-day-block--occupied-compact {
    height: auto !important;
    min-height: 0 !important;
}

.admin-schedule-v2-day-block--occupied-compact .admin-schedule-v2-body-row {
    flex-shrink: 0 !important;
}



/* Keep compact row heights while making children fill the whole row. */
.admin-schedule-v2-body-row--empty {
    height: 24px !important;
    min-height: 24px !important;
}

.admin-schedule-v2-body-row--occupied {
    height: var(--schedule-v2-occupied-row-height, 36px) !important;
    min-height: var(--schedule-v2-occupied-row-height, 36px) !important;
}


/* Schedule v2 final overlay separators.
   One source of truth: vertical separators are drawn by the row itself,
   above cell backgrounds, so occupied rows and empty rows align exactly. */
.admin-schedule-v2-body-row {
    display: grid !important;
    grid-template-columns: 132px 40px minmax(0, 1fr) 132px !important;
    position: relative !important;
    align-items: stretch !important;
    overflow: hidden !important;
    background-image: none !important;
    background-color: #f8fafc !important;
}

.admin-schedule-v2-body-row::after {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    pointer-events: none !important;
    z-index: 5 !important;
    background-image:
        linear-gradient(to right, transparent 131px, #aebdd0 131px, #aebdd0 132px, transparent 132px),
        linear-gradient(to right, transparent 171px, #aebdd0 171px, #aebdd0 172px, transparent 172px),
        linear-gradient(to left, transparent 131px, #aebdd0 131px, #aebdd0 132px, transparent 132px) !important;
    background-repeat: no-repeat !important;
    background-size: 100% 100% !important;
}

.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    position: relative !important;
    z-index: 1 !important;
    display: flex !important;
    align-items: center !important;
    align-self: stretch !important;
    box-sizing: border-box !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    background-color: transparent !important;
}

.admin-schedule-v2-row-mode {
    justify-content: center !important;
    padding: 0 !important;
}

.admin-schedule-v2-row-time {
    justify-content: center !important;
}

.admin-schedule-v2-row-student {
    border-left: 0 !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
}


/* Schedule v2 hover-only row actions.
   Button is inside the student cell, between mode and student name.
   It is hidden by default and appears only on occupied-row hover. */
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student {
    position: relative !important;
    padding-left: 38px !important;
}

.admin-schedule-v2-row-student-name {
    display: block !important;
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-row-actions {
    position: absolute !important;
    left: 7px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    width: 22px !important;
    height: 22px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid #aebdd0 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #475569 !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: default !important;
    opacity: 0 !important;
    pointer-events: auto !important;
    z-index: 10 !important;
    transition: opacity 0.12s ease !important;
    box-sizing: border-box !important;
}

.admin-schedule-v2-body-row--occupied:hover .admin-schedule-v2-row-actions {
    opacity: 1 !important;
}


/* Schedule v2 final resize scope.
   Resize handles are limited to the student-name cell only:
   after time column + mode column, before progress column. */
.admin-schedule-v2-body-row--occupied {
    position: relative !important;
}

.admin-schedule-v2-resize-handle {
    left: calc(132px + 40px) !important;
    right: 132px !important;
    height: 14px !important;
    pointer-events: auto !important;
    z-index: 120 !important;
    opacity: 0 !important;
}

.admin-schedule-v2-resize-handle--top {
    top: 0 !important;
    transform: translateY(-50%) !important;
    cursor: ns-resize !important;
}

.admin-schedule-v2-resize-handle--bottom {
    bottom: 0 !important;
    transform: translateY(50%) !important;
    cursor: ns-resize !important;
}

.admin-schedule-v2-body-row--occupied:hover .admin-schedule-v2-resize-handle {
    opacity: 0.28 !important;
}

.admin-schedule-v2-body-row--resize-zone {
    cursor: default !important;
}

.admin-schedule-v2-body-row--resize-zone .admin-schedule-v2-row-student {
    cursor: ns-resize !important;
}

.admin-schedule-v2-row-mode,
.admin-schedule-v2-mode-button,
.admin-schedule-v2-row-time,
.admin-schedule-v2-row-progress {
    cursor: default !important;
}


/* Schedule v2 mode hover focus.
   The mode button grows visually on hover without changing the grid layout. */
.admin-schedule-v2-row-mode {
    overflow: visible !important;
}

.admin-schedule-v2-mode-button {
    transition:
        transform 0.12s ease,
        box-shadow 0.12s ease,
        background-color 0.12s ease !important;
    transform-origin: center center !important;
}

.admin-schedule-v2-row-mode:hover .admin-schedule-v2-mode-button,
.admin-schedule-v2-mode-button:hover {
    transform: scale(1.18) !important;
    z-index: 220 !important;
    background: #eef2ff !important;
    box-shadow:
        0 4px 10px rgba(15, 23, 42, 0.18),
        inset 0 0 0 1px rgba(79, 70, 229, 0.35) !important;
}


/* Schedule v2 real mode palette wrapper fix */
.admin-schedule-v2-row-mode-wrap {
    position: relative !important;
    overflow: visible !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    z-index: 240 !important;
}

.admin-schedule-v2-row-mode-wrap .admin-schedule-v2-mode-button {
    width: 100% !important;
    height: 100% !important;
    border: 0 !important;
    background: transparent !important;
}

.admin-schedule-v2-row-mode-wrap:hover .admin-schedule-v2-mode-palette,
.admin-schedule-v2-mode-palette:hover {
    opacity: 1 !important;
    pointer-events: auto !important;
    transform: translateY(-50%) translateX(2px) !important;
}


/* Schedule v2 floating mode palette.
   This palette is appended to body and never participates in the schedule grid layout. */
.admin-schedule-v2-mode-palette,
.admin-schedule-v2-row-mode-wrap {
    display: none !important;
}

.admin-schedule-v2-floating-mode-palette {
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    transform: translateY(-50%) translateX(0) !important;
    display: flex !important;
    align-items: center !important;
    gap: 4px !important;
    padding: 4px 6px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18) !important;
    opacity: 0 !important;
    pointer-events: auto !important;
    z-index: 9999 !important;
    transition: opacity 0.12s ease, transform 0.12s ease !important;
}

.admin-schedule-v2-floating-mode-palette--visible {
    opacity: 1 !important;
    pointer-events: auto !important;
    transform: translateY(-50%) translateX(0) !important;
}

.admin-schedule-v2-floating-mode-palette-item {
    width: 24px !important;
    height: 24px !important;
    padding: 0 !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 999px !important;
    background: #f8fafc !important;
    color: #334155 !important;
    font-size: 13px !important;
    line-height: 1 !important;
    font-weight: 800 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    cursor: default !important;
}

.admin-schedule-v2-floating-mode-palette-item:hover {
    background: #eef2ff !important;
    border-color: #a5b4fc !important;
    transform: scale(1.08) !important;
}

.admin-schedule-v2-floating-mode-palette-item--empty {
    color: #94a3b8 !important;
}


/* Schedule v2 CSS-only visual mode palette.
   Visual-only fallback: no JS, no layout change, no actions yet. */
.admin-schedule-v2-mode-button {
    position: relative !important;
    overflow: visible !important;
}

.admin-schedule-v2-mode-button::after {
    content: "▶  ⏸  ○  ×  ■" !important;
    position: absolute !important;
    left: 14px !important;
    top: 50% !important;
    transform: translateY(-50%) translateX(0) !important;
    padding: 5px 8px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #334155 !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18) !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    line-height: 1.2 !important;
    white-space: nowrap !important;
    opacity: 0 !important;
    pointer-events: auto !important;
    z-index: 9999 !important;
    transition: opacity 0.12s ease, transform 0.12s ease !important;
}

.admin-schedule-v2-mode-button:hover::after {
    opacity: 1 !important;
    transform: translateY(-50%) translateX(0) !important;
}


/* Schedule v2 CSS-only palette hover bridge.
   The visual palette overlaps the mode icon so hover does not collapse
   while the mouse moves from the mode icon to the palette. */
.admin-schedule-v2-mode-button:hover::after {
    left: 14px !important;
    opacity: 1 !important;
    pointer-events: auto !important;
}


/* Schedule v2 mode palette visual layout.
   The palette starts from the left edge of the mode cell.
   Student name shifts right only while the mode cell is focused. */
.admin-schedule-v2-mode-button {
    position: relative !important;
    overflow: visible !important;
    z-index: 320 !important;
}

.admin-schedule-v2-mode-button::after {
    content: "▶   ⏸   ○   ×   ■" !important;
    position: absolute !important;
    left: 0 !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    min-width: 106px !important;
    height: 28px !important;
    box-sizing: border-box !important;
    padding: 4px 8px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #334155 !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18) !important;
    font-family: inherit !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    line-height: 18px !important;
    letter-spacing: 0.01em !important;
    white-space: nowrap !important;
    text-align: center !important;
    opacity: 0 !important;
    pointer-events: auto !important;
    z-index: 9999 !important;
    transition: opacity 0.12s ease, transform 0.12s ease !important;
}

.admin-schedule-v2-mode-button:hover::after {
    opacity: 1 !important;
    transform: translateY(-50%) !important;
}

/* Keep the student name readable while the visual mode palette is open. */
.admin-schedule-v2-mode-button:hover + .admin-schedule-v2-row-student .admin-schedule-v2-row-student-name {
    transform: translateX(104px) !important;
}

.admin-schedule-v2-row-student-name {
    transition: transform 0.12s ease !important;
}


/* Schedule v2 real direct mode palette.
   Replaces CSS-only pseudo palette. It is a floating DOM panel and does not affect grid layout. */

/* Disable previous CSS-only pseudo palette. */
.admin-schedule-v2-mode-button::after {
    content: none !important;
    display: none !important;
}

/* Cancel previous too-large student shift from CSS-only prototype. */
.admin-schedule-v2-mode-button:hover + .admin-schedule-v2-row-student .admin-schedule-v2-row-student-name {
    transform: none !important;
}

/* Shift only the student name while the real floating palette is open. */
.admin-schedule-v2-body-row--mode-palette-open .admin-schedule-v2-row-student-name {
    transform: translateX(78px) !important;
}

.admin-schedule-v2-row-student-name {
    transition: transform 0.12s ease !important;
}

.admin-schedule-v2-direct-mode-palette {
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    transform: translateY(-50%) !important;
    display: flex !important;
    align-items: center !important;
    gap: 3px !important;
    height: 28px !important;
    padding: 3px 5px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18) !important;
    opacity: 0 !important;
    pointer-events: none !important;
    z-index: 10000 !important;
    transition: opacity 0.12s ease !important;
}

.admin-schedule-v2-direct-mode-palette--visible {
    opacity: 1 !important;
    pointer-events: auto !important;
}

.admin-schedule-v2-direct-mode-item {
    position: relative !important;
    width: 22px !important;
    height: 22px !important;
    min-width: 22px !important;
    min-height: 22px !important;
    padding: 0 !important;
    margin: 0 !important;
    border: 1px solid #e2e8f0 !important;
    border-radius: 999px !important;
    background: #f8fafc !important;
    color: #334155 !important;
    font-size: 13px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    font-family: inherit !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    box-sizing: border-box !important;
    cursor: default !important;
}

.admin-schedule-v2-direct-mode-item--active {
    background: #dbeafe !important;
    border-color: #818cf8 !important;
    color: #1e3a8a !important;
    box-shadow: inset 0 0 0 1px rgba(79, 70, 229, 0.25) !important;
}

.admin-schedule-v2-direct-mode-item:hover {
    background: #eef2ff !important;
    border-color: #6366f1 !important;
    color: #312e81 !important;
    animation: scheduleV2ModePulse 0.72s ease-in-out infinite alternate !important;
}

.admin-schedule-v2-direct-mode-item:hover::after {
    content: attr(data-label) !important;
    position: absolute !important;
    left: 50% !important;
    bottom: calc(100% + 7px) !important;
    transform: translateX(-50%) !important;
    padding: 4px 7px !important;
    border-radius: 7px !important;
    background: #0f172a !important;
    color: #ffffff !important;
    font-size: 11px !important;
    line-height: 1.2 !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
    z-index: 10001 !important;
    pointer-events: none !important;
}

.admin-schedule-v2-direct-mode-item:hover::before {
    content: "" !important;
    position: absolute !important;
    left: 50% !important;
    bottom: calc(100% + 2px) !important;
    transform: translateX(-50%) !important;
    border-width: 5px 5px 0 5px !important;
    border-style: solid !important;
    border-color: #0f172a transparent transparent transparent !important;
    z-index: 10001 !important;
    pointer-events: none !important;
}

@keyframes scheduleV2ModePulse {
    from {
        transform: scale(1);
        box-shadow: 0 0 0 rgba(99, 102, 241, 0);
    }
    to {
        transform: scale(1.12);
        box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.16);
    }
}


/* Schedule v2 stabilization after mode palette experiments.
   Temporary decision: all experimental mode palettes are disabled.
   Keep the existing click-cycle mode behavior until the direct mode selector is rebuilt cleanly. */

/* Disable all experimental palettes and pseudo-palettes. */
.admin-schedule-v2-mode-button::after,
.admin-schedule-v2-mode-palette,
.admin-schedule-v2-floating-mode-palette,
.admin-schedule-v2-direct-mode-palette,
.admin-schedule-v2-row-mode-wrap {
    display: none !important;
    content: none !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Remove experimental student-name shifts. */
.admin-schedule-v2-body-row--mode-palette-open .admin-schedule-v2-row-student-name,
.admin-schedule-v2-mode-button:hover + .admin-schedule-v2-row-student .admin-schedule-v2-row-student-name,
.admin-schedule-v2-row-student-name {
    transform: none !important;
}

/* Restore one stable row grid. */
.admin-schedule-v2-body-row {
    display: grid !important;
    grid-template-columns: 132px 40px minmax(0, 1fr) 132px !important;
    position: relative !important;
    align-items: stretch !important;
    overflow: hidden !important;
    box-sizing: border-box !important;
}

/* Draw vertical separators from the row itself, above cell backgrounds. */
.admin-schedule-v2-body-row::after {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    pointer-events: none !important;
    z-index: 30 !important;
    background-image:
        linear-gradient(to right, transparent 131px, #aebdd0 131px, #aebdd0 132px, transparent 132px),
        linear-gradient(to right, transparent 171px, #aebdd0 171px, #aebdd0 172px, transparent 172px),
        linear-gradient(to left, transparent 131px, #aebdd0 131px, #aebdd0 132px, transparent 132px) !important;
    background-repeat: no-repeat !important;
    background-size: 100% 100% !important;
}

/* Cells must not hide overlay separators. */
.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    position: relative !important;
    z-index: 1 !important;
    display: flex !important;
    align-items: center !important;
    align-self: stretch !important;
    box-sizing: border-box !important;
    min-width: 0 !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-top: 0 !important;
    border-bottom: 0 !important;
    border-radius: 0 !important;
    background-color: transparent !important;
}

.admin-schedule-v2-row-mode {
    justify-content: center !important;
    padding: 0 !important;
    overflow: visible !important;
    z-index: 40 !important;
}

.admin-schedule-v2-mode-button {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 100% !important;
    height: 100% !important;
    min-width: 0 !important;
    border: 0 !important;
    background: transparent !important;
    cursor: pointer !important;
    pointer-events: auto !important;
    position: relative !important;
    z-index: 50 !important;
}

.admin-schedule-v2-row-student {
    padding-left: 38px !important;
    padding-right: 12px !important;
    overflow: hidden !important;
}

.admin-schedule-v2-row-progress {
    display: flex !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
    overflow: hidden !important;
}

/* Keep the hover-only row actions button, but do not let it move the grid. */
.admin-schedule-v2-row-actions {
    position: absolute !important;
    left: 7px !important;
    top: 50% !important;
    transform: translateY(-50%) !important;
    z-index: 60 !important;
}


/* Schedule v2 separator restore after palette stabilization.
   Row overlay separators must be above mode/student/progress cells,
   but must not block clicks. */
.admin-schedule-v2-body-row::after {
    z-index: 500 !important;
    pointer-events: none !important;
}

.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    border-left: 0 !important;
    border-right: 0 !important;
}

.admin-schedule-v2-mode-button,
.admin-schedule-v2-row-actions {
    position: relative !important;
    z-index: 600 !important;
}

/* Keep the mode button transparent so the separator line is not hidden by a cell fill. */
.admin-schedule-v2-mode-button {
    background: transparent !important;
}


/* Schedule v2 stable row after removing row action button.
   Extra actions must live in the mode menu, not as a separate ⋯ button. */

/* Hide/remove old hover action button if any old markup remains in DOM. */
.admin-schedule-v2-row-actions {
    display: none !important;
    opacity: 0 !important;
    pointer-events: none !important;
}

/* Student name starts normally again: no space reserved for ⋯. */
.admin-schedule-v2-row-student {
    padding-left: 12px !important;
    padding-right: 12px !important;
    border-left: 0 !important;
}

.admin-schedule-v2-row-student-name {
    transform: none !important;
}

/* Vertical separators are drawn by the row overlay and must be visible above all cell content. */
.admin-schedule-v2-body-row {
    grid-template-columns: 132px 40px minmax(0, 1fr) 132px !important;
    position: relative !important;
    overflow: hidden !important;
}

.admin-schedule-v2-body-row::after {
    content: "" !important;
    position: absolute !important;
    inset: 0 !important;
    pointer-events: none !important;
    z-index: 2000 !important;
    background-image:
        linear-gradient(to right, transparent 131px, #aebdd0 131px, #aebdd0 132px, transparent 132px),
        linear-gradient(to right, transparent 171px, #aebdd0 171px, #aebdd0 172px, transparent 172px),
        linear-gradient(to left, transparent 131px, #aebdd0 131px, #aebdd0 132px, transparent 132px) !important;
    background-repeat: no-repeat !important;
    background-size: 100% 100% !important;
}

.admin-schedule-v2-row-time,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-student,
.admin-schedule-v2-row-progress {
    border-left: 0 !important;
    border-right: 0 !important;
    background-color: transparent !important;
}

/* Keep clickable elements below the separator overlay; overlay has pointer-events:none, so clicks still work. */
.admin-schedule-v2-mode-button {
    z-index: 100 !important;
    background: transparent !important;
}

.admin-schedule-v2-row-progress {
    display: flex !important;
    padding-left: 10px !important;
    padding-right: 10px !important;
    overflow: hidden !important;
}


/* Schedule v2 remove native focus ring from mode control.
   Prevents purple browser focus stripes around the mode cell. */
.admin-schedule-v2-mode-button,
.admin-schedule-v2-mode-button:hover,
.admin-schedule-v2-mode-button:focus,
.admin-schedule-v2-mode-button:focus-visible,
.admin-schedule-v2-mode-button:active,
.admin-schedule-v2-row-mode,
.admin-schedule-v2-row-mode:hover,
.admin-schedule-v2-row-mode:focus,
.admin-schedule-v2-row-mode:focus-visible,
.admin-schedule-v2-row-mode:active {
    outline: none !important;
    box-shadow: none !important;
    border-color: transparent !important;
}

/* Keep visual hover without adding side stripes. */
.admin-schedule-v2-row-mode:hover .admin-schedule-v2-mode-button,
.admin-schedule-v2-mode-button:hover {
    box-shadow: none !important;
    background: transparent !important;
}

/* Restore overlay separator priority after removing focus ring. */
.admin-schedule-v2-body-row::after {
    z-index: 2000 !important;
    pointer-events: none !important;
}


/* Schedule v2 remove old student-left mode stripes.
   Mode color must not be drawn as a vertical stripe between mode and student.
   Vertical separators are handled by the row overlay. */
.admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-regular_paused .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-stopped .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--occupied.admin-schedule-v2-body-row--mode-manual .admin-schedule-v2-row-student,
.admin-schedule-v2-body-row--empty .admin-schedule-v2-row-student {
    border-left: 0 !important;
    border-left-color: transparent !important;
}

/* Student text should start normally after the separator. */
.admin-schedule-v2-row-student {
    padding-left: 12px !important;
    padding-right: 12px !important;
}

/* Keep the stable separator overlay visible. */
.admin-schedule-v2-body-row::after {
    z-index: 2000 !important;
    pointer-events: none !important;
}


/* Schedule v2 final remove purple hover frame around mode cell.
   Old hover styles used inset box-shadow on the mode button, which looked like
   two purple vertical lines at the mode-cell edges. */
.admin-schedule-v2-body-row .admin-schedule-v2-row-mode:hover .admin-schedule-v2-mode-button,
.admin-schedule-v2-body-row .admin-schedule-v2-mode-button:hover,
.admin-schedule-v2-body-row .admin-schedule-v2-mode-button:focus,
.admin-schedule-v2-body-row .admin-schedule-v2-mode-button:focus-visible,
.admin-schedule-v2-body-row .admin-schedule-v2-mode-button:active {
    box-shadow: none !important;
    outline: none !important;
    border: 0 !important;
    border-color: transparent !important;
    background: transparent !important;
}

/* Keep only the neutral row overlay separators. */
.admin-schedule-v2-body-row::after {
    z-index: 2000 !important;
    pointer-events: none !important;
}


/* Schedule v2 inline editable progress/comment cell. */
.admin-schedule-v2-row-progress {
    cursor: text !important;
    pointer-events: auto !important;
    position: relative !important;
    z-index: 100 !important;
}

.admin-schedule-v2-row-progress:hover {
    background: rgba(255, 255, 255, 0.45) !important;
}

.admin-schedule-v2-row-progress-placeholder {
    color: #94a3b8 !important;
    font-weight: 700 !important;
}

.admin-schedule-v2-row-progress--editing {
    padding: 2px 6px !important;
    overflow: visible !important;
    z-index: 2500 !important;
}

.admin-schedule-v2-row-progress-input {
    width: 100% !important;
    height: 26px !important;
    box-sizing: border-box !important;
    border: 1px solid #94a3b8 !important;
    border-radius: 6px !important;
    padding: 0 8px !important;
    background: #ffffff !important;
    color: #111827 !important;
    font: inherit !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    outline: none !important;
}

.admin-schedule-v2-row-progress-input:focus {
    border-color: #64748b !important;
    box-shadow: 0 0 0 2px rgba(100, 116, 139, 0.16) !important;
}

.admin-schedule-v2-row-progress--saving {
    opacity: 0.65 !important;
}\n

/* Schedule v2 progress fallback: last solved task in theme_task format. */
.admin-schedule-v2-row-progress-last-solution {
    color: #64748b !important;
    font-weight: 800 !important;
}

.admin-schedule-v2-row-progress-placeholder {
    display: none !important;
}


/* Schedule v2 visual-only hover mode menu. */
.admin-schedule-v2-visual-mode-menu {
    position: fixed !important;
    display: none !important;
    align-items: center !important;
    gap: 4px !important;
    height: 32px !important;
    padding: 3px 5px !important;
    border: 1px solid #94a3b8 !important;
    border-radius: 8px !important;
    background: #ffffff !important;
    box-shadow: 0 10px 28px rgba(15, 23, 42, 0.22) !important;
    z-index: 9000 !important;
    pointer-events: auto !important;
}

.admin-schedule-v2-visual-mode-menu--visible {
    display: inline-flex !important;
}

.admin-schedule-v2-visual-mode-menu-item {
    width: 26px !important;
    height: 26px !important;
    min-width: 26px !important;
    max-width: 26px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    border: 1px solid transparent !important;
    border-radius: 6px !important;
    background: transparent !important;
    color: #111827 !important;
    font-size: 15px !important;
    line-height: 1 !important;
    font-weight: 900 !important;
    cursor: default !important;
    outline: none !important;
    box-shadow: none !important;
    padding: 0 !important;
}

.admin-schedule-v2-visual-mode-menu-item:hover {
    background: #eef2ff !important;
    border-color: #94a3b8 !important;
    transform: scale(1.08) !important;
}

.admin-schedule-v2-visual-mode-menu-item--active {
    background: #e0e7ff !important;
    border-color: #64748b !important;
}

.admin-schedule-v2-visual-mode-menu-item--replacement {
    width: 34px !important;
    min-width: 34px !important;
    max-width: 34px !important;
    font-size: 13px !important;
}

/* Keep old experimental palettes disabled. */
.admin-schedule-v2-mode-button::after,
.admin-schedule-v2-mode-button::before,
.admin-schedule-v2-mode-palette,
.admin-schedule-v2-floating-mode-palette,
.admin-schedule-v2-direct-mode-palette {
    display: none !important;
    content: none !important;
}


/* Schedule v2 visual mode menu tooltips and empty icon. */
.admin-schedule-v2-visual-mode-menu-item {
    position: relative !important;
}

.admin-schedule-v2-visual-mode-menu-item::after {
    content: attr(data-tooltip) !important;
    position: absolute !important;
    left: 50% !important;
    bottom: calc(100% + 8px) !important;
    transform: translateX(-50%) !important;
    display: none !important;
    width: max-content !important;
    max-width: 260px !important;
    padding: 5px 8px !important;
    border: 1px solid #94a3b8 !important;
    border-radius: 7px !important;
    background: #111827 !important;
    color: #ffffff !important;
    font-size: 12px !important;
    line-height: 1.15 !important;
    font-weight: 700 !important;
    white-space: nowrap !important;
    box-shadow: 0 10px 24px rgba(15, 23, 42, 0.22) !important;
    z-index: 9100 !important;
    pointer-events: none !important;
}

.admin-schedule-v2-visual-mode-menu-item:hover::after {
    display: block !important;
}

.admin-schedule-v2-visual-mode-menu-item--empty {
    font-size: 17px !important;
}

.admin-schedule-v2-visual-mode-menu-item--replacement {
    width: 38px !important;
    min-width: 38px !important;
    max-width: 38px !important;
}


/* Schedule v2 visual-only Undo/Redo toolbar.
   Placed between top tab switcher and current-week separator. */
.admin-schedule-v2-undo-redo-toolbar {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    min-height: 44px !important;
    margin: 10px 0 8px 0 !important;
    padding: 7px 10px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 12px !important;
    background: #f8fafc !important;
}

.admin-schedule-v2-undo-redo-buttons {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
}

.admin-schedule-v2-history-button {
    height: 30px !important;
    min-width: 88px !important;
    padding: 0 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 9px !important;
    background: #ffffff !important;
    color: #334155 !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    cursor: default !important;
    box-shadow: none !important;
}

.admin-schedule-v2-history-button:disabled {
    opacity: 0.42 !important;
    color: #64748b !important;
    background: #f1f5f9 !important;
}

.admin-schedule-v2-history-button:not(:disabled):hover {
    background: #eef2ff !important;
    border-color: #94a3b8 !important;
}

.admin-schedule-v2-undo-redo-toolbar + .admin-schedule-v2-week-separator {
    margin-top: 8px !important;
}

/* Slightly taller top switcher area where available.
   This is intentionally soft and only affects existing tab containers if their class exists. */
.admin-tabs,
.admin-tab-buttons,
.admin-panel-tabs,
.admin-dashboard-tabs,
.tab-buttons {
    min-height: 58px !important;
    align-items: center !important;
}


/* Schedule v2 visual-only Undo/Redo toolbar forced placement. */
.admin-schedule-v2-undo-redo-toolbar {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    min-height: 42px !important;
    margin: 10px 0 10px 0 !important;
    padding: 7px 10px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 12px !important;
    background: #f8fafc !important;
}

.admin-schedule-v2-history-button {
    height: 30px !important;
    min-width: 88px !important;
    padding: 0 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 9px !important;
    background: #f1f5f9 !important;
    color: #64748b !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    opacity: 0.55 !important;
    cursor: default !important;
    box-shadow: none !important;
}

.admin-schedule-v2-undo-redo-toolbar + .admin-schedule-v2-week-separator {
    margin-top: 0 !important;
}


/* Schedule v2 Undo/Redo toolbar final visible placement. */
.admin-schedule-v2-undo-redo-toolbar {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    width: 100% !important;
    min-height: 42px !important;
    margin: 14px 0 10px 0 !important;
    padding: 7px 10px !important;
    box-sizing: border-box !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 12px !important;
    background: #f8fafc !important;
}

.admin-schedule-v2-history-button {
    height: 30px !important;
    min-width: 88px !important;
    padding: 0 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 9px !important;
    background: #f1f5f9 !important;
    color: #64748b !important;
    font-size: 13px !important;
    font-weight: 900 !important;
    opacity: 0.58 !important;
    cursor: default !important;
}


/* Schedule v2 Undo/Redo toolbar: current-week placement, light control style. */
.admin-schedule-v2-undo-redo-toolbar {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    width: auto !important;
    min-height: 34px !important;
    margin: 8px 0 8px 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
}

.admin-schedule-v2-undo-redo-buttons {
    display: inline-flex !important;
    align-items: center !important;
    gap: 8px !important;
}

.admin-schedule-v2-history-button {
    height: 28px !important;
    min-width: 82px !important;
    padding: 0 11px !important;
    border: 1px solid #d8b4fe !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #6b21a8 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    opacity: 0.72 !important;
    cursor: default !important;
    box-shadow: 0 4px 12px rgba(109, 40, 217, 0.10) !important;
}

.admin-schedule-v2-history-button:disabled {
    opacity: 0.72 !important;
    color: #7c3aed !important;
    background: #ffffff !important;
}

.admin-schedule-v2-history-button:not(:disabled) {
    cursor: pointer !important;
    opacity: 1 !important;
}

.admin-schedule-v2-history-button:not(:disabled):hover {
    background: #f5f3ff !important;
    border-color: #8b5cf6 !important;
}

.admin-schedule-v2-pause-visibility-controls {
    display: inline-flex !important;
    align-items: center !important;
    margin-left: 4px !important;
    padding-left: 12px !important;
    border-left: 1px solid #e2e8f0 !important;
}

.admin-schedule-v2-pause-visibility-button {
    height: 28px !important;
    min-width: 112px !important;
    padding: 0 12px !important;
    border: 1px solid #cbd5e1 !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #475569 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    cursor: pointer !important;
    box-shadow: 0 4px 12px rgba(71, 85, 105, 0.08) !important;
}

.admin-schedule-v2-pause-visibility-button:hover {
    background: #f8fafc !important;
    border-color: #94a3b8 !important;
}

.admin-schedule-v2-pause-visibility-button--active {
    background: #f5f3ff !important;
    border-color: #8b5cf6 !important;
    color: #6d28d9 !important;
}

.admin-schedule-v2-pause-visibility-button:focus-visible {
    outline: 3px solid rgba(124, 58, 237, 0.28) !important;
    outline-offset: 2px !important;
}

.admin-schedule-v2-undo-redo-toolbar + .admin-schedule-v2-week-separator {
    margin-top: 6px !important;
}


/* Undo/Redo belongs to the top tab area, not to the moving schedule list. */
.admin-schedule-v2-history-toolbar-top {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 8px;
    margin-top: 10px;
    padding-left: 4px;
    min-height: 30px;
}

.admin-schedule-v2-history-toolbar-top .admin-schedule-v2-history-button {
    height: 28px !important;
    min-width: 84px !important;
    padding: 0 12px !important;
    border: 1px solid #c4b5fd !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    color: #7c3aed !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    opacity: 0.78 !important;
    cursor: default !important;
    box-shadow: 0 5px 14px rgba(109, 40, 217, 0.10) !important;
}

#adminScheduleV2List > .admin-schedule-v2-undo-redo-toolbar {
    display: none !important;
}

/* Student picker lesson mode switch. */
.admin-schedule-v2-picker-mode-switch {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    width: fit-content;
    max-width: 100%;
    margin: 0 0 10px 0;
    padding: 4px;
    border: 1px solid #ddd6fe;
    border-radius: 999px;
    background: #ffffff;
    box-shadow: 0 4px 14px rgba(109, 40, 217, 0.08);
}

.admin-schedule-v2-picker-mode-button {
    height: 30px;
    padding: 0 14px;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: #6d28d9;
    font-size: 13px;
    font-weight: 900;
    cursor: pointer;
}

.admin-schedule-v2-picker-mode-button:hover {
    background: #f5f3ff;
}

.admin-schedule-v2-picker-mode-button--active {
    background: #7c3aed;
    color: #ffffff;
    box-shadow: 0 5px 12px rgba(124, 58, 237, 0.24);
}


/* Picker mode switch: icon-based, aligned with Schedule v2 mode language. */
.admin-schedule-v2-picker-mode-switch {
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    width: fit-content !important;
    max-width: 100% !important;
    margin: 0 0 10px 0 !important;
    padding: 4px !important;
    border: 1px solid #ddd6fe !important;
    border-radius: 999px !important;
    background: #ffffff !important;
    box-shadow: 0 5px 16px rgba(109, 40, 217, 0.10) !important;
}

.admin-schedule-v2-picker-mode-button {
    position: relative !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    width: 34px !important;
    min-width: 34px !important;
    height: 30px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 999px !important;
    background: transparent !important;
    color: #6d28d9 !important;
    font-size: 15px !important;
    font-weight: 900 !important;
    line-height: 1 !important;
    cursor: pointer !important;
    transition: transform 0.14s ease, background 0.14s ease, color 0.14s ease, box-shadow 0.14s ease !important;
}

.admin-schedule-v2-picker-mode-button:hover,
.admin-schedule-v2-picker-mode-button:focus-visible {
    background: #f5f3ff !important;
    transform: translateY(-1px) scale(1.05) !important;
    outline: none !important;
}

.admin-schedule-v2-picker-mode-button--active {
    background: #7c3aed !important;
    color: #ffffff !important;
    box-shadow: 0 6px 14px rgba(124, 58, 237, 0.28) !important;
}

.admin-schedule-v2-picker-mode-button::after {
    content: attr(data-tooltip);
    position: absolute;
    left: 50%;
    top: calc(100% + 8px);
    transform: translateX(-50%) translateY(-2px);
    z-index: 10030;
    min-width: max-content;
    max-width: 220px;
    padding: 6px 9px;
    border-radius: 8px;
    background: #111827;
    color: #ffffff;
    font-size: 12px;
    font-weight: 800;
    line-height: 1.15;
    opacity: 0;
    pointer-events: none;
    white-space: nowrap;
    box-shadow: 0 8px 20px rgba(15, 23, 42, 0.18);
    transition: opacity 0.14s ease, transform 0.14s ease;
}

.admin-schedule-v2-picker-mode-button:hover::after,
.admin-schedule-v2-picker-mode-button:focus-visible::after {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
}


/* Picker tooltip overflow/clipping fix */
.admin-schedule-v2-picker-mode-switch {
    position: relative !important;
    overflow: visible !important;
}

.admin-schedule-v2-picker-mode-button {
    position: relative !important;
    overflow: visible !important;
}

.admin-schedule-v2-picker-mode-button::after {
    left: 0 !important;
    right: auto !important;
    top: calc(100% + 8px) !important;
    transform: translateY(-2px) !important;
    white-space: nowrap !important;
    max-width: none !important;
    min-width: max-content !important;
}

.admin-schedule-v2-picker-mode-button:hover::after,
.admin-schedule-v2-picker-mode-button:focus-visible::after {
    transform: translateY(0) !important;
}

.admin-schedule-v2-picker-mode-button:first-child::after {
    left: 0 !important;
    right: auto !important;
}

.admin-schedule-v2-picker-mode-button:last-child::after {
    left: auto !important;
    right: 0 !important;
}


/* Picker mode hint: no black floating tooltip, no clipping. */
.admin-schedule-v2-picker-mode-row {
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    max-width: 100% !important;
    margin: 0 0 10px 0 !important;
    overflow: visible !important;
}

.admin-schedule-v2-picker-mode-row .admin-schedule-v2-picker-mode-switch {
    flex: 0 0 auto !important;
    margin: 0 !important;
}

.admin-schedule-v2-picker-mode-hint {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    max-width: 100% !important;
    padding: 5px 10px !important;
    border: 1px solid #ddd6fe !important;
    border-radius: 999px !important;
    background: #f8f5ff !important;
    color: #5b21b6 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* Disable old black pseudo-tooltip completely. */
.admin-schedule-v2-picker-mode-button::after,
.admin-schedule-v2-picker-mode-button:hover::after,
.admin-schedule-v2-picker-mode-button:focus-visible::after {
    content: none !important;
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
}


/* Picker mode hint final style: plain text, not a pill/button. */
.admin-schedule-v2-picker-mode-row {
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 10px !important;
    max-width: 100% !important;
    margin: 0 0 12px 0 !important;
    overflow: visible !important;
}

.admin-schedule-v2-picker-mode-row .admin-schedule-v2-picker-mode-switch {
    flex: 0 0 auto !important;
    margin: 0 !important;
}

.admin-schedule-v2-picker-mode-hint {
    flex: 0 1 auto !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: 260px !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    color: #5b21b6 !important;
    font-size: 12px !important;
    font-weight: 900 !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* Fully disable floating picker mode tooltips. */
.admin-schedule-v2-picker-mode-button::after,
.admin-schedule-v2-picker-mode-button:hover::after,
.admin-schedule-v2-picker-mode-button:focus-visible::after {
    content: none !important;
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
}


/* Компактное отображение замены в паузу. */
.admin-schedule-v2-row-replacement-original {
    margin-top: 2px !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    color: #6b7280 !important;
    opacity: 0.82 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-row-student {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    min-width: 0 !important;
}

.admin-schedule-v2-row-student-name {
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* Компактная подпись ученика, который стоит на паузе под заменой. */
.admin-schedule-v2-row-replacement-original {
    margin-top: 2px !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    line-height: 1.15 !important;
    color: #6b7280 !important;
    opacity: 0.82 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

.admin-schedule-v2-row-student {
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    min-width: 0 !important;
}

.admin-schedule-v2-row-student-name {
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
}

/* Schedule v2 final student-cell vertical alignment.
   The student cell may contain just a name or a name plus a replacement hint.
   Keep that content group centered inside the dynamic occupied-row height. */
.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student {
    display: flex !important;
    flex-direction: column !important;
    align-items: stretch !important;
    justify-content: center !important;
    gap: 2px !important;
    height: var(--schedule-v2-occupied-row-height, 36px) !important;
    min-height: var(--schedule-v2-occupied-row-height, 36px) !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
    line-height: 1.15 !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-student-name {
    display: block !important;
    flex: 0 1 auto !important;
    max-width: 100% !important;
    min-width: 0 !important;
    line-height: 1.15 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

.admin-schedule-v2-body-row--occupied .admin-schedule-v2-row-replacement-original {
    display: block !important;
    flex: 0 0 auto !important;
    max-width: 100% !important;
    margin-top: 0 !important;
    line-height: 1.1 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}

/* Schedule V2 student analytics modal skeleton.
   The backdrop is created only while the modal is open and removed on close. */
.admin-schedule-v2-row-student[data-student-id] .admin-schedule-v2-row-student-name {
    cursor: pointer !important;
}

.admin-schedule-v2-row-student[data-student-id] .admin-schedule-v2-row-student-name:hover {
    color: #1d4ed8 !important;
}

.admin-schedule-v2-student-analytics-backdrop {
    position: fixed;
    inset: 0;
    z-index: 12000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 8px;
    background: rgba(15, 23, 42, 0.36);
}

.admin-schedule-v2-student-analytics-modal {
    position: relative;
    width: min(424px, calc(100vw - 16px));
    height: min(940px, calc(100vh - 16px));
    max-height: calc(100vh - 16px);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid #dbe3ef;
    border-radius: 14px;
    background: #ffffff;
    box-shadow: 0 24px 70px rgba(15, 23, 42, 0.24);
}

.admin-schedule-v2-student-analytics-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 18px;
    padding: 10px 16px 9px;
    border-bottom: 1px solid #e5edf7;
}

.admin-schedule-v2-student-analytics-actions {
    position: absolute;
    top: 12px;
    right: 58px;
    z-index: 2;
    padding: 0;
    border: 0;
    background: transparent;
}

.admin-schedule-v2-student-analytics-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    min-height: 0;
    border: 1px solid #fecaca;
    border-radius: 8px;
    background: #fff1f2;
    color: #b91c1c;
    cursor: pointer;
}

.admin-schedule-v2-student-analytics-clear svg {
    width: 16px;
    height: 16px;
    fill: currentColor;
}

.admin-schedule-v2-student-analytics-clear:hover,
.admin-schedule-v2-student-analytics-clear:focus-visible {
    border-color: #f87171;
    background: #ffe4e6;
}

.admin-schedule-v2-student-analytics-clear:disabled {
    cursor: wait;
    opacity: 0.7;
}

.admin-schedule-v2-student-clear-confirm {
    margin: 8px 16px;
    padding: 10px;
    border: 1px solid #fecaca;
    border-radius: 10px;
    background: #fff7f7;
}

.admin-schedule-v2-student-clear-confirm-text {
    color: #7f1d1d;
    font-size: 12px;
    line-height: 1.35;
    font-weight: 800;
}

.admin-schedule-v2-student-clear-confirm-actions {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
    margin-top: 10px;
}

.admin-schedule-v2-student-clear-confirm-actions button {
    min-height: 30px;
    border-radius: 8px;
    font-size: 12px;
    font-weight: 900;
    cursor: pointer;
}

.admin-schedule-v2-student-clear-cancel {
    border: 1px solid #cbd5e1;
    background: #ffffff;
    color: #334155;
}

.admin-schedule-v2-student-clear-submit {
    border: 1px solid #f87171;
    background: #fee2e2;
    color: #991b1b;
}

.admin-schedule-v2-student-analytics-title {
    font-size: 20px;
    font-weight: 900;
    line-height: 1.2;
    color: #172033;
}

.admin-schedule-v2-student-analytics-info {
    display: grid;
    grid-template-rows: repeat(3, 16px);
    height: 48px;
    margin-top: 6px;
    color: #475569;
    font-size: 11px;
    line-height: 16px;
    font-weight: 700;
}

.admin-schedule-v2-student-analytics-info-line {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.admin-schedule-v2-student-analytics-close {
    flex: 0 0 auto;
    width: 34px;
    height: 34px;
    border: 1px solid #cbd7e8;
    border-radius: 8px;
    background: #f8fbff;
    color: #334155;
    font-size: 16px;
    font-weight: 900;
    cursor: pointer;
}

.admin-schedule-v2-student-analytics-close:hover,
.admin-schedule-v2-student-analytics-close:focus-visible {
    border-color: #93b4ff;
    background: #eef4ff;
    color: #1d4ed8;
}

.admin-schedule-v2-student-analytics-timeline {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0 10px 10px;
    background: #f8fbff;
}

.admin-schedule-v2-student-timeline-weekdays {
    position: sticky;
    top: 0;
    flex: 0 0 auto;
    z-index: 2;
    display: grid;
    grid-template-columns: 52px 70px repeat(7, 30px);
    gap: 8px;
    padding: 3px 0 2px;
    background: #f8fbff;
    border-bottom: 1px solid #dbe7f5;
}

.admin-schedule-v2-student-timeline-body {
    flex: 1 1 auto;
    min-height: 0;
    position: relative;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 2px;
}

.admin-schedule-v2-student-timeline-weekdays div {
    width: 30px;
    min-width: 30px;
    border-radius: 6px;
    background: #eaf1fb;
    color: #475569;
    font-size: 10px;
    font-weight: 800;
    text-align: center;
    line-height: 16px;
}

.admin-schedule-v2-student-timeline-weekdays .admin-schedule-v2-student-timeline-weekday-spacer {
    width: auto;
    min-width: 0;
    background: transparent;
}

.admin-schedule-v2-student-timeline-year {
    display: grid;
    grid-template-columns: 52px 1fr;
    column-gap: 8px;
    padding-top: 2px;
    position: relative;
}

.admin-schedule-v2-student-timeline-year-title {
    grid-column: 1;
    align-self: start;
    justify-self: start;
    position: sticky;
    top: 58%;
    z-index: 3;
    margin: 0;
    padding: 4px 0 0;
    writing-mode: vertical-rl;
    transform: rotate(180deg);
    transform-origin: center;
    color: #172033;
    font-size: 18px;
    line-height: 1;
    font-weight: 900;
    letter-spacing: 0;
    background: rgba(248, 251, 255, 0.94);
}

.admin-schedule-v2-student-timeline-year-months {
    grid-column: 2;
    display: grid;
    gap: 8px;
}

.admin-schedule-v2-student-timeline-month {
    display: grid;
    grid-template-columns: 70px 1fr;
    column-gap: 8px;
    margin-bottom: 0;
}

.admin-schedule-v2-student-timeline-month-title {
    align-self: stretch;
    margin: 0;
    padding-top: 2px;
    color: #334155;
    font-size: 11px;
    line-height: 1;
    font-weight: 900;
}

.admin-schedule-v2-student-timeline-weeks {
    display: grid;
    gap: 8px;
}

.admin-schedule-v2-student-timeline-week {
    display: grid;
    grid-template-columns: repeat(7, 30px);
    gap: 8px;
}

.admin-schedule-v2-student-timeline-day {
    box-sizing: border-box;
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 30px;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: #64748b;
    font-size: 11px;
    font-weight: 800;
    line-height: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: visible;
    user-select: none;
}

.admin-schedule-v2-student-timeline-day[data-timeline-real-day="1"],
.admin-schedule-v2-student-timeline-day[data-timeline-real-day="1"] * {
    cursor: pointer;
}

.admin-schedule-v2-student-timeline-day::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
    box-sizing: border-box;
    border: 1px solid #dbe7f5;
    border-radius: 6px;
    background: #ffffff;
    pointer-events: none;
}

.admin-schedule-v2-student-timeline-date-number {
    position: absolute;
    top: 2px;
    left: 3px;
    z-index: 3;
    display: block;
    color: #64748b;
    font-size: 8px;
    line-height: 1;
    font-weight: 800;
    pointer-events: none;
}

.admin-schedule-v2-student-timeline-day--muted {
    background: transparent;
}

.admin-schedule-v2-student-timeline-day--muted::before {
    border-color: #e3ebf5;
    background: #eef3f9;
}

.admin-schedule-v2-student-timeline-day--has-events {
    background: transparent;
}

.admin-schedule-v2-student-timeline-day--has-events::before {
    border-color: #bfd4f5;
}

.admin-schedule-v2-student-timeline-day--regular-occurrence::before {
    border-color: #a9c6f7;
    background: rgba(37, 99, 235, 0.2);
}

.admin-schedule-v2-student-timeline-day--pause-occurrence::before {
    border-color: #93b7f3;
    background: rgba(37, 99, 235, 0.24);
}

.admin-schedule-v2-student-timeline-day--manual-occurrence::before {
    border-color: #86efac;
    background: #ecfdf5;
}

.admin-schedule-v2-student-timeline-day--drag-source-hidden::before {
    border-color: #dbe7f5;
    background: #ffffff;
}

.admin-schedule-v2-student-timeline-day--drag-source-hidden.admin-schedule-v2-student-timeline-day--muted::before {
    border-color: #e3ebf5;
    background: #eef3f9;
}

.admin-schedule-v2-student-timeline-day--drag-source-hidden .admin-schedule-v2-student-timeline-regular[data-rule-id],
.admin-schedule-v2-student-timeline-day--drag-source-hidden .admin-schedule-v2-student-timeline-symbol {
    opacity: 0;
}

.admin-schedule-v2-student-timeline-day--boundary-preview-occurrence::before {
    border-color: #7aa9f4;
    background: rgba(37, 99, 235, 0.22);
}

.admin-schedule-v2-student-timeline-boundary-drag-overlay {
    position: absolute;
    z-index: 5;
    box-sizing: border-box;
    border: 2px solid #2563eb;
    border-radius: 5px;
    background: rgba(37, 99, 235, 0.14);
    box-shadow: 0 0 0 1px rgba(37, 99, 235, 0.08) inset;
    pointer-events: none;
    will-change: top, height;
}

.admin-schedule-v2-student-timeline-boundary-drag-edge {
    position: absolute;
    right: -2px;
    left: -2px;
    height: 3px;
    border-radius: 999px;
    background: #1d4ed8;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.8);
}

.admin-schedule-v2-student-timeline-boundary-drag-overlay--start .admin-schedule-v2-student-timeline-boundary-drag-edge {
    top: -1px;
}

.admin-schedule-v2-student-timeline-boundary-drag-overlay--end .admin-schedule-v2-student-timeline-boundary-drag-edge {
    bottom: -1px;
}

.admin-schedule-v2-student-timeline-regular {
    position: absolute;
    top: 0;
    right: -2px;
    bottom: 0;
    left: -2px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-left: 2px solid #2563eb;
    border-right: 2px solid #2563eb;
    background: rgba(37, 99, 235, 0.08);
    color: #1d4ed8;
    font-size: 12px;
    font-weight: 900;
    z-index: 0;
    pointer-events: none;
}

.admin-schedule-v2-student-timeline-regular--preview {
    z-index: 0;
    border-color: #1d4ed8;
    background: rgba(37, 99, 235, 0.11);
    pointer-events: none;
}

.admin-schedule-v2-student-timeline-regular--pixel-preview-start {
    top: var(--timeline-boundary-drag-offset, 0);
}

.admin-schedule-v2-student-timeline-regular--pixel-preview-end {
    bottom: var(--timeline-boundary-drag-offset, 0);
}

.admin-schedule-v2-student-timeline-series-boundary-handle {
    position: absolute;
    right: -2px;
    left: -2px;
    z-index: 6;
    height: 8px;
    cursor: ns-resize !important;
    pointer-events: auto;
}

.admin-schedule-v2-student-timeline-series-boundary-handle--start {
    top: -4px;
}

.admin-schedule-v2-student-timeline-series-boundary-handle--end {
    bottom: -4px;
}

.admin-schedule-v2-student-timeline-series-boundary-handle::after {
    content: "";
    position: absolute;
    right: 5px;
    left: 5px;
    top: 3px;
    height: 2px;
    border-radius: 999px;
    background: rgba(29, 78, 216, 0.38);
}

.admin-schedule-v2-student-timeline-day--boundary-preview::after {
    content: "";
    position: absolute;
    inset: -4px;
    z-index: 7;
    border: 2px dashed #1d4ed8;
    border-radius: 8px;
    pointer-events: none;
}

.admin-schedule-v2-student-timeline-regular--start,
.admin-schedule-v2-student-timeline-regular--single {
    border-top: 2px solid #2563eb;
    border-top-left-radius: 5px;
    border-top-right-radius: 5px;
}

.admin-schedule-v2-student-timeline-regular--start {
    bottom: -10px;
}

.admin-schedule-v2-student-timeline-regular--end,
.admin-schedule-v2-student-timeline-regular--single {
    border-bottom: 2px solid #2563eb;
    border-bottom-left-radius: 5px;
    border-bottom-right-radius: 5px;
}

.admin-schedule-v2-student-timeline-regular--end {
    top: -10px;
}

.admin-schedule-v2-student-timeline-regular--middle {
    top: -10px;
    bottom: -10px;
}

.admin-schedule-v2-student-timeline-regular--pause {
    background: rgba(37, 99, 235, 0.08);
}

.admin-schedule-v2-student-timeline-regular--track-only {
    background: transparent;
}

.admin-schedule-v2-student-timeline-day--muted .admin-schedule-v2-student-timeline-regular--track-only {
    background: rgba(37, 99, 235, 0.08);
}

.admin-schedule-v2-student-timeline-symbol {
    position: relative;
    z-index: 5;
    padding: 0;
    line-height: 1;
}

.admin-schedule-v2-student-timeline-replacement-badge {
    position: relative;
    z-index: 5;
    display: inline-flex;
    align-items: center;
    align-self: center;
    margin-left: 1px;
    color: #1d4ed8;
    font-size: 7px;
    font-weight: 900;
    line-height: 1;
    white-space: nowrap;
    pointer-events: none;
}

.admin-schedule-v2-student-timeline-manual {
    position: absolute;
    inset: 1px;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: auto;
    height: auto;
    border-radius: 5px;
    background: #ecfdf5;
    color: #064e3b;
    font-size: 17px;
    line-height: 1;
    font-weight: 900;
    border: 1px solid #86efac;
}

.admin-schedule-v2-student-timeline-manual--multiple {
    background: #ecfdf5;
}

.admin-schedule-v2-student-timeline-manual--multiple span {
    position: absolute;
    width: 12px;
    height: 12px;
    padding: 0;
    border: 2px solid #334155;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.86);
}

.admin-schedule-v2-student-timeline-manual--multiple span:nth-child(1) {
    left: 1px;
    top: 3px;
}

.admin-schedule-v2-student-timeline-manual--multiple span:nth-child(2) {
    left: 7px;
    top: 1px;
}

.admin-schedule-v2-student-timeline-manual--multiple span:nth-child(3) {
    left: 10px;
    top: 6px;
}

.admin-schedule-v2-student-timeline-state {
    padding: 18px 4px;
    color: #64748b;
    font-size: 12px;
    font-weight: 800;
}

.admin-schedule-v2-student-timeline-state--error {
    color: #b91c1c;
}

/* Schedule v2 P0 request status */
#adminScheduleV2Result:empty {
    display: none !important;
    height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
}

#adminScheduleV2Result:not(:empty) {
    display: block !important;
    height: auto !important;
    min-height: 0 !important;
    margin: 0 0 10px !important;
    padding: 9px 12px !important;
    border: 1px solid #bfdbfe !important;
    border-radius: 8px !important;
    background: #eff6ff !important;
    color: #1e3a8a !important;
    font-weight: 800 !important;
}

#adminScheduleV2Result.admin-schedule-v2-status--error {
    border-color: #fecaca !important;
    background: #fef2f2 !important;
    color: #991b1b !important;
}

#adminScheduleV2List[aria-busy="true"] {
    cursor: progress;
}

/* Preserve the desktop Schedule geometry while keeping narrow content reachable. */
.admin-schedule-v2-panel {
    container-type: inline-size;
    inline-size: 100%;
    min-inline-size: 0;
    max-inline-size: 100%;
}

@container (max-width: 759px) {
    .admin-schedule-v2-list {
        inline-size: 100%;
        min-inline-size: 0;
        max-inline-size: 100%;
        overflow-x: auto !important;
        overflow-y: auto !important;
        scrollbar-width: auto !important;
        -ms-overflow-style: auto !important;
    }

    .admin-schedule-v2-list::-webkit-scrollbar {
        display: block !important;
        width: auto !important;
        height: auto !important;
    }

    .admin-schedule-v2-day-block {
        min-width: 760px;
    }
}
