@import url('/CSS/common.css');

/* ---- STATUS BADGES ---- */

.badge {
    display: inline-block;
    font-family: "Akshar", sans-serif;
    font-size: 12px;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 2px 8px;
    border-radius: 10px;
}

.badge-draft      { background: #e3e3e3; color: #555; }
.badge-submitted  { background: var(--off_white); color: #444; }
.badge-reviewed   { background: var(--green_light); color: var(--green); }
.badge-pending    { background: var(--orange_light); color: var(--orange); }
.badge-contested  { background: var(--gold_light); color: var(--gold); }
.badge-overdue    { background: #fde8e8; color: #c0392b; }
.badge-role             { background: #ede9f7; color: var(--dark_purple); }
.badge-awaiting-response { background: #fff3e0; color: #b96a00; }
.badge-reply-received    { background: #e3f2fd; color: #1565c0; }
.badge-unread-comment    { background: #e8f5e9; color: #2e7d32; }

/* Flag button — active state when teacher has flagged entry awaiting student reply */
.btn-flagged {
    background: var(--orange) !important;
    border-color: var(--orange) !important;
    color: white !important;
}

/* Flag button — reply-received state: student replied, waiting for teacher to acknowledge */
.btn-reply-received {
    background: #1565c0 !important;
    border-color: #1565c0 !important;
    color: white !important;
}

/* Trait thread entry edit button */
.thread_edit_btn {
    font-family: "Abel", sans-serif;
    font-size: 11px;
    background: none;
    border: none;
    color: #aaa;
    cursor: pointer;
    padding: 0 0 0 6px;
    vertical-align: baseline;
}
.thread_edit_btn:hover { color: var(--purple_main); }
.thread_edit_form { margin-top: 6px; }
.thread_edit_form textarea {
    width: 100%;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 6px 8px;
    resize: vertical;
    box-sizing: border-box;
}
.thread_edit_actions { margin-top: 4px; display: flex; gap: 6px; }

/* Read receipt status line in teacher review panel */
#review_read_status {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #aaa;
    font-style: italic;
    margin: -14px 0 20px;
    min-height: 18px;
}
#review_read_status.unread {
    color: var(--orange);
}

/* Unread dot in queue entry list */
.queue_unread_dot {
    font-size: 9px;
    color: var(--orange);
    vertical-align: middle;
    margin-right: 2px;
}

/* Instructor name chips in the section header — bordered pill, pip-like feel */
.instr_pip {
    display: inline-block;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #555;
    border: 1px solid #ccc;
    border-radius: 5px;
    padding: 1px 8px;
    line-height: 1.6;
    vertical-align: middle;
}

/* ---- RATING PILLS ---- */

.rating_group {
    display: flex;
    gap: 6px;
    align-items: center;
}

.rating_group input[type="radio"] {
    display: none;
}

.rating_group label span {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 2px solid #ccc;
    border-radius: 6px;
    cursor: pointer;
    font-family: "Akshar", sans-serif;
    font-size: 18px;
    color: #555;
    transition: border-color .12s, background-color .12s, color .12s;
    user-select: none;
}

.rating_group label span:hover {
    border-color: var(--purple_main);
    color: var(--purple_main);
}

/* ---- PIP TOOLTIPS ---- */

.rating_group label,
.teacher_pip_row label {
    position: relative;
}

.rating_group label[data-tooltip]::after,
.teacher_pip_row label[data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: #2a2a2a;
    color: #fff;
    padding: 7px 11px;
    border-radius: 6px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    line-height: 1.45;
    width: 240px;
    text-align: left;
    opacity: 0;
    pointer-events: none;
    transition: opacity .15s;
    z-index: 200;
    white-space: normal;
}

.rating_group label[data-tooltip]:hover::after,
.teacher_pip_row label[data-tooltip]:hover::after {
    opacity: 1;
}

.rating_group label:first-child[data-tooltip]::after,
.teacher_pip_row label:first-child[data-tooltip]::after {
    left: 0;
    transform: none;
}

.rating_group label:last-child[data-tooltip]::after,
.teacher_pip_row label:last-child[data-tooltip]::after {
    left: auto;
    right: 0;
    transform: none;
}

/* ---- SELECTED PIP DESCRIPTOR ---- */

.trait_descriptor {
    display: none;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #444;
    background: #f4f0fa;
    border-left: 3px solid var(--purple_main);
    padding: 6px 10px;
    border-radius: 0 4px 4px 0;
    margin: 4px 0 10px;
    line-height: 1.45;
}

.trait_descriptor.visible {
    display: block;
}

.na_conflict_warning {
    background: #fff3cd;
    border: 1px solid #f0c040;
    border-radius: 4px;
    color: #7a5a00;
    font-size: 13px;
    padding: 8px 12px;
    margin: 4px 0 8px;
}

.trait_justification {
    width: 100%;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    border: 1px solid #ddd;
    border-radius: 4px;
    padding: 6px 8px;
    margin-top: 6px;
    resize: vertical;
    box-sizing: border-box;
}

.self_justification {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    font-style: italic;
    color: #555;
    margin: 4px 0 6px;
    padding: 4px 8px;
    border-left: 3px solid #ddd;
}

.self_justif_label {
    font-style: normal;
    font-weight: 600;
    color: #333;
}

.rating_group input[type="radio"]:checked + span {
    background-color: var(--dark_purple);
    border-color: var(--dark_purple);
    color: white;
}

.rating_group.readonly label {
    pointer-events: none;
}

/* ---- PANEL LAYOUT ---- */

#app_wrapper {
    display: flex;
    flex-direction: column;
    height: 100vh;
}

.page_wrapper {
    display: flex;
    flex: 1;
    overflow: hidden;
}

#student_view,
#teacher_view {
    display: flex;
    flex-direction: column;
    flex: 1;
    overflow: hidden;
}

.panel_left {
    width: 280px;
    flex-shrink: 0;
    border-right: 1px solid #ddd;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background: #fafafa;
}

.panel_left .panel_header {
    background: var(--dark_purple);
    color: white;
    font-family: "Akshar", sans-serif;
    font-size: 18px;
    letter-spacing: 2px;
    text-transform: uppercase;
    padding: 12px 16px;
    flex-shrink: 0;
}

.panel_left .panel_body {
    flex: 1;
    overflow-y: auto;
}

.panel_right {
    flex: 1;
    overflow-y: auto;
    padding: 0 24px 24px 24px;
}

/* ---- ENTRY LIST ITEMS ---- */

.entry_item {
    padding: 12px 16px;
    border-bottom: 1px solid #eee;
    cursor: pointer;
    transition: background-color .12s;
}

.entry_item:hover {
    background-color: #f0eaf8;
}

.entry_item.selected {
    background-color: #ede4f9;
    border-left: 3px solid var(--purple_main);
}

.entry_item.entry_needs_teacher {
    background-color: #e8f4fd;
    border-left: 3px solid #1565c0;
}
.entry_item.entry_needs_teacher:hover {
    background-color: #d6ecfa;
}
.entry_item.entry_needs_teacher.selected {
    background-color: #cce4f7;
    border-left: 3px solid #1565c0;
}

.entry_item .entry_date {
    font-family: "Akshar", sans-serif;
    font-size: 15px;
    color: #333;
}

.entry_item .entry_student {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #333;
    font-weight: normal;
    display: flex;
    align-items: center;
    gap: 6px;
    cursor: pointer;
}
.entry_item .entry_student:hover {
    text-decoration: underline;
    color: #1a73e8;
}

.entry_item .entry_meta {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}

.new_entry_btn {
    margin: 12px 16px;
}

/* ---- ENTRY DETAIL / FORM ---- */

.entry_header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 20px;
    flex-wrap: wrap;
    position: sticky;
    top: 0;
    background: rgba(255,255,255,.8);
    z-index: 10;
    padding: 24px 0 12px;
}

.entry_header h2 {
    margin: 0;
    font-family: "Akshar", sans-serif;
    font-size: 24px;
    letter-spacing: 2px;
}

.student_nav_row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
}

.student_nav_btns {
    display: flex;
    flex-shrink: 0;
}

.student_nav_btn {
    background: none;
    border: 1px solid #ddd;
    font-size: 18px;
    line-height: 1;
    padding: 4px 10px;
    cursor: pointer;
    color: var(--dark_purple);
    transition: background .15s, border-color .15s;
}

.student_nav_btn:first-child {
    border-radius: 8px 0 0 8px;
    border-right: none;
}

.student_nav_btn:last-child {
    border-radius: 0 8px 8px 0;
}

.student_nav_btn:hover:not(:disabled) {
    background: var(--dark_purple);
    border-color: var(--dark_purple);
    color: white;
}

.student_nav_btn:disabled {
    opacity: .3;
    cursor: default;
}

.save_status {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #999;
    margin-left: auto;
}

.section_block {
    background: white;
    border: 1px solid #e0e0e0;
    border-radius: 10px;
    padding: 20px;
    margin-bottom: 16px;
}

.section_block h3 {
    margin: 0 0 16px;
    font-family: "Akshar", sans-serif;
    font-size: 18px;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--dark_purple);
}

