@import url("https://cdn.jsdelivr.net/npm/@tabler/icons-webfont@latest/tabler-icons.min.css");:root{--sidebar:#3d5a80;--page:#f4f7fb;--panel:#ffffff;--line:#d8e4f0;--line-soft:#eaf0f8;--color-background-secondary:#eef4fa;--color-border-tertiary:#d8e4f0;--ink:#1a2a3a;--text:#2a4060;--color-text-secondary:#7a90a8;--muted:#7a90a8;--muted-soft:#a8bccc;--blue-1:#3d5a80;--blue-2:#5e86b0;--blue-3:#98c1d9;--blue-4:#2a3f5a;--focus:rgba(61,90,128,0.22);--danger:#8c2a2a;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body,html{min-height:100%}body{margin:0;background:var(--page);color:var(--text);font-size:16px;font-weight:400}button,input,select,textarea{font:inherit}.button-like,button{min-height:38px;border:1px solid var(--line);border-radius:6px;padding:0 12px;background:var(--panel);color:var(--text);cursor:pointer;text-decoration:none}.button-like:hover,button:hover{background:#f8fbff}.button-like:focus-visible,button:focus-visible,input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue-2);box-shadow:0 0 0 3px var(--focus)}button.primary{background:var(--blue-1);border-color:var(--blue-1);color:#ffffff;font-weight:500}button.primary:hover{background:var(--blue-4)}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:6px;background:#ffffff;color:var(--ink);min-height:38px;padding:10px 12px}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:linear-gradient(45deg,transparent 50%,var(--muted) 50%) calc(100% - 17px) 50% /6px 6px no-repeat,linear-gradient(135deg,var(--muted) 50%,transparent 50%) calc(100% - 12px) 50% /6px 6px no-repeat,#ffffff;padding-right:34px}textarea{min-height:84px;resize:vertical}.app-shell{height:100vh;background:var(--page)}.app-shell,.sidebar{display:flex;overflow:hidden}.sidebar{width:225px;flex:0 0 auto;min-height:0;flex-direction:column;background:var(--sidebar);transition:width .22s ease}.sidebar-collapsed .sidebar{width:56px}.brand{display:flex;align-items:center;gap:9px;min-height:58px;padding:10px;border-bottom:.5px solid rgba(255,255,255,.12)}.brand h1{margin:0;color:#ffffff;font-size:12.5px;font-weight:500;line-height:1.2;white-space:nowrap}.brand p{margin:2px 0 0;color:rgba(255,255,255,.5);font-size:10px;line-height:1.2}.brand-copy{min-width:0;overflow:hidden;opacity:1;width:158px;transition:opacity .18s ease,width .22s ease}.sidebar-toggle{width:34px;min-height:34px;flex:0 0 34px;border:0;border-radius:8px;padding:0;background:rgba(255,255,255,.12);color:#ffffff;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}.sidebar-toggle:hover{background:rgba(255,255,255,.2)}.sidebar-toggle span{width:16px;height:2px;border-radius:99px;background:#ffffff}.sidebar-collapsed .brand-copy{width:0;opacity:0;overflow:hidden}.sidebar-inner{flex:1 1;min-height:0;display:flex;flex-direction:column;gap:12px;overflow:auto;padding:10px 8px}.sidebar-nav{display:grid;grid-gap:4px;gap:4px}.side-nav-item{width:100%;min-height:36px;display:flex;align-items:center;gap:10px;border:0;border-radius:8px;padding:0 10px;background:transparent;color:rgba(255,255,255,.6);font-size:13px;text-align:left}.side-nav-item:hover{background:rgba(255,255,255,.08);color:#ffffff}.side-nav-item.active{border-radius:8px;background:rgba(255,255,255,.13);color:#ffffff}.side-nav-icon{width:18px;height:18px;flex:0 0 18px;display:block;color:currentColor;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.side-nav-label{min-width:0;overflow:hidden;opacity:1;width:145px;white-space:nowrap;transition:opacity .18s ease,width .22s ease}.side-nav-label-short{display:none}.sidebar-collapsed .side-nav-item{justify-content:center;padding:0}.sidebar-collapsed .side-nav-label{width:0;opacity:0;overflow:hidden}.sidebar-stats{display:grid;grid-gap:6px;gap:6px;max-height:180px;opacity:1;overflow:hidden;transition:opacity .18s ease,max-height .22s ease}.sidebar-collapsed .sidebar-stats{max-height:0;opacity:0;pointer-events:none}.sidebar-auth{margin-top:auto;padding:8px 2px 0}.sidebar-collapsed .sidebar-auth{display:flex;justify-content:center;padding-inline:0}.sidebar-stat-card{display:grid;grid-gap:5px;gap:5px;border:1px solid rgba(255,255,255,.15);border-radius:8px;padding:11px 13px;background:rgba(255,255,255,.1)}.sidebar-stat-card span{color:rgba(255,255,255,.75);font-size:11px;line-height:1.2}.sidebar-stat-card strong{color:#ffffff;font-size:20px;font-weight:500;line-height:1.1}.sidebar-stat-card .owed-value{color:#f4a0a0}.sidebar-divider{height:.5px;margin:4px 0;background:rgba(255,255,255,.12)}.student-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.student-header-actions{display:inline-flex;align-items:center;gap:4px}.student-header-actions button{min-height:0;border:0;border-radius:4px;padding:3px 7px;background:rgba(255,255,255,.1);color:rgba(255,255,255,.7);font-size:10px}.student-header-actions button:hover{background:rgba(255,255,255,.16)}.student-list{display:grid;grid-gap:3px;gap:3px;overflow:auto}.student-list-label{color:rgba(255,255,255,.45);font-size:10px;letter-spacing:.08em;line-height:1.2;text-transform:uppercase}.student-pill{width:100%;min-height:0;display:flex;align-items:center;gap:9px;border:0;border-radius:6px;padding:7px 8px;background:transparent;text-align:left}.student-pill:hover{background:rgba(255,255,255,.08)}.student-pill.active{background:rgba(255,255,255,.18)}.student-avatar{width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 28px;border-radius:50%;background:rgba(255,255,255,.2);color:#ffffff;font-size:10px;font-weight:500;line-height:1}.student-copy{min-width:0;display:grid;grid-gap:2px;gap:2px}.student-name{color:rgba(255,255,255,.85);font-size:12.5px}.student-name,.student-subject{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}.student-subject{color:rgba(255,255,255,.45);font-size:10.5px}.status-dot,.student-dot,.swatch{width:7px;height:7px;border-radius:50%;background:var(--student-color,var(--blue-2));flex:0 0 auto}.main-area{flex:1 1 auto;min-width:0;min-height:0;display:flex;flex-direction:column;transition:flex-basis .22s ease}.sign-in-button{width:100%;min-height:34px;border:0;border-radius:6px;padding:0 12px;background:rgba(255,255,255,.14);color:#ffffff;font-size:13px;font-weight:500;text-align:left}.sign-in-button:hover{background:rgba(255,255,255,.22)}.sidebar-collapsed .sign-in-button{width:34px;min-height:34px;height:34px;display:grid;place-items:center;border-radius:50%;padding:0;overflow:hidden;color:transparent;text-align:center}.sidebar-collapsed .sign-in-button:before{content:"\eb4d";font-family:tabler-icons;font-size:18px;line-height:1;color:#ffffff}.content-area{flex:1 1;min-height:0;overflow:auto;padding:0 16px 18px}.page-heading{min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 -16px 14px;padding:0 16px;border-bottom:.5px solid var(--color-border-tertiary);background:#ffffff}.page-heading-copy{display:inline-flex;align-items:baseline;gap:10px}.page-heading h2{margin:0;color:var(--text);line-height:1.25}.page-heading-copy span{color:var(--muted);line-height:1.2}.page-heading-action{display:inline-flex;align-items:center;gap:5px;min-height:34px;white-space:nowrap}.calendar-hint,.dashboard-empty,.empty,.muted{color:var(--muted);font-size:12.5px}.empty{padding:18px}.dashboard-section{display:grid;grid-gap:12px;gap:12px}.calendar-section,.progress-section{min-height:0}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.metric-card{min-height:76px;padding:14px 16px;background:#ffffff;border:1px solid var(--line);border-top:2.5px solid var(--blue-1);border-radius:6px}.metric-card:nth-child(2){border-top-color:var(--blue-2)}.metric-card:nth-child(3){border-top-color:var(--blue-3)}.metric-card:nth-child(4){border-top-color:var(--blue-4)}.metric-card span{display:block;color:var(--muted);font-size:11.5px;line-height:1.2}.metric-card strong{display:block;margin-top:5px;color:var(--ink);font-size:22px;font-weight:500;line-height:1.1}.metric-card small{display:block;margin-top:4px;color:var(--muted-soft);font-size:11.5px;line-height:1.2}.dashboard-content-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.board,.calendar-surface,.card,.dashboard-card,.homework-column,.table-wrap{background:#ffffff;border:1px solid var(--line);border-radius:8px}.dashboard-card,.overview-card{padding:14px 15px}.dashboard-card header,.overview-card header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.card h3,.dashboard-card h3,.homework-column h3,.overview-card h3{margin:0;color:var(--ink);font-size:13.5px;font-weight:500}.overview-card,.progress-shell{background:#ffffff;border:1px solid var(--line);border-radius:8px}.progress-shell{min-height:520px;overflow:hidden;height:calc(100vh - 108px)}.progress-split{height:100%;min-height:0;display:flex;align-items:stretch;overflow:hidden}.progress-left-pane{min-width:110px;flex:none;overflow:hidden}.progress-left-pane:not(.dragged){flex:0 0 auto}.progress-right-pane{min-width:140px;flex:1 1;overflow:auto;padding:14px}.progress-divider{width:6px;min-height:100%;flex:0 0 6px;display:inline-flex;align-items:center;justify-content:center;gap:2px;border:0;border-left:.5px solid var(--color-border-tertiary);border-right:.5px solid var(--color-border-tertiary);border-radius:0;padding:0;background:var(--color-background-secondary);color:#7a90a8;cursor:col-resize}.is-resizing-progress .progress-divider,.progress-divider:hover{background:#b5d4f4}.progress-divider span{width:2px;height:2px;border-radius:50%;background:currentColor;opacity:.4}.is-resizing-progress{cursor:col-resize;-webkit-user-select:none;-moz-user-select:none;user-select:none}.progress-table-card{height:100%;overflow:auto;padding:0;background:#ffffff;border:0;border-radius:0}.progress-table-header{margin:0;padding:10px 12px;border-bottom:.5px solid var(--color-border-tertiary);color:var(--ink);font-size:13.5px;font-weight:500;line-height:1.2}.progress-table{display:grid;grid-gap:0;gap:0}.progress-row,.progress-table-head{display:flex;align-items:center;gap:8px}.progress-table-head{padding:7px 10px;border-bottom:.5px solid var(--color-border-tertiary);color:var(--muted);font-size:10px;font-weight:500;line-height:1.2}.progress-student-cell,.progress-table-head span:first-child{flex:2 1}.progress-row>span:nth-child(2),.progress-row>span:nth-child(3),.progress-table-head span:nth-child(2),.progress-table-head span:nth-child(3){flex:1 1}.progress-row-arrow,.progress-table-head span:last-child{width:24px;flex:0 0 24px;text-align:right}.progress-row{width:100%;min-height:0;border:0;border-bottom:.5px solid var(--color-border-tertiary);border-left:2.5px solid transparent;border-radius:0;padding:7px 10px 7px 7.5px;background:transparent;color:var(--text);font-size:12px;text-align:left}.progress-row:hover{background:var(--color-background-secondary)}.progress-row.active{border-left-color:#185fa5;background:#e6f1fb}.progress-student-cell{min-width:0;display:inline-flex;align-items:center;gap:8px}.progress-student-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.progress-avatar{width:20px;height:20px;justify-content:center;flex:0 0 20px;border-radius:50%;background:var(--student-color,var(--blue-2));color:#ffffff;font-size:9px;line-height:1}.owed-badge,.progress-avatar{display:inline-flex;align-items:center;font-weight:500}.owed-badge{min-height:0;border-radius:4px;padding:2px 6px;background:#faece7;color:#993c1d;font-size:10px}.muted-amount{color:var(--muted)}.student-progress-detail{display:grid;grid-gap:14px;gap:14px}.progress-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.progress-detail-identity{min-width:0;display:flex;align-items:center;gap:10px}.progress-detail-avatar{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 36px;border-radius:50%;background:var(--student-color,var(--blue-1));color:#ffffff;font-size:13px;font-weight:500}.progress-detail-header h3{margin:0;color:var(--ink);font-size:13.5px;font-weight:500;line-height:1.2}.progress-detail-header p{margin:3px 0 0;color:var(--muted);font-size:10px;line-height:1.2}.progress-actions{display:inline-flex;align-items:flex-start;gap:8px;padding-top:0}.progress-icon-button{width:28px;min-height:28px;height:28px;display:inline-flex;align-items:center;justify-content:center;border:.5px solid var(--color-border-tertiary);border-radius:6px;padding:0;background:#ffffff;color:#185fa5;font-size:16px}.progress-icon-button:hover{background:var(--color-background-secondary)}.progress-action-stack{display:grid;justify-items:center;grid-gap:3px;gap:3px;color:var(--muted);font-size:9px;line-height:1.1}.progress-action-divider{width:.5px;height:18px;margin-top:5px;background:var(--color-border-tertiary)}.topic-progress-section{display:grid;grid-gap:7px;gap:7px;padding-top:10px;border-top:.5px solid var(--color-border-tertiary)}.topic-progress-section h4{margin:0;color:var(--ink);font-size:11.5px;font-weight:500;line-height:1.2}.topic-progress-list{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:12px;line-height:2.2}.topic-pill{display:inline-flex;align-items:center;gap:3px}.topic-pill.done{color:#3b6d11}.topic-pill.done i{color:#3b6d11;font-size:12px}.topic-pill.current{color:#0c447c;font-weight:500;text-decoration:underline;text-underline-offset:3px}.topic-pill.upcoming{color:var(--color-text-secondary);opacity:.5}.progress-chart-section{display:grid;grid-gap:8px;gap:8px}.progress-chart-wrap{height:150px}.progress-chart-legend{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-size:10px;line-height:1.2}.progress-chart-legend span{width:10px;height:2px;background:#185fa5}.progress-chart-legend strong{font-weight:400}.unpaid-total{color:#f4a0a0;font-size:11px;font-weight:500}.r-row{display:flex;align-items:center;gap:7px;min-height:0;padding:6px 0;border:0;border-bottom:.5px solid #eaf0f8;border-radius:0;background:transparent;color:var(--text);font-size:12px;text-align:left;width:100%}.r-row:last-child{border-bottom:0}.r-button:hover{background:#f8fbff}.r-dot{width:6px;height:6px;border-radius:50%;flex:0 0 6px}.r-dot.unpaid{background:#f4a0a0}.r-dot.lesson{background:var(--dot-color)}.r-dot.homework.grade{background:#a0b4c8}.r-dot.homework.missing{background:#efc87a}.r-dot.homework.assigned{background:#5e86b0}.rinfo{flex:1 1;min-width:0}.rname{color:var(--ink);font-weight:500}.rdetail,.rname{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rdetail{color:var(--muted);font-size:11px;margin-top:1px}.rnick{color:#a0b4c8;font-size:10.5px;font-style:italic;white-space:nowrap}.homework-overview-badge,.r-count,.timer-pill{display:inline-flex;align-items:center;justify-content:center;border-radius:99px;padding:2px 8px;font-size:10px;font-weight:500;line-height:1.2;white-space:nowrap}.r-count.blue,.timer-pill{background:#e8f0fc;color:#2a4a8c}.timer-pill{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.timer-pill.now{background:#faeaea;color:#8c2a2a}.r-count.amber{background:#fdf0e2;color:#8c5a20}.homework-overview-badge.grade{background:#f0f2f5;color:#5a6878}.homework-overview-badge.missing{background:#fdf0e2;color:#8c5a20}.homework-overview-badge.assigned{background:#f0eefe;color:#5a3ab0}.homework-status-row,.reminder-row,.upcoming-lesson{min-height:30px;border-bottom:1px solid var(--line-soft);color:var(--text);font-size:12.5px}.reminder-row{display:flex;align-items:center;gap:8px}.status-dot.amber,.status-dot.blue,.status-dot.red{background:var(--blue-2)}.status-dot.amber{background:var(--blue-3)}.status-dot.blue{background:var(--blue-1)}.lesson-list{display:grid}.upcoming-lesson{min-height:30px;display:grid;grid-template-columns:auto minmax(0,max-content) minmax(0,1fr) auto;align-items:center;grid-gap:7px;gap:7px;width:100%;border-top:0;border-left:0;border-right:0;border-radius:0;padding:0;background:transparent;text-align:left}.homework-status-row:hover,.upcoming-lesson:hover{background:#f8fbff}.homework-status-row strong,.upcoming-lesson strong{font-weight:400}.homework-status-row strong,.homework-status-row>span:not(.status-badge),.upcoming-lesson span,.upcoming-lesson strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text);font-size:12.5px}.upcoming-lesson time{color:var(--muted);font-size:12px;white-space:nowrap}.homework-status-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(80px,auto) auto;align-items:center;grid-gap:10px;gap:10px;border-top:0;border-left:0;border-right:0;border-radius:0;padding:0;background:transparent;text-align:left}.homework-status-row:last-child,.reminder-row:last-child,.upcoming-lesson:last-child{border-bottom:0}.status-badge{display:inline-flex;align-items:center;justify-content:center;min-height:18px;border-radius:99px;padding:2px 10px;font-size:10.5px;font-weight:500;line-height:1}.status-badge.done{background:#eef5ec;color:#3a6030}.status-badge.pending{background:#fdf0e2;color:#8c5a20}.status-badge.overdue{background:#faeaea;color:#8c2a2a}.toolbar{display:grid;grid-template-columns:42px 78px 42px 1fr auto auto;align-items:center;grid-gap:8px;gap:8px;margin-bottom:12px}.segmented{display:flex;overflow:hidden;border:1px solid var(--line);border-radius:6px;background:#ffffff}.segmented button{min-height:32px;border:0;border-right:1px solid var(--line);border-radius:0;background:transparent;color:var(--muted);font-size:12.5px}.segmented button:last-child{border-right:0}.segmented button.active{background:#eef4fa;color:var(--ink);font-weight:500}.calendar-page{height:calc(100vh - 120px);min-height:0;display:flex;flex-direction:column;overflow:hidden;background:#ffffff;border:1px solid var(--line);border-radius:8px}.calendar-sticky-header{flex-shrink:0;display:grid;grid-template-columns:52px repeat(7,minmax(0,1fr));border-bottom:.5px solid var(--color-border-tertiary);background:#ffffff}.calendar-header-spacer{min-height:58px;border-right:.5px solid var(--color-border-tertiary)}.calendar-scroll-body{flex:1 1;min-height:0;overflow-y:auto;overflow-x:hidden}.calendar-time-grid{display:grid;grid-template-columns:52px repeat(7,minmax(0,1fr))}.calendar-time-label-column{border-right:.5px solid var(--color-border-tertiary);background:#ffffff}.calendar-hour-label{height:48px;padding:3px 7px 0 0;color:var(--muted);font-size:10px;line-height:1;text-align:right}.calendar-day-column{position:relative;border-right:.5px solid var(--color-border-tertiary);background:#ffffff}.calendar-day-column.today-column,.calendar-day-head.today-column{background:rgba(61,90,128,.025)}.calendar-hour-cell{height:48px;border-bottom:.5px solid var(--color-border-tertiary)}.calendar-topbar{min-height:44px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border-bottom:.5px solid var(--color-border-tertiary);background:#ffffff}.calendar-nav-cluster,.calendar-topbar-left,.calendar-topbar-right{display:flex;align-items:center;gap:10px}.calendar-topbar-title{color:var(--color-text-primary,var(--ink));font-size:13.5px;font-weight:500;line-height:1.2}.calendar-nav-cluster{gap:4px}.calendar-nav-cluster button{width:26px;min-height:26px;height:26px;border:.5px solid var(--color-border-tertiary);border-radius:5px;padding:0;background:transparent;color:var(--color-text-secondary);font-size:18px;line-height:1}.calendar-nav-cluster .today-button{width:auto;padding:0 10px;color:var(--color-text-secondary);font-size:11px}.calendar-view-toggle{height:28px;display:flex;align-items:stretch;overflow:hidden;border:.5px solid var(--color-border-tertiary);border-radius:4px}.calendar-view-toggle button{min-height:0;border:0;border-radius:0;padding:0 14px;background:transparent;color:var(--color-text-secondary);cursor:pointer;font-size:11px}.calendar-view-toggle button.active{background:#e6f1fb;color:#185fa5;font-weight:500}.calendar-view-divider{width:.5px;flex-shrink:0;background:var(--color-border-tertiary)}.calendar-add-button{min-height:0;border:0;border-radius:5px;padding:5px 12px;background:#3d5a80;color:#ffffff;font-size:11px;font-weight:500}.calendar-legend-bar{display:flex;align-items:center;gap:12px;padding:7px 12px;background:var(--color-background-secondary)}.legend-item{display:inline-flex;align-items:center;gap:6px;color:var(--color-text-secondary);font-size:11px}.calendar-legend-dot{width:8px;height:8px;border-radius:50%;background:var(--student-color)}.calendar-legend-hint{margin-left:auto;color:var(--muted);font-size:10px}.board,.calendar-surface,.table-wrap{overflow:hidden}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.day-column,.month-cell,.month-label,.time-header,.time-label{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.month-label,.time-header{background:#eef4fa;color:var(--muted);font-size:12px;font-weight:500;text-align:center}.month-label{padding:9px}.month-cell{min-height:112px;padding:8px;background:#ffffff}.month-cell.muted{background:#f8fbff}.day-number{color:var(--ink);font-size:15px;font-weight:500;margin-bottom:6px}.chip,.timed-event{background:var(--student-color);border:0;border-radius:6px;color:#17324a;text-align:left}.chip{display:block;width:100%;min-height:0;margin-bottom:5px;padding:5px 7px;font-size:12px}.chip strong,.timed-event strong{font-weight:500}.timed-event strong{font-size:11.5px}.chip.unpaid,.timed-event.unpaid{outline:1px dashed rgba(42,64,96,.4);outline-offset:-2px}.calendar-week-scroller{flex:1 1;min-height:0;overflow-y:auto;overflow-x:hidden;background:#ffffff}.calendar-week-grid{display:grid;grid-template-columns:44px minmax(0,1fr)}.calendar-time-column{position:relative;border-right:.5px solid var(--color-border-tertiary)}.calendar-time-sticky{position:-webkit-sticky;position:sticky;top:0;z-index:2;height:36px;background:var(--color-background-primary,var(--page));border-bottom:.5px solid var(--color-border-tertiary)}.calendar-time-labels{position:relative}.calendar-time-label{position:absolute;right:5px;color:var(--muted);font-size:10px;line-height:1;text-align:right}.calendar-days-grid{min-width:0}.calendar-days-header{position:-webkit-sticky;position:sticky;top:0;z-index:2;height:36px;display:grid;grid-template-columns:repeat(7,1fr);background:var(--color-background-primary,var(--page));border-bottom:.5px solid var(--color-border-tertiary)}.calendar-day-head{min-height:58px;display:grid;align-content:center;justify-items:center;grid-gap:4px;gap:4px;border-right:.5px solid var(--color-border-tertiary)}.calendar-day-head span{color:var(--muted);letter-spacing:.04em;line-height:1;text-transform:uppercase}.calendar-day-head strong{width:32px;height:32px;display:grid;place-items:center;border-radius:50%;color:var(--ink);font-weight:500;line-height:1}.calendar-day-head strong.today{background:#3D5A80;color:#ffffff}.calendar-days-body{position:relative;display:grid;grid-template-columns:repeat(7,1fr)}.day-column{position:relative;border-right:.5px solid var(--color-border-tertiary);background:repeating-linear-gradient(to bottom,transparent 0,transparent 15px,rgba(216,228,240,.4) 15.5px,transparent 16px,transparent 31.5px,var(--color-border-tertiary) 32px),#ffffff}.slot-preview{left:2px;right:2px;height:22px;border:1px dashed var(--blue-2);border-radius:4px;background:rgba(152,193,217,.18)}.calendar-current-time,.slot-preview{position:absolute;pointer-events:none}.calendar-current-time{left:0;right:0;z-index:3;height:1.5px;background:#e74c3c}.calendar-current-time span{position:absolute;left:-4px;top:-3.25px;width:8px;height:8px;border-radius:50%;background:#e74c3c}.timed-event{position:absolute;left:3px;right:3px;display:grid;grid-gap:1px;gap:1px;overflow:hidden;border:0;border-radius:5px;padding:3px 5px;background:#d4edda;color:#1a6630;z-index:1;text-align:left}.timed-event:hover{filter:brightness(.95)}.timed-event span,.timed-event strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:1.2}.timed-event strong{font-weight:500}.timed-event span{opacity:.75}.board,.cards{display:grid;grid-gap:12px;gap:12px;padding:12px}.cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.card,.homework-column{padding:14px}.card p,.homework-card p{color:var(--text);font-size:12.5px;line-height:1.45}.card strong{font-weight:500}.homework-board{grid-template-columns:repeat(3,minmax(220px,1fr));padding:0;border:0;background:transparent;overflow:visible}.homework-column{background:#eef4fa;border-color:#c7d9ec}.homework-column h3{color:var(--blue-1)}.homework-card{margin-top:10px;cursor:-webkit-grab;cursor:grab;background:#f8fbff;border-color:#cfe0f0}.homework-column.drag-over{background:#e3edf8}.overdue-days{color:var(--danger);font-weight:500}.card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.card-actions .button-like{display:inline-flex;align-items:center;justify-content:center}table{width:100%;border-collapse:collapse;background:#ffffff}td,th{padding:11px 12px;border-bottom:1px solid var(--line-soft);color:var(--text);font-size:12.5px;text-align:left}th{color:var(--muted);font-weight:500}dialog{width:min(560px,calc(100vw - 48px));max-height:calc(100vh - 64px);position:fixed;inset:50% auto auto 50%;transform:translate(-50%,-50%);margin:0;border:0;border-radius:8px;padding:0;background:transparent}dialog[open]{display:flex}dialog::-webkit-backdrop{background:rgba(26,42,58,.56);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}dialog::backdrop{background:rgba(26,42,58,.56);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.modal-form{width:100%;max-height:calc(100vh - 64px);display:grid;grid-gap:12px;gap:12px;overflow:auto;padding:0 16px 16px;background:#ffffff;border:1px solid var(--line);border-radius:8px}.class-dialog{width:min(520px,calc(100vw - 48px))}.compact-class-form{gap:9px;padding:0 14px 14px}.compact-class-form header{margin:0 -14px 2px}.compact-class-form .form-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.compact-class-form .date-price-paid-row{grid-template-columns:minmax(0,1.45fr) minmax(96px,.7fr) minmax(88px,.45fr)}.compact-class-form input,.compact-class-form select{min-height:34px;padding:7px 10px}.compact-class-form textarea{min-height:68px;padding:8px 10px}.modal-form.compact-class-form footer{padding-top:10px;margin-top:0;bottom:-14px}.form-row,.modal-form footer,.modal-form header{display:grid;grid-template-columns:1fr auto;align-items:center;grid-gap:12px;gap:12px}.modal-form header{margin:0 -16px 2px;padding:9px 16px;border-radius:8px 8px 0 0;background:var(--blue-1)}.modal-form h3{margin:0;color:#ffffff;font-size:15px;font-weight:500}.modal-form label{display:grid;grid-gap:6px;gap:6px;color:var(--ink);font-size:12.5px;font-weight:500}.modal-form footer{position:-webkit-sticky;position:sticky;bottom:-16px;grid-template-columns:auto 1fr auto auto;margin-top:4px;padding-top:14px;border-top:1px solid var(--line-soft);background:#ffffff}.icon-button{width:28px;min-height:28px;padding:0;border-color:rgba(26,42,58,.28);background:rgba(255,255,255,.06);font-size:18px;line-height:1;color:#0f2740}.icon-button:hover{background:rgba(255,255,255,.16)}.form-error{margin:0;padding:9px 10px;border:1px solid #f1cece;border-radius:6px;background:#faeaea;color:var(--danger);font-size:12.5px}.checkbox-field .checkbox-inline{display:inline-flex;align-items:center;gap:8px;min-height:34px;font-weight:400}.checkbox-field .checkbox-inline input{width:auto}.readonly-field{display:grid;grid-gap:6px;gap:6px}.readonly-field span{color:var(--ink);font-size:12.5px;font-weight:500}.readonly-field strong{display:flex;border:1px solid var(--line);border-radius:6px;padding:0 10px;background:#f8fbff;color:var(--ink);font-weight:400}.paid-toggle,.readonly-field strong{min-height:34px;align-items:center;font-size:13px}.paid-toggle{align-self:end;justify-self:stretch;width:100%;display:inline-flex;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:8px;padding:0 13px;background:#ffffff;color:var(--muted);font-weight:500}.paid-toggle span{width:15px;height:15px;border:2px solid #cfe0f0;border-radius:50%}.paid-toggle.active{border-color:var(--blue-2);color:var(--blue-1)}.paid-toggle.active span{border-color:var(--blue-1);box-shadow:inset 0 0 0 4px #ffffff;background:var(--blue-1)}.repeat-panel{display:grid;grid-gap:8px;gap:8px;padding:0;border:0;border-radius:0;background:transparent}.collapsible-section{display:grid;grid-gap:9px;gap:9px}.collapsible-toggle{min-height:34px;display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:8px;padding:0 12px;background:#f8fbff;color:var(--ink);font-size:13px;font-weight:500}.collapsible-toggle span:last-child{color:var(--muted);font-size:12px;font-weight:400}.collapsible-content{display:grid;grid-gap:9px;gap:9px}.repeat-details{display:none;gap:10px}.repeat-panel.repeat-on .repeat-details{display:grid}.weekday-picker{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));grid-gap:6px;gap:6px}.weekday-picker button{width:100%;min-height:28px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:99px;padding:0 11px;background:#ffffff;color:var(--text);font-size:12.5px;font-weight:400}.weekday-picker button.active{border-color:var(--blue-1);background:#eef4fa;color:var(--blue-1);font-weight:500}.danger{border-color:#f1cece;background:#faeaea;color:var(--danger)}@media (max-width:1050px){.dashboard-content-grid,.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){dialog{width:min(520px,calc(100vw - 32px))}.modal-form,dialog{max-height:calc(100vh - 40px)}.has-short-label .side-nav-label-full{display:none}.has-short-label .side-nav-label-short{display:inline}.content-area{padding:12px}.dashboard-content-grid,.form-row,.homework-board,.metrics-grid,.modal-form footer,.toolbar{grid-template-columns:1fr}.progress-split{flex-direction:column;gap:12px}.progress-left-pane,.progress-right-pane{width:100%!important;min-width:0}.progress-right-pane{padding-left:0}.progress-divider{display:none}.calendar-meta,.progress-detail-header{align-items:stretch;flex-direction:column}.calendar-hint{text-align:left}}.brand h1,.calendar-topbar-title,.card h3,.dashboard-card h3,.homework-column h3,.modal-form h3,.overview-card h3,.page-heading-action,.progress-detail-header h3,.progress-table-header,.side-nav-item,.sign-in-button,.student-name{font-size:17px}.brand p,.calendar-add-button,.calendar-day-head span,.calendar-legend-hint,.calendar-nav-cluster .today-button,.calendar-time-label,.calendar-view-toggle button,.card p,.chip,.collapsible-toggle,.collapsible-toggle span:last-child,.form-error,.homework-card p,.homework-overview-badge,.homework-status-row,.homework-status-row strong,.homework-status-row>span:not(.status-badge),.legend-item,.metric-card small,.metric-card span,.modal-form label,.month-label,.owed-badge,.paid-toggle,.progress-action-stack,.progress-chart-legend,.progress-detail-header p,.progress-row,.progress-table-head,.r-count,.r-row,.rdetail,.readonly-field span,.readonly-field strong,.reminder-row,.rnick,.segmented button,.sidebar-stat-card span,.status-badge,.student-header-actions button,.student-list-label,.student-subject,.time-header,.timed-event span,.timed-event strong,.timer-pill,.topic-progress-section h4,.unpaid-total,.upcoming-lesson,.upcoming-lesson span,.upcoming-lesson strong,.upcoming-lesson time,.weekday-picker button,td,th{font-size:15px}.metric-card strong,.page-heading h2,.sidebar-stat-card strong{font-size:26px}.calendar-day-head strong,.day-number,.icon-button,.progress-icon-button{font-size:20px}.page-heading h2{font-size:16px;font-weight:500}.page-heading-copy span{font-size:12px}.calendar-day-head span{font-size:11px}.calendar-day-head strong{font-size:20px}.timed-event,.timed-event span,.timed-event strong{font-size:11px}