.admin-classroom-planning-container {
    max-width: 1380px;
}

/* === Two-column layout: volunteer roster + main content === */
.admin-with-roster {
    display: grid;
    grid-template-columns: 240px minmax(0, 1fr);
    gap: 24px;
    align-items: start;
}

.admin-with-roster-main {
    min-width: 0;
}

@media (max-width: 1080px) {
    .admin-with-roster {
        grid-template-columns: 1fr;
    }
}

/* === Volunteer roster column === */
.admin-volunteer-roster {
    position: sticky;
    top: 92px;
    align-self: start;
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 18px;
    border-radius: 28px;
    background:
        radial-gradient(circle at top right, rgba(124, 121, 184, 0.12), transparent 36%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.97) 0%, rgba(247, 248, 253, 0.97) 100%);
    border: 1px solid rgba(124, 121, 184, 0.16);
    box-shadow: 0 18px 36px rgba(34, 42, 70, 0.08);
    max-height: calc(100vh - 110px);
    overflow: hidden;
}

.admin-volunteer-roster-header {
    padding: 2px 4px 6px;
}

.admin-volunteer-roster-kicker {
    display: block;
    font-size: 0.74rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--primary-dark);
}

.admin-volunteer-roster-help {
    margin: 4px 0 0;
    color: var(--muted);
    font-size: 0.82rem;
    line-height: 1.45;
}

.admin-volunteer-roster-legend {
    border: 1px solid rgba(124, 121, 184, 0.18);
    background: rgba(255, 255, 255, 0.75);
    border-radius: 14px;
    padding: 0;
    overflow: hidden;
}

.admin-volunteer-roster-legend > summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    color: var(--primary-dark);
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.01em;
}
.admin-volunteer-roster-legend > summary::-webkit-details-marker { display: none; }
.admin-volunteer-roster-legend > summary > span:first-child {
    font-size: 0.95rem;
    line-height: 1;
}
.admin-volunteer-roster-legend > summary > span:nth-child(2) {
    flex: 1;
}
.admin-volunteer-roster-legend-chevron {
    color: var(--muted);
    font-size: 0.9rem;
    transition: transform 0.2s ease;
}
.admin-volunteer-roster-legend[open] .admin-volunteer-roster-legend-chevron {
    transform: rotate(180deg);
}

.admin-volunteer-roster-legend-list {
    list-style: none;
    margin: 0;
    padding: 4px 10px 10px;
    display: grid;
    gap: 8px;
    border-top: 1px dashed rgba(124, 121, 184, 0.18);
}

.admin-volunteer-roster-legend-list li {
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr);
    align-items: center;
    gap: 10px;
    font-size: 0.76rem;
    color: var(--text);
    line-height: 1.35;
    padding-top: 6px;
}

.admin-volunteer-roster-legend-icon {
    display: inline-grid;
    place-items: center;
    width: 24px;
    height: 24px;
    border-radius: 8px;
    background: rgba(124, 121, 184, 0.10);
    color: var(--primary-dark);
    font-size: 0.9rem;
    line-height: 1;
}

.admin-volunteer-roster-legend-icon-warn {
    background: #fdecec;
    color: #a52834;
}

.admin-volunteer-list {
    list-style: none;
    margin: 0;
    padding: 4px 2px;
    display: grid;
    gap: 6px;
    overflow-y: auto;
    flex: 1;
    min-height: 0;
    scrollbar-width: thin;
}

.admin-volunteer-list::-webkit-scrollbar {
    width: 6px;
}
.admin-volunteer-list::-webkit-scrollbar-thumb {
    background: rgba(124, 121, 184, 0.30);
    border-radius: 3px;
}

.admin-volunteer-card {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 16px;
    background: rgba(255, 255, 255, 0.86);
    border: 1px solid transparent;
    text-decoration: none;
    color: var(--text);
    transition: transform 0.15s ease, background 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
    cursor: pointer;
}

.admin-volunteer-card:hover {
    transform: translateX(2px);
    background: #ffffff;
    border-color: rgba(124, 121, 184, 0.22);
    box-shadow: 0 8px 18px rgba(34, 42, 70, 0.06);
}

.admin-volunteer-card.is-active {
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.16), rgba(124, 121, 184, 0.06));
    border-color: rgba(124, 121, 184, 0.45);
    box-shadow: 0 10px 22px rgba(34, 42, 70, 0.10);
}

.admin-volunteer-card-avatar {
    position: relative;
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.85), rgba(124, 121, 184, 0.58));
    color: #ffffff;
    font-weight: 800;
    font-size: 1.1rem;
    border: 2px solid rgba(255, 255, 255, 0.95);
    box-shadow: 0 4px 10px rgba(34, 42, 70, 0.10);
    flex-shrink: 0;
    align-self: center;
}

.admin-volunteer-card-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.admin-volunteer-card.is-active .admin-volunteer-card-avatar {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(124, 121, 184, 0.28), 0 4px 10px rgba(34, 42, 70, 0.10);
}

.admin-volunteer-card.has-warn .admin-volunteer-card-avatar {
    border-color: #d04a5a;
    box-shadow: 0 0 0 2px rgba(208, 74, 90, 0.30), 0 4px 10px rgba(208, 74, 90, 0.16);
}

.admin-volunteer-card-text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    min-width: 0;
}

.admin-volunteer-card-text strong {
    font-size: 0.94rem;
    font-weight: 800;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100%;
    line-height: 1.15;
}

.admin-volunteer-card-stats {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.74rem;
    color: var(--muted);
    font-weight: 700;
    line-height: 1;
}

.admin-volunteer-card-stat {
    display: inline-flex;
    align-items: center;
    gap: 3px;
}

.admin-volunteer-card-stat span[aria-hidden] {
    font-size: 0.86rem;
    line-height: 1;
}

.admin-volunteer-card.is-active .admin-volunteer-card-stats {
    color: var(--primary-dark);
}

.admin-volunteer-card-sub {
    font-size: 0.74rem;
    color: var(--muted);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.admin-volunteer-card.is-active .admin-volunteer-card-sub {
    color: var(--primary-dark);
}

.admin-volunteer-card-warn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 2px;
    padding: 3px 8px;
    border-radius: 999px;
    background: #fdecec;
    border: 1px solid #f4c0c0;
    color: #a52834;
    font-size: 0.72rem;
    font-weight: 800;
    line-height: 1;
    letter-spacing: 0.01em;
    max-width: 100%;
}

.admin-volunteer-card-warn span[aria-hidden] {
    font-size: 0.8rem;
    line-height: 1;
}

.admin-volunteer-card.has-warn {
    background: linear-gradient(135deg, rgba(253, 236, 236, 0.65), rgba(255, 255, 255, 0.95));
    border-color: rgba(208, 74, 90, 0.22);
}

.admin-volunteer-card.has-warn:hover {
    border-color: rgba(208, 74, 90, 0.42);
    box-shadow: 0 10px 22px rgba(208, 74, 90, 0.12);
}

.admin-volunteer-card.has-warn.is-active {
    background: linear-gradient(135deg, rgba(253, 220, 220, 0.85), rgba(124, 121, 184, 0.10));
    border-color: rgba(208, 74, 90, 0.50);
    box-shadow: 0 10px 22px rgba(208, 74, 90, 0.18);
}

/* Everyone chip */
.admin-volunteer-card-all {
    border: 1px dashed rgba(124, 121, 184, 0.30);
    background: rgba(255, 255, 255, 0.7);
    margin-bottom: 2px;
}