.trait_row {
    display: grid;
    grid-template-columns: 140px 1fr;
    align-items: center;
    gap: 12px;
    margin-bottom: 10px;
}

.trait_name {
    font-family: "Akshar", sans-serif;
    font-size: 16px;
    letter-spacing: 1px;
    color: #444;
}

.question_block {
    margin-bottom: 18px;
}

.q_thread {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-top: 8px;
}

.q_compose {
    margin-top: 8px;
}

.question_text {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #555;
    margin-bottom: 6px;
    line-height: 1.4;
}

.question_num {
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    color: var(--purple_main);
    margin-right: 4px;
    letter-spacing: 1px;
}

/* ---- COMMENT THREAD ---- */

.comment_thread {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 16px;
}

.comment_item {
    padding: 10px 14px;
    border-radius: 8px;
    border: 1px solid #e5e5e5;
    background: white;
}

.comment_item.by_teacher {
    background: #f4f0fa;
    border-color: #d4c8ef;
}

.comment_meta {
    font-family: "Akshar", sans-serif;
    font-size: 12px;
    color: #888;
    margin-bottom: 5px;
    letter-spacing: .5px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.comment_edit_btn {
    background: none;
    border: 1px solid #c5b8e8;
    border-radius: 4px;
    cursor: pointer;
    font-family: "Abel", sans-serif;
    font-size: 11px;
    color: var(--purple_main);
    padding: 1px 7px;
    line-height: 1.5;
    margin-left: auto;
    flex-shrink: 0;
    transition: background 0.15s, color 0.15s;
}
.comment_edit_btn:hover {
    background: var(--purple_main);
    color: #fff;
}

.comment_edit_form { margin-top: 6px; }

.comment_edit_textarea {
    width: 100%;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    padding: 6px 10px;
    border: 1px solid #ccc;
    border-radius: 6px;
    resize: vertical;
    box-sizing: border-box;
}

.comment_edit_actions {
    display: flex;
    gap: 8px;
    margin-top: 6px;
}

.comment_text {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #333;
    line-height: 1.4;
    white-space: pre-wrap;
}

.comment_form {
    display: flex;
    gap: 10px;
    align-items: flex-end;
    margin-top: 8px;
}

.comment_form textarea {
    flex: 1;
    min-height: 60px;
    resize: vertical;
}

/* ---- PENDING RATING CHANGE ---- */

/* In the detail view, trait rows can be tall (pips + pending block), so align names to the top. */
#detail_ratings .trait_row {
    align-items: start;
}

/* Inline pending block — appears below pips in the student's trait row */
.s_pending_block {
    margin-top: 6px;
    padding: 4px 10px;
    border-left: 3px solid var(--orange);
    border-radius: 0 4px 4px 0;
}

.rating_change {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #555;
    margin-bottom: 4px;
}

.rating_note {
    font-style: italic;
    font-size: 13px;
    color: #7c2d00;
    margin-top: 4px;
    font-family: "Abel", sans-serif;
    border-left: 4px solid var(--orange);
    padding: 5px 9px;
    border-radius: 0 4px 4px 0;
}
.rating_note .thread_entry_text { white-space: pre-wrap; }

/* ---- PIP LEGEND ---- */

.pip_legend {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 18px;
    margin-bottom: 14px;
    padding: 8px 12px;
    background: #f9f9f9;
    border-radius: 8px;
    border: 1px solid #eee;
}

.pip_legend_item {
    display: flex;
    align-items: center;
    gap: 6px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #666;
}

.pip_swatch {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 4px;
    border: 2px solid #ccc;
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    color: #555;
    flex-shrink: 0;
}

