@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap&subset=cyrillic,cyrillic-ext,latin";:root{--bg: #f5f7fa;--surface: #ffffff;--surface-2: #eceff4;--surface-3: #e3e8ef;--border: rgba(17, 24, 39, .08);--border-strong: rgba(17, 24, 39, .16);--text: #111827;--text-dim: #4b5565;--text-faint: #6b7487;--accent: #2563eb;--accent-ink: #1d4ed8;--accent-soft: #e4ebfd;--ok: #15803d;--ok-soft: #e3f3e8;--warn: #a35a06;--warn-soft: #fbf0e0;--danger: #c2271f;--danger-soft: #fbe9e7;--radius-xs: 6px;--radius-sm: 8px;--radius: 14px;--radius-lg: 18px;--shadow: 0 1px 2px rgba(17, 24, 39, .05);--shadow-lg: 0 8px 24px rgba(17, 24, 39, .08);--sans: "Inter", -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--ease: cubic-bezier(.22, 1, .36, 1);--sidebar-w: 248px}@media(prefers-color-scheme:dark){:root{--bg: #0b0d14;--surface: #11141c;--surface-2: #1a1e28;--surface-3: #232834;--border: rgba(238, 240, 245, .08);--border-strong: rgba(238, 240, 245, .16);--text: #eef0f5;--text-dim: #a3a9b8;--text-faint: #7a8296;--accent: #5b8cff;--accent-ink: #8ab0ff;--accent-soft: #19243d;--ok: #4cc38a;--ok-soft: #12261c;--warn: #e0a042;--warn-soft: #2a2114;--danger: #e5484d;--danger-soft: #2c1618;--shadow: 0 1px 2px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 30px rgba(0, 0, 0, .5)}}*{box-sizing:border-box}html,body,#app{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:400 15px/1.5 var(--sans);-webkit-font-smoothing:antialiased;font-feature-settings:"cv05" 1}a{color:var(--accent-ink);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0 0 8px;line-height:1.2;font-weight:500}h1{font-size:28px;letter-spacing:-.01em}h2{font-size:19px}h3{font-size:16px}h4{font-size:14px;color:var(--text-dim)}.layout{display:flex;min-height:100%}.sidebar{width:var(--sidebar-w);flex:0 0 var(--sidebar-w);background:var(--surface);border-right:1px solid var(--border);padding:20px 12px 16px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;padding:0 8px 20px;font-size:15px;font-weight:500;letter-spacing:-.01em}.brand small{display:block;font-weight:400;color:var(--text-faint);font-size:12px;letter-spacing:0}.brand-mark{flex:0 0 auto;width:28px;height:28px;border-radius:var(--radius-xs);background:var(--accent);color:#fff;display:grid;place-items:center;font:500 12px/1 var(--mono)}.nav-link{display:flex;align-items:center;gap:10px;height:36px;padding:0 10px;border-radius:var(--radius-sm);color:var(--text-dim);font-size:14px;font-weight:400;white-space:nowrap;transition:background-color .14s var(--ease),color .14s var(--ease)}.nav-link:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav-link.router-link-active{background:var(--accent-soft);color:var(--accent-ink)}.nav-link.router-link-active .icon{color:var(--accent-ink)}.nav-icon{flex:0 0 18px;width:18px;height:18px;display:grid;place-items:center}.nav-group{margin:24px 0 8px;padding:0 10px;font-size:12px;color:var(--text-faint)}.nav-group:first-of-type{margin-top:8px}.main{flex:1;min-width:0;padding:32px 32px 96px;max-width:1480px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.page-head p{margin:6px 0 0;color:var(--text-dim);font-size:14px;max-width:68ch}.with-rail{display:grid;grid-template-columns:minmax(0,1fr) 304px;gap:24px;align-items:start}.rail{display:flex;flex-direction:column;gap:12px;position:sticky;top:32px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.card+.card{margin-top:12px}.card-tight{padding:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 16px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:400 14px/1 var(--sans);cursor:pointer;white-space:nowrap;transition:background-color .14s var(--ease),border-color .14s var(--ease),color .14s var(--ease),transform .14s var(--ease)}.btn:hover:not(:disabled){background:var(--surface-2)}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background:var(--accent-ink);border-color:var(--accent-ink)}.btn-danger{color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn-sm{height:30px;padding:0 10px;font-size:13px;border-radius:var(--radius-xs)}.btn-ghost{border-color:transparent;background:transparent;color:var(--text-dim)}.btn-ghost:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn-icon{width:30px;padding:0}input[type=text],input[type=password],input[type=date],input[type=number],input[type=search],select,textarea{width:100%;height:36px;padding:0 10px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font:400 14px/1 var(--sans);transition:border-color .14s var(--ease),box-shadow .14s var(--ease)}select{padding-right:28px}textarea{height:auto;min-height:76px;padding:8px 10px;line-height:1.5;resize:vertical}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}input::placeholder,textarea::placeholder{color:var(--text-faint)}label{display:block;font-size:13px;color:var(--text-dim);margin-bottom:6px}.field{margin-bottom:16px}.row{display:flex;gap:12px;flex-wrap:wrap;align-items:flex-end}.row>*{min-width:0}.grow{flex:1}.badge{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 8px;border-radius:var(--radius-xs);font-size:12px;font-weight:400;background:var(--surface-2);color:var(--text-dim);white-space:nowrap}.badge-ok{background:var(--ok-soft);color:var(--ok)}.badge-warn{background:var(--warn-soft);color:var(--warn)}.badge-danger{background:var(--danger-soft);color:var(--danger)}.badge-accent{background:var(--accent-soft);color:var(--accent-ink)}.badge-num{font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;background:var(--surface-2);color:var(--text);border:1px solid var(--border);padding:0 7px}.badge-lesson{background:var(--accent-soft);color:var(--accent-ink)}.badge-homework{background:var(--surface-2);color:var(--text-dim)}.badge-homework:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}.dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;background:var(--text-faint)}.dot-ok{background:var(--ok)}.dot-warn{background:var(--warn)}.dot-danger{background:var(--danger)}.muted{color:var(--text-dim)}.faint{color:var(--text-faint);font-size:13px}.mono{font-family:var(--mono);font-size:13px;font-variant-numeric:tabular-nums}.num{font-variant-numeric:tabular-nums}.empty{padding:40px 24px;text-align:center;color:var(--text-faint);font-size:14px}.card.empty{max-width:560px;margin-left:auto;margin-right:auto}.empty-title{display:block;color:var(--text);font-size:15px;margin-bottom:6px}.empty :deep(.icon),.empty .icon{margin:0 auto 12px;color:var(--text-faint)}.spinner{padding:32px;text-align:center;color:var(--text-faint);font-size:14px}.stat{display:flex;flex-direction:column;gap:6px}.stat-label{font-size:13px;color:var(--text-dim)}.stat-value{font-size:30px;line-height:1;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.01em}.stat-note{font-size:13px;color:var(--text-faint)}.grid{display:grid;gap:12px}.grid-numbers{grid-template-columns:repeat(auto-fill,minmax(268px,1fr))}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid-stats{grid-template-columns:repeat(auto-fit,minmax(176px,1fr))}.seg{display:inline-flex;gap:2px;padding:3px;background:var(--surface-2);border-radius:var(--radius-sm)}.seg-btn{height:26px;padding:0 10px;border:none;border-radius:var(--radius-xs);background:transparent;color:var(--text-dim);font:400 13px/1 var(--sans);cursor:pointer;white-space:nowrap;transition:background-color .14s var(--ease),color .14s var(--ease)}.seg-btn:hover{color:var(--text)}.seg-btn.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.seg-btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:16px}table.data{width:100%;border-collapse:collapse;font-size:14px}table.data th,table.data td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left}table.data th{font-size:13px;font-weight:400;color:var(--text-faint);white-space:nowrap}table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}table.data tr:last-child td{border-bottom:none}table.data tbody tr{transition:background-color .14s var(--ease)}table.data tbody tr:hover{background:var(--surface-2)}.task-html{font-size:15px;line-height:1.6;overflow-wrap:break-word;max-width:76ch}.task-html p{margin:0 0 10px}.task-html img{max-width:100%;max-height:520px;height:auto;background:#fff;border-radius:var(--radius-xs);padding:2px}.task-html img[data-zoomable]{cursor:zoom-in}.task-html table{border-collapse:collapse;margin:12px 0;display:block;overflow-x:auto;max-width:100%;font-variant-numeric:tabular-nums}.task-html td,.task-html th{border:1px solid var(--border-strong);padding:5px 10px;text-align:center;white-space:nowrap}.task-html pre{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;overflow-x:auto;font-family:var(--mono);font-size:13px;line-height:1.5}.task-html code{font-family:var(--mono);font-size:13px}.task-html a{word-break:break-all}.task-collapsed{margin:0;font-size:14px;line-height:1.5;color:var(--text-dim);cursor:pointer;max-width:76ch;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;transition:color .14s var(--ease)}.task-collapsed:hover{color:var(--text)}.arrow{flex:0 0 auto;width:28px;height:28px;padding:0;color:var(--text-faint);transition:transform .14s var(--ease),background-color .14s var(--ease),color .14s var(--ease)}.arrow-open{transform:rotate(90deg);color:var(--accent-ink)}.pop-wrap{position:relative;display:inline-flex}.pop-shade{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50}.pop{position:absolute;z-index:51;top:calc(100% + 8px);right:0;width:288px;max-width:calc(100vw - 32px);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:16px;text-align:left;cursor:default;animation:pop-in .18s var(--ease)}.pop-left{right:auto;left:0}.pop .field{margin-bottom:12px}.pop .field:last-of-type{margin-bottom:16px}@keyframes pop-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.cal-head{font-size:12px;color:var(--text-faint);text-align:center;padding-bottom:4px}.cal-cell{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-height:96px;padding:10px;width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:border-color .14s var(--ease),background-color .14s var(--ease)}.cal-cell:hover{border-color:var(--border-strong)}.cal-cell:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.cal-empty{background:transparent;border-style:dashed}.cal-outside{opacity:.4}.cal-today{border-color:var(--accent)}.cal-date{font-size:13px;font-variant-numeric:tabular-nums}.cal-today .cal-date{color:var(--accent-ink)}.cal-topic{font-size:12px;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-cell.draggable{cursor:grab}.cal-cell.dragging{opacity:.4}.cal-cell.drop-target{border-color:var(--accent);border-style:dashed;background:var(--accent-soft)}.cal-cell .cell-tools{position:absolute;top:6px;right:6px;display:flex;gap:2px;opacity:0;transition:opacity .14s var(--ease)}.cal-cell:hover .cell-tools,.cal-cell:focus-within .cell-tools{opacity:1}@media(hover:none){.cal-cell .cell-tools{opacity:1}}.selection-bar{position:fixed;left:var(--sidebar-w);right:0;bottom:0;z-index:40;background:var(--surface);border-top:1px solid var(--border);box-shadow:var(--shadow-lg);padding:12px 32px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#11182766;display:flex;align-items:flex-start;justify-content:center;padding:8vh 16px 16px;overflow-y:auto;animation:fade-in .18s var(--ease)}.modal{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-lg);width:100%;max-width:520px;padding:24px;animation:pop-in .22s var(--ease)}.modal h2{margin-bottom:12px}.modal p{margin:0 0 12px;color:var(--text-dim);font-size:14px}.modal-wide{max-width:880px}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.toast{position:fixed;right:24px;bottom:24px;z-index:80;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--ok);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);padding:12px 16px;max-width:380px;font-size:14px;animation:pop-in .22s var(--ease)}.toast.err{border-left-color:var(--danger)}.bar{height:6px;border-radius:3px;background:var(--surface-3);overflow:hidden}.bar>span{display:block;height:100%;border-radius:3px;background:var(--accent);transition:width .3s var(--ease)}.rank-row{display:grid;grid-template-columns:56px minmax(0,1fr) 96px 48px;align-items:center;gap:12px;padding:7px 0}.rank-bar{height:4px;border-radius:2px;background:var(--surface-3);overflow:hidden}.rank-bar>span{display:block;height:100%;border-radius:2px;background:var(--text-faint)}.rank-row.is-weak .rank-bar>span{background:var(--danger)}.rank-row.is-lead .rank-bar>span{background:var(--accent)}.icon{flex:0 0 auto;display:block}.keycap{display:inline-flex;align-items:center;height:20px;padding:0 6px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:var(--radius-xs);font:400 12px/1 var(--mono);color:var(--text-dim);background:var(--surface)}hr{border:none;border-top:1px solid var(--border);margin:20px 0}details>summary{cursor:pointer;font-size:14px;color:var(--text-dim);padding:6px 0;list-style:none}details>summary::-webkit-details-marker{display:none}details>summary:before{content:"";display:inline-block;width:6px;height:6px;margin:0 8px 1px 2px;border-right:1.5px solid var(--text-faint);border-bottom:1.5px solid var(--text-faint);transform:rotate(-45deg);transition:transform .14s var(--ease)}details[open]>summary:before{transform:rotate(45deg)}details>summary:hover{color:var(--text)}.enter{animation:rise .32s var(--ease) both}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media(max-width:1100px){.with-rail{grid-template-columns:minmax(0,1fr)}.rail{position:static;flex-direction:row;flex-wrap:wrap}.rail>*{flex:1 1 260px}}@media(max-width:900px){.layout{flex-direction:column}.sidebar{width:auto;flex:none;height:auto;position:static;flex-direction:row;flex-wrap:wrap;gap:4px;padding:12px;border-right:none;border-bottom:1px solid var(--border)}.brand{padding:0 8px 0 0}.nav-group{display:none}.main{padding:20px 16px 112px}.selection-bar{left:0;padding:12px 16px}h1{font-size:24px}.stat-value{font-size:26px}.cal-grid{gap:4px}.cal-cell{min-height:76px;padding:6px}.rank-row{grid-template-columns:48px minmax(0,1fr) 56px 44px;gap:8px}}