.admin-volunteer-card-avatar-all {
    background: linear-gradient(135deg, #f7f8fd, #eef0fb);
    color: var(--primary-dark);
    font-size: 1.3rem;
}

.admin-volunteer-empty {
    padding: 14px 12px;
    color: var(--muted);
    font-size: 0.86rem;
    text-align: center;
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.6);
    border: 1px dashed rgba(124, 121, 184, 0.24);
}

.admin-volunteer-roster-reset {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin-top: 4px;
    padding: 9px 14px;
    border-radius: 999px;
    background: rgba(124, 121, 184, 0.10);
    border: 1px solid rgba(124, 121, 184, 0.22);
    color: var(--primary-dark);
    font-size: 0.84rem;
    font-weight: 800;
    text-decoration: none;
    transition: background 0.15s ease;
}

.admin-volunteer-roster-reset:hover {
    background: rgba(124, 121, 184, 0.18);
}

/* Mobile: roster becomes a horizontal scroll strip on top */
@media (max-width: 1080px) {
    .admin-volunteer-roster {
        position: static;
        max-height: none;
        overflow: visible;
    }
    .admin-volunteer-list {
        grid-auto-flow: column;
        grid-auto-columns: 220px;
        overflow-x: auto;
        overflow-y: hidden;
        padding-bottom: 10px;
    }
    .admin-volunteer-roster-help {
        display: none;
    }
}

/* Active volunteer chip inside the hero */
.admin-classroom-planning-active-volunteer {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-left: 12px;
    padding: 6px 14px 6px 6px;
    border-radius: 999px;
    background: rgba(124, 121, 184, 0.12);
    border: 1px solid rgba(124, 121, 184, 0.30);
    color: var(--primary-dark);
    font-size: 0.86rem;
}
.admin-classroom-planning-active-volunteer-avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    overflow: hidden;
    background: var(--primary);
    color: #ffffff;
    font-weight: 800;
    display: grid;
    place-items: center;
    font-size: 0.86rem;
    border: 2px solid #ffffff;
}
.admin-classroom-planning-active-volunteer-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.admin-classroom-planning-active-volunteer > span {
    display: flex;
    flex-direction: column;
    line-height: 1.2;
}
.admin-classroom-planning-active-volunteer > span strong {
    color: var(--primary-dark);
    font-size: 0.92rem;
    font-weight: 800;
}
.admin-classroom-planning-active-volunteer > span span {
    color: var(--muted);
    font-size: 0.78rem;
}
.admin-classroom-planning-active-volunteer-warn {
    color: #a52834;
    font-weight: 800;
}

.admin-classroom-planning-active-volunteer.has-warn {
    background: linear-gradient(135deg, rgba(253, 220, 220, 0.6), rgba(124, 121, 184, 0.12));
    border-color: rgba(208, 74, 90, 0.40);
}

.admin-classroom-planning-active-volunteer.has-warn .admin-classroom-planning-active-volunteer-avatar {
    box-shadow: 0 0 0 2px rgba(208, 74, 90, 0.30);
    border-color: #d04a5a;
}
.admin-classroom-planning-active-volunteer-clear {
    display: inline-grid;
    place-items: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.7);
    color: var(--primary-dark);
    text-decoration: none;
    font-weight: 900;
    margin-left: 4px;
    transition: background 0.15s ease;
}
.admin-classroom-planning-active-volunteer-clear:hover {
    background: #ffffff;
}

/* Hero stat — warn variant */
.admin-classroom-planning-stat-warn {
    background: linear-gradient(180deg, #fff7ed 0%, #ffe9d0 100%);
    border-color: rgba(216, 121, 47, 0.30);
}
.admin-classroom-planning-stat-warn strong {
    color: #b15a17;
}
.admin-classroom-planning-stat-warn span {
    color: #8a4a17;
}

.admin-classroom-planning-hero {
    margin-bottom: 24px;
    overflow: hidden;
}

.admin-classroom-planning-hero-body {
    display: grid;
    gap: 24px;
}

.admin-classroom-planning-hero-copy {
    display: block;
    width: 100%;
    max-width: 760px;
    min-width: 0;
    justify-self: start;
}

.admin-classroom-planning-kicker {
    margin-bottom: 14px;
}

.admin-classroom-planning-hero-copy h1 {
    margin: 0 0 12px;
    font-size: clamp(2.3rem, 5vw, 3.8rem);
    line-height: 1.02;
    max-width: 12ch;
}

.admin-classroom-planning-hero-copy p {
    margin: 0;
    max-width: 720px;
    color: var(--muted);
    font-size: 1.08rem;
    line-height: 1.7;
}

.admin-classroom-planning-hero-stats {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
}

.admin-classroom-planning-stat {
    padding: 18px 20px;
    border-radius: 22px;
    background: rgba(255, 255, 255, 0.82);
    border: 1px solid rgba(124, 121, 184, 0.14);
    box-shadow: 0 14px 28px rgba(34, 42, 70, 0.08);
}

.admin-classroom-planning-stat span {
    display: block;
    color: var(--muted);
    font-size: 0.92rem;
    margin-bottom: 8px;
}

.admin-classroom-planning-stat strong {
    display: block;
    font-size: 1.35rem;
    line-height: 1.2;
    color: var(--text);
    word-break: break-word;
}

.admin-classroom-planning-filter-card {
    margin-bottom: 24px;
}

.admin-classroom-planning-filters {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr) auto;
    gap: 18px;
    align-items: end;
}

.admin-classroom-planning-search-field input {
    width: 100%;
}

.admin-classroom-planning-list {
    display: grid;
    gap: 18px;
}

.admin-classroom-planning-card {
    border-radius: 30px;
    overflow: hidden;
    background:
        radial-gradient(circle at top right, rgba(124, 121, 184, 0.10), transparent 38%),
        linear-gradient(180deg, rgba(255, 255, 255, 0.98), rgba(248, 250, 255, 0.96));
}

.admin-classroom-planning-card[open] {
    box-shadow: 0 22px 36px rgba(34, 42, 70, 0.12);
}

/* ============================================================
   Compact class-planning summary row (.acp-summary)
   ============================================================ */
.acp-summary {
    list-style: none;
    cursor: pointer;
    padding: 14px 18px;
    background: transparent;
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr) auto auto 24px;
    align-items: center;
    gap: 14px;
}

.acp-summary::-webkit-details-marker { display: none; }

.admin-classroom-planning-card[open] .acp-summary {
    border-bottom: 1px dashed rgba(124, 121, 184, 0.16);
}

.acp-avatar {
    display: grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.18), rgba(124, 121, 184, 0.06));
    border: 1px solid rgba(124, 121, 184, 0.20);
    color: var(--primary-dark);
    font-size: 1.15rem;
    font-weight: 900;
    line-height: 1;
    overflow: hidden;
}

.acp-avatar img { width: 100%; height: 100%; object-fit: cover; }

.acp-info { display: grid; gap: 4px; min-width: 0; }

.acp-info-title {
    display: flex;
    align-items: baseline;
    gap: 6px;
    flex-wrap: wrap;
    line-height: 1.2;
    min-width: 0;
}

.acp-school {
    color: var(--muted);
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    display: inline-flex;
    align-items: baseline;
    gap: 5px;
    flex-wrap: wrap;
}