.pip_swatch.pip_self      { background: var(--dark_purple); border-color: var(--dark_purple); color: white; }
.pip_swatch.pip_teacher   { background: var(--orange);      border-color: var(--orange);      color: white; }
.pip_swatch.pip_contested { background: #e8c030;            border-color: #c9a400;            color: #5a3e00; }
.pip_swatch.pip_resolved  { background: #3a9e5f;            border-color: #2e7a4a;            color: white; }

/* Student contest comment shown in the trait row on teacher side */
.contest_note {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    font-style: italic;
    color: #5c3f00;
    border-left: 4px solid var(--gold);
    padding: 5px 9px;
    margin-top: 5px;
    border-radius: 0 4px 4px 0;
}
.contest_note .thread_entry_text { white-space: pre-wrap; }

.note_resolved {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    font-style: italic;
    color: #1a4d2e;
    background: var(--green_light);
    border-left: 3px solid var(--green);
    padding: 5px 9px;
    margin-top: 5px;
    border-radius: 0 4px 4px 0;
}

.contest_note_label {
    font-style: normal;
    font-weight: 600;
    margin-right: 4px;
}

.contest_note_overdue {
    font-style: normal;
    color: #c0392b;
    margin-bottom: 6px;
}

.trait_actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

/* Read-mode reason display on teacher side */
.reason_read {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 4px 0;
}

.reason_text_display {
    flex: 1;
    font-style: italic;
    font-size: 13px;
    color: #888;
    line-height: 1.4;
    font-family: "Abel", sans-serif;
}

.edit_reason_btn {
    flex-shrink: 0;
    font-family: "Abel", sans-serif;
    font-size: 12px;
    padding: 2px 10px;
    border: 1px solid #ccc;
    border-radius: 4px;
    background: #f5f5f5;
    color: #666;
    cursor: pointer;
    white-space: nowrap;
}

.edit_reason_btn:hover {
    background: #e8e8e8;
    color: #333;
}

.pending_actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}

.pending_deadline {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #888;
    margin-bottom: 10px;
    padding: 6px 10px;
    background: #f9f9f9;
    border-radius: 6px;
    border: 1px solid #eee;
}

.pending_deadline.overdue {
    background: #fde8e8;
    border-color: #f5c0c0;
    color: #c0392b;
}

.contest_form {
    margin-top: 10px;
    padding-top: 10px;
    border-top: 1px solid #f0d8b8;
}

.contest_form textarea {
    font-size: 14px;
    min-height: 70px;
}

.contest_submitted {
    margin-top: 8px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: var(--gold);
}

.contest_comment_preview {
    font-style: italic;
    color: #888;
    margin-top: 4px;
}

.contest_comment {
    background: #fffbea;
    border-left: 3px solid var(--gold);
    padding: 6px 10px;
    font-style: italic;
    color: #666;
    font-size: 14px;
    margin: 6px 0 8px;
    border-radius: 0 4px 4px 0;
}

/* ---- TEACHER REVIEW FORM ---- */

.review_trait_row {
    display: grid;
    grid-template-columns: 140px auto 1fr;
    align-items: start;
    gap: 16px;
    margin-bottom: 14px;
}

.review_trait_self {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #888;
    margin-top: 8px;
}

.review_reason {
    display: none;
    margin-top: 8px;
}

.review_reason textarea {
    min-height: 60px;
    font-size: 14px;
}

/* ---- PIP COLOR STATES ---- */
/* Shared by student readonly rows (.rating_group.readonly) and teacher interactive rows (.teacher_pip_row).
   Purple = uncontested self-rating. Yellow = self-rating being contested.
   Orange = teacher's proposed value. Green = resolved winner. */

.rating_group.readonly label span.pip_self,
.teacher_pip_row label span.pip_self     { background: var(--dark_purple); border-color: var(--dark_purple); color: white; }

.rating_group.readonly label span.pip_contested,
.teacher_pip_row label span.pip_contested { background: #e8c030; border-color: #c9a400; color: #5a3e00; }

.rating_group.readonly label span.pip_teacher,
.teacher_pip_row label span.pip_teacher  { background: var(--orange); border-color: var(--orange); color: white; }

.rating_group.readonly label span.pip_resolved,
.teacher_pip_row label span.pip_resolved { background: #3a9e5f; border-color: #2e7a4a; color: white; }

/* Teacher interactive pip row — JS applies all pip color classes; no :checked default */
.teacher_pip_row {
    display: flex;
    gap: 6px;
    align-items: center;
}
.teacher_pip_row input[type="radio"] { display: none; }
.teacher_pip_row label span {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border: 2px solid #ccc;
    border-radius: 6px;
    cursor: pointer;
    font-family: "Akshar", sans-serif;
    font-size: 18px;
    color: #555;
    transition: border-color .12s, background-color .12s, color .12s;
    user-select: none;
}
/* Hover only on uncolored pips so highlighted pips don't flash purple on mouseover */
.teacher_pip_row label span:not(.pip_self):not(.pip_contested):not(.pip_teacher):not(.pip_resolved):hover {
    border-color: var(--purple_main);
    color: var(--purple_main);
}

/* ---- N/A PIP ---- */
.na_label {
    margin-left: 8px;
}
.na_label span,
.rating_group.readonly .na_label span {
    width: 42px;
    font-size: 13px;
    font-style: italic;
    background: #f0f0f0;
    border-color: #bbb;
    color: #999;
}
/* When a pip color class is applied, the color classes win via cascade order */

/* ---- STUDENT ANSWER (read-only in teacher view) ---- */

.answer_block {
    background: #f7f7f7;
    border-left: 3px solid #ddd;
    padding: 10px 14px;
    border-radius: 0 6px 6px 0;
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #444;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
}

/* ---- TOOLTIP ---- */

#tooltip {
    position: fixed;
    background: #333;
    color: white;
    padding: 6px 12px;
    border-radius: 6px;
    font-family: "Akshar", sans-serif;
    font-size: 15px;
    pointer-events: none;
    display: none;
    z-index: 9999;
    max-width: 300px;
    box-shadow: 0 2px 6px rgba(0,0,0,.35);
}

/* ---- TAB BUTTONS ---- */

.tab_btn {
    font-family: "Akshar", sans-serif;
    font-size: 14px;
    letter-spacing: 1px;
    padding: 10px 8px;
    border: none;
    background: transparent;
    color: #666;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    transition: color .15s, border-color .15s;
}

.tab_btn:hover {
    color: var(--purple_main);
}

.tab_btn.active {
    color: var(--dark_purple);
    border-bottom-color: var(--dark_purple);
    font-weight: 600;
}

/* ---- QUEUE SORT BAR ---- */

.sort_toggle_group {
    display: flex;
    border: 1px solid #ddd;
    border-radius: 4px;
    overflow: hidden;
}

.sort_btn {
    background: #fff;
    border: none;
    padding: 3px 10px;
    font-family: "Abel", sans-serif;
    font-size: 12px;
    color: #888;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
    line-height: 1.4;
}

.sort_btn + .sort_btn {
    border-left: 1px solid #ddd;
}

.sort_btn:hover {
    background: #f4f0fa;
    color: var(--purple_main);
}

.sort_btn.active {
    background: var(--dark_purple);
    color: #fff;
}

/* ---- EMPTY STATES ---- */

.empty_state {
    padding: 32px 16px;
    text-align: center;
    color: #aaa;
    font-family: "Abel", sans-serif;
    font-size: 16px;
}

/* ---- TEACHER TOP NAV ---- */

.teacher_topnav {
    display: flex;
    background: var(--dark_purple);
    padding: 0 8px;
    flex-shrink: 0;
}

.tnav_btn {
    font-family: "Akshar", sans-serif;
    font-size: 14px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    padding: 9px 20px;
    border: none;
    background: transparent;
    color: rgba(255, 255, 255, .5);
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: color .15s, border-color .15s;
}

.tnav_btn:hover {
    color: rgba(255, 255, 255, .85);
}

.tnav_btn.active {
    color: white;
    border-bottom-color: white;
}

#demo_mode_btn.demo_active {
    color: #f5c842;
    border-bottom-color: #f5c842;
}

/* ---- ROSTER ---- */

#rsub_users {
    flex-direction: column;
    overflow: hidden;
}

#rsub_users #roster_users_list {
    flex: 1;
    overflow-y: auto;
}

.roster_student_row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 12px;
    border: 1px solid #eee;
    border-radius: 6px;
    margin-bottom: 8px;
    background: white;
}

.roster_student_clickable {
    cursor: pointer;
    transition: background .15s, border-color .15s;
}

.roster_student_clickable:hover {
    background: #f6f3fb;
    border-color: var(--purple_main);
}

.roster_course_item {
    cursor: pointer;
}

.roster_course_item:hover {
    background: #f6f3fb;
    border-color: var(--purple_main);
}

