@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Inter Variable,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.55;color-scheme:light dark;font-optical-sizing:auto;--bg: #f5f4f1;--bg-soft: #edece8;--card: #ffffff;--fg: #1c1917;--muted: #78716c;--border: #e7e3de;--border-strong: #d6d2cc;--accent: #0f766e;--accent-strong: #115e59;--accent-soft: #ccf0ec;--gold: #b45309;--gold-soft: #fdf0dd;--ok: #15803d;--ok-soft: #dcf2e3;--error: #dc2626;--error-soft: #fde8e8;--btn-bg: #24211e;--btn-fg: #ffffff;--btn-bg-hover: #3a3531;--shadow-sm: 0 1px 2px rgb(28 25 23 / .05);--shadow-md: 0 1px 2px rgb(28 25 23 / .05), 0 6px 18px -6px rgb(28 25 23 / .12);--r-sm: 8px;--r-md: 12px;--r-lg: 18px;--page-w: 840px}@media(prefers-color-scheme:dark){:root{--bg: #171412;--bg-soft: #201c1a;--card: #221f1c;--fg: #f1efec;--muted: #a8a29e;--border: #35302c;--border-strong: #4a443f;--accent: #34d3c3;--accent-strong: #6ee4d8;--accent-soft: #123f3b;--gold: #f0a341;--gold-soft: #3a2a12;--ok: #57cf7f;--ok-soft: #12331d;--error: #f87171;--error-soft: #3d1414;--btn-bg: #f1efec;--btn-fg: #1c1917;--btn-bg-hover: #d8d4cf;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow-md: 0 1px 2px rgb(0 0 0 / .4), 0 8px 22px -8px rgb(0 0 0 / .55)}}*{box-sizing:border-box}html{scrollbar-gutter:stable}@supports not (scrollbar-gutter: stable){html{overflow-y:scroll}}body{margin:0;background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased}h1{font-size:1.6rem;font-weight:750;letter-spacing:-.02em;margin:1.1rem 0 .4rem}h2{font-size:1.1rem;font-weight:650;letter-spacing:-.01em;margin:.2rem 0 .6rem}h3{font-size:.95rem;font-weight:650;margin:1rem 0 .4rem}p{margin:.4rem 0}a{color:var(--accent);text-decoration:none;font-weight:550}a:hover{color:var(--accent-strong)}.muted{color:var(--muted)}.ok{color:var(--ok)}.error{color:var(--error);font-size:.9rem}.center{text-align:center;margin-top:20vh}.page,.login{max-width:var(--page-w);margin:0 auto;padding:.4rem 1rem 5.5rem}@media(min-width:720px){.page,.login{padding-bottom:2rem}}.appbar{position:sticky;top:0;z-index:20;width:100%;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border)}.appbar-inner{max-width:var(--page-w);margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 1rem}.brand{display:flex;align-items:center;gap:.55rem;font-weight:750;letter-spacing:-.01em;color:var(--fg);white-space:nowrap}.brand:hover{color:var(--fg)}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,var(--accent) 0%,var(--accent-strong) 100%);color:#fff;font-size:.95rem;font-weight:800;box-shadow:var(--shadow-sm)}@media(prefers-color-scheme:dark){.brand-mark{color:#10201d}}.topnav{display:flex;gap:.15rem;align-items:center;flex:1;justify-content:center;min-width:0}.topnav a{padding:.4rem .7rem;border-radius:999px;color:var(--muted);font-size:.92rem;white-space:nowrap}@media(max-width:900px){.topnav a{padding:.35rem .5rem;font-size:.85rem}}.topnav a:hover{color:var(--fg);background:var(--bg-soft)}.topnav a.active{color:var(--fg);background:var(--bg-soft);font-weight:650}.icon-btn{display:grid;place-items:center;width:34px;height:34px;padding:0;border-radius:999px;background:none;color:var(--muted);border:none;cursor:pointer}.icon-btn:hover{color:var(--fg);background:var(--bg-soft)}@media(max-width:719.9px){.topnav{display:none}}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;justify-content:space-around;padding:.35rem .5rem calc(.35rem + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--card) 88%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--border)}.bottomnav a{display:flex;flex-direction:column;align-items:center;gap:.15rem;min-width:3.6rem;padding:.3rem .4rem;border-radius:var(--r-sm);color:var(--muted);font-size:.68rem;font-weight:550}.bottomnav a.active{color:var(--accent)}.bottomnav svg{width:22px;height:22px}@media(min-width:720px){.bottomnav{display:none}}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.1rem 1.15rem;box-shadow:var(--shadow-sm);margin-bottom:.9rem}.card h2:first-child{margin-top:0}.card:not(.editor)>*+*{margin-top:.7rem}main.page>.row{margin:.9rem 0}label{display:flex;flex-direction:column;gap:.3rem;font-size:.85rem;font-weight:550;color:var(--muted)}input,textarea,select{padding:.6rem .8rem;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--card);color:var(--fg);font-size:1rem;font-family:inherit}textarea{width:100%;resize:vertical}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}button{padding:.6rem 1.1rem;border:none;border-radius:999px;background:var(--btn-bg);color:var(--btn-fg);font-size:.95rem;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s ease,transform .05s ease}button:hover{background:var(--btn-bg-hover)}button:active{transform:scale(.98)}button:disabled{opacity:.45;cursor:default;transform:none}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button.link{background:none;color:var(--accent);padding:.2rem .4rem}button.link:hover{color:var(--accent-strong);background:var(--bg-soft)}button.danger{background:var(--error);color:#fff}button.link.danger{background:none;color:var(--error)}button.link.danger:hover{background:var(--error-soft)}.row{display:flex;gap:.5rem;align-items:center}.row input{flex:1;min-width:0}.pill{display:inline-flex;align-items:center;gap:.35rem;padding:.22rem .65rem;border-radius:999px;font-size:.8rem;font-weight:650}.pill.ok{background:var(--ok-soft);color:var(--ok)}.pill.late{background:var(--error-soft);color:var(--error)}.pill.todo{background:var(--gold-soft);color:var(--gold)}.login{display:flex;flex-direction:column;gap:1rem;padding-top:12vh;max-width:420px}.login-hero{display:flex;flex-direction:column;align-items:center;gap:.6rem;margin-bottom:.5rem;text-align:center}.login-hero .brand-mark{width:58px;height:58px;border-radius:18px;font-size:1.8rem}.login-hero h1,.login-hero p{margin:0}.tg-widget{display:flex;justify-content:center}.dev-login{border:1px dashed var(--border-strong);border-radius:var(--r-md);padding:.9rem 1rem}.dev-login h2{margin:0 0 .3rem;font-size:.9rem;color:var(--muted)}.module-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;margin-top:1.4rem}.module-head h2{margin:0}.module-head .muted{font-size:.82rem;white-space:nowrap}.week-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:.6rem;margin:.7rem 0 .4rem}.week-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.2rem;min-height:76px;padding:.6rem .3rem;border-radius:var(--r-md);border:1px solid var(--border);background:var(--card);color:var(--fg);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}.week-tile.open{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:linear-gradient(180deg,var(--card) 30%,var(--accent-soft) 160%)}.week-tile.open:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--accent);color:var(--fg)}.week-tile.open .week-num{color:var(--accent)}.week-tile.locked{background:transparent;border-style:dashed;color:var(--muted)}.week-num{font-size:1.35rem;font-weight:750;letter-spacing:-.02em;line-height:1.1}.week-status{font-size:.68rem;color:var(--muted);text-align:center;line-height:1.25}.video-wrap{position:relative;padding-top:56.25%;margin:.6rem 0 1rem;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow-md);background:#000}.video-wrap iframe{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:0}.lesson{font-size:.98rem}.lesson img{max-width:100%;border-radius:var(--r-sm)}.lesson h2{margin-top:.4rem}.checklist{list-style:none;padding:0;margin:.3rem 0 0;display:flex;flex-direction:column;gap:.45rem}.checklist li{display:flex;gap:.55rem;align-items:baseline}.checklist li:before{content:"✓";color:var(--accent);font-weight:800;flex-shrink:0}.assignment .submit-form{display:flex;flex-direction:column;gap:.55rem;margin-top:.6rem}.assignment .deadline{font-size:.85rem}.file-note{font-size:.78rem}input[type=file]{border:none;padding:.3rem 0;font-size:.85rem;color:var(--muted)}.member-list{list-style:none;padding:0;margin:.4rem 0;display:flex;flex-direction:column;gap:.35rem}.member-list li{display:flex;justify-content:space-between;align-items:center;gap:.6rem;padding:.35rem .4rem;border-radius:var(--r-sm)}.member-list li:hover{background:var(--bg-soft)}.person{display:flex;align-items:center;gap:.6rem;min-width:0}.avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;flex-shrink:0;font-size:.78rem;font-weight:700;color:#fff;background:var(--accent)}.avatar.v1{background:#0f766e}.avatar.v2{background:#b45309}.avatar.v3{background:#7c3aed}.avatar.v4{background:#be185d}.avatar.v5{background:#1d4ed8}.avatar.v6{background:#4d7c0f}.person-name{font-weight:550;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.person-sub{font-size:.78rem;color:var(--muted)}.pair-check{flex-direction:row;align-items:center;gap:.5rem;font-size:.95rem;font-weight:450;color:var(--fg)}.pair-check input{width:auto;accent-color:var(--accent)}.pair-list{list-style:none;padding:0;margin:.3rem 0 0;display:flex;flex-direction:column;gap:.5rem}.pair-list li{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r-md);background:var(--card);box-shadow:var(--shadow-sm)}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:.6rem .85rem;border-bottom:1px solid var(--border);white-space:nowrap;font-size:.93rem}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--bg-soft)}th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;background:var(--bg-soft)}tr.selected td{background:var(--accent-soft)}.editor{display:flex;flex-direction:column;gap:.8rem}.editor .row{flex-wrap:wrap;align-items:end}.assignment-editor{display:flex;flex-direction:column;gap:.5rem;border-top:1px dashed var(--border-strong);padding-top:.8rem;margin-top:.5rem}.spinner-note{margin-top:18vh;text-align:center;color:var(--muted)}