.acp-school-city {
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: none;
    color: var(--muted);
    opacity: 0.85;
}

.acp-sep { color: var(--muted); opacity: 0.5; }

.acp-classname {
    font-size: 1.05rem;
    font-weight: 800;
    color: var(--text);
    letter-spacing: -0.01em;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    max-width: 320px;
}

.acp-kind {
    display: inline-flex;
    align-items: center;
    width: 22px;
    height: 22px;
    border-radius: 7px;
    justify-content: center;
    font-size: 0.78rem;
    flex: 0 0 22px;
}

.acp-kind-school { background: rgba(124, 121, 184, 0.12); }
.acp-kind-social_center { background: rgba(95, 168, 147, 0.18); }

.acp-info-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    line-height: 1.2;
}

.acp-course-chip,
.acp-chip,
.acp-chip-warn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    border: 1px solid transparent;
    line-height: 1.2;
}

.acp-course-chip {
    background: rgba(95, 168, 147, 0.14);
    color: #2d6a55;
    border-color: rgba(95, 168, 147, 0.28);
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex-shrink: 1;
    min-width: 0;
}

.acp-chip {
    background: rgba(124, 121, 184, 0.10);
    color: var(--primary-dark);
    border-color: rgba(124, 121, 184, 0.20);
}

.acp-chip-meta {
    font-size: 0.66rem;
    font-weight: 600;
    opacity: 0.75;
}

.acp-chip-warn {
    background: #fdecec;
    color: #a52834;
    border-color: #f5c2c7;
}

/* === People avatar stack (overlapping circles) === */
.acp-people {
    display: flex;
    align-items: center;
    padding-left: 4px;
    flex: 0 0 auto;
}

.acp-avatar-mini {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: rgba(124, 121, 184, 0.18);
    color: var(--primary-dark);
    font-size: 0.72rem;
    font-weight: 800;
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 2px solid #fff;
    margin-left: -7px;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.06);
    flex: 0 0 auto;
    transition: transform 0.15s ease;
}

.acp-avatar-mini:first-child { margin-left: -3px; }

.acp-avatar-mini:hover { transform: translateY(-2px); }

.acp-avatar-mini img { width: 100%; height: 100%; object-fit: cover; }

.acp-avatar-mini-teacher {
    background: rgba(95, 168, 147, 0.22);
    color: #2d6a55;
    z-index: 2;
}

.acp-avatar-mini-empty {
    background: #f0f2fa;
    color: var(--muted);
    border: 2px dashed #d4d8e6;
}

.acp-people-empty {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 999px;
    background: var(--surface-soft);
    border: 1px dashed rgba(124, 121, 184, 0.28);
    color: var(--muted);
    font-size: 0.72rem;
    font-style: italic;
    margin-left: 4px;
}

/* === Schedule status pill === */
.acp-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    border: 1px solid transparent;
    white-space: nowrap;
}

.acp-status-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}

.acp-status-on {
    background: rgba(95, 168, 147, 0.18);
    color: #2d6a55;
    border-color: rgba(95, 168, 147, 0.32);
}

.acp-status-off {
    background: #fdecec;
    color: #a52834;
    border-color: #f5c2c7;
}

/* === Open/close chevron === */
.acp-toggle {
    color: var(--muted);
    font-size: 1.05rem;
    transition: transform 0.18s ease;
    justify-self: end;
}

.admin-classroom-planning-card[open] .acp-toggle { transform: rotate(180deg); color: var(--primary-dark); }

/* === Hover === */
.admin-classroom-planning-card .acp-summary:hover .acp-classname { color: var(--primary-dark); }

/* === Responsive === */
@media (max-width: 980px) {
    .acp-summary {
        grid-template-columns: 44px minmax(0, 1fr) auto 22px;
        gap: 12px;
        padding: 12px 16px;
    }
    .acp-people { grid-column: 2; grid-row: 2; padding-left: 0; }
    .acp-avatar { width: 44px; height: 44px; }
    .acp-classname { max-width: 220px; }
}

@media (max-width: 640px) {
    .acp-summary {
        grid-template-columns: 40px minmax(0, 1fr) 22px;
    }
    .acp-status { grid-column: 1 / -1; justify-self: start; }
    .acp-people { grid-column: 1 / -1; }
}

.admin-classroom-planning-summary-meta {
    margin-top: 18px;
}

.admin-classroom-planning-current {
    border-radius: 22px;
}

.admin-classroom-planning-details-body {
    padding: 18px 28px 28px;
    background: transparent;
}

.admin-classroom-planning-panels {
    display: grid;
    grid-template-columns: minmax(320px, 0.95fr) minmax(0, 1.05fr);
    gap: 18px;
    align-items: stretch;
}

.admin-classroom-planning-panel {
    padding: 22px;
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.78);
    border: 1px solid rgba(124, 121, 184, 0.14);
    box-shadow: 0 12px 24px rgba(34, 42, 70, 0.04);
    backdrop-filter: blur(6px);
    min-height: 100%;
}

.admin-classroom-planning-panel-heading {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    margin-bottom: 18px;
    padding-bottom: 16px;
    border-bottom: 1px dashed rgba(124, 121, 184, 0.18);
}

.admin-classroom-planning-panel-heading h3 {
    margin: 0 0 2px;
    font-size: 1.06rem;
    font-weight: 800;
    color: var(--text);
}

.admin-classroom-planning-panel-heading p {
    margin: 0;
    color: var(--muted);
    line-height: 1.5;
    font-size: 0.88rem;
}

.admin-classroom-planning-panel-icon {
    width: 44px;
    height: 44px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    font-size: 1.25rem;
    line-height: 1;
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.18), rgba(124, 121, 184, 0.06));
    border: 1px solid rgba(124, 121, 184, 0.20);
    color: var(--primary-dark);
}

.admin-classroom-planning-field-stack,
.admin-classroom-planning-schedule {
    display: grid;
    gap: 16px;
}

.admin-classroom-planning-volunteers {
    display: grid;
    gap: 12px;
}

.admin-classroom-planning-volunteer-picker {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px;
    max-height: 290px;
    overflow-y: auto;
    padding: 4px 4px 8px;
}

.admin-classroom-planning-teacher-picker {
    display: grid;
    gap: 10px;
    max-height: 180px;
    overflow-y: auto;
    padding-right: 4px;
}

.admin-classroom-planning-teacher-card,
.admin-classroom-planning-volunteer-card {
    position: relative;
    width: 100%;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 18px;
    border: 1px solid var(--border);
    background: rgba(255, 255, 255, 0.94);
    cursor: pointer;
    transition: transform 160ms ease, border-color 160ms ease, box-shadow 160ms ease, background 160ms ease;
}

.admin-classroom-planning-teacher-card:hover,
.admin-classroom-planning-volunteer-card:hover {
    transform: translateY(-2px);
    border-color: rgba(124, 121, 184, 0.20);
    box-shadow: 0 12px 24px rgba(34, 42, 70, 0.08);
}

.admin-classroom-planning-teacher-card input,
.admin-classroom-planning-volunteer-card input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.admin-classroom-planning-teacher-card:has(input:checked),
.admin-classroom-planning-volunteer-card:has(input:checked) {
    border-color: rgba(124, 121, 184, 0.18);
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.09), rgba(124, 121, 184, 0.03));
    box-shadow: 0 10px 20px rgba(34, 42, 70, 0.08);
}