.roster_student_info {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #333;
    min-width: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.roster_student_email {
    font-size: 13px;
    color: #888;
}

.roster_enrolled_date_wrap {
    display: flex;
    align-items: center;
    gap: 4px;
}

.roster_enrolled_date {
    font-size: 11px;
    color: #bbb;
    letter-spacing: 0.2px;
}

.roster_edit_date_btn {
    background: none;
    border: none;
    padding: 0;
    font-size: 11px;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.15s;
    line-height: 1;
}

.roster_student_row:hover .roster_edit_date_btn {
    opacity: 1;
}

.roster_date_editor {
    display: flex;
    align-items: center;
    gap: 5px;
}

.roster_date_input {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    border: 1px solid #d0c8e8;
    border-radius: 4px;
    padding: 2px 5px;
    color: #333;
    background: #fff;
}

.roster_date_save,
.roster_date_cancel {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    border-radius: 4px;
    padding: 2px 8px;
    cursor: pointer;
    border: 1px solid;
}

.roster_date_save {
    background: var(--purple_main);
    color: #fff;
    border-color: var(--purple_main);
}

.roster_date_cancel {
    background: #fff;
    color: #888;
    border-color: #ddd;
}

/* ---- SKILL BOARD ---- */

.skill_board {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.skill_pool_area {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.skill_zone_label {
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: #888;
}

.skill_drop_zone {
    min-height: 46px;
    border: 2px dashed #ddd;
    border-radius: 8px;
    padding: 8px;
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-content: flex-start;
    transition: background-color .12s, border-color .12s;
}

.skill_drop_zone.drag_over {
    background: #f4f0fa;
    border-color: var(--purple_main);
}

.skill_zone_empty {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #bbb;
    font-style: italic;
    align-self: center;
    padding: 4px 4px;
}

.skill_token {
    background: var(--dark_purple);
    color: white;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    padding: 5px 12px;
    border-radius: 20px;
    cursor: grab;
    user-select: none;
    transition: opacity .15s, transform .1s;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.skill_token:active {
    cursor: grabbing;
}

.skill_token.dragging {
    opacity: .35;
}

.skill_token_name {
    white-space: nowrap;
}

.skill_token_date {
    font-size: 11px;
    opacity: .7;
    white-space: nowrap;
    border-left: 1px solid rgba(255,255,255,.35);
    padding-left: 6px;
}

.skill_buckets_row {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
}

.skill_bucket {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.skill_bucket_label {
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    letter-spacing: 1px;
    text-transform: uppercase;
    text-align: center;
    padding: 4px 0;
    border-radius: 6px 6px 0 0;
    color: white;
    cursor: help;
}

.skill_bucket_body {
    flex: 1;
    flex-direction: column;
    border-radius: 0 0 8px 8px;
}

.bucket_novice    { background: #888; }
.bucket_beginner  { background: var(--blue); }
.bucket_competent { background: var(--green); }
.bucket_proficient { background: var(--orange); }
.bucket_expert    { background: var(--dark_purple); }

/* ---- SECTION CHIP CHECKBOXES (skill form) ---- */

.section_chip_label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 14px;
    border-radius: 20px;
    border: 2px solid #ddd;
    cursor: pointer;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #555;
    transition: border-color .12s, background-color .12s, color .12s;
    user-select: none;
}

.section_chip_label input[type="checkbox"] {
    display: none;
}

.section_chip_label:has(input:checked) {
    border-color: var(--dark_purple);
    background: var(--dark_purple);
    color: white;
}

/* ---- Skill bucket descriptors (form + detail view) ---- */

.bucket_descriptor_fields {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 20px;
}

.bucket_desc_row {
    display: grid;
    grid-template-columns: 90px 1fr;
    gap: 8px;
    align-items: flex-start;
}

.bucket_desc_label {
    font-family: "Akshar", sans-serif;
    font-size: 11px;
    letter-spacing: .8px;
    text-transform: uppercase;
    color: white;
    padding: 5px 8px;
    border-radius: 6px;
    text-align: center;
    margin-top: 3px;
    line-height: 1.3;
}

.bucket_desc_row textarea {
    font-family: Abel, sans-serif;
    font-size: 14px;
    resize: vertical;
    min-height: 44px;
}

.bucket_desc_text {
    font-family: Abel, sans-serif;
    font-size: 14px;
    color: #444;
    padding-top: 4px;
    line-height: 1.5;
}

/* ---- Undo toast ---- */

.skill_undo_toast {
    position: fixed;
    bottom: 28px;
    left: 50%;
    transform: translateX(-50%);
    background: #222;
    color: white;
    font-family: "Abel", sans-serif;
    font-size: 15px;
    padding: 12px 18px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    gap: 18px;
    z-index: 9999;
    box-shadow: 0 4px 16px rgba(0,0,0,.35);
    white-space: nowrap;
    animation: toast_slide_in .2s ease;
}

@keyframes toast_slide_in {
    from { opacity: 0; transform: translateX(-50%) translateY(10px); }
    to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

.skill_undo_btn {
    background: none;
    border: 1px solid rgba(255,255,255,.45);
    color: white;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    padding: 4px 12px;
    border-radius: 6px;
    cursor: pointer;
    transition: background .15s;
}

.skill_undo_btn:hover {
    background: rgba(255,255,255,.15);
}

/* ---- SCROLLBAR ---- */

::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { box-shadow: inset 0 0 6px #ddd; border-radius: 4px; }
::-webkit-scrollbar-thumb { background: var(--dark_purple); border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: var(--purple_main); }
/* ============================================================
   Skill Profile Modal
   ============================================================ */

.skill_modal_overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .45);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 20px;
    animation: modal_fade_in .15s ease;
}

@keyframes modal_fade_in {
    from { opacity: 0; }
    to   { opacity: 1; }
}

.skill_modal {
    background: var(--panel_bg, #fff);
    border-radius: 14px;
    box-shadow: 0 8px 48px rgba(0, 0, 0, .28);
    width: 100%;
    max-width: 960px;
    max-height: 85vh;
    display: flex;
    flex-direction: column;
    /* overflow: hidden removed — radius applied to children so tooltips can escape */
    animation: modal_slide_in .18s ease;
}

@keyframes modal_slide_in {
    from { transform: translateY(12px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

.skill_modal_header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid var(--border_light, #eee);
    flex-shrink: 0;
    border-radius: 14px 14px 0 0;
    background: var(--panel_bg, #fff);
}

.skill_modal_title {
    font-family: "Akshar", sans-serif;
    font-size: 18px;
    font-weight: 400;
    letter-spacing: 2px;
    text-transform: uppercase;
    color: var(--dark_purple);
}

.skill_modal_close {
    background: none;
    border: none;
    font-size: 16px;
    cursor: pointer;
    color: #999;
    padding: 4px 8px;
    border-radius: 6px;
    line-height: 1;
    transition: color .15s, background .15s;
}

.skill_modal_close:hover {
    color: #333;
    background: #f0f0f0;
}

.skill_modal_body {
    overflow-y: auto;
    overflow-x: visible;
    padding: 20px;
    padding-bottom: 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    border-radius: 0 0 14px 14px;
}

/* Allow tooltips to escape their scroll containers */
.sm_buckets_row,
.sm_bucket,
.sm_bucket .sm_tokens,
.sm_unplaced_row,
.sm_unplaced_row .sm_tokens {
    overflow: visible;
}

/* Unplaced strip */
.sm_unplaced_row {
    border: 2px dashed #ddd;
    border-radius: 8px;
    padding: 8px 10px 10px;
}

.sm_section_label {
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: #888;
    margin-bottom: 6px;
}

/* Bucket row */
.sm_buckets_row {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 10px;
}

.sm_bucket {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

/* Bucket body — token zone below the colored label */
.sm_bucket .sm_tokens {
    border: 1px solid #e0e0e0;
    border-top: none;
    border-radius: 0 0 6px 6px;
    padding: 8px;
    min-height: 48px;
}

.sm_tokens {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-content: flex-start;
    min-height: 32px;
}

/* Placed token — matches board skill_token but not draggable */
.sm_token_placed {
    background: var(--dark_purple);
    color: white;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    padding: 5px 12px;
    border-radius: 20px;
    cursor: default;
    display: inline-flex;
    align-items: center;
}

/* Unplaced token — greyed-out version */
.sm_token_unplaced {
    background: #e8e8e8;
    color: #777;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    padding: 5px 12px;
    border-radius: 20px;
    cursor: default;
    display: inline-flex;
    align-items: center;
}

.sm_empty {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #bbb;
    font-style: italic;
    align-self: center;
    padding: 2px 4px;
}

/* Token tooltips — matches pip tooltip style */
/* JS-driven fixed tooltip — replaces ::after approach which was clipped by overflow:auto */
#sm_tooltip {
    position: fixed;
    background: #2a2a2a;
    color: #ddd;
    padding: 8px 12px;
    border-radius: 6px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    line-height: 1.45;
    width: 400px;
    text-align: left;
    pointer-events: none;
    z-index: 1200;
    opacity: 0;
    transition: opacity .15s;
}

@media (max-width: 400px) {
    #sm_tooltip { width: calc(100vw - 16px); }
}

/* Skill rubric rows inside the tooltip */
.sm_tt_row {
    display: flex;
    gap: 8px;
    padding: 4px 0;
    border-top: 1px solid rgba(255,255,255,0.07);
    opacity: 0.6;
}
.sm_tt_row:first-child { border-top: none; }
.sm_tt_current {
    opacity: 1;
}
.sm_tt_level {
    flex: 0 0 74px;
    font-family: "Akshar", sans-serif;
    font-size: 11px;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: #aaa;
    padding-top: 1px;
}
.sm_tt_current .sm_tt_level {
    color: #fff;
}
.sm_tt_desc {
    flex: 1;
    color: #ddd;
    line-height: 1.4;
}

.sm_state_msg {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #aaa;
    font-style: italic;
    padding: 20px 0;
    text-align: center;
    margin: 0;
}

/* Skills button in entry headers */
.skills_peek_btn {
    margin-left: auto;
    flex-shrink: 0;
}

/* ---- SESSIONS TAB ---- */

/* 4-tab layout: tighten the tab buttons so they fit */
#queue_tabs .tab_btn {
    font-size: 12px;
    letter-spacing: 0.5px;
    padding: 10px 5px;
}

/* Log Session inline button */
#log_session_btn {
    flex-shrink: 0;
    font-family: "Akshar", sans-serif;
    font-size: 12px;
    letter-spacing: 0.5px;
    padding: 5px 10px;
    border: 1px solid var(--purple_main);
    border-radius: 5px;
    background: transparent;
    color: var(--purple_main);
    cursor: pointer;
    white-space: nowrap;
    transition: background .15s, color .15s;
}
#log_session_btn:hover {
    background: var(--purple_main);
    color: #fff;
}
#log_session_btn:disabled {
    opacity: 0.4;
    cursor: default;
    pointer-events: none;
}

/* Session cards in the sessions tab */
.session_item {
    padding: 12px 14px;
    border-bottom: 1px solid #ece8f5;
    background: #fafafa;
    transition: background .12s;
}
.session_item:hover {
    background: #f4f0fa;
}
.session_date_row {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 4px;
}
.session_date {
    font-family: "Akshar", sans-serif;
    font-size: 15px;
    font-weight: 600;
    color: #1a0f2e;
    letter-spacing: 0.5px;
}
.session_delete_btn {
    background: none;
    border: none;
    color: #bbb;
    font-size: 12px;
    cursor: pointer;
    padding: 0 2px;
    line-height: 1;
    transition: color .15s;
}
.session_delete_btn:hover {
    color: var(--cancel);
}
.session_stats {
    font-size: 12px;
    color: #666;
    margin-bottom: 5px;
}
.session_missing {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 4px;
}
.missing_chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    padding: 2px 4px 2px 7px;
    border-radius: 10px;
    background: #fee2e3;
    color: var(--cancel);
    font-family: "Abel", sans-serif;
}
.missing_chip .chip_name {
    cursor: pointer;
    text-decoration: underline;
    text-decoration-style: dotted;
    text-underline-offset: 2px;
}
.missing_chip .chip_name:hover { text-decoration-style: solid; }
.mark_absent_btn {
    font-size: 10px;
    font-family: "Abel", sans-serif;
    background: none;
    border: 1px solid var(--cancel);
    border-radius: 8px;
    color: var(--cancel);
    padding: 0px 5px;
    cursor: pointer;
    opacity: 0.7;
    line-height: 1.6;
}
.mark_absent_btn:hover { opacity: 1; background: #dc272820; }
.session_absent {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 4px;
}
.absent_chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    padding: 2px 4px 2px 7px;
    border-radius: 10px;
    background: #ebebeb;
    color: #888;
    font-family: "Abel", sans-serif;
    font-style: italic;
}
.unmark_absent_btn {
    font-size: 10px;
    font-family: "Abel", sans-serif;
    background: none;
    border: 1px solid #bbb;
    border-radius: 8px;
    color: #888;
    padding: 0px 5px;
    cursor: pointer;
    opacity: 0.7;
    line-height: 1.6;
}
.unmark_absent_btn:hover { opacity: 1; background: #00000010; }
.session_note {
    font-size: 12px;
    color: #888;
    font-style: italic;
    margin-top: 5px;
}

/* Log Session modal */
#log_session_modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(10, 5, 20, 0.55);
    z-index: 9000;
    align-items: center;
    justify-content: center;
}
#log_session_modal.open {
    display: flex;
}
.log_session_card {
    background: #fff;
    border-radius: 12px;
    padding: 28px 28px 22px;
    width: 340px;
    max-width: 92vw;
    box-shadow: 0 8px 32px rgba(60,38,96,.25);
}
.log_session_card h3 {
    font-family: "Akshar", sans-serif;
    font-size: 20px;
    letter-spacing: 1px;
    color: var(--dark_purple);
    margin: 0 0 18px;
}
.log_session_field {
    margin-bottom: 14px;
}
.log_session_field label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: #666;
    margin-bottom: 5px;
}
.log_session_field input[type="date"],
.log_session_field textarea,
.log_session_field select {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid #ddd;
    border-radius: 6px;
    font-family: "Rubik", sans-serif;
    font-size: 14px;
    color: #1a0f2e;
    background: #fafafa;
    box-sizing: border-box;
}
.log_session_field textarea {
    resize: vertical;
    min-height: 56px;
}
.log_session_section_label {
    font-size: 14px;
    color: #1a0f2e;
    padding: 6px 2px;
}
.log_session_actions {
    display: flex;
    gap: 10px;
    margin-top: 20px;
    justify-content: flex-end;
}
.log_session_actions button {
    font-family: "Akshar", sans-serif;
    font-size: 14px;
    letter-spacing: 0.5px;
    padding: 9px 20px;
    border-radius: 7px;
    border: none;
    cursor: pointer;
    transition: background .15s;
}
#log_session_cancel {
    background: #eee;
    color: #333;
}
#log_session_cancel:hover { background: #ddd; }
#log_session_confirm {
    background: var(--purple_main);
    color: #fff;
}
#log_session_confirm:hover { background: var(--dark_purple); }

/* ---- COPY SESSIONS MODAL ---- */
#copy_sessions_modal {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(10, 5, 20, 0.55);
    z-index: 9000;
    align-items: center;
    justify-content: center;
}
#copy_sessions_modal.open {
    display: flex;
}
#copy_sessions_cancel {
    background: #eee;
    color: #333;
}
#copy_sessions_cancel:hover { background: #ddd; }
#copy_sessions_confirm {
    background: var(--purple_main);
    color: #fff;
}
#copy_sessions_confirm:hover { background: var(--dark_purple); }

