.nav button{display:flex;align-items:center;justify-content:space-between;gap:8px}.nav-dot{display:none;width:9px;height:9px;border-radius:50%;background:#d94f65;box-shadow:0 0 0 3px #f8dfe5}.nav-dot.show{display:block}.about-info{margin-top:22px;padding:18px;border-radius:18px;background:#faf6fa;text-align:left}.about-info h3{color:var(--purple);margin:13px 0 5px}.about-info p{margin:4px 0}.calendar-head{display:flex;align-items:center;justify-content:space-between;text-transform:capitalize}.calendar-head h2{margin:0}.weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.weekdays{margin:18px 0 7px;text-align:center;color:var(--muted)}.calendar-day{min-height:88px;border:1px solid var(--line);border-radius:14px;background:#faf8fa;padding:8px;text-align:left;display:flex;flex-direction:column;gap:3px;color:var(--text)}.calendar-day:hover{border-color:var(--purple2)}.calendar-day.holiday{background:#fff0f1;border-color:#edc8cc}.calendar-day.away{box-shadow:inset 0 -4px #cdb5e2}.calendar-day small{font-size:9px;color:#9b3040}.day-bars{margin-top:auto;display:grid;gap:2px}.day-bars i{display:block;height:5px;border-radius:4px}.bar-beta{background:#f4b6b6}.bar-angie{background:#b8ddf4}.bar-odalis{background:#bfe3c0}.bar-nelly{background:#f7d2a2}.calendar-legend{display:flex;gap:7px;flex-wrap:wrap;margin-top:16px}.calendar-legend span{padding:6px 10px;border-radius:999px;font-size:12px}.holiday-key{background:#fff0f1;border:1px solid #edc8cc}.calendar-details{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}.shift-panel{text-align:center;margin-bottom:16px}.live-time{font-size:50px;font-weight:800;color:var(--purple);font-variant-numeric:tabular-nums;margin:15px}.working-pulse{display:inline-block;width:13px;height:13px;border-radius:50%;background:#41a66f;box-shadow:0 0 0 7px #dff2e7}.panda-pop{position:fixed;inset:0;background:rgba(255,255,255,.8);z-index:120;display:grid;place-content:center;text-align:center;animation:panda-in .25s ease}.panda-pop div{font-size:110px}.panda-pop b{font-size:28px;color:var(--purple)}@keyframes panda-in{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:none}}@media(max-width:700px){.calendar-day{min-height:66px;padding:5px}.calendar-day small{display:none}.calendar-details{grid-template-columns:1fr}.live-time{font-size:38px}}
.attention-orange{color:#c26a12!important}.alert-panel{border-left:6px solid #e6922e}.alert-count{display:grid;place-items:center;min-width:44px;height:44px;border-radius:50%;background:#fff1df;color:#9b5b12;font-size:20px;font-weight:800}.alert-list{display:grid;gap:7px;margin-top:12px}.alert-row{border:1px solid #efd5ae;background:#fffaf2;border-radius:12px;padding:10px 12px;text-align:left;display:grid;gap:3px;color:var(--text)}.alert-row span{color:#9b5b12;font-size:12px}.calendar-day.meeting-day{background:#eef5ff;border-color:#b8cfee}.meeting-key,.meeting-notice{background:#eef5ff!important;border:1px solid #b8cfee!important}.team-stat-card h2{margin:0}.team-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px}.team-stat-grid div{padding:10px;border-radius:12px;background:#f8f3f7;display:grid}.team-stat-grid b{font-size:22px;color:var(--purple)}.team-stat-grid span{font-size:12px;color:var(--muted)}@media(max-width:600px){.team-stat-grid{grid-template-columns:1fr}.alert-row{padding:9px}}
.summer-offer{background:linear-gradient(135deg,#fff3c8,#ffe4cb)!important;border:1px solid #efc46c!important;color:#7d4910;margin:12px 0}.summer-offer p{margin:7px 0 0;font-weight:750}
.fee-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 12px}.fee-total{border:1px solid transparent;border-radius:18px;padding:16px;text-align:left;display:grid;gap:3px}.fee-total b{font-size:28px}.fee-total span{font-weight:700}.fee-total.ontime{background:#e7f4eb;color:#267a4a;border-color:#c7e2d0}.fee-total.late{background:#fff1df;color:#9b5b12;border-color:#efd5ae}.fee-total.missing{background:#fdebea;color:#a33b38;border-color:#efc8c5}.fee-total.unclassified{background:#eef1f7;color:#536174;border-color:#d3dae6}.status.review{color:#536174}.filter-row{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}@media(max-width:900px){.fee-summary{grid-template-columns:1fr 1fr}}@media(max-width:600px){.fee-summary{grid-template-columns:1fr}.fee-total{padding:12px}.fee-total b{font-size:23px}}
.secure-notice{border-left:5px solid var(--purple);margin-bottom:16px}.internal-toolbar{display:grid;grid-template-columns:repeat(6,minmax(125px,1fr));gap:10px;margin-bottom:16px}.internal-toolbar .field{margin:0}.internal-toolbar select,.internal-toolbar input{width:100%}.capitalize{text-transform:capitalize}.internal-calendar-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:9px;margin-top:14px}.internal-calendar-event{border:0;border-left:6px solid transparent;border-radius:12px;padding:11px;text-align:left;display:grid;gap:3px;cursor:pointer;color:var(--text)}.internal-calendar-event:hover{transform:translateY(-1px)}.internal-calendar-event span,.internal-calendar-event small{display:block}.internal-item{border-left:7px solid transparent}.internal-item-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.internal-item-head>b{font-size:13px}.internal-red{background:#fdebea!important;border-left-color:#c94242!important}.internal-orange{background:#fff1df!important;border-left-color:#e6922e!important}.internal-green{background:#e7f4eb!important;border-left-color:#3f9a63!important}.internal-grey{background:#eeeeef!important;border-left-color:#85858d!important}.internal-search-row{display:flex;gap:10px}.internal-search-row .search{flex:1}.search-group{margin:20px 0}.search-group h2 small{color:var(--muted)}button.search-result{text-align:left;display:grid;gap:5px;color:var(--text)}button.search-result span{color:var(--muted)}.internal-detail{white-space:pre-wrap;word-break:break-word;max-height:55vh;overflow:auto;background:#f7f5f7;padding:14px;border-radius:12px;font-size:12px}@media(max-width:1000px){.internal-toolbar{grid-template-columns:repeat(3,1fr)}}@media(max-width:650px){.internal-toolbar{grid-template-columns:1fr 1fr}.internal-search-row{display:grid}.internal-item-head{align-items:flex-start;flex-direction:column}}
.course{overflow:hidden}.course-poster-link{display:block;width:calc(100% + 36px);margin:-18px -18px 14px;cursor:zoom-in;overflow:hidden}.course-poster-link:focus-visible{outline:3px solid #6d2d62;outline-offset:-3px}.course-poster{display:block;width:100%;height:310px;object-fit:cover;transition:transform 160ms ease}.course-poster-link:hover .course-poster{transform:scale(1.015)}@media(max-width:560px){.course-poster{height:260px}}
.course-roster-modal{width:min(1480px,98vw);max-height:94vh}.course-roster-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.course-roster-head h2{margin:10px 0 2px}.course-roster-settings{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px;background:#faf6fa;border:1px solid var(--line);border-radius:18px;padding:14px;margin:18px 0}.roster-settings-action{align-items:end;margin:0}.course-class-dates{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px}.course-roster-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0}.course-roster-stats div{display:grid;gap:2px;background:#f5edf4;border-radius:14px;padding:12px}.course-roster-stats b{font-size:24px;color:var(--purple)}.course-roster-stats span{font-size:12px;color:var(--muted)}.course-roster-table{max-height:55vh}.course-roster-table .table{min-width:1150px}.course-roster-table td small,.attendance-heading small{display:block;color:var(--muted);margin-top:4px}.roster-date-input{width:130px;border:1px solid #d8cbd5;border-radius:10px;padding:7px}.roster-status-select{border:1px solid #d8cbd5;border-radius:10px;padding:7px;background:#fff}.attendance-heading{text-align:center!important;min-width:76px}.attendance-cell{text-align:center!important}.attendance-check{width:38px;height:38px;border-radius:12px;border:1px solid #d4c8d2;background:#f2eef1;color:#756d74;font-size:20px;font-weight:900}.attendance-check.present{background:#dff2e7;border-color:#a9d4bb;color:#267a4a}.attendance-check.absent{background:#fdebea;border-color:#efc8c5;color:#a33b38}.attendance-check:disabled{opacity:.55}@media(max-width:850px){.course-roster-settings,.course-roster-stats{grid-template-columns:1fr 1fr}.course-roster-head{display:grid}}@media(max-width:560px){.course-roster-settings,.course-roster-stats{grid-template-columns:1fr}.course-roster-modal{width:100%;max-height:96vh}.course-class-dates{grid-template-columns:1fr 1fr}}
.course-roster-stats{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}.course-roster-table .table{min-width:1500px}.roster-payment{display:grid;gap:6px;min-width:145px}.roster-payment select,.roster-payment input{width:100%;border:1px solid #d8cbd5;border-radius:9px;background:#fff;padding:7px}.roster-payment label{display:flex;align-items:center;gap:5px}.roster-payment label span{font-weight:800;color:var(--green)}.attendance-heading{min-width:120px}.attendance-checklist{display:grid;gap:5px;min-width:102px;border-radius:11px;transition:box-shadow .16s ease}.attendance-checklist.saving{pointer-events:none;box-shadow:0 0 0 3px rgba(109,45,98,.16)}.attendance-choice{display:flex;align-items:center;gap:5px;border:1px solid #ddd2da;border-radius:9px;padding:5px 7px;background:#fff;color:#746d75;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.attendance-choice input{width:16px;height:16px;margin:0}.attendance-choice span{font-size:16px;font-weight:900}.attendance-choice small{margin:0!important;color:inherit!important}.attendance-choice.present.selected{background:#dff2e7;border-color:#8fc9aa;color:#267a4a}.attendance-choice.absent.selected{background:#fdebea;border-color:#e6aaa6;color:#a33b38}.connection-banner{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:140;display:flex;align-items:center;gap:12px;max-width:min(680px,calc(100vw - 24px));padding:12px 16px;border-radius:16px;box-shadow:0 12px 35px rgba(32,25,31,.2);font-size:14px}.connection-banner[hidden]{display:none}.connection-banner.offline{background:#382f37;color:#fff}.connection-banner.pending{background:#fff3d8;color:#704b10;border:1px solid #e7c575}.connection-banner span{min-width:0}.connection-banner button{border:0;border-radius:10px;background:var(--purple);color:#fff;font-weight:800;padding:8px 11px;white-space:nowrap}@media(max-width:560px){.connection-banner{align-items:flex-start;flex-direction:column}.connection-banner button{width:100%}}
.roster-payment label.roster-payment-date{display:grid;gap:3px}.roster-payment-date small{margin:0!important}

.easy-progress{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;margin:10px 0 8px;border-radius:14px;background:#f4eaf3;color:#512047}.easy-progress b{font-size:1rem}.easy-progress span{font-weight:700}.easy-help{margin:0 0 16px;color:#5f5360;font-size:.96rem}.welcome-card .stack>button,#modal .stack>button{min-height:62px;font-size:1.05rem;padding:14px 16px}.welcome-card .stack label,#modal .stack label{font-size:1rem;font-weight:650}.welcome-card input,.welcome-card select,#modal input,#modal select{min-height:50px;font-size:1rem}.welcome-card .back-link,#modal .back-link{min-height:44px;font-weight:750}#staff-confirm-cita{width:100%;min-height:58px;font-size:1.08rem}(max-width:640px){.easy-progress{align-items:flex-start;flex-direction:column;gap:3px}.welcome-card .stack>button,#modal .stack>button{width:100%;text-align:left}}