.admin-classroom-planning-teacher-avatar,
.admin-classroom-planning-volunteer-avatar {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.85), rgba(124, 121, 184, 0.58));
    color: white;
    font-weight: 800;
    font-size: 1.1rem;
    border: 1px solid rgba(124, 121, 184, 0.16);
}

.admin-classroom-planning-teacher-avatar img,
.admin-classroom-planning-volunteer-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.admin-classroom-planning-teacher-copy {
    display: grid;
    gap: 3px;
    min-width: 0;
}

.admin-classroom-planning-teacher-copy strong {
    line-height: 1.2;
}

.admin-classroom-planning-teacher-copy span {
    color: var(--muted);
    font-size: 0.92rem;
    line-height: 1.4;
    word-break: break-word;
}

.admin-classroom-planning-volunteer-name {
    font-weight: 700;
    color: var(--text);
    line-height: 1.25;
    word-break: break-word;
    text-align: left;
}

.admin-classroom-planning-teacher-card:has(input:checked) .admin-classroom-planning-teacher-avatar,
.admin-classroom-planning-volunteer-card:has(input:checked) .admin-classroom-planning-volunteer-avatar {
    box-shadow: 0 0 0 4px rgba(124, 121, 184, 0.10);
}

.admin-classroom-planning-teacher-card:has(input:checked) .admin-classroom-planning-teacher-copy strong::after,
.admin-classroom-planning-volunteer-card:has(input:checked) .admin-classroom-planning-volunteer-name::after {
    content: "Selected";
    display: inline-flex;
    margin-left: 10px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(124, 121, 184, 0.12);
    color: var(--primary-dark);
    font-size: 0.76rem;
    font-weight: 800;
    letter-spacing: 0.01em;
    vertical-align: middle;
}

.admin-classroom-planning-teacher-card-empty .admin-classroom-planning-teacher-avatar {
    background: rgba(124, 121, 184, 0.10);
    color: var(--primary-dark);
}

.admin-classroom-planning-schedule-toggle {
    margin-bottom: 2px;
}

.admin-classroom-planning-checkbox {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-weight: 700;
    color: var(--text);
}

.admin-classroom-planning-checkbox input {
    width: 18px;
    height: 18px;
}

.admin-classroom-planning-schedule-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.admin-classroom-planning-actions {
    margin-top: 16px;
}

@media (max-width: 1180px) {
    .admin-classroom-planning-panels {
        grid-template-columns: 1fr;
    }

    .admin-classroom-planning-hero-stats {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 980px) {
    .admin-classroom-planning-filters,
    .admin-classroom-planning-schedule-grid {
        grid-template-columns: 1fr;
    }

    .admin-classroom-planning-summary-main {
        flex-direction: column;
    }

    .admin-classroom-planning-summary-chips {
        justify-content: flex-start;
    }
}

@media (max-width: 760px) {
    .admin-classroom-planning-hero-stats {
        grid-template-columns: 1fr;
    }

    .admin-classroom-planning-summary {
        padding: 22px 20px 20px;
    }
}


/* === Recurring sessions panel — multi-slot, modern card layout === */
.admin-classroom-planning-schedule {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.acp-schedule-active {
    width: 100%;
}

.acp-cadence-card {
    display: grid;
    grid-template-columns: 1fr minmax(180px, 240px);
    align-items: start;
    gap: 16px;
    padding: 16px 18px;
    border-radius: 18px;
    background: linear-gradient(180deg, #fbfbfe 0%, #f4f6fc 100%);
    border: 1px solid var(--border);
}

.acp-cadence-text {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.acp-field-label {
    font-weight: 700;
    color: var(--text);
    font-size: 0.95rem;
}

.acp-field-help {
    margin: 0;
    color: var(--muted);
    font-size: 0.82rem;
    line-height: 1.35;
}

.acp-cadence-select select,
.acp-cadence-select input {
    width: 100%;
    padding: 11px 14px;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: #fff;
    font-size: 0.95rem;
    color: var(--text);
    font-weight: 600;
}

.acp-slots {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.acp-slot-card {
    border-radius: 18px;
    border: 1px solid var(--border);
    background: linear-gradient(180deg, #ffffff 0%, #f8faff 100%);
    box-shadow: 0 6px 18px rgba(34, 42, 70, 0.04);
    padding: 18px 18px 16px;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
}

.acp-slot-card[hidden] {
    display: none;
}

.acp-slot-card:hover {
    border-color: rgba(124, 121, 184, 0.35);
    box-shadow: 0 10px 24px rgba(34, 42, 70, 0.06);
}

.acp-slot-head {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}

.acp-slot-head h4 {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 700;
    color: var(--text);
}

.acp-slot-badge {
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%);
    color: #fff;
    font-weight: 800;
    font-size: 0.95rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 4px 10px rgba(124, 121, 184, 0.35);
}

.acp-slot-tag {
    margin-left: auto;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(124, 121, 184, 0.12);
    color: var(--primary-dark);
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.acp-slot-remove {
    margin-left: auto;
    border: 1px solid rgba(220, 53, 69, 0.25);
    background: rgba(220, 53, 69, 0.06);
    color: #b02a37;
    border-radius: 999px;
    padding: 5px 12px;
    font-size: 0.78rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
}

.acp-slot-remove:hover {
    background: rgba(220, 53, 69, 0.12);
    border-color: rgba(220, 53, 69, 0.45);
}

.acp-slot-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 14px;
}

.acp-slot-grid .auth-field {
    min-width: 0;
}

.acp-slot-grid input,
.acp-slot-grid select {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

@media (max-width: 720px) {
    .acp-cadence-card {
        grid-template-columns: 1fr;
    }
    .acp-slot-grid {
        grid-template-columns: 1fr;
    }
}

.acp-add-slot {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 18px;
    border-radius: 16px;
    background: rgba(124, 121, 184, 0.06);
    border: 1.5px dashed rgba(124, 121, 184, 0.45);
    color: var(--primary-dark);
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.18s ease;
    text-align: left;
}

.acp-add-slot:hover {
    background: rgba(124, 121, 184, 0.10);
    border-color: rgba(124, 121, 184, 0.65);
    transform: translateY(-1px);
}

.acp-add-slot-plus {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #fff;
    border: 1.5px solid rgba(124, 121, 184, 0.55);
    color: var(--primary-dark);
    font-size: 1.4rem;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    flex: 0 0 auto;
}

.acp-add-slot-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.acp-add-slot-text strong {
    color: var(--text);
    font-weight: 700;
    font-size: 0.95rem;
}

.acp-add-slot-text span {
    color: var(--muted);
    font-weight: 500;
    font-size: 0.82rem;
    line-height: 1.35;
}

/* Stack-count pills (create-class modal). */
.acp-stack-pills {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
}

.acp-stack-pill {
    appearance: none;
    background: linear-gradient(180deg, #ffffff 0%, #f8faff 100%);
    border: 1.5px solid var(--border);
    border-radius: 16px;
    padding: 14px 12px;
    cursor: pointer;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    transition: border-color 0.18s ease, transform 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}

.acp-stack-pill strong {
    font-size: 1.4rem;
    color: var(--text);
    font-weight: 800;
    line-height: 1;
}

.acp-stack-pill span {
    font-size: 0.78rem;
    color: var(--muted);
    font-weight: 600;
}

.acp-stack-pill:hover {
    border-color: rgba(124, 121, 184, 0.45);
    transform: translateY(-1px);
}

.acp-stack-pill.is-active {
    border-color: var(--primary);
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.16) 0%, rgba(124, 121, 184, 0.04) 100%);
    box-shadow: 0 8px 18px rgba(124, 121, 184, 0.20);
}

.acp-stack-pill.is-active strong {
    color: var(--primary-dark);
}

.acp-stack-preview {
    margin: 12px 0 0;
    padding: 10px 14px;
    border-radius: 12px;
    background: rgba(124, 121, 184, 0.08);
    color: var(--primary-dark);
    font-size: 0.88rem;
    font-weight: 600;
}

/* Past-session styling on the planning list. */
.admin-classroom-planning-past .admin-classroom-planning-upcoming-progress {
    color: var(--muted);
    font-weight: 600;
    font-size: 0.82rem;
}

.admin-classroom-planning-upcoming-item.is-past-session {
    background: rgba(34, 42, 70, 0.03);
}

.admin-classroom-planning-pill-past {
    background: rgba(34, 42, 70, 0.10);
    color: var(--muted);
}


/* === Schedule adjustments panel === */
.admin-classroom-planning-adjust-panel {
    margin-top: 24px;
    padding: 0;
    border-radius: 24px;
    background:
        radial-gradient(circle at top right, rgba(124, 121, 184, 0.10), transparent 36%),
        linear-gradient(180deg, #ffffff 0%, #f7f8fd 100%);
    border: 1px solid var(--border);
    box-shadow: 0 12px 28px rgba(34, 42, 70, 0.05);
}

.admin-classroom-planning-adjust-panel-collapsible {
    overflow: hidden;
}

.admin-classroom-planning-adjust-summary {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 22px;
    cursor: pointer;
    list-style: none;
}
.admin-classroom-planning-adjust-summary::-webkit-details-marker { display: none; }
.admin-classroom-planning-adjust-summary:hover {
    background: rgba(124, 121, 184, 0.05);
}
.admin-classroom-planning-adjust-summary-text {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.admin-classroom-planning-adjust-summary-text strong {
    color: var(--text);
    font-size: 1.04rem;
    font-weight: 800;
}
.admin-classroom-planning-adjust-summary-text span {
    color: var(--muted);
    font-size: 0.86rem;
    margin-top: 2px;
}
.admin-classroom-planning-adjust-summary-chevron {
    color: var(--muted);
    font-size: 1rem;
    transition: transform 0.2s ease;
    flex-shrink: 0;
}
.admin-classroom-planning-adjust-panel[open] .admin-classroom-planning-adjust-summary-chevron {
    transform: rotate(180deg);
}
.admin-classroom-planning-adjust-panel[open] .admin-classroom-planning-adjust-summary {
    border-bottom: 1px dashed rgba(124, 121, 184, 0.18);
}
.admin-classroom-planning-adjust-body {
    padding: 22px;
}
.admin-classroom-planning-adjust-panel .admin-classroom-planning-panel-heading {
    display: none;
}

/* Vacation banner inside the adjustments panel */
.admin-classroom-planning-vacations {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin: 18px 0 22px;
    padding: 16px 18px;
    border-radius: 18px;
    background: linear-gradient(180deg, #fff8e5 0%, #fff0c5 100%);
    border: 1px solid #ffe3a3;
}
.admin-classroom-planning-vacations-emoji {
    display: inline-grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 14px;
    background: rgba(216, 150, 47, 0.18);
    font-size: 1.35rem;
    line-height: 1;
    text-align: center;
    flex-shrink: 0;
}
.admin-classroom-planning-vacations-content {
    flex: 1;
    min-width: 0;
}
.admin-classroom-planning-vacations-label {
    display: block;
    color: #6b5118;
    font-size: 0.78rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    margin-bottom: 8px;
}
.admin-classroom-planning-vacation-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.admin-classroom-planning-vacation-pill {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border-radius: 999px;
    background: #ffffff;
    border: 1px solid #f0d59b;
    font-size: 0.88rem;
    color: #6b5118;
}
.admin-classroom-planning-vacation-pill strong { color: #6b5118; }
.admin-classroom-planning-vacation-pill span { color: #8a6d1f; }
.admin-classroom-planning-vacations-hint {
    margin: 8px 0 0;
    color: #8a6d1f;
    font-size: 0.84rem;
}

/* Section headings inside the panel */
.admin-classroom-planning-upcoming-heading {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 12px;
    margin: 22px 0 14px;
}
.admin-classroom-planning-upcoming-heading h4,
.admin-classroom-planning-overrides-list h4 {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 800;
    color: var(--text);
}
.admin-classroom-planning-overrides-list h4 {
    margin-top: 24px;
    margin-bottom: 12px;
}
.admin-classroom-planning-upcoming-progress {
    color: var(--muted);
    font-size: 0.9rem;
    font-weight: 700;
}
.admin-classroom-planning-upcoming-progress strong {
    color: var(--primary-dark);
}

.admin-classroom-planning-upcoming-list,
.admin-classroom-planning-overrides-list ul {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 10px;
}

.admin-classroom-planning-upcoming-item {
    padding: 14px 16px;
    border-radius: 18px;
    background: #ffffff;
    border: 1px solid var(--border);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.admin-classroom-planning-upcoming-item:hover {
    border-color: rgba(124, 121, 184, 0.28);
    box-shadow: 0 8px 22px rgba(34, 42, 70, 0.06);
}
.admin-classroom-planning-upcoming-item.is-moved {
    background: linear-gradient(180deg, #f3eefa 0%, #e9e1f6 100%);
    border-color: #d8cbef;
}

.admin-classroom-planning-upcoming-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.admin-classroom-planning-upcoming-seq {
    display: inline-grid;
    place-items: center;
    min-width: 36px;
    height: 36px;
    padding: 0 10px;
    border-radius: 12px;
    background: var(--primary);
    color: #ffffff;
    font-weight: 900;
    font-size: 0.86rem;
    box-shadow: 0 6px 14px rgba(124, 121, 184, 0.24);
}

.admin-classroom-planning-upcoming-text {
    display: grid;
    gap: 2px;
    flex: 1;
    min-width: 0;
}
.admin-classroom-planning-upcoming-text strong {
    color: var(--text);
    font-size: 0.98rem;
}
.admin-classroom-planning-upcoming-sub {
    color: var(--muted);
    font-size: 0.86rem;
}

.admin-classroom-planning-pill-moved {
    background: rgba(139, 127, 191, 0.16);
    color: #5a4a96;
    border-color: rgba(139, 127, 191, 0.32);
}
.admin-classroom-planning-pill-cancelled {
    background: #fdecec;
    color: #a52834;
    border-color: #f5c2c7;
}

/* Adjust button (replaces raw <summary>) */
.admin-classroom-planning-upcoming-actions {
    margin-top: 12px;
}
.admin-classroom-planning-adjust-button {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    border-radius: 999px;
    background: var(--accent);
    border: 1px solid rgba(124, 121, 184, 0.24);
    color: var(--primary-dark);
    font-weight: 800;
    font-size: 0.88rem;
    cursor: pointer;
    list-style: none;
    transition: background 0.15s ease, transform 0.15s ease;
}
.admin-classroom-planning-adjust-button::-webkit-details-marker { display: none; }
.admin-classroom-planning-adjust-button:hover { background: rgba(124, 121, 184, 0.18); }
.admin-classroom-planning-upcoming-actions[open] .admin-classroom-planning-adjust-button {
    background: var(--primary);
    color: #ffffff;
    border-color: var(--primary);
}
.admin-classroom-planning-adjust-button > span[aria-hidden] {
    font-size: 0.95rem;
    line-height: 1;
}

/* Override form */
.admin-classroom-planning-override-form {
    margin-top: 14px;
    padding: 18px;
    border-radius: 18px;
    background: #ffffff;
    border: 1px solid rgba(124, 121, 184, 0.18);
    box-shadow: 0 8px 20px rgba(34, 42, 70, 0.04);
    display: grid;
    gap: 14px;
}

.admin-classroom-planning-override-mode {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 10px;
}
.admin-classroom-planning-mode-card {
    position: relative;
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 16px;
    background: #f7f8fd;
    border: 1.5px solid var(--border);
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease, box-shadow 0.15s ease;
}
.admin-classroom-planning-mode-card input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}
.admin-classroom-planning-mode-card:has(input:checked) {
    border-color: var(--primary);
    background: rgba(124, 121, 184, 0.10);
    box-shadow: 0 0 0 3px rgba(124, 121, 184, 0.10);
}
.admin-classroom-planning-mode-cancel:has(input:checked) {
    border-color: #d04a5a;
    background: #fdecec;
    box-shadow: 0 0 0 3px rgba(208, 74, 90, 0.10);
}
.admin-classroom-planning-mode-icon {
    display: inline-grid;
    place-items: center;
    width: 38px;
    height: 38px;
    border-radius: 12px;
    background: #ffffff;
    border: 1px solid var(--border);
    font-size: 1.2rem;
    line-height: 1;
    text-align: center;
    flex-shrink: 0;
}
.admin-classroom-planning-mode-text {
    display: grid;
    gap: 2px;
    min-width: 0;
}
.admin-classroom-planning-mode-text strong {
    color: var(--text);
    font-size: 0.96rem;
}
.admin-classroom-planning-mode-text > span {
    color: var(--muted);
    font-size: 0.83rem;
    line-height: 1.4;
}

.admin-classroom-planning-override-fields {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
}
.admin-classroom-planning-override-form .auth-field input {
    width: 100%;
    padding: 10px 12px;
    border-radius: 12px;
    border: 1px solid var(--border);
    background: #ffffff;
    font: inherit;
}
.admin-classroom-planning-override-form .auth-field label {
    display: block;
    margin-bottom: 6px;
    color: var(--text);
    font-weight: 700;
    font-size: 0.86rem;
}
.admin-classroom-planning-field-hint {
    color: var(--muted);
    font-weight: 500;
    font-size: 0.78rem;
    margin-left: 4px;
}

/* Active adjustments */
.admin-classroom-planning-override-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 16px;
    border-radius: 16px;
    background: #ffffff;
    border: 1px solid var(--border);
}
.admin-classroom-planning-override-row.is-cancelled {
    background: linear-gradient(180deg, #fdecec 0%, #fbdada 100%);
    border-color: #f4c0c0;
}
.admin-classroom-planning-override-row.is-moved {
    background: linear-gradient(180deg, #f3eefa 0%, #e9e1f6 100%);
    border-color: #d8cbef;
}
.admin-classroom-planning-override-info {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    min-width: 0;
}
.admin-classroom-planning-override-arrow {
    color: var(--muted);
    font-weight: 800;
}

/* Remove button — pill ghost-style, tinted on hover to match the row */
.admin-classroom-planning-remove-button {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 14px;
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.7);
    border: 1px solid rgba(34, 42, 70, 0.12);
    color: var(--text);
    font-weight: 700;
    font-size: 0.86rem;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.admin-classroom-planning-remove-button:hover {
    background: #ffffff;
    border-color: rgba(34, 42, 70, 0.24);
}
.admin-classroom-planning-override-row.is-cancelled .admin-classroom-planning-remove-button {
    border-color: rgba(165, 40, 52, 0.24);
    color: #8c2330;
}
.admin-classroom-planning-override-row.is-cancelled .admin-classroom-planning-remove-button:hover {
    background: #fdecec;
    border-color: rgba(165, 40, 52, 0.4);
    color: #6e1b25;
}
.admin-classroom-planning-override-row.is-moved .admin-classroom-planning-remove-button {
    border-color: rgba(124, 121, 184, 0.28);
    color: var(--primary-dark);
}
.admin-classroom-planning-override-row.is-moved .admin-classroom-planning-remove-button:hover {
    background: rgba(124, 121, 184, 0.12);
    border-color: rgba(124, 121, 184, 0.45);
}

/* Active adjustments — date + time grouped, consistently sized */
.admin-classroom-planning-override-when {
    display: inline-flex;
    align-items: baseline;
    gap: 8px;
    line-height: 1.35;
}
.admin-classroom-planning-override-when strong {
    color: var(--text);
    font-size: 0.96rem;
    font-weight: 800;
}
.admin-classroom-planning-override-time {
    color: var(--muted);
    font-size: 0.92rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.admin-classroom-planning-override-reason {
    color: var(--muted);
    font-size: 0.9rem;
    font-style: italic;
}
.admin-classroom-planning-override-info {
    align-items: baseline;
}

/* === Filter card polish === */
.admin-classroom-planning-filter-card {
    margin-bottom: 22px;
}
.admin-classroom-planning-filters {
    display: grid;
    grid-template-columns: minmax(180px, 1fr) minmax(240px, 1.6fr) auto;
    gap: 16px;
    align-items: end;
}
.admin-classroom-planning-filter-field label {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--text);
    font-weight: 800;
    font-size: 0.86rem;
    margin-bottom: 6px;
}
.admin-classroom-planning-filters select,
.admin-classroom-planning-filters input[type="text"] {
    width: 100%;
    padding: 11px 14px;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: #ffffff;
    font: inherit;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.admin-classroom-planning-filters select:focus,
.admin-classroom-planning-filters input[type="text"]:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(124, 121, 184, 0.16);
}
.admin-classroom-planning-filter-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
}
.admin-classroom-planning-reset-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 16px;
    border-radius: 999px;
    background: var(--accent);
    border: 1px solid rgba(124, 121, 184, 0.20);
    color: var(--primary-dark);
    font-size: 0.9rem;
    font-weight: 700;
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease;
}
.admin-classroom-planning-reset-link::before {
    content: "↺";
    font-size: 1rem;
    line-height: 1;
}
.admin-classroom-planning-reset-link:hover {
    background: rgba(124, 121, 184, 0.18);
    border-color: rgba(124, 121, 184, 0.4);
    color: var(--primary-dark);
}
@media (max-width: 940px) {
    .admin-classroom-planning-filters {
        grid-template-columns: 1fr 1fr;
    }
    .admin-classroom-planning-filter-actions {
        grid-column: 1 / -1;
        justify-content: flex-end;
    }
}
@media (max-width: 600px) {
    .admin-classroom-planning-filters {
        grid-template-columns: 1fr;
    }
}

/* === Top-level vacation card (collapsible) === */
.admin-classroom-planning-vacations-card {
    margin-bottom: 22px;
    overflow: hidden;
    background:
        radial-gradient(circle at top right, rgba(216, 150, 47, 0.12), transparent 32%),
        linear-gradient(180deg, #fffaf0 0%, #fff5e0 100%);
    border: 1px solid #f0d59b;
    padding: 0;
}
.admin-classroom-planning-vacations-summary {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 20px;
    cursor: pointer;
    list-style: none;
}
.admin-classroom-planning-vacations-summary::-webkit-details-marker { display: none; }
.admin-classroom-planning-vacations-summary:hover {
    background: rgba(216, 150, 47, 0.06);
}
.admin-classroom-planning-vacations-summary-text {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.admin-classroom-planning-vacations-summary-text strong {
    color: var(--text);
    font-size: 1rem;
    font-weight: 800;
}
.admin-classroom-planning-vacations-summary-text span {
    color: #8a6d1f;
    font-size: 0.86rem;
    margin-top: 2px;
}
.admin-classroom-planning-vacations-summary-chevron {
    color: #8a6d1f;
    font-size: 1rem;
    transition: transform 0.2s ease;
    flex-shrink: 0;
}
.admin-classroom-planning-vacations-collapsible[open] .admin-classroom-planning-vacations-summary-chevron {
    transform: rotate(180deg);
}
.admin-classroom-planning-vacations-card-body {
    border-top: 1px dashed rgba(216, 150, 47, 0.4);
    padding: 18px 20px 20px;
}
.admin-classroom-planning-vacations-card-help {
    margin: 0 0 16px;
    color: var(--muted);
    font-size: 0.92rem;
    line-height: 1.5;
}
.admin-classroom-planning-vacations-card-heading {
    display: none;
}
.admin-classroom-planning-vacations-card-heading-LEGACY {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 18px;
}
.admin-classroom-planning-vacations-card-emoji {
    display: inline-grid;
    place-items: center;
    width: 48px;
    height: 48px;
    border-radius: 16px;
    background: rgba(216, 150, 47, 0.20);
    font-size: 1.5rem;
    line-height: 1;
    text-align: center;
    flex-shrink: 0;
}
.admin-classroom-planning-vacations-card-heading h2 {
    margin: 0 0 4px;
    font-size: 1.2rem;
    color: var(--text);
}
.admin-classroom-planning-vacations-card-heading p {
    margin: 0;
    color: var(--muted);
    font-size: 0.92rem;
    line-height: 1.5;
}
.admin-classroom-planning-vacation-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 14px;
    margin-bottom: 14px;
}
.admin-classroom-planning-vacation-notes {
    grid-column: 1 / -1;
}
.admin-classroom-planning-vacations-card .auth-field input,
.admin-classroom-planning-vacations-card .auth-field textarea {
    width: 100%;
    padding: 10px 12px;
    border-radius: 12px;
    border: 1px solid #f0d59b;
    background: #ffffff;
    font: inherit;
}
.admin-classroom-planning-vacations-card .auth-field label {
    display: block;
    margin-bottom: 6px;
    color: #6b5118;
    font-weight: 700;
    font-size: 0.86rem;
}
.admin-classroom-planning-vacations-existing {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px dashed rgba(216, 150, 47, 0.4);
}
.admin-classroom-planning-vacations-existing h4 {
    margin: 0 0 10px;
    color: #6b5118;
    font-size: 0.96rem;
    font-weight: 800;
}
.admin-classroom-planning-vacations-list {
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid;
    gap: 8px;
}
.admin-classroom-planning-vacations-list-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    border-radius: 14px;
    background: #ffffff;
    border: 1px solid #f0d59b;
}
.admin-classroom-planning-vacations-list-emoji {
    display: inline-grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 12px;
    background: rgba(216, 150, 47, 0.18);
    font-size: 1.1rem;
    line-height: 1;
    text-align: center;
    flex-shrink: 0;
}
.admin-classroom-planning-vacations-list-text {
    flex: 1;
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: 8px;
    min-width: 0;
}
.admin-classroom-planning-vacations-list-text strong {
    color: #6b5118;
    font-size: 0.96rem;
}
.admin-classroom-planning-vacations-list-text span {
    color: #8a6d1f;
    font-size: 0.86rem;
}
.admin-classroom-planning-remove-button-amber {
    border-color: rgba(216, 150, 47, 0.32);
    color: #6b5118;
}
.admin-classroom-planning-remove-button-amber:hover {
    background: rgba(216, 150, 47, 0.10);
    border-color: rgba(216, 150, 47, 0.6);
}

/* === Empty state === */
.admin-classroom-planning-empty-card {
    background:
        radial-gradient(circle at top right, rgba(124, 121, 184, 0.12), transparent 30%),
        linear-gradient(180deg, #ffffff 0%, #f7f8fd 100%);
}
.admin-classroom-planning-empty-body {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 12px;
    padding: 40px 24px;
}
.admin-classroom-planning-empty-emoji {
    display: inline-grid;
    place-items: center;
    width: 64px;
    height: 64px;
    border-radius: 22px;
    background: var(--accent);
    font-size: 2rem;
    line-height: 1;
    text-align: center;
}
.admin-classroom-planning-empty-body h3 {
    margin: 4px 0 0;
    font-size: 1.15rem;
    color: var(--text);
}
.admin-classroom-planning-empty-body p {
    margin: 0;
    color: var(--muted);
    max-width: 480px;
    line-height: 1.6;
}
.admin-classroom-planning-empty-body .button {
    margin-top: 8px;
}

/* Live filter status pill */
.admin-classroom-planning-filter-status {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-radius: 999px;
    background: rgba(124, 121, 184, 0.12);
    color: var(--primary-dark);
    font-size: 0.84rem;
    font-weight: 700;
}
.admin-classroom-planning-filter-status[hidden] { display: none; }

/* Admin calendar page */
.admin-calendar-filter-card {
    margin-bottom: 18px;
}
.admin-calendar-filters {
    display: grid;
    grid-template-columns: minmax(200px, 1fr) auto;
    gap: 16px;
    align-items: end;
}
.admin-calendar-filter-field label {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--text);
    font-weight: 800;
    font-size: 0.86rem;
    margin-bottom: 6px;
}
.admin-calendar-filters select {
    width: 100%;
    padding: 11px 14px;
    border-radius: 14px;
    border: 1px solid var(--border);
    background: #ffffff;
    font: inherit;
}
.admin-calendar-filter-actions {
    margin: 0;
}
.admin-calendar-people {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 8px;
}

.admin-calendar-person {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 3px 10px 3px 3px;
    border-radius: 999px;
    background: #ffffff;
    border: 1px solid var(--border);
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--text);
    line-height: 1;
    max-width: 100%;
}

.admin-calendar-person-avatar {
    display: inline-grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--primary);
    color: #ffffff;
    font-size: 0.72rem;
    font-weight: 800;
    text-align: center;
    overflow: hidden;
    flex-shrink: 0;
}

.admin-calendar-person-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.admin-calendar-person-name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 110px;
}

.admin-calendar-person-teacher {
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.14), rgba(124, 121, 184, 0.06));
    border-color: rgba(124, 121, 184, 0.32);
    color: var(--primary-dark);
}

.admin-calendar-person-teacher .admin-calendar-person-avatar {
    background: var(--primary);
}

.admin-calendar-person-volunteer {
    background: linear-gradient(135deg, rgba(106, 143, 212, 0.14), rgba(106, 143, 212, 0.06));
    border-color: rgba(106, 143, 212, 0.32);
    color: #3a558f;
}

.admin-calendar-person-volunteer .admin-calendar-person-avatar {
    background: #6a8fd4;
}
.volunteer-calendar-event.is-moved {
    background: linear-gradient(180deg, #f3eefa 0%, #e9e1f6 100%);
    border-color: #d8cbef;
}
@media (max-width: 720px) {
    .admin-calendar-filters {
        grid-template-columns: 1fr;
    }
}

.admin-classroom-planning-hero-actions {
    margin-top: 18px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

/* Small "School" / "Social center" tag inline with the school kicker
   on each classroom row. Keep it tiny — admins glance, not read. */
.admin-classroom-planning-kind-pill {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    padding: 2px 8px;
    margin-left: 6px;
    border-radius: 999px;
    border: 1px solid transparent;
    vertical-align: middle;
}

.admin-classroom-planning-kind-school {
    color: var(--primary-dark);
    background: rgba(124, 121, 184, 0.10);
    border-color: rgba(124, 121, 184, 0.22);
}

.admin-classroom-planning-kind-social_center {
    color: #2d6a55;
    background: rgba(95, 168, 147, 0.16);
    border-color: rgba(95, 168, 147, 0.32);
}

/* ============================================================
   Custom events (admin calendar) — modal-driven create/edit
   ============================================================ */
.admin-events-card {
    margin-top: 18px;
    border-radius: 24px;
    overflow: hidden;
}

.admin-events-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    padding: 18px 22px;
    border-bottom: 1px solid var(--border);
    flex-wrap: wrap;
}

.admin-events-header-text h2 {
    margin: 0 0 4px;
    font-size: 1.15rem;
    display: flex;
    align-items: center;
    gap: 8px;
}

.admin-events-header-text p {
    margin: 0;
    color: var(--muted);
    font-size: 0.92rem;
    line-height: 1.5;
    max-width: 60ch;
}

.admin-events-body {
    padding: 16px 22px 22px;
}

.admin-events-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 10px;
}

.admin-events-row {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    gap: 14px;
    align-items: center;
    padding: 14px 16px;
    border-radius: 18px;
    background: #fff;
    border: 1px solid var(--border);
    border-left: 4px solid rgba(124, 121, 184, 0.25);
    transition: box-shadow 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

.admin-events-row:hover {
    box-shadow: 0 8px 18px rgba(34, 42, 70, 0.06);
    transform: translateY(-1px);
}

.admin-events-row.is-group { border-left-color: #5fa893; }
.admin-events-row.is-personal { border-left-color: #d89a47; }
.admin-events-row.is-inactive { opacity: 0.6; }

.admin-events-row-icon {
    width: 44px;
    height: 44px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    font-size: 1.3rem;
    background: rgba(124, 121, 184, 0.08);
}

.admin-events-row.is-group .admin-events-row-icon { background: rgba(95, 168, 147, 0.18); }
.admin-events-row.is-personal .admin-events-row-icon { background: rgba(216, 154, 71, 0.18); }

.admin-events-row-main { display: grid; gap: 6px; min-width: 0; }

.admin-events-row-title {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.admin-events-row-title strong {
    font-size: 1rem;
    color: var(--text);
}

.admin-events-row-meta {
    color: var(--muted);
    font-size: 0.88rem;
    line-height: 1.55;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: baseline;
}

.admin-events-row-meta-sep {
    opacity: 0.5;
}

.admin-events-row-meta-muted {
    opacity: 0.75;
    font-style: italic;
}

.admin-events-row-desc {
    margin: 4px 0 0;
    color: var(--muted);
    font-size: 0.88rem;
    line-height: 1.5;
}

.admin-events-pill {
    font-size: 0.7rem;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 999px;
    background: rgba(124, 121, 184, 0.10);
    color: var(--primary-dark);
    letter-spacing: 0.02em;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.admin-events-pill-weekly { background: rgba(95, 168, 147, 0.16); color: #2d6a55; }
.admin-events-pill-one_time { background: rgba(216, 154, 71, 0.18); color: #8a5418; }
.admin-events-pill-scope-group { background: rgba(95, 168, 147, 0.16); color: #2d6a55; }
.admin-events-pill-scope-solo { background: rgba(216, 154, 71, 0.18); color: #8a5418; }

/* === Action buttons on each row === */
.admin-events-row-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}

.admin-events-inline-form { display: inline; margin: 0; }

.admin-events-action {
    appearance: none;
    border: 1px solid var(--border);
    background: #fff;
    width: 36px;
    height: 36px;
    border-radius: 12px;
    font-size: 0.95rem;
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: border-color 0.15s ease, background 0.15s ease, transform 0.15s ease;
}

.admin-events-action:hover {
    border-color: rgba(124, 121, 184, 0.45);
    background: rgba(124, 121, 184, 0.06);
    transform: translateY(-1px);
}

.admin-events-action-danger:hover {
    border-color: #d99494;
    background: #fff4f4;
}

/* Status pill that doubles as an active/paused toggle */
.admin-events-status {
    appearance: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px 6px 10px;
    border-radius: 999px;
    border: 1px solid transparent;
    font-size: 0.78rem;
    font-weight: 700;
    cursor: pointer;
    letter-spacing: 0.02em;
    transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

.admin-events-status.is-active {
    color: #2d6a55;
    background: rgba(95, 168, 147, 0.16);
    border-color: rgba(95, 168, 147, 0.36);
}

.admin-events-status.is-paused {
    color: #8a5418;
    background: rgba(216, 154, 71, 0.18);
    border-color: rgba(216, 154, 71, 0.36);
}

.admin-events-status:hover { transform: translateY(-1px); }

.admin-events-status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: currentColor;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.7);
}

.admin-events-status.is-active .admin-events-status-dot { animation: ssm-event-pulse 2.2s infinite; }

@keyframes ssm-event-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

/* === Empty state === */
.admin-events-empty {
    padding: 32px 22px;
    text-align: center;
    display: grid;
    gap: 8px;
    justify-items: center;
    border-radius: 18px;
    border: 1px dashed var(--border);
    background: linear-gradient(180deg, #fbfbfe 0%, #f6f8fd 100%);
}

.admin-events-empty-emoji { font-size: 2.4rem; }
.admin-events-empty h3 { margin: 0; }
.admin-events-empty p {
    margin: 0;
    color: var(--muted);
    max-width: 48ch;
    line-height: 1.55;
}

/* Hide-when-mode-mismatches helper used by the form JS */
.admin-event-form .is-hidden { display: none !important; }

/* Live preview chip inside the event modal */
.admin-event-preview {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 8px 14px;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(124, 121, 184, 0.16) 0%, rgba(124, 121, 184, 0.06) 100%);
    border: 1px solid rgba(124, 121, 184, 0.22);
    color: var(--primary-dark);
    font-size: 0.9rem;
    line-height: 1.35;
    margin-top: 2px;
}

.admin-event-preview[hidden] { display: none; }

.admin-event-preview-label {
    text-transform: uppercase;
    font-size: 0.66rem;
    letter-spacing: 0.06em;
    font-weight: 700;
    opacity: 0.7;
}

.admin-event-preview strong {
    color: var(--text);
    font-weight: 700;
}

.ssm-field-row-1 { grid-template-columns: 1fr; }

@media (max-width: 720px) {
    .admin-events-row { grid-template-columns: 44px 1fr; }
    .admin-events-row-actions {
        grid-column: 1 / -1;
        justify-content: flex-end;
        flex-wrap: wrap;
    }
    .admin-events-header { flex-direction: column; align-items: stretch; }
}