/* ---- RATING HISTORY GRAPH MODAL ---- */

.graph_backdrop {
    position: fixed;
    inset: 0;
    background: rgba(10, 5, 20, 0.6);
    z-index: 9100;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 32px 16px 60px;
    overflow-y: auto;
}

.graph_card {
    background: #fff;
    border-radius: 14px;
    width: 100%;
    max-width: 860px;
    padding: 28px 28px 24px;
    box-shadow: 0 12px 48px rgba(60, 38, 96, 0.28);
}

.graph_header {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    margin-bottom: 14px;
}

.graph_title {
    font-family: "Akshar", sans-serif;
    font-size: 20px;
    color: #3c2660;
    margin: 0;
    flex: 1;
    min-width: 0;
}

.graph_filters {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}

.graph_filter_btn {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    padding: 4px 12px;
    border: 1px solid #c8b8e8;
    border-radius: 16px;
    background: transparent;
    color: #666;
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}
.graph_filter_btn.active,
.graph_filter_btn:hover {
    background: var(--purple_main);
    color: #fff;
    border-color: var(--purple_main);
}

.graph_close_btn {
    background: none;
    border: none;
    font-size: 18px;
    color: #bbb;
    cursor: pointer;
    padding: 4px 8px;
    flex-shrink: 0;
    transition: color .15s;
}
.graph_close_btn:hover { color: #333; }

/* Legend */
.graph_legend {
    display: flex;
    gap: 20px;
    align-items: center;
    font-family: "Abel", sans-serif;
    font-size: 12px;
    color: #666;
    margin-bottom: 22px;
    flex-wrap: wrap;
}
.graph_legend_item {
    display: flex;
    align-items: center;
    gap: 6px;
}
.graph_ll {
    display: inline-block;
    width: 22px;
    height: 0;
}
.graph_ll.solid  { border-top: 2.5px solid #888; }
.graph_ll.dashed { border-top: 2px dashed #aaa; }
.graph_ld {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: 1.5px solid #888;
    background: transparent;
}

/* 2-column grid; 5th trait spans full width */
.graph_grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px 32px;
}
.graph_chart_wide {
    grid-column: 1 / -1;
}
.graph_chart_wrap {
    min-width: 0;
}
.graph_chart_title {
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    margin-bottom: 6px;
}

@media (max-width: 600px) {
    .graph_grid { grid-template-columns: 1fr; }
    .graph_chart_wide { grid-column: 1; }
}

/* ---- Missing sessions notice (student left panel) ---- */
#missing_notice {
    margin: 0 0 6px 0;
    background: var(--orange_light);
    border: 1px solid #f0c060;
    border-radius: 6px;
    padding: 8px 10px;
    font-family: "Abel", sans-serif;
}
.missing_header {
    font-size: 13px;
    font-weight: 600;
    color: var(--orange);
    margin-bottom: 4px;
}
.missing_dates {
    display: flex;
    flex-direction: column;
    gap: 2px;
}
.missing_row {
    font-size: 12px;
    color: #7a5000;
    padding-left: 4px;
}
.missing_note {
    color: #a07030;
    font-style: italic;
}

/* ---- Missing sessions count badge (review + roster panels) ---- */
.missing_badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--error_front);
    color: #fff;
    font-size: 11px;
    font-family: "Abel", sans-serif;
    font-weight: 700;
    cursor: pointer;
    vertical-align: middle;
    margin-left: 2px;
    flex-shrink: 0;
    position: relative;
}
/* Custom tooltip — more reliable than native title attribute */
.missing_badge[data-tooltip]:hover::after {
    content: attr(data-tooltip);
    position: absolute;
    top: calc(100% + 6px);
    left: 50%;
    transform: translateX(-50%);
    background: #2a2a2a;
    color: #fff;
    padding: 6px 10px;
    border-radius: 6px;
    font-size: 12px;
    font-family: "Abel", sans-serif;
    font-weight: 400;
    white-space: pre;   /* preserves \n between dates */
    line-height: 1.7;
    z-index: 900;
    pointer-events: none;
    box-shadow: 0 2px 8px rgba(0,0,0,.25);
}

