:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1216;--panel:#171b21;--panel-2:#1f242c;--line:#2a313b;--text:#e8ecf1;--text-2:#a6afbb;--text-3:#6f7986;--accent:#6cb4ff;--ok:#4fd18b;--warn:#f5b84f;--err:#ff6b6b;--now:#2b3a52;--radius:14px;--gap:1rem;--font:-apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--student:var(--accent)}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f5f8;--panel:#fff;--panel-2:#eef1f5;--line:#d9dee6;--text:#15191f;--text-2:#4b5563;--text-3:#8a94a3;--now:#dbe9ff}*{box-sizing:border-box}html{background:var(--bg);font-size:16px}html.kiosk{font-size:max(14px,min(1.3vw,22px))}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;overscroll-behavior:none;margin:0;line-height:1.35}h1,h2,h3,h4{margin:0;font-weight:650}ul{margin:0;padding:0;list-style:none}button{font:inherit;color:inherit}.muted{color:var(--text-2)}.faint{color:var(--text-3)}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.acct{position:relative}.acct__button{border:1px solid var(--line);background:var(--panel-2);cursor:pointer;width:2.2rem;height:2.2rem;color:var(--text);border-radius:50%;font-weight:700}.acct__menu{z-index:10;background:var(--panel);border:1px solid var(--line);border-radius:12px;flex-direction:column;min-width:14rem;padding:.4rem;display:flex;position:absolute;top:calc(100% + .4rem);right:0;box-shadow:0 8px 24px #00000059}.acct__who{border-bottom:1px solid var(--line);flex-direction:column;margin-bottom:.3rem;padding:.5rem .7rem;font-size:.9rem;display:flex}.acct__item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:.55rem .7rem;font-size:.95rem}.acct__item:hover{background:var(--panel-2)}.pager{height:100vh;flex-direction:column;height:100dvh;display:flex}.pager__top{padding:.4rem .75rem .2rem;padding-top:calc(.4rem + env(safe-area-inset-top,0px));justify-content:flex-end;align-items:center;gap:.6rem;display:flex}.pager__track{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;overscroll-behavior-x:contain;flex:1;min-height:0;display:flex;overflow-x:auto;overflow-y:hidden}.pager__track::-webkit-scrollbar{display:none}.pager__page{scroll-snap-align:start;scroll-snap-stop:always;flex-direction:column;flex:0 0 100%;gap:.75rem;width:100%;padding:.25rem .75rem .75rem;display:flex;overflow-y:auto}.pager__tabs{border-top:1px solid var(--line);background:var(--panel);padding-bottom:env(safe-area-inset-bottom,0px);display:flex}.pager__tab{color:var(--text-3);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-top:2px solid #0000;flex:1;margin-top:-1px;padding:.8rem .5rem;font-size:1rem;font-weight:650}.pager__tab--active{color:var(--text);border-top-color:var(--accent)}.board{gap:var(--gap);padding:var(--gap);height:100vh;min-height:100vh;flex-direction:column;height:100dvh;min-height:100dvh;display:flex}.board__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.board__main{gap:var(--gap);grid-template-columns:repeat(var(--students,2), minmax(0, 1fr)) minmax(0, 1.15fr);flex:1;min-height:0;display:grid}.board__student,.board__side{flex-direction:column;min-height:0;display:flex}.board__student>*{flex:1}.board__side{gap:var(--gap)}.board__calendar{flex:60%;min-height:0;display:flex}.board__menu{flex:0 auto;min-height:0;display:flex}.board__calendar>*,.board__menu>*{flex:1}@media (max-width:900px){.board{height:auto}.board__main{grid-template-columns:1fr}.board__student>*,.board__calendar>*,.board__menu>*{max-height:70vh}}.clock{align-items:baseline;gap:1.25rem;display:flex}.clock__date{font-size:1.5rem;font-weight:600}.clock__time{letter-spacing:-.02em;font-size:2.6rem;font-weight:700;line-height:1}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;min-width:0;min-height:0;display:flex}.panel__head{justify-content:space-between;align-items:center;gap:.75rem;padding:.85rem 1.1rem .5rem;display:flex}.panel__title{letter-spacing:.01em;color:var(--text-2);text-transform:uppercase;font-size:1.05rem;font-weight:700}.panel__aside{align-items:center;gap:.5rem;display:flex}.panel__body{min-height:0;padding:.25rem 1.1rem 1rem}.panel--scroll .panel__body{flex:1;overflow-y:auto}.pill{color:var(--text-3);white-space:nowrap;align-items:center;gap:.4rem;font-size:.8rem;display:inline-flex}.pill__dot{background:var(--text-3);border-radius:50%;width:.55rem;height:.55rem}.pill--ok .pill__dot{background:var(--ok)}.pill--loading .pill__dot{background:var(--accent);animation:1.2s ease-in-out infinite pill-pulse}.pill--error .pill__dot,.pill--mfa_required .pill__dot{background:var(--err)}.pill--error .pill__text,.pill--mfa_required .pill__text{color:var(--err)}@keyframes pill-pulse{0%,to{opacity:.35}50%{opacity:1}}.banner{border:1px solid var(--line);background:var(--panel-2);border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;padding:.6rem 1rem;font-size:.95rem;display:flex}.banner--warn{border-color:var(--warn);border-color:color-mix(in srgb, var(--warn) 50%, transparent);background:color-mix(in srgb, var(--warn) 12%, var(--panel))}.banner--error{border-color:var(--err);border-color:color-mix(in srgb, var(--err) 50%, transparent);background:color-mix(in srgb, var(--err) 12%, var(--panel))}.banner__detail{color:var(--text-2);word-break:break-word;font-size:.85rem}.summary{text-align:left;background:var(--panel-2);border:1px solid var(--line);min-width:0;color:var(--text);border-radius:10px;flex-direction:column;flex:1;gap:.1rem;padding:.55rem .75rem;display:flex}.summary--button{cursor:pointer}.summary--button:hover{border-color:var(--text-3)}.summary__label{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);font-size:.7rem}.summary__value{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:650;overflow:hidden}.summary__sub{color:var(--text-2);font-size:.8rem}.summary--ok .summary__value{color:var(--ok)}.summary--warn{border-color:var(--warn);border-color:color-mix(in srgb, var(--warn) 45%, transparent)}.summary--warn .summary__value{color:var(--warn)}.empty{color:var(--text-3);align-items:center;gap:.5rem;padding:.4rem 0;font-size:.95rem;display:flex}.empty__icon{color:var(--ok)}.subject__code{color:var(--text-3);font-size:.85em;font-weight:400}.lessons{flex-direction:column;gap:.15rem;display:flex}.lesson{border-radius:8px;align-items:center;gap:.75rem;margin:0 -.6rem;padding:.35rem .6rem;font-size:1.05rem;display:flex}.lesson__time{color:var(--text-2);min-width:6.4em;font-size:.9rem}.lesson__subject{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.lesson--past{opacity:.45}.lesson--now{background:var(--now);font-weight:650}.lesson--now .lesson__time{color:var(--text)}.lesson__badge{text-transform:uppercase;letter-spacing:.08em;background:var(--student);color:#0b0e12;border-radius:999px;padding:.1rem .45rem;font-size:.7rem;font-weight:700}.lesson--hobby .lesson__subject{color:var(--student);font-weight:600}.lesson--hobby .lesson__subject:before{content:"◆ ";vertical-align:.15em;font-size:.7em}.lesson__loc{font-size:.85rem;font-weight:400}.hw{flex-direction:column;gap:.5rem;display:flex}.hw__item{align-items:flex-start;gap:.6rem;display:flex}.hw__body{flex:1;min-width:0}.hw__meta{justify-content:space-between;gap:.5rem;font-size:.85rem;display:flex}.hw__subject{color:var(--student);font-weight:650}.hw__date{white-space:nowrap;align-items:baseline;gap:.5rem;display:inline-flex}.hw__due{color:var(--warn);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem;font-weight:650}.hw__text{white-space:pre-wrap;font-size:1rem}.hw__check{cursor:pointer;border:2px solid var(--text-3);width:1.7rem;height:1.7rem;color:var(--ok);background:0 0;border-radius:7px;flex:none;margin-top:.1rem;font-size:1rem;font-weight:800;line-height:1}.hw__item--done .hw__check{border-color:var(--ok)}.hw__item--done .hw__body{opacity:.45}.hw__item--done .hw__text{text-decoration:line-through}.hw__due--late{color:var(--err)}.exams{flex-direction:column;gap:.45rem;display:flex}.exam{flex-direction:column;gap:.1rem;display:flex}.exam__when{color:var(--text-2);justify-content:space-between;font-size:.85rem;display:flex}.exam__days{color:var(--text-3)}.exam--soon .exam__days{color:var(--warn);font-weight:700}.exam__subject{color:var(--student);font-weight:650}.exam__what{font-size:1rem}.notes{flex-direction:column;gap:.3rem;display:flex}.note{flex-wrap:wrap;gap:.6rem;font-size:.9rem;display:flex}.note__type{color:var(--warn);font-weight:650}.msgs{flex-direction:column;gap:.35rem;display:flex}.msg{grid-template-columns:.6rem 1fr;align-items:baseline;column-gap:.5rem;font-size:.95rem;display:grid}.msg__dot{background:0 0;border-radius:50%;width:.5rem;height:.5rem}.msg--unread .msg__dot{background:var(--accent)}.msg--unread .msg__subject{font-weight:650}.msg__subject{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.msg__meta{grid-column:2;font-size:.8rem}.student{border-top:4px solid var(--student)}.student__name{color:var(--text);text-transform:none;font-size:1.35rem}.student__class{color:var(--student);vertical-align:.15em;margin-left:.5rem;font-size:.8rem;font-weight:600}.student__section{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);justify-content:space-between;align-items:baseline;gap:.5rem;margin:.9rem 0 .35rem;font-size:.8rem;display:flex}.student__section:first-of-type{margin-top:.25rem}.student__hours{text-transform:none;letter-spacing:0;color:var(--ok);font-size:1rem;font-weight:700}.student__unread{text-align:center;background:var(--accent);color:#0b0e12;border-radius:999px;min-width:1.4em;margin-left:.5rem;padding:0 .4em;font-weight:700;display:inline-block}.student__summary{gap:.5rem;margin:.25rem 0 .5rem;display:flex}.student__section{scroll-margin-top:.5rem}.tabs{background:var(--panel-2);border-radius:999px;gap:.15rem;padding:.15rem;display:inline-flex}.tabs__tab{cursor:pointer;color:var(--text-2);background:0 0;border:0;border-radius:999px;align-items:center;gap:.35rem;font-weight:600;display:inline-flex}.tabs--md .tabs__tab{padding:.35rem .9rem;font-size:.9rem}.tabs--sm .tabs__tab{padding:.2rem .65rem;font-size:.8rem}.tabs__tab--active{background:var(--panel);color:var(--text);box-shadow:0 1px 2px #0000004d}.tabs__badge{color:var(--text-3);font-size:.75em}.agenda{flex-direction:column;gap:.7rem;display:flex}.agenda__date{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin-bottom:.25rem;font-size:.8rem}.agenda__day--today .agenda__date{color:var(--text)}.agenda__day ul{flex-direction:column;gap:.2rem;display:flex}.agenda__event{border-left:3px solid var(--cal);align-items:baseline;gap:.7rem;padding-left:.6rem;font-size:1rem;display:flex}.agenda__event--past{opacity:.45}.agenda__time{color:var(--text-2);min-width:6.4em;font-size:.85rem}.agenda__title{text-overflow:ellipsis;overflow:hidden}.agenda__loc{font-size:.85rem}.agenda__none{font-size:.9rem}.notices{border-bottom:1px dashed var(--line);flex-direction:column;gap:.3rem;margin-bottom:.8rem;padding-bottom:.6rem;display:flex}.notice-item{align-items:baseline;gap:.6rem;font-size:.9rem;display:flex}.notice-item__week{white-space:nowrap;font-size:.75rem}.menu{flex-direction:column;gap:.2rem;display:flex}.menu__day{border-radius:8px;grid-template-columns:6.5em 1fr;align-items:center;gap:.6rem;margin:0 -.6rem;padding:.3rem .6rem;display:grid}.menu__day--today{background:var(--now)}.menu__label{flex-direction:column;line-height:1.15;display:flex}.menu__weekday{text-transform:capitalize;font-weight:650}.menu__date{font-size:.8rem}.menu__text{text-align:left;white-space:pre-wrap;background:0 0;border:0;border-radius:6px;width:100%;margin:-.25rem -.4rem;padding:.25rem .4rem;font-size:1.05rem;line-height:1.3}.menu__text:disabled{cursor:default;color:inherit}.menu--editable .menu__text{cursor:pointer}.menu--editable .menu__text:hover{background:var(--panel-2)}.menu__input{font:inherit;color:inherit;background:var(--panel-2);border:1px solid var(--accent);resize:none;border-radius:6px;width:100%;padding:.25rem .4rem;font-size:1.05rem}.view__sources{flex-wrap:wrap;align-items:center;gap:1.25rem;display:flex}.view__source{align-items:center;gap:.5rem;font-size:.85rem;display:inline-flex}.view__notices{flex-direction:column;gap:.5rem;display:flex}.view__clock{margin-right:.25rem;font-size:1.1rem;font-weight:700}.login{min-height:100vh;place-items:center;min-height:100dvh;padding:1rem;display:grid}.login__card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:.75rem;width:min(26rem,100%);padding:1.5rem;display:flex}.login__title{font-size:1.6rem}.login__form{flex-direction:column;gap:.9rem;display:flex}.login__label{color:var(--text-2);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.login__input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:10px;width:100%;padding:.7rem .9rem;font-size:1.1rem}.login__input:focus{outline:2px solid var(--accent);outline-offset:0;border-color:#0000}.login__input--code{font-family:var(--font-mono);letter-spacing:.4em;text-align:center;font-size:1.8rem}.login__button{cursor:pointer;background:var(--accent);color:#0b0e12;border:0;border-radius:10px;padding:.8rem 1rem;font-size:1.05rem;font-weight:650}.login__button:disabled{opacity:.5;cursor:default}.login__link{color:var(--text-2);cursor:pointer;background:0 0;border:0;padding:0;font-size:.9rem;text-decoration:underline}.login__error{color:var(--err);margin:0;font-size:.9rem}.users{flex-direction:column;gap:.4rem;display:flex}.user{background:var(--panel-2);border-radius:10px;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem .6rem;display:flex}.user__main{flex-direction:column;flex:1;min-width:0;display:flex}.user__name{font-weight:650}.user__email{text-overflow:ellipsis;font-size:.85rem;overflow:hidden}.user__role{color:var(--text-2);white-space:nowrap;font-size:.8rem}.user__role--owner{color:var(--accent)}.user__remove{border:1px solid var(--line);cursor:pointer;color:var(--text-2);background:0 0;border-radius:8px;padding:.3rem .6rem;font-size:.85rem}.user__remove:hover{border-color:var(--err);color:var(--err)}.uform{flex-direction:column;gap:.75rem;display:flex}.uform__row{flex-wrap:wrap;gap:.75rem;display:flex}.uform__field{color:var(--text-2);flex-direction:column;flex:12rem;gap:.25rem;font-size:.85rem;display:flex}.uform__input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);border-radius:8px;padding:.55rem .7rem;font-size:1rem}.uform__input:focus{outline:2px solid var(--accent);border-color:#0000}.uform__button{background:var(--accent);color:#0b0e12;cursor:pointer;border:0;border-radius:8px;align-self:flex-start;padding:.6rem 1rem;font-weight:650}.uform__button:disabled{opacity:.5;cursor:default}.uform__error{color:var(--err);margin:0;font-size:.9rem}.upanel__sub{text-transform:uppercase;letter-spacing:.06em;color:var(--text-3);margin:1.2rem 0 .2rem;font-size:.8rem}.upanel__hint{margin:0 0 .6rem;font-size:.85rem}.sform{flex-direction:column;gap:1rem;display:flex}.sform__field{color:var(--text-2);flex-direction:column;gap:.3rem;font-size:.85rem;display:flex}.sform__input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--line);resize:vertical;border-radius:8px;width:100%;padding:.55rem .7rem;font-size:.95rem}.sform__input:focus{outline:2px solid var(--accent);border-color:#0000}.sform__help{color:var(--text-3);font-size:.8rem;line-height:1.4}.sform__help code{font-family:var(--font-mono)}.sform__button{background:var(--accent);color:#0b0e12;cursor:pointer;border:0;border-radius:8px;align-self:flex-start;padding:.6rem 1rem;font-weight:650}.sform__button:disabled{opacity:.5;cursor:default}.sform__msg{margin:0;font-size:.9rem}.sform__msg--ok{color:var(--ok)}.sform__msg--error{color:var(--err)}.userspage{flex-direction:column;gap:1rem;max-width:40rem;margin:0 auto;padding:1rem;display:flex}.userspage__back{color:var(--text-2);cursor:pointer;background:0 0;border:0;align-self:flex-start;padding:.3rem 0;font-size:1rem}.userspage__hint{margin:0 0 .6rem;font-size:.85rem}.userspage__action{border:1px solid var(--line);background:var(--panel-2);color:var(--text);cursor:pointer;border-radius:8px;padding:.6rem 1rem;font-weight:650}.night{position:relative}.night__overlay{z-index:100;cursor:pointer;color:#2a2f36;background:#000;border:0;place-items:center;display:grid;position:fixed;top:0;bottom:0;left:0;right:0}.night__clock{letter-spacing:-.02em;font-size:4rem;font-weight:600}
