.student-picker{display:grid;gap:10px;border:1px solid var(--line);border-radius:9px;padding:12px;background:#f8fbfc}
.student-picker label{display:grid;gap:5px}
.student-picker small,.form-note{font-weight:400;color:var(--muted);margin:0}
.loading-state{position:fixed;left:50%;top:22px;transform:translateX(-50%);z-index:20;background:#173e4d;color:#fff;padding:10px 16px;border-radius:8px;box-shadow:0 8px 22px rgba(15,43,55,.2)}
.connection-gate{position:fixed;inset:0;z-index:30;display:grid;place-items:center;background:rgba(10,33,42,.58);padding:20px}
.connection-gate>div{max-width:470px;background:#fff;border-radius:14px;padding:28px;box-shadow:0 25px 70px rgba(15,43,55,.3)}
.connection-gate h2{margin-top:0}
.connect-link{display:inline-block;text-decoration:none;margin-top:8px}
.toast{z-index:40}
.sidebar{position:sticky;top:0;height:100vh;overflow:hidden}
#teacherFilters{max-height:42vh;overflow-y:auto;padding-right:4px;scrollbar-width:thin}
dialog{max-height:calc(100vh - 32px);overflow:hidden}
dialog form{max-height:calc(100vh - 32px);overflow-y:auto;overflow-x:hidden}
.student-picker,.student-picker label,.form-grid>*{min-width:0}
@media(max-width:850px){.sidebar{position:static;height:auto;overflow:visible}}
.group-sync-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:4px 0 10px}.group-sync-bar p{margin:0}.group-sync-bar button{white-space:nowrap}.group-sync-bar button:disabled{opacity:.55;cursor:wait}@media(max-width:650px){.group-sync-bar{align-items:stretch;flex-direction:column}}

/* Compact, neutral calendar theme. */
:root{--ink:#202a32;--muted:#7c8790;--line:#e2e7ea;--bg:#f6f7f8;--amo:#278caf;--amo-dark:#176f8d;--nav:#fff;--hour:52px;--head:54px;--time:58px}
body{font-size:13px;background:var(--bg)}
.app-shell{grid-template-columns:220px 1fr}
.sidebar{background:#fff;color:var(--ink);border-right:1px solid var(--line);padding:14px 12px;gap:12px}
.brand{gap:9px}.brand-mark{width:32px;height:32px;border-radius:8px;font-size:16px;background:var(--amo)}
.brand strong{font-size:14px}.brand span{font-size:10px;color:#8a959d}
.full{padding:9px 10px;border-radius:7px}
.side-nav{gap:3px}.side-nav button{min-height:34px;padding:7px 9px;color:#59656e;border-radius:7px}
.side-nav button:hover,.side-nav button.active{background:#eef5f7;color:#176f8d}
.side-nav span{flex-basis:22px}.side-nav b{background:#e5f1f4;color:#176f8d}
.filter-section{border-color:#e8ecef;padding-top:11px}.filter-section h2{font-size:10px;color:#909aa2;margin-bottom:6px}
.filter-section .filter-row{min-height:30px;margin:1px 0;padding:4px 5px;gap:7px;color:#4e5a63}
.filter-section .filter-row:hover{background:#f3f6f7;color:#26343d}
.checkbox-ui{width:15px;height:15px;flex-basis:15px;border-color:#aebbc2;background:#fff}
.filter-row input:checked+.checkbox-ui{background:var(--amo);border-color:var(--amo)}
.filter-row input:checked+.checkbox-ui::after{font-size:10px}
.filter-row .dot{width:6px;height:6px;flex-basis:6px}
#teacherFilters{max-height:51vh}
.sidebar-note{display:none}
.main{padding:15px 18px}
.topbar{margin-bottom:11px}.topbar .eyebrow{display:none}.topbar h1{font-size:21px;margin:0}
.top-actions{gap:6px}.ghost{padding:7px 10px;border-radius:7px}
.nav-pair,.view-switch{border-radius:7px}.nav-pair button,.view-switch button{padding:7px 10px}
.calendar-card{border-radius:9px;box-shadow:none}.calendar-meta{height:46px;padding:0 13px}
.legend{gap:12px}.square{width:8px;height:8px}
.calendar{grid-template-columns:var(--time) repeat(7,minmax(108px,1fr));min-width:850px}
.corner,.day-head{background:#fafbfb}.day-head{gap:6px}.day-head strong{font-size:16px}
.day-head.today strong{width:28px;height:28px}.time-label{right:9px;font-size:10px}
.events-layer{cursor:cell}
.slot-hover{position:absolute;z-index:0;border-radius:4px;background:rgba(39,140,175,.09);border:1px solid rgba(39,140,175,.22);pointer-events:none}
.lesson{z-index:1;border-radius:5px;padding:5px 6px;border-left-width:3px;box-shadow:none}
.lesson:hover{box-shadow:0 3px 10px rgba(34,52,62,.12)}
.lesson.group{background:#eaf5ef;border-color:#5aa77b}.lesson.individual{background:#f0eef8;border-color:#8276bd}
.lesson .time,.lesson small{font-size:9px}.lesson strong{font-size:11px}
dialog{width:min(560px,calc(100vw - 24px));border-radius:10px;box-shadow:0 20px 55px rgba(25,36,43,.22)}
dialog::backdrop{background:rgba(29,39,45,.38)}
dialog form,.large-dialog{padding:18px}.modal-head{margin-bottom:12px}.modal-head h2{font-size:18px}
.icon-close{width:28px;height:28px;font-size:18px}.segmented{margin-bottom:12px}.segmented span{padding:6px}
.form-grid{gap:10px}.form-grid input,.form-grid select,.inline-form input,.inline-form select{padding:8px;border-radius:6px}
.modal-actions{margin-top:16px}
@media(max-width:850px){.app-shell{grid-template-columns:1fr}.main{padding:10px}.calendar{min-width:820px}}

/* Group-first schedule: rows are amoCRM groups, columns are calendar dates. */
.group-schedule-card{background:#fff;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.group-schedule-legend{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px}.schedule-dot{width:7px;height:7px;border-radius:50%;background:var(--amo)}
.group-schedule-scroll{overflow:auto}.group-schedule-grid{display:grid;grid-template-columns:180px repeat(var(--schedule-days),minmax(72px,1fr));min-width:1240px}
.schedule-head{position:sticky;top:0;z-index:2;min-height:48px;display:flex;align-items:center;justify-content:center;gap:5px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fafbfb;color:#87929a;text-transform:uppercase}
.schedule-head span{font-size:9px}.schedule-head strong{font-size:15px;color:#37434b}.schedule-head.today strong{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:var(--amo);color:#fff}.schedule-head.weekend{background:#f7f8f9}
.schedule-group-head{left:0;z-index:4;justify-content:flex-start;padding:0 12px;font-size:10px;letter-spacing:.06em}
.schedule-group{position:sticky;left:0;z-index:1;min-height:52px;display:flex;flex-direction:column;justify-content:center;padding:7px 12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff}.schedule-group strong{font-size:13px}.schedule-group span{margin-top:2px;color:var(--muted);font-size:9px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.schedule-cell{min-height:52px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;padding:5px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:3px;cursor:cell}.schedule-cell:hover{background:#eef7fa}.schedule-cell.weekend{background:#fafbfb}.schedule-cell.weekend:hover{background:#eef7fa}.schedule-cell.today{box-shadow:inset 0 0 0 1px rgba(39,140,175,.25)}
.schedule-time{display:block;border-radius:5px;background:#e5f2f6;color:#176f8d;padding:3px 5px;font-size:10px;font-weight:700;text-align:center;cursor:pointer}.schedule-time:hover{background:#d4eaf1}
@media(max-width:850px){.group-schedule-grid{grid-template-columns:145px repeat(var(--schedule-days),68px)}.schedule-group{padding-left:9px}}