/* ---- For-date row (student draft + teacher review) ---- */
#entry_nav_row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}
#entry_nav_label {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #999;
    min-width: 46px;
    text-align: center;
}
.entry_nav_btn:disabled {
    opacity: 0.35;
    cursor: default;
}

.for_date_row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 0 14px;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #666;
    flex-wrap: wrap;
}
.for_date_row label {
    white-space: nowrap;
    color: #888;
}
.for_date_row input[type="date"],
#entry_for_date {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    padding: 5px 8px;
    border: 1px solid #ddd;
    border-radius: 5px;
    background: #fff;
    color: #333;
    cursor: pointer;
}

/* ---- STUDENT VIEW MODAL ---- */

#sv_backdrop {
    position: absolute;
    inset: 0;
    background: rgba(20, 10, 40, 0.55);
}

#sv_pane {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 92vw;
    max-width: 1140px;
    height: 88vh;
    background: #fff;
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    box-shadow: 0 12px 48px rgba(0, 0, 0, 0.35);
}

#sv_banner {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 13px 22px;
    background: var(--dark_purple);
    color: #fff;
    font-family: "Akshar", sans-serif;
    font-size: 16px;
    flex-shrink: 0;
}

#sv_readonly_label {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    opacity: 0.65;
    margin-left: 2px;
}

#sv_close_btn {
    margin-left: auto;
    background: rgba(255,255,255,0.14);
    border: 1px solid rgba(255,255,255,0.3);
    color: #fff;
    border-radius: 6px;
    padding: 4px 14px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    cursor: pointer;
    transition: background 0.15s;
}
#sv_close_btn:hover { background: rgba(255,255,255,0.26); }

#sv_body {
    display: flex;
    flex: 1;
    overflow: hidden;
}

#sv_left {
    width: 224px;
    flex-shrink: 0;
    border-right: 1px solid #e4e0f0;
    overflow-y: auto;
    background: #faf8ff;
}

#sv_right {
    flex: 1;
    overflow-y: auto;
    padding: 24px 32px;
}

.sv_draft_notice {
    padding: 9px 14px;
    background: #fff8e6;
    border-bottom: 1px solid #ede0b0;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #8a6500;
}

.sv_history_item {
    padding: 10px 14px;
    border-bottom: 1px solid #ece8f4;
    cursor: pointer;
    border-left: 3px solid transparent;
    transition: background 0.12s;
}
.sv_history_item:hover  { background: #f0ecfa; }
.sv_history_item.sv_selected {
    background: #ebe5f8;
    border-left-color: var(--dark_purple);
}

.sv_item_date {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #555;
    margin-bottom: 3px;
}

.sv_empty {
    color: #bbb;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    text-align: center;
    padding: 40px 16px;
}

/* Entry detail inside modal */
.sv_entry_hdr {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 22px;
    flex-wrap: wrap;
}
.sv_entry_date {
    font-family: "Abel", sans-serif;
    font-size: 20px;
    font-weight: 600;
    color: #2a1a4a;
}

.sv_section {
    margin-bottom: 28px;
}
.sv_section h3 {
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    letter-spacing: 1px;
    text-transform: uppercase;
    color: var(--dark_purple);
    margin: 0 0 12px;
}

.sv_trait_row {
    margin-bottom: 10px;
}
.sv_trait_name {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #888;
    text-transform: capitalize;
    margin-bottom: 4px;
}

.sv_question_block {
    margin-bottom: 18px;
}
.sv_question_text {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #999;
    margin-bottom: 4px;
}
.sv_answer_block {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #333;
    line-height: 1.55;
    white-space: pre-wrap;
}

.sv_comment_thread {
    margin-top: 8px;
}
.sv_comment_item {
    padding: 8px 12px;
    border-radius: 6px;
    margin-bottom: 6px;
    font-family: "Abel", sans-serif;
    font-size: 14px;
    background: #f5f3fb;
    border-left: 3px solid #c5b8e8;
}
.sv_comment_item.sv_by_teacher {
    background: #edf2ff;
    border-left-color: var(--purple_main);
}
.sv_comment_meta {
    font-size: 12px;
    color: #aaa;
    margin-bottom: 3px;
}
.sv_no_comments {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #ccc;
}

.sv_pip_legend {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 14px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #888;
    align-items: center;
}

/* ---- SUBMISSION DEADLINE DISPLAY ---- */

#entry_deadline_row {
    align-items: center;
    gap: 10px;
    padding: 2px 0 10px;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #999;
}

