:root{--bg:#f3efe4;--paper:#fffcf5f0;--ink:#1d1a17;--muted:#6b6257;--line:#2d231724;--accent:#a6472a;--active:#dc783c33;--planned:#f5c75557;--reviewed:#5480702e;--shadow:0 24px 80px #4228101f;--w-surname:92px;--w-firstname:72px;--w-score:40px;--w-solved:30px;--w-attend:30px;--cell-line:1px;--head-row-top:34px;--head-row-bottom:22px;--body-row-height:44px;--font-ui:"Aptos", "Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif}*{box-sizing:border-box}html{background:radial-gradient(circle at 0 0,#ca582e2e,#0000 28%),radial-gradient(circle at 100% 0,#e0bd5f2e,#0000 22%),linear-gradient(#f6f0e2 0%,#ece4d0 100%);min-height:100%}body{min-height:100vh;color:var(--ink);font-family:var(--font-ui);font-variant-numeric:lining-nums;font-feature-settings:"lnum" 1;margin:0}a{color:inherit}button,input,select{font:inherit}.page-shell{width:min(1750px,100vw - 8px);margin:0 auto;padding:6px 0 12px}.page-compact{padding-top:4px}.standalone-table-shell{width:calc(100vw - 8px);padding-top:4px}.login-page{place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--line);background:#fffcf5f5;border-radius:12px;width:min(420px,100vw - 28px);padding:22px;box-shadow:0 24px 80px #42281029}.login-head{margin-bottom:18px}.login-head h1{margin:6px 0 8px;font-size:1.45rem;line-height:1.1}.login-head p:last-child{color:var(--muted);margin:0;font-size:.9rem;line-height:1.4}.login-form{gap:12px;display:grid}.login-field{gap:5px;display:grid}.login-field span{color:var(--muted);font-size:.74rem;font-weight:800}.login-error{color:#9f1d1d;margin:0;font-size:.82rem;font-weight:800}.login-submit{color:#fff6e7;cursor:pointer;background:#291c14;border:0;border-radius:10px;min-height:42px;font-weight:800}.login-submit:hover{background:#3a291d}.home-button{z-index:40;border:1px solid var(--line);color:#29241f;background:#fffcf5f5;border-radius:5px;align-items:center;min-height:24px;margin:0 0 4px;padding:2px 8px;font-size:.72rem;font-weight:700;text-decoration:none;display:inline-flex;position:sticky;top:4px;box-shadow:0 6px 18px #4228101f}.control-card,.summary-card,.table-card,.overview-panel,.overview-card{border:1px solid var(--line);background:var(--paper);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:10px;box-shadow:0 10px 30px #42281014}.control-card,.summary-card,.overview-card{padding:12px}.workspace-strip{border:1px solid var(--line);background:#fffcf5e6;border-radius:8px;justify-content:space-between;align-items:center;gap:10px;min-height:38px;margin-bottom:4px;padding:5px 7px;display:flex;box-shadow:0 8px 20px #42281014}.workspace-title{align-items:baseline;gap:8px;min-width:0;display:inline-flex}.workspace-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;overflow:hidden}.eyebrow,.summary-label{text-transform:uppercase;letter-spacing:.11em;color:var(--accent);margin:0;font-size:.62rem}.segmented{flex-wrap:wrap;gap:4px;display:flex}.segment,.ghost-button,.hide-sheet-button{border:1px solid var(--line);color:var(--ink);background:#ffffffb8}.compact-controls .control-card{padding-bottom:16px}.control-card h2{margin:0 0 6px;font-size:.88rem}.segment,.ghost-button,.solid-button{cursor:pointer;border-radius:999px;min-height:30px;padding:0 9px;font-size:.8rem}.segment.active{color:#fff6e7;background:#291c14;border-color:#291c14}.toggle{color:var(--muted);align-items:center;gap:10px;display:inline-flex}.compact-toggle{margin-top:6px;font-size:.78rem}.ghost-button{margin-top:6px}.solid-button{background:var(--accent);color:#fff8f0;border:0}input,select{border:1px solid var(--line);width:100%;min-height:42px;color:var(--ink);background:#ffffffeb;border-radius:12px;padding:0 12px}input:disabled,button:disabled,select:disabled{opacity:.58;cursor:not-allowed}.table-menu-bar{z-index:20;border:1px solid var(--line);background:#f6f2e9f5;border-radius:6px 6px 0 0;align-items:center;gap:2px;min-height:30px;margin-top:6px;padding:2px 4px;display:flex;position:relative}.plusnik-switcher{border-right:1px solid var(--line);min-height:24px;color:var(--muted);align-items:center;gap:5px;margin-right:6px;padding-right:8px;font-size:.68rem;font-weight:700;display:inline-flex}.plusnik-switcher select{border:1px solid var(--line);width:150px;min-height:22px;color:var(--ink);background:#fffcf5eb;border-radius:4px;padding:1px 20px 1px 6px;font-size:.72rem;font-weight:700}.share-table-button{color:#244936;cursor:pointer;background:#e7f2ebb8;border:1px solid #40564647;border-radius:4px;align-items:center;gap:4px;min-height:24px;margin-right:6px;padding:2px 8px;font-size:.72rem;font-weight:700;display:inline-flex}.share-table-button:hover{background:#cfe5d7f2}.share-table-button svg{fill:currentColor;flex:none;width:14px;height:14px}.logout-table-button{color:#684030;cursor:pointer;background:#fffcf5b3;border:1px solid #764a3a3d;border-radius:4px;min-height:24px;margin-right:6px;padding:2px 8px;font-size:.72rem;font-weight:700}.logout-table-button:hover{background:#edcabf8c}.menu-slot{position:relative}.menu-root{color:#29241f;cursor:pointer;background:0 0;border:0;border-radius:4px;min-height:24px;padding:2px 9px;font-size:.74rem}.menu-root:hover,.menu-root.active{background:#2d231714}.menu-dropdown{border:1px solid var(--line);background:#fffcf5fa;border-radius:6px;min-width:176px;padding:4px;position:absolute;top:calc(100% + 3px);left:0;box-shadow:0 10px 30px #42281029}.menu-dropdown button{color:#29241f;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;width:100%;min-height:26px;padding:4px 8px;font-size:.72rem;display:block}.menu-dropdown button:hover{background:#2d231714}.menu-dropdown button:disabled{opacity:.45;cursor:not-allowed}.menu-submenu{position:relative}.submenu-root{justify-content:space-between;align-items:center;gap:12px;display:flex!important}.submenu-root span{color:var(--muted)}.submenu-dropdown{min-width:150px;display:none;top:-5px;left:calc(100% + 4px)}.menu-submenu:hover>.submenu-dropdown,.menu-submenu:focus-within>.submenu-dropdown{display:block}.checked-menu-item:before{content:"✓ ";color:#2b5b3f;font-weight:700}.quick-settings-bar{border-top:1px solid var(--line);border-right:1px solid var(--line);border-bottom:1px solid var(--line);border-left:1px solid var(--line);background:#fffcf5db;border-radius:0 0 6px 6px;flex-wrap:wrap;align-items:center;gap:4px;min-height:28px;margin-top:0;padding:2px 4px;display:flex}.quick-settings-kicker{color:var(--muted);text-transform:uppercase;letter-spacing:.08em;padding:0 6px 0 2px;font-size:.66rem;font-weight:800}.quick-settings-group{border-left:1px solid var(--line);align-items:center;gap:4px;min-height:22px;padding:0 6px;display:inline-flex}.quick-settings-kicker+.quick-settings-group{border-left:0;padding-left:6px}.quick-settings-title{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-right:2px;font-size:.62rem;font-weight:800}.quick-toggle,.quick-select{border:1px solid var(--line);color:#29241f;background:#ffffff94;border-radius:4px;min-height:22px;font-size:.68rem;font-weight:700}.quick-toggle{cursor:pointer;padding:1px 7px}.quick-toggle:hover{background:#2d231712}.quick-toggle.active{border-color:color-mix(in srgb, var(--accent) 30%, var(--line));background:#ede2cadb}.quick-select{max-width:128px;padding:1px 18px 1px 5px}.modal-backdrop{z-index:60;background:#1d1a173d;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.sheet-modal{border:1px solid var(--line);background:#fffcf5fc;border-radius:8px;width:min(420px,100vw - 28px);padding:14px;box-shadow:0 24px 80px #4228103d}.sheet-modal-head h2{margin:0 0 12px;font-size:1rem}.modal-field{gap:5px;margin-bottom:10px;display:grid}.modal-field span{color:var(--muted);font-size:.72rem;font-weight:700}.topic-picker{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.topic-choice{border:1px solid color-mix(in srgb, var(--topic-accent) 40%, var(--line));background:color-mix(in srgb, var(--topic-soft) 64%, #fff);color:#29241f;text-align:left;cursor:pointer;border-radius:6px;align-items:center;gap:7px;min-height:34px;padding:0 9px;font-size:.76rem;display:inline-flex}.topic-choice span{background:var(--topic-accent);border-radius:999px;width:10px;height:10px}.topic-choice.selected{border-color:var(--topic-accent);box-shadow:inset 0 0 0 1px var(--topic-accent)}.sheet-modal-actions{justify-content:space-between;gap:12px;margin-top:14px;display:flex}.share-link-modal{width:min(520px,100vw - 28px)}.share-link-modal .sheet-modal-head h2{overflow-wrap:anywhere;margin-bottom:10px}.share-link-modal input{font-size:.82rem}.share-link-note,.share-link-status{color:var(--muted);margin:0;font-size:.76rem;line-height:1.35}.share-link-status{color:#8a5a22;margin-top:10px;font-weight:700}.share-modal-actions{align-items:center}.share-modal-actions .ghost-button,.share-modal-actions .solid-button{margin-top:0}.share-modal-action-group{gap:8px;display:flex}.share-open-link{color:inherit;justify-content:center;align-items:center;text-decoration:none;display:inline-flex}.modal-cancel,.modal-submit{margin-top:0}.sheet-form-grid{gap:10px;display:grid}.overview-panel{justify-content:space-between;align-items:center;gap:16px;margin-top:6px;padding:12px;display:flex}.overview-panel h1{margin:3px 0 0;font-size:1.25rem;line-height:1.1}.overview-meta{color:var(--muted);flex-wrap:wrap;justify-content:flex-end;gap:6px;font-size:.72rem;display:flex}.overview-meta span{border:1px solid var(--line);background:#ffffff94;border-radius:999px;padding:3px 7px}.summary-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:8px;display:grid}.summary-value{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1, "lnum" 1;margin:5px 0 0;font-size:1.6rem;line-height:1}.summary-detail{color:var(--muted);margin:2px 0 0;font-size:.7rem;font-weight:700}.overview-grid{grid-template-columns:1.4fr 1fr 1fr;gap:8px;margin-top:8px;display:grid}.overview-card h2{margin:0 0 8px;font-size:.9rem}.status-list{gap:7px;margin:0;display:grid}.status-list div{border-top:1px solid var(--line);justify-content:space-between;gap:12px;padding-top:7px;display:flex}.status-list div:first-child{border-top:0;padding-top:0}.status-list dt{color:var(--muted);font-size:.72rem}.status-list dd{text-align:right;margin:0;font-size:.76rem;font-weight:800}.empty-state{color:var(--muted);margin:0;font-size:.78rem}.compact-table-card{margin-top:6px;overflow:hidden}.quick-settings-bar+.compact-table-card{margin-top:0}.split-table{align-items:stretch;width:100%;display:flex}.spreadsheet-grid{outline:0}.spreadsheet-grid:focus-visible{box-shadow:inset 0 0 0 2px #1d1a1729}.fixed-table-pane{border-right:1px solid var(--line);background:#fffbf3fa;flex:none}.scroll-table-pane{flex:auto;min-width:0;overflow:hidden}.table-scroll{width:100%;overflow:auto}.timeline-scroll-strip{align-items:flex-start;width:max-content;display:flex}.plusnik-table{border-collapse:separate;border-spacing:0;table-layout:fixed;font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1, "lnum" 1;width:max-content}.fixed-info-table{z-index:1;position:relative}.plusnik-table th,.plusnik-table td{border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:center;vertical-align:middle;background:#fffbf3e6;padding:0}.fixed-info-table th:first-child,.fixed-info-table td:first-child{border-left:1px solid var(--line)}.head-main{font-size:.76rem;font-weight:700;background:#efe6d2!important}.info-head-main{height:calc(var(--head-row-top) + var(--head-row-bottom));white-space:nowrap;text-overflow:ellipsis;position:relative;overflow:hidden}.head-label{text-overflow:ellipsis;vertical-align:middle;max-width:100%;display:inline-block;overflow:hidden}.sort-corner{color:#1d1a1747;cursor:pointer;background:0 0;border:0;width:12px;height:12px;padding:0;font-size:.42rem;line-height:12px;position:absolute;top:2px;right:2px}.sort-corner:hover,.sort-corner.active{color:#1d1a17c7}.timeline-table thead tr:first-child th{height:var(--head-row-top)}.timeline-table thead tr:last-child th{height:var(--head-row-bottom)}.fixed-info-table tbody td,.timeline-table tbody td{height:var(--body-row-height)}.student-surname,.student-firstname,.score-value,.metric-value,.attendance-summary-cell,.head-main{padding:4px!important}.student-surname,.student-firstname{white-space:nowrap;text-overflow:ellipsis;font-size:.72rem;overflow:hidden;text-align:left!important}.student-surname{font-weight:700}.student-firstname{color:#40382f}.score-value,.metric-value{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1, "lnum" 1;font-size:.94rem;font-weight:700}.attendance-summary-cell strong{color:#111;font-size:.94rem;line-height:1;display:block}.lesson-group{width:40px;font-size:.7rem;font-weight:700;background:#f3f1eb!important;padding:3px 1px!important}.lesson-date-button{color:#201d18;cursor:pointer;background:0 0;border:0;border-radius:0;width:100%;height:100%;padding:0;font-size:.7rem;font-weight:700}.lesson-date-button:hover{background:#edf4ee}.lesson-context-menu{z-index:50;border:1px solid var(--line);background:#fffcf5fa;border-radius:6px;min-width:128px;padding:4px;position:fixed;box-shadow:0 10px 30px #4228102e}.lesson-context-menu button{color:#7f2e23;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:4px;width:100%;padding:6px 8px;font-size:.72rem}.lesson-context-menu button:hover{background:#7f2e2314}.sheet-context-menu,.task-context-menu{min-width:172px}.sheet-context-menu p,.task-context-menu p{color:var(--muted);margin:2px 8px 4px;font-size:.68rem;font-weight:700}.sheet-context-menu button{color:#29241f;align-items:center;gap:6px;display:flex}.sheet-context-menu button:hover{background:#2d231714}.topic-swatch{border-radius:999px;width:9px;height:9px}.context-menu-separator{margin-top:3px;border-top:1px solid var(--line)!important}.lesson-date-input{border:1px solid var(--line);width:70px;height:24px;color:var(--ink);background:#ffffffe0;border-radius:3px;padding:0;font-size:.56rem}.lesson-marker-head{color:#322e28;text-transform:lowercase;width:40px;font-size:.72rem;background:#f7f4ec!important;padding:2px 0!important}.lesson-cell{width:40px;background:#f7f8f2!important}.inline-lesson-form{flex:none}.add-lesson-table{width:max-content}.add-lesson-head{height:var(--head-row-top);background:#f7f4ec!important;padding:1px!important}.add-lesson-head input{border:1px solid var(--line);width:70px;height:24px;color:var(--ink);background:#ffffffb8;border-radius:3px;font-size:.56rem}.add-lesson-marker,.add-lesson-plus-bottom{height:var(--head-row-bottom);background:#f7f4ec!important;padding:0!important}.add-lesson-plus-head{height:var(--head-row-top);background:#f7f4ec!important;padding:0!important}.add-lesson-marker button,.add-lesson-plus-head button{color:#2b5b3f;cursor:pointer;background:0 0;border:0;border-radius:0;width:100%;height:100%;padding:0;font-size:1rem;font-weight:700}.add-lesson-plus-head button{font-size:1.04rem}.add-lesson-marker button:hover,.add-lesson-plus-head button:hover{background:#edf4ee}.add-lesson-cell{height:var(--body-row-height);background:#f7f4ecb8!important}.compact-checkbox{width:100%;height:100%;min-height:26px;display:block;position:relative}.compact-checkbox input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.compact-checkbox span{background:0 0;border:0;justify-content:center;align-items:center;width:100%;height:100%;min-height:26px;display:inline-flex}.compact-checkbox input:checked+span{background:#edf4ee}.compact-checkbox input:checked+span:after{content:"✓";color:#2b5b3f;font-size:.88rem;font-weight:700}.topic-sheet-group{border-top:3px solid var(--topic-accent);position:relative;background:var(--topic-soft)!important}.sheet-title-row{justify-content:center;align-items:center;gap:4px;min-height:30px;padding:2px 4px;display:flex}.sheet-title-row a,.sheet-title-button{white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:700;text-decoration:none;overflow:hidden}.sheet-title-button{max-width:100%;color:inherit;cursor:text;background:0 0;border:0;padding:0}.sheet-title-button:hover{text-decoration:underline}.sheet-title-input{text-align:center;border-radius:3px;width:min(160px,100%);min-height:22px;padding:0 6px;font-size:.72rem;font-weight:700}.hide-sheet-button{width:14px;min-width:14px;height:14px;color:color-mix(in srgb, var(--ink) 60%, transparent);opacity:.42;background:0 0;border:0;border-radius:3px;justify-content:center;align-items:center;padding:0;display:inline-flex;position:absolute;top:3px;right:3px}.hide-sheet-button svg{stroke-width:1.35px;width:11px;height:11px}.hide-sheet-button:hover{opacity:.82;background:#ffffff6b}.sheet-collapsed{border-top:3px solid var(--topic-accent);width:12px;position:relative;background:var(--topic-soft)!important}.collapsed-sheet-button,.collapsed-task-button,.collapsed-cell-button{cursor:pointer;background:0 0;border:0;width:100%;padding:0}.collapsed-sheet-button{min-height:30px}.collapsed-task-button{min-height:18px}.collapsed-cell-button{min-height:26px}.collapsed-sheet-button span,.collapsed-cell-button span{min-height:inherit;background:linear-gradient(180deg, color-mix(in srgb, var(--topic-accent) 14%, transparent), color-mix(in srgb, var(--topic-accent) 36%, transparent));display:block}.collapsed-task-button{font-size:.72rem;font-weight:700}.task-collapsed,.collapsed-sheet-cell{width:12px;position:relative;background:var(--topic-cell)!important}.task-collapsed{background:var(--topic-soft)!important}.sheet-collapsed[data-title]:hover:after,.task-collapsed[data-title]:hover:after,.collapsed-sheet-cell[data-title]:hover:after{content:attr(data-title);z-index:40;border:1px solid var(--line);color:var(--ink);pointer-events:none;white-space:nowrap;background:#fffcf4fa;border-radius:6px;padding:4px 7px;font-size:.72rem;font-weight:700;line-height:1;position:absolute;top:50%;left:16px;transform:translateY(-50%);box-shadow:0 8px 24px #33281829}.hidden-task-gap-head,.hidden-task-gap-cell{width:12px;background:#e6e2d8f2!important}.hidden-task-gap-head{padding:0!important}.hidden-task-gap-head button{cursor:pointer;background:0 0;border:0;width:100%;height:100%;min-height:18px;padding:0}.hidden-task-gap-head span{opacity:.72;border-left:2px solid #7d7568;border-right:2px solid #7d7568;width:6px;height:14px;margin:2px auto;display:block}.hidden-task-gap-head button:hover span{opacity:1;border-color:#2b5b3f}.task-head{border-top:1px solid #00000008;width:30px;background:var(--topic-cell)!important;padding:1px 0!important}.task-narrow{width:30px}.task-medium{width:38px}.task-wide{width:48px}.plain-task-button{cursor:pointer;background:0 0;border:0;border-radius:0;width:100%;min-height:18px;padding:0;font-size:.78rem;font-weight:700}.task-code-input{text-align:center;border-radius:3px;width:100%;min-height:18px;padding:0 2px;font-size:.72rem;font-weight:700}.task-active{background:color-mix(in srgb, var(--topic-cell) 72%, var(--active))!important}.task-planned{background:color-mix(in srgb, var(--topic-cell) 70%, var(--planned))!important}.task-reviewed{color:#161814;background:color-mix(in srgb, var(--topic-cell) 76%, var(--topic-accent))!important}.task-reviewed .plain-task-button,.task-cell.task-reviewed{color:#161814}.task-cell{cursor:cell;-webkit-user-select:none;user-select:none;width:30px;background:var(--topic-cell)!important}.task-cell.task-reviewed{background:color-mix(in srgb, var(--topic-cell) 76%, var(--topic-accent))!important}.task-cell-editable{cursor:cell}.task-click-quick_mark .task-cell-editable{cursor:pointer}.plusnik-table tr.grid-row-active td{box-shadow:inset 0 999px #1d1a170b}.fixed-info-table tr.grid-row-active td{background:#dbd4c7!important}.task-head.grid-column-active{box-shadow:inset 0 3px #1d1a1761,inset 0 -999px #1d1a170e}.task-cell.grid-column-active{box-shadow:inset 0 999px #1d1a170e}.task-cell.grid-row-active.grid-column-active,.task-cell.grid-cell-hover{box-shadow:inset 0 999px #1d1a1716,inset 0 0 0 1px #1d1a172e}.task-cell.grid-cell-active{box-shadow:inset 0 999px #1d1a1724,inset 0 0 0 2px #1d1a1780}.cell-main{color:#201d18;font-size:.84rem;font-weight:700;line-height:1;display:block}.cell-submeta{color:#201d188c;margin-top:1px;font-size:.52rem;display:block}.activity-list{gap:0;display:grid}.activity-item{border-top:1px solid var(--line);justify-content:space-between;gap:12px;padding:7px 0;font-size:.76rem;display:flex}.activity-item:first-child{border-top:0;padding-top:0}.activity-item span{color:var(--muted);text-align:right}@media (max-width:1100px){.summary-grid,.overview-grid{grid-template-columns:1fr}.overview-panel,.workspace-strip{flex-direction:column;align-items:flex-start}.activity-item{flex-direction:column}.activity-item span{text-align:left}}.server-error{color:#9f1d1d;margin:10px 0;font-size:14px;font-weight:700}