.deadline_countdown {
    font-weight: 600;
    border-radius: 20px;
    padding: 2px 10px;
    background: var(--orange_light);
    color: var(--orange);
    font-size: 13px;
}

/* ---- SESSION REOPEN (roster detail) ---- */

.reopen_section_hint {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #888;
    margin: -8px 0 12px;
}

.reopen_row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid #f0f0f0;
}

.reopen_row:last-child { border-bottom: none; }

.reopen_date {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #333;
    flex: 1;
}

.reopen_active {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: var(--green);
    background: var(--green_light);
    padding: 3px 10px;
    border-radius: 20px;
}

/* ---- FLAGS AREA ---- */

.flags_container {
    max-width: 820px;
    margin: 0 auto;
    padding: 28px 24px;
}

.flags_header {
    margin-bottom: 24px;
}

.flags_title {
    font-family: "Rubik", sans-serif;
    font-size: 22px;
    font-weight: 600;
    color: #222;
    margin: 0 0 4px;
}

.flags_subtitle {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #888;
    margin: 0;
}

.flags_loading,
.flags_empty {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #aaa;
    padding: 24px 0;
}

.flags_group_heading {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .05em;
    margin: 20px 0 10px;
}

.flags_concern_heading { color: #c0392b; }
.flags_positive_heading { color: var(--green); }

.flag_card {
    background: #fff;
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 14px 16px;
    margin-bottom: 8px;
    border-left-width: 4px;
}

.flag_concern { border-left-color: #e74c3c; }
.flag_positive { border-left-color: var(--green); }

.flag_card_top {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 6px;
}

.flag_student_name {
    font-family: "Rubik", sans-serif;
    font-size: 15px;
    font-weight: 500;
    color: #222;
    flex: 1;
}

.flag_trait_pill {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    background: #f0eef8;
    color: var(--purple_main);
    border-radius: 20px;
    padding: 2px 10px;
}

.flag_badge {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    border-radius: 20px;
    padding: 2px 10px;
}

.flag_badge_concern { background: #fdecea; color: #c0392b; }
.flag_badge_positive { background: var(--green_light); color: var(--green); }

.flag_rule {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #777;
    margin-bottom: 10px;
}

.flag_ack_btn {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    background: none;
    border: 1px solid #ccc;
    border-radius: 4px;
    padding: 4px 12px;
    cursor: pointer;
    color: #555;
    transition: background .15s, color .15s;
}

.flag_ack_btn:hover { background: #f5f5f5; color: #222; }
.flag_ack_btn:disabled { opacity: .5; cursor: not-allowed; }

/* Dots on queue entry items */
.flag_dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.flag_dot_concern  { background: #e74c3c; }
.flag_dot_positive { background: var(--green); }

/* ---- Observations ---- */
.obs_chip_area {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 14px;
}
.obs_chip_row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.obs_chip_group_label {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    color: #aaa;
    text-transform: uppercase;
    letter-spacing: .04em;
    min-width: 52px;
    flex-shrink: 0;
}
.obs_chip {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    padding: 4px 12px;
    border-radius: 20px;
    border: none;
    cursor: pointer;
    transition: transform .1s, opacity .15s;
}
.obs_chip.concern {
    background: #fde8e8;
    color: #b91c1c;
}
.obs_chip.concern:hover { background: #fbd0d0; }
.obs_chip.positive {
    background: #dcfce7;
    color: #15803d;
}
.obs_chip.positive:hover { background: #bbf7d0; }
.obs_chip_flash { transform: scale(.92); opacity: .6; }

.obs_log {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 4px;
}
.obs_empty {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #bbb;
    padding: 6px 0;
}
.obs_entry {
    border-radius: 8px;
    padding: 8px 12px;
    font-family: "Abel", sans-serif;
    font-size: 14px;
}
.obs_entry_concern  { background: #fff5f5; border-left: 3px solid #e74c3c; }
.obs_entry_positive { background: #f0fdf4; border-left: 3px solid #22c55e; }
.obs_entry_top {
    display: flex;
    align-items: center;
    gap: 10px;
}
.obs_entry_label { flex: 1; font-weight: normal; }
.obs_entry_time  { font-size: 12px; color: #bbb; }
.obs_note_btn {
    background: none;
    border: none;
    cursor: pointer;
    color: #aaa;
    font-size: 14px;
    padding: 0 4px;
    line-height: 1;
}
.obs_note_btn:hover { color: #555; }
.obs_note_text {
    margin-top: 4px;
    font-size: 13px;
    color: #666;
    font-style: italic;
}
.obs_note_input_wrap {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-top: 6px;
}
.obs_note_input {
    flex: 1;
    font-family: "Abel", sans-serif;
    font-size: 13px;
    padding: 4px 8px;
    border: 1px solid #ddd;
    border-radius: 6px;
}
#review_obs_panel {
    background: #fafafa;
    border: 1px solid #eee;
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 16px;
}
.btn_active {
    background: #e8f0fe !important;
    color: #1a73e8 !important;
    border-color: #c5d8fb !important;
}

/* ---- Class Log Modal ---- */
#cl_backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.45);
}
#cl_panel {
    position: absolute;
    top: 0; right: 0; bottom: 0;
    width: min(680px, 100%);
    background: #fff;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
#cl_banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 16px 20px;
    border-bottom: 1px solid #eee;
    background: #faf8ff;
    flex-shrink: 0;
}
#cl_title {
    font-family: "Abel", sans-serif;
    font-size: 18px;
    font-weight: bold;
    color: #222;
}
#cl_session_date {
    font-family: "Abel", sans-serif;
    font-size: 14px;
    color: #aaa;
    margin-left: 10px;
}
#cl_list {
    flex: 1;
    overflow-y: auto;
    padding: 12px 0;
}
.cl_row {
    padding: 12px 20px;
    border-bottom: 1px solid #f0f0f0;
}
.cl_row:last-child { border-bottom: none; }
.cl_row_header {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 8px;
}
.cl_student_name {
    font-family: "Abel", sans-serif;
    font-size: 16px;
    font-weight: bold;
    color: #222;
    flex: 1;
}
.cl_tally {
    display: flex;
    gap: 8px;
    font-family: "Abel", sans-serif;
    font-size: 12px;
}
.cl_tally_concern  { color: #b91c1c; background: #fde8e8; padding: 2px 8px; border-radius: 10px; }
.cl_tally_positive { color: #15803d; background: #dcfce7; padding: 2px 8px; border-radius: 10px; }
.cl_chips {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

#class_log_btn:disabled,
#class_log_btn.btn_dimmed {
    opacity: 0.4;
    cursor: not-allowed;
    pointer-events: none;
}

/* Trait-row chip layout (replaces generic two-row layout) */
.obs_trait_row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 4px 0;
}
.obs_trait_label {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    color: #aaa;
    text-transform: uppercase;
    letter-spacing: .04em;
    min-width: 80px;
    padding-top: 5px;
    flex-shrink: 0;
}
.obs_trait_chips {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1;
}
.obs_chip_group {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.obs_trait_heading {
    font-family: "Abel", sans-serif;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #bbb;
    margin: 10px 0 4px;
}
.obs_trait_heading:first-child { margin-top: 0; }

/* Class log trait rows */
.cl_trait_row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 3px 0;
}
.cl_trait_label {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    color: #aaa;
    text-transform: uppercase;
    letter-spacing: .04em;
    min-width: 80px;
    padding-top: 5px;
    flex-shrink: 0;
}
.cl_trait_chips {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1;
}

/* Class log search + collapse */
#cl_search_bar {
    padding: 10px 16px;
    border-bottom: 1px solid #eee;
    flex-shrink: 0;
}
#cl_search {
    width: 100%;
    box-sizing: border-box;
    font-family: "Abel", sans-serif;
    font-size: 15px;
    padding: 8px 12px;
    border: 1px solid #ddd;
    border-radius: 8px;
    outline: none;
}
#cl_search:focus { border-color: #a0b4f0; }

.cl_row_header {
    cursor: pointer;
    user-select: none;
}
.cl_row_header:hover .cl_student_name { text-decoration: underline; }
.cl_chevron {
    font-size: 10px;
    color: #bbb;
    margin-right: 4px;
    transition: transform .15s;
}

/* ===== AC USERS TAB ===== */
.ac_users_container {
    max-width: 860px;
    margin: 0 auto;
    padding: 28px 24px 48px;
    width: 100%;
    box-sizing: border-box;
}
.ac_users_header_row {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: nowrap;
    position: sticky;
    top: 0;
    background: #f8f7fb;
    padding: 20px 0 10px;
    margin-bottom: 2px;
    z-index: 5;
    border-bottom: 1px solid #eee;
}
#ac_users_count {
    font-family: "Akshar", sans-serif;
    font-size: 14px;
    letter-spacing: 1.5px;
    text-transform: uppercase;
    color: var(--dark_purple);
    font-weight: 600;
    white-space: nowrap;
    margin-right: 4px;
}
.ac_sort_group {
    display: flex;
    gap: 2px;
    margin-right: 4px;
}
.ac_sort_btn {
    font-family: "Akshar", sans-serif;
    font-size: 11px;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    background: none;
    border: 1px solid #ddd;
    border-radius: 5px;
    color: #aaa;
    padding: 3px 8px;
    cursor: pointer;
    transition: all .12s;
}
.ac_sort_btn:hover { border-color: var(--purple_main); color: var(--purple_main); }
.ac_sort_btn.active { background: var(--purple_main); border-color: var(--purple_main); color: white; }
.ac_filter_group {
    display: flex;
    gap: 4px;
    align-items: center;
}
.ac_rf_btn {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    padding: 3px 12px;
    border-radius: 10px;
    border: 1px solid #d0c8e8;
    background: white;
    color: #555;
    cursor: pointer;
    transition: background .12s, color .12s, border-color .12s;
    white-space: nowrap;
}
.ac_rf_btn.active { background: var(--dark_purple); border-color: var(--dark_purple); color: white; }
.ac_rf_btn:not(.active):hover { background: #ede9f7; border-color: var(--purple_main); color: var(--dark_purple); }
#ac_search {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    padding: 3px 10px;
    border-radius: 12px;
    border: 1px solid #d0c8e8;
    background: white;
    color: #333;
    outline: none;
    width: 140px;
    transition: border-color .15s, width .2s;
}
#ac_search::placeholder { color: #aaa; }
#ac_search:focus { border-color: var(--purple_main); width: 180px; }
#ac_search::-webkit-search-cancel-button { cursor: pointer; }
.ac_user_row {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 0;
    border-bottom: 1px solid #eee;
}
.ac_user_info { flex: 1; min-width: 0; }
.ac_user_name {
    font-family: "Abel", sans-serif;
    font-size: 15px;
    color: #1a1a2e;
}
.ac_user_email {
    font-family: "Abel", sans-serif;
    font-size: 12px;
    color: #999;
}
.ac_role_badge {
    display: inline-block;
    font-family: "Akshar", sans-serif;
    font-size: 11px;
    letter-spacing: 1px;
    text-transform: uppercase;
    padding: 3px 10px;
    border-radius: 10px;
    flex-shrink: 0;
    cursor: pointer;
}
.ac_role_badge:hover { opacity: 0.75; }
.ac_badge_student    { background: #e8f4fd; color: #1a5fa8; }
.ac_badge_instructor { background: #f0faf4; color: #1a7f3c; }
.ac_badge_admin      { background: #ede9f7; color: #4a2b9a; }
.ac_badge_select {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    padding: 3px 6px;
    border: 1px solid #a0b4f0;
    border-radius: 6px;
    background: #fff;
}
.ac_modal_label {
    display: block;
    font-family: "Abel", sans-serif;
    font-size: 12px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #888;
    margin-bottom: 6px;
}

/* ===== MODAL OVERLAY ===== */
.disabled { display: none !important; }
.modal_screen_wrapper {
    position: fixed;
    top: 0; left: 0;
    width: 100%; height: 100%;
    background: rgba(0,0,0,.5);
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* SO-style modal used in academic app */
.so_admin_modal {
    border-radius: 12px;
    width: 440px;
    max-width: 95vw;
    box-shadow: 0 8px 40px rgba(0,0,0,.2);
    background: #fff;
    display: flex;
    flex-direction: column;
    max-height: 90vh;
}
.so_modal_h3 {
    margin: 0;
    padding: 28px 32px 0;
    font-family: "Akshar", sans-serif;
    font-size: 22px;
    letter-spacing: 2px;
    color: var(--dark_purple);
}
.so_admin_modal .modal_content {
    padding: 0 32px;
    overflow-y: auto;
    flex: 1;
}
.so_admin_modal input[type="text"],
.so_admin_modal input[type="email"] {
    width: 100%;
    box-sizing: border-box;
    padding: 10px 12px;
    border-radius: 8px;
    border: 1px solid #ccc;
    font-family: "Abel", sans-serif;
    font-size: 16px;
    transition: border-color .15s;
}
.so_admin_modal input[type="text"]:focus,
.so_admin_modal input[type="email"]:focus {
    outline: none;
    border-color: var(--purple_main);
}
.so_admin_modal input[readonly] {
    background: #f5f5f5;
    color: #888;
    cursor: default;
}
.so_field_label {
    display: block;
    font-family: "Akshar", sans-serif;
    font-size: 13px;
    letter-spacing: .5px;
    color: #444;
    margin: 16px 0 6px;
}
.ac_role_checkboxes {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    margin-bottom: 4px;
}
.ac_role_checkboxes label {
    display: flex;
    align-items: center;
    gap: 7px;
    font-family: "Abel", sans-serif;
    font-size: 15px;
    cursor: pointer;
}
.ac_role_checkboxes input[type="radio"] { cursor: pointer; }
.so_select {
    width: 100%;
    box-sizing: border-box;
    padding: 10px 12px;
    border-radius: 8px;
    border: 1px solid #ccc;
    font-family: "Abel", sans-serif;
    font-size: 15px;
    background: white;
    color: #333;
    cursor: pointer;
    transition: border-color .15s;
}
.so_select:focus { outline: none; border-color: var(--purple_main); }
.so_modal_footer {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 16px 32px;
    border-top: 1px solid #eee;
    flex-shrink: 0;
}
.user_error_message {
    font-family: "Abel", sans-serif;
    font-size: 13px;
    color: #c0392b;
    min-height: 18px;
    margin-top: 4px;
}
