:root{--font-main: "IBM Plex Sans", "Source Sans 3", "Segoe UI", sans-serif;--text-strong: #111827;--text-muted: #4b5563;--surface: #ffffff;--surface-soft: #f3f5f9;--line: #cdd5df;--line-strong: #9aa8b8;--accent: #0f3a6d;--mobile-tabbar-height: 62px;--paper-base: #fefdf7;--paper-grid: #d7e3f6;--paper-grid-strong: #c1d3ee;--paper-margin-line: #efb6b6;--paper-cell-size: 28px;--paper-major-size: 140px;font-family:var(--font-main);line-height:1.4;color-scheme:light}body{margin:0;background-color:var(--paper-base);background-image:linear-gradient(90deg,transparent 0,transparent 4.35rem,var(--paper-margin-line) 4.35rem,var(--paper-margin-line) 4.48rem,transparent 4.48rem),repeating-linear-gradient(0deg,transparent 0,transparent calc(var(--paper-cell-size) - 1px),var(--paper-grid) calc(var(--paper-cell-size) - 1px),var(--paper-grid) var(--paper-cell-size)),repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--paper-cell-size) - 1px),var(--paper-grid) calc(var(--paper-cell-size) - 1px),var(--paper-grid) var(--paper-cell-size)),repeating-linear-gradient(0deg,transparent 0,transparent calc(var(--paper-major-size) - 1px),var(--paper-grid-strong) calc(var(--paper-major-size) - 1px),var(--paper-grid-strong) var(--paper-major-size)),repeating-linear-gradient(90deg,transparent 0,transparent calc(var(--paper-major-size) - 1px),var(--paper-grid-strong) calc(var(--paper-major-size) - 1px),var(--paper-grid-strong) var(--paper-major-size));color:var(--text-strong)}.page{margin:0 auto;max-width:1220px;padding:1.5rem 1rem 2.5rem}.main-view-content{min-width:0}.error-text{color:#b1002d}.login-card{margin-top:1rem;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1rem}.login-form{display:grid;gap:.75rem;margin-top:.75rem}.login-form label{display:grid;gap:.35rem}.login-form label.remember-login-checkbox{display:inline-flex;align-items:center;gap:.5rem;width:fit-content;color:#1f3043;font-weight:600}.remember-login-checkbox input[type=checkbox]{width:1rem;height:1rem;accent-color:#0f3a6d}.login-form label.remember-login-switch{display:flex;align-items:center;justify-content:space-between;gap:.8rem;color:#1f3043;font-weight:600}.remember-login-switch-control{position:relative;width:3rem;height:1.85rem;flex:0 0 auto}.remember-login-switch-control input[type=checkbox]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;z-index:2;cursor:pointer}.remember-login-switch-slider{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#c4ccd8;transition:background-color .15s ease;box-shadow:inset 0 0 0 1px #00000014}.remember-login-switch-slider:before{content:"";position:absolute;top:2px;left:2px;width:1.6rem;height:1.6rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0000002e;transition:transform .15s ease}.remember-login-switch-control input[type=checkbox]:checked+.remember-login-switch-slider{background:#34c759}.remember-login-switch-control input[type=checkbox]:checked+.remember-login-switch-slider:before{transform:translate(1.15rem)}.login-form input{border:1px solid #b8c1d1;border-radius:8px;padding:.5rem .6rem;font:inherit}.login-form button[type=submit]{width:max-content;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;padding:.55rem .9rem;cursor:pointer}.login-advanced-toggle{width:max-content;border:1px solid #b8c1d1;border-radius:8px;background:#fff;color:#1b2c3d;padding:.45rem .7rem;cursor:pointer}.login-advanced-toggle:hover{border-color:#8ea6c3}.school-search-hint{margin:0;color:var(--text-muted);font-size:.92rem}.school-search-results,.school-recent-list{margin:.1rem 0 .2rem;padding:0;list-style:none;display:grid;gap:.35rem}.school-search-item,.school-recent-item{width:100%;text-align:left;border:1px solid #b8c1d1;border-radius:8px;background:#fff;color:#1b2c3d;padding:.45rem .55rem;cursor:pointer;display:grid;gap:.06rem}.school-search-item:hover,.school-recent-item:hover{border-color:#8ea6c3}.school-search-item:focus-visible,.school-recent-item:focus-visible,.school-search-item:active,.school-recent-item:active{background:#eef4ff;color:#10263f;border-color:#4c77a4;outline:none}.school-recent-item.active{border-color:#4c77a4;background:#edf4ff}.school-search-name{font-weight:700;color:#1b2c3d}.school-search-meta{color:#4d6178;font-size:.85rem;line-height:1.2}.school-recent{margin-top:.05rem}.school-recent-title{margin:.1rem 0 .25rem;color:#445466;font-size:.88rem;font-weight:700}.main-view-switcher{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.65rem}.main-view-switcher button{border:1px solid #b6beca;border-radius:8px;background:#fff;color:#14273b;padding:.42rem .7rem;cursor:pointer}.main-view-switcher button.active{background:#0f3a6d;border-color:#0f3a6d;color:#fff}.view-switcher{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:0}.view-switcher button,.date-controls button{border:1px solid #b6beca;border-radius:8px;background:#fff;padding:.5rem .75rem;cursor:pointer}.view-switcher button.active{background:var(--accent);border-color:var(--accent);color:#fff}.date-controls{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.55rem}.logout-row{margin-top:.7rem;display:flex;justify-content:flex-end}.logout-row button{border:1px solid #b6beca;border-radius:8px;background:#fff;padding:.42rem .68rem;cursor:pointer}.view-scroll-container{min-width:0}.cat-photo-view{margin-top:.8rem;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff}.cat-photo-view-image{display:block;width:100%;max-height:min(72vh,680px);object-fit:cover;object-position:center 26%}.homework-date-label{align-self:center;color:#394b5e;font-weight:700;font-size:.92rem}.homework-grid-shell{margin-top:.8rem;border:1px solid var(--line);border-radius:10px;overflow:auto;background:#fff}.homework-grid{width:100%;border-collapse:collapse;min-width:760px}.homework-grid thead th{text-align:left;font-weight:700;color:#223242;background:#edf2f8;border-bottom:1px solid var(--line);padding:.5rem .55rem}.homework-grid td,.homework-grid tbody th{border-bottom:1px solid #d8e0ea;padding:.48rem .55rem;vertical-align:top;text-align:left}.homework-group-row th{background:#f2f5fa;color:#506173;font-size:.9rem;font-weight:700}.homework-date-group-row th{background:#f8fafd;color:#263647;font-size:.95rem}.homework-item-row.homework-pending{background:#fff}.homework-item-row.homework-missed{background:#fbe3e8}.homework-item-row.homework-completed{background:#e0f2e0}.homework-text-cell .homework-due-date{font-weight:700;margin-bottom:.16rem}.homework-text-cell .homework-text{white-space:pre-wrap;overflow-wrap:anywhere}.homework-empty{color:#46596b}.homework-mobile-list{margin-top:.8rem;display:grid;gap:.75rem;min-width:0}.homework-mobile-section{border:1px solid var(--line);border-radius:10px;background:#fff;overflow:hidden}.homework-mobile-section h3{margin:0;padding:.48rem .58rem;background:#f2f5fa;color:#506173;font-size:.9rem}.homework-mobile-section.homework-mobile-missed h3{background:#f6e2e6}.homework-mobile-section.homework-mobile-completed h3{background:#dceedd}.homework-mobile-date-group+.homework-mobile-date-group{border-top:1px solid #e0e7f0}.homework-mobile-date-group h4{margin:0;padding:.42rem .58rem;background:#f8fafd;color:#263647;font-size:.9rem}.homework-mobile-card{padding:.48rem .58rem;display:grid;gap:.24rem;border-top:1px solid #e0e7f0;min-width:0}.homework-mobile-card:first-of-type{border-top:0}.homework-mobile-card p{margin:0;overflow-wrap:anywhere}.homework-mobile-card p.homework-mobile-subject{margin-bottom:.08rem}.homework-mobile-card.homework-missed{background:#fbe3e8}.homework-mobile-card.homework-completed{background:#e0f2e0}.homework-mobile-text{min-width:0}.homework-mobile-text div{white-space:pre-wrap;overflow-wrap:anywhere}.messages-shell{margin-top:.8rem;border:1px solid var(--line);border-radius:10px;background:#f5f8fc;display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);overflow:hidden;width:100%;min-height:22rem;height:min(68vh,44rem);max-height:44rem;max-width:100%}.messages-list{border-right:1px solid var(--line);background:#eef4fb;display:grid;grid-template-rows:auto minmax(0,1fr);min-width:0;overflow:hidden;max-width:100%}.messages-list-header{border-bottom:1px solid var(--line);padding:.6rem .7rem}.messages-list-header h3{margin:0}.messages-pull-indicator{display:grid;place-items:center;font-size:.8rem;color:#4a5d71;overflow:hidden;transition:height .15s ease}.messages-pull-indicator.armed,.messages-pull-indicator.refreshing{color:#1f4a7d;font-weight:700}.messages-list-items{list-style:none;margin:0;padding:.25rem;overflow-y:auto;overflow-x:hidden;display:grid;gap:.28rem;min-width:0;max-width:100%}.messages-list-item{width:100%;box-sizing:border-box;text-align:left;border:1px solid #b8c7d8;border-radius:10px;background:#fff;color:#152739;display:grid;grid-template-rows:auto auto auto auto;gap:.12rem;padding:.45rem .55rem;cursor:pointer;min-width:0;max-width:100%;overflow:hidden}.messages-list-item:hover{border-color:#8aa5c2}.messages-list-item.active{border-color:#3a6ea3;background:#e6f0ff}.messages-list-item.unread .messages-list-subject{font-weight:800}.messages-list-subject{font-weight:700}.messages-list-subject-row{display:flex;align-items:center;justify-content:space-between;gap:.4rem;min-width:0}.messages-list-subject-row .messages-list-subject{flex:1 1 auto;min-width:0}.messages-list-thread-indicator{flex:0 0 auto;border:1px solid #85a4c4;border-radius:999px;background:#eff5fc;color:#305579;font-size:.7rem;line-height:1.1;padding:.08rem .34rem}.messages-list-subject,.messages-list-sender,.messages-list-preview,.messages-list-time{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#44576a;font-size:.86rem}.messages-list-subject{color:#152739}.messages-list-footer{display:flex;align-items:flex-end;justify-content:space-between;gap:.35rem;min-width:0}.messages-list-attachment-indicator{flex:0 0 auto;font-size:.9rem;line-height:1;color:#1b4f7e}.messages-thread{display:grid;grid-template-rows:auto minmax(0,1fr) auto;background:#e9eff7;min-width:0}.messages-thread-empty{margin:.75rem;color:#415367}.messages-thread-header{border-bottom:1px solid #ccd8e6;padding:.65rem .8rem;background:#f7fbff}.messages-thread-header h3{margin:0}.messages-thread-bubbles{padding:.8rem;overflow-y:auto;display:grid;gap:.5rem;align-content:start;grid-auto-rows:max-content}.message-bubble-row{display:flex;align-items:flex-start}.message-bubble-row.other{justify-content:flex-start}.message-bubble-row.own{justify-content:flex-end}.message-bubble{width:fit-content;max-width:min(80%,42rem);border-radius:14px;border:1px solid #c5d6ea;background:#fff;padding:.52rem .62rem}.message-bubble-row.own .message-bubble{background:#d7ebff;border-color:#9fc5ea}.message-bubble-meta{color:#46596d;font-size:.78rem;margin-bottom:.2rem}.message-bubble-content{white-space:pre-wrap;overflow-wrap:anywhere}.message-attachments{margin-top:.35rem;display:flex;flex-wrap:wrap;gap:.28rem}.message-attachment-item{display:inline-flex;align-items:center;gap:.24rem;min-width:0}.message-attachment-button{border:1px solid #9cb8d7;border-radius:8px;background:#fff;color:#17375a;padding:.24rem .42rem;cursor:pointer;max-width:min(26rem,62vw);text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.message-attachment-download-button{border:1px solid #9cb8d7;border-radius:8px;background:#fff;color:#17375a;padding:.24rem .38rem;cursor:pointer;line-height:1}.placeholder{margin-top:1.25rem;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:1rem}.calendar-shell{margin-top:.85rem;border:1px solid var(--line);border-radius:10px;overflow-x:auto;overflow-y:hidden;background:#f8fafd;-webkit-overflow-scrolling:touch}.calendar-header-row{display:grid;border-bottom:1px solid var(--line)}.calendar-corner{border-right:1px solid var(--line);background:#edf2f8}.calendar-day-header{padding:.55rem .45rem;text-align:center;font-weight:700;color:#223242;border-right:1px solid var(--line);background:#edf2f8}.calendar-day-header:last-child{border-right:0}.calendar-main{display:grid;grid-template-columns:68px 1fr}.calendar-time-scale{position:relative;border-right:1px solid var(--line);background:#f2f6fb}.calendar-time-label{position:absolute;left:.25rem;font-size:.82rem;color:#445466;font-weight:700;line-height:1.05}.calendar-columns{display:grid;column-gap:0}.calendar-day-column{position:relative;background:linear-gradient(180deg,#fff,#f8fbff);border-right:1px solid var(--line)}.calendar-day-column:last-child{border-right:0}.calendar-hour-line{position:absolute;left:0;right:0;border-top:1px solid var(--line)}.calendar-event{position:absolute;display:flex;flex-direction:column;justify-content:flex-start;align-items:flex-start;border:1px solid #97adc6;border-left:4px solid #1f4a7d;border-radius:7px;background:#fff;color:var(--text-strong);text-align:left;padding:.35rem .42rem;overflow:hidden;cursor:pointer;box-shadow:0 1px #0f2d4e17;-moz-appearance:none;appearance:none;-webkit-appearance:none}.event-indicators{position:absolute;right:.34rem;bottom:.2rem;display:flex;align-items:center;gap:.22rem}.event-homework-indicator,.event-message-indicator{font-size:.92rem;line-height:1;color:#1f4a7d;font-weight:700}.event-cancel-indicator{position:absolute;top:0;right:0;width:0;height:0;border-top:.82rem solid #d63031;border-left:.82rem solid transparent}.calendar-event:hover{border-color:#5177a0}.calendar-event.event-cancelled{background:#edf1f5;border-color:#b6c0cd;border-left-color:#96a2b2;color:#6f7d90}.calendar-event.event-cancelled .event-subject,.calendar-event.event-cancelled .event-meta{text-decoration:line-through;color:#6f7d90}.calendar-event.event-replacement{background:#cfeadf;border-color:#8cc6aa;border-left-color:#1f8f57}.calendar-event.event-replacement:hover{border-color:#4b9c70}.calendar-event.event-replacement .event-subject.event-value-replaced,.calendar-event.event-replacement .event-meta.event-value-replaced,.calendar-event.event-replacement .event-value-replaced{background:#149659;color:#fff;font-weight:700}.calendar-event.event-replacement .event-subject,.calendar-event.event-replacement .event-meta{color:#1d3045}.calendar-shell.mobile-week .calendar-day-header{padding:.4rem .2rem;font-size:.82rem}.calendar-shell.mobile-week .calendar-time-label{font-size:.72rem;left:.12rem}.calendar-shell.mobile-week .calendar-event{padding:.22rem .2rem;border-left-width:3px}.calendar-shell.mobile-week .event-homework-indicator,.calendar-shell.mobile-week .event-message-indicator{font-size:.82rem}.calendar-shell.mobile-week .event-cancel-indicator{border-top-width:.62rem;border-left-width:.62rem}.calendar-shell.mobile-week .event-subject{font-size:.72rem;line-height:1.1;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.calendar-shell.mobile-week .event-meta{font-size:.64rem;line-height:1.1;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.event-time{font-size:.72rem;color:#34475b;margin-bottom:.06rem}.event-subject{font-size:.87rem;font-weight:700;line-height:1.2}.event-meta{font-size:.78rem;line-height:1.2;color:#4c5f73}.event-value-replaced{background:#d9f2e0;border-radius:3px;padding:0 .16rem}.event-teacher{white-space:nowrap}.teacher-text-nowrap{white-space:normal;overflow-wrap:anywhere;word-break:break-word}.app-status{margin-top:.9rem}.app-status p{margin:.2rem 0;color:var(--text-muted)}.mobile-bottom-nav,.mobile-menu-backdrop{display:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a111e59;display:grid;place-items:center;padding:1rem}.modal-panel{width:min(680px,96vw);max-height:min(88vh,840px);background:#fff;border-radius:12px;border:1px solid #cad4e8;box-shadow:0 16px 40px #0000002e;overflow-y:auto;padding:.8rem 1rem 1rem}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.modal-header h3{margin:0}.modal-header button{border:1px solid #b6beca;border-radius:8px;background:#fff;padding:.45rem .65rem;cursor:pointer}.modal-content p,.modal-homework{margin:.55rem 0}.modal-homework-list{margin:.35rem 0 0 1.15rem;padding:0}.modal-homework-list li+li{margin-top:.25rem}.modal-homework-list li{overflow-wrap:anywhere;word-break:break-word}.modal-message-link{display:grid;gap:.18rem;margin:.6rem 0 .45rem}.modal-message-link button{width:fit-content;max-width:100%;border:1px solid #b6beca;border-radius:8px;background:#fff;color:#17375a;padding:.3rem .5rem;cursor:pointer;text-align:left}.modal-message-subject{font-weight:700;color:#223242}.modal-message-preview{color:#4b5f73;overflow-wrap:anywhere}.attachment-modal-backdrop{z-index:60}.attachment-modal-panel{width:min(980px,96vw);max-height:min(92vh,900px);display:grid;grid-template-rows:auto minmax(0,1fr);gap:.6rem;overflow:hidden}.attachment-modal-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:.6rem}.attachment-modal-header h3{min-width:0;overflow-wrap:anywhere}.attachment-modal-actions{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;min-width:0}.attachment-modal-actions a,.attachment-modal-actions button{border:1px solid #b6beca;border-radius:8px;background:#fff;color:#1b2c3d;text-decoration:none;padding:.4rem .62rem;cursor:pointer;font:inherit}.attachment-modal-frame{width:100%;height:min(74vh,760px);border:1px solid #c5d2e2;border-radius:10px;background:#fff}.attachment-modal-image{width:100%;height:min(74vh,760px);border:1px solid #c5d2e2;border-radius:10px;background:#fff;object-fit:contain}.attachment-modal-unavailable{margin:0;padding:.8rem;border:1px solid #c5d2e2;border-radius:10px;background:#fff;color:#44576a}:root{--font-main: "Avenir Next", "Trebuchet MS", "Segoe UI", "Helvetica Neue", Arial, sans-serif;--font-hand: "Chalkboard SE", "Marker Felt", "Bradley Hand", "Segoe Print", "Comic Sans MS", cursive;--ink-main: #173c90;--ink-dim: #2751ab;--ink-soft: #6382be;--text-strong: #163671;--text-muted: #3f5f9a;--surface: #fffefa;--surface-soft: #f4f8ff;--line: #9ab2de;--line-strong: #6c8cc7;--accent: #2b5ec2;--paper-base: #fffef9;--paper-grid: #cfe0ff;--paper-grid-strong: #afc8f3;--paper-margin-line: #efacad;--paper-notebook-bg: radial-gradient(circle at 16% 14%, rgb(255 255 255 / 66%), transparent 42%), linear-gradient( 90deg, transparent 0, transparent 4.35rem, var(--paper-margin-line) 4.35rem, var(--paper-margin-line) 4.48rem, transparent 4.48rem ), repeating-linear-gradient( 0deg, transparent 0, transparent calc(var(--paper-cell-size) - 1px), var(--paper-grid) calc(var(--paper-cell-size) - 1px), var(--paper-grid) var(--paper-cell-size) ), repeating-linear-gradient( 90deg, transparent 0, transparent calc(var(--paper-cell-size) - 1px), var(--paper-grid) calc(var(--paper-cell-size) - 1px), var(--paper-grid) var(--paper-cell-size) ), repeating-linear-gradient( 0deg, transparent 0, transparent calc(var(--paper-major-size) - 1px), var(--paper-grid-strong) calc(var(--paper-major-size) - 1px), var(--paper-grid-strong) var(--paper-major-size) ), repeating-linear-gradient( 90deg, transparent 0, transparent calc(var(--paper-major-size) - 1px), var(--paper-grid-strong) calc(var(--paper-major-size) - 1px), var(--paper-grid-strong) var(--paper-major-size) )}body{color:var(--text-strong);background-color:var(--paper-base);background-attachment:scroll;background-image:var(--paper-notebook-bg)}h1,h2,h3,h4{font-family:var(--font-hand);font-weight:700;color:var(--ink-main);letter-spacing:.015em}.login-card,.placeholder,.homework-grid-shell,.messages-shell,.cat-photo-view,.modal-panel,.mobile-menu-panel{border:2px solid var(--ink-soft);border-radius:14px 12px 16px 10px;background:#ffffffdb;box-shadow:2px 2px #1d3e8729}.page button,.page input:not([type=checkbox]),.page select,.page textarea{border:2px solid var(--ink-soft);border-radius:10px 8px 11px 9px;background:#fff;color:var(--ink-main);box-shadow:1px 1px #234ca329}.page button:hover,.page button:focus-visible{border-color:var(--ink-dim);background:#edf3ff}.page button:active{transform:translate(1px,1px);box-shadow:none}.page button:disabled{opacity:.65;cursor:not-allowed;transform:none}.main-view-switcher button.active,.view-switcher button.active{background:var(--accent);border-color:var(--accent);color:#fff}.login-form label.remember-login-checkbox,.login-form label.remember-login-switch,.school-search-name,.school-recent-title,.homework-date-label,.messages-list-subject,.messages-list-time{color:var(--ink-main)}.remember-login-switch-slider{background:#c9d7ee}.school-search-item,.school-recent-item{border:2px solid var(--ink-soft);border-radius:11px 9px 12px 8px}.school-search-item:focus-visible,.school-recent-item:focus-visible,.school-search-item:active,.school-recent-item:active{background:#eaf1ff;border-color:var(--ink-dim)}.calendar-shell{border:2px solid var(--ink-soft);border-radius:13px 10px 14px 9px;background:#ffffffc7;box-shadow:2px 2px #234ca324}.calendar-header-row{border-bottom:2px solid var(--line)}.calendar-corner,.calendar-day-header{color:var(--ink-main);background:#e5eeffe5}.calendar-time-scale{background:#eff6ffe0}.calendar-day-column{background:linear-gradient(180deg,#ffffffdb,#f7fbffeb)}.calendar-hour-line{border-top:1px dashed rgb(112 140 198 / 65%)}.calendar-time-label{color:var(--ink-main)}.calendar-event{border:2px solid var(--ink-soft);border-left:3px solid var(--ink-main);border-radius:8px 6px 10px 7px;background:#fff;box-shadow:1px 1px #234ca329}.calendar-event:hover{border-color:var(--ink-dim)}.event-subject{color:var(--ink-main)}.event-meta{color:#2f4f86}.calendar-event.event-cancelled{background:#eceff4;border-color:#a6b6cf;border-left-color:#8fa1bf}.calendar-event.event-replacement{background:#d2eddf;border-color:#86c0a5;border-left-color:#228853}.calendar-event.event-replacement .event-subject.event-value-replaced,.calendar-event.event-replacement .event-meta.event-value-replaced,.calendar-event.event-replacement .event-value-replaced{background:#1a8e57;color:#fff}.event-homework-indicator,.event-message-indicator{font-size:1.06rem;color:var(--ink-main)}.homework-grid thead th{color:var(--ink-main);background:#e7f0ff;border-bottom:2px solid var(--line)}.homework-grid td,.homework-grid tbody th{border-bottom:1px solid #b4c8ea}.homework-group-row th{background:#eff4ff;color:var(--ink-main)}.homework-date-group-row th{background:#f6f9ff;color:#22467f}.homework-item-row.homework-missed{background:#f7dce2}.homework-item-row.homework-completed{background:#dceddf}.homework-mobile-section h3,.homework-mobile-date-group h4{color:var(--ink-main)}.messages-shell{background:#f3f9ffd9}.messages-list{background:#ecf4ffe0}.messages-list-item{border:2px solid var(--line);border-radius:11px 9px 12px 8px;background:#fff}.messages-list-item.active{border-color:var(--ink-dim);background:#e8f0ff}.messages-list-thread-indicator{border:1px solid #95afda;background:#eff5ff;color:var(--ink-main)}.messages-thread{background:#eef5ffe5}.message-bubble{border:2px solid #b2c5e5;border-radius:14px 11px 15px 10px;background:#fff}.message-bubble-row.own .message-bubble{background:#dbe9ff;border-color:#9cb8e3}.modal-backdrop{background:#0a142657}.modal-panel{border:2px solid var(--ink-soft);background:#fffffff2}.modal-header button,.modal-message-link button,.attachment-modal-actions a,.attachment-modal-actions button{border:2px solid var(--ink-soft)}.attachment-modal-frame,.attachment-modal-image,.attachment-modal-unavailable{border:2px solid #b3c5e5}.mobile-bottom-nav{border-top:2px solid var(--ink-soft);background:#fffffceb;box-shadow:0 -2px #21489a24;-webkit-backdrop-filter:none;backdrop-filter:none}.mobile-bottom-nav .mobile-tab-button{color:#4a67a1}.mobile-bottom-nav .mobile-tab-button.active{color:var(--accent)}.mobile-bottom-nav .mobile-tab-button.active:after{background:var(--accent);height:3px}.mobile-menu-photo,.cat-photo-view-image{border:2px solid #aec2e5;border-radius:12px 10px 14px 9px;box-shadow:2px 2px #1d3e8726}.error-text{color:#b31e3c;font-weight:700}@media(max-width:900px){.page{padding:.75rem .5rem 1.4rem}.view-switcher,.date-controls{gap:.35rem}.view-switcher button,.date-controls button{padding:.42rem .56rem;font-size:.9rem}.calendar-shell{margin-top:.6rem;border-radius:8px}}@media(max-width:760px){html,body,#root{height:100%}.page{padding:.6rem .45rem 1rem}.page.mobile-app-layout{max-width:none;margin:0;padding:0;height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}.page.mobile-app-layout .main-view-content{flex:1;min-height:0;overflow:hidden}.page.mobile-app-layout .placeholder{margin:0;border:0;border-radius:0;padding:0;background:transparent;height:100%;min-height:0;display:flex;flex-direction:column}.page.mobile-app-layout .view-scroll-container{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding:.5rem .45rem calc(var(--mobile-tabbar-height) + env(safe-area-inset-bottom) + .5rem);background-color:var(--paper-base);background-image:var(--paper-notebook-bg);background-attachment:local}.page.mobile-app-layout .messages-section .view-scroll-container{padding:0 0 calc(var(--mobile-tabbar-height) + env(safe-area-inset-bottom));overflow:hidden}.page.mobile-app-layout .messages-shell.mobile{margin-top:0;border:0;border-radius:0;background:transparent;min-height:0;height:100%;max-height:none;display:grid;grid-template-columns:minmax(0,1fr)}.page.mobile-app-layout .messages-shell.mobile .messages-list,.page.mobile-app-layout .messages-shell.mobile .messages-thread{min-height:0;height:100%}.page.mobile-app-layout .messages-shell.mobile .messages-list{border-right:0;border-top:1px solid var(--line)}.page.mobile-app-layout .messages-shell.mobile .messages-thread{border-top:1px solid var(--line);will-change:transform;touch-action:pan-y}.page.mobile-app-layout .timetable-scroll .calendar-shell{will-change:transform}.mobile-bottom-nav{display:grid;grid-template-columns:3.1rem repeat(3,minmax(0,1fr));gap:.08rem;position:fixed;left:0;right:0;bottom:0;z-index:30;background:#f8fafddb;border-top:1px solid rgb(182 196 212 / 78%);box-shadow:0 -2px 14px #0f203817;-webkit-backdrop-filter:saturate(1.4) blur(14px);backdrop-filter:saturate(1.4) blur(14px);padding:.22rem .28rem calc(.28rem + env(safe-area-inset-bottom));min-height:var(--mobile-tabbar-height);box-sizing:border-box}.mobile-bottom-nav .mobile-tab-button{border:0;border-radius:0;background:transparent;color:#5d6b7d;padding:.28rem .2rem .42rem;font-size:.67rem;line-height:1.08;font-weight:500;cursor:pointer;position:relative;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.08rem;min-width:0}.mobile-bottom-nav .mobile-tab-button:after{content:"";position:absolute;left:28%;right:28%;bottom:.08rem;border-radius:999px;height:2px;background:transparent;transition:all .14s ease}.mobile-bottom-nav .mobile-tab-button.active{color:#1f5fbf;font-weight:700}.mobile-bottom-nav .mobile-tab-button.active:after{left:22%;right:22%;background:#1f5fbf}.mobile-tab-icon{font-size:1.03rem;line-height:1}.mobile-tab-label{min-width:0;max-width:100%;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mobile-bottom-menu-button{color:#33455d}.mobile-bottom-menu-button:after{display:none}.mobile-menu-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0b14223d;z-index:40}.mobile-menu-panel{position:absolute;left:.5rem;right:.5rem;bottom:calc(var(--mobile-tabbar-height) + env(safe-area-inset-bottom) + .35rem);border:1px solid #cad6e6;border-radius:12px;background:#fff;box-shadow:0 12px 26px #0000002e;padding:.65rem .75rem;display:grid;gap:.38rem}.mobile-menu-photo{width:100%;aspect-ratio:16 / 9;object-fit:cover;object-position:center 26%;border-radius:10px;border:1px solid #cdd8e8;display:block;box-shadow:0 2px 8px #12213624}.mobile-menu-panel p{margin:0;color:#46596d;font-size:.84rem;line-height:1.3}.mobile-menu-panel button{width:fit-content;border:1px solid #b6beca;border-radius:8px;background:#fff;color:#1b2c3d;padding:.34rem .58rem;cursor:pointer}.login-card{margin-top:.55rem;border-radius:10px;padding:.75rem}.login-card p{margin-top:.45rem;margin-bottom:.65rem;font-size:.92rem}.login-form{gap:.62rem}.login-form input{font-size:16px}.login-form button[type=submit]{width:100%;justify-self:stretch}.view-switcher{margin-top:0;flex-wrap:nowrap;gap:.25rem;overflow-x:auto;padding-bottom:.06rem;-webkit-overflow-scrolling:touch}.view-switcher button{flex:0 0 auto;min-width:0;padding:.28rem .45rem;font-size:.8rem;line-height:1.1;white-space:nowrap}.date-controls{margin-top:.45rem;gap:.3rem}.date-controls button{flex:0 0 auto;min-width:2.05rem;padding:.3rem .5rem;font-size:.84rem;line-height:1.1}.main-view-switcher{margin-top:.35rem;gap:.28rem;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch}.main-view-switcher button{flex:0 0 auto;white-space:nowrap;padding:.32rem .5rem;font-size:.84rem}.homework-date-label{width:100%;font-size:.86rem}.homework-mobile-list{margin-top:.58rem;gap:.55rem}.homework-mobile-section h3{padding:.42rem .5rem;font-size:.85rem}.homework-mobile-date-group h4{padding:.38rem .5rem;font-size:.82rem}.homework-mobile-card{padding:.42rem .5rem;gap:.2rem;font-size:.9rem}.homework-grid{min-width:680px}.placeholder{margin-top:.75rem;border-radius:10px;padding:.75rem}.placeholder h2{margin:0 0 .45rem;font-size:1.15rem}.calendar-shell.mobile-week .calendar-day-header{font-size:.74rem;padding:.34rem .08rem}.calendar-shell.mobile-week .calendar-time-label{font-size:.66rem;left:.08rem}.calendar-shell.mobile-week .calendar-event{border-radius:6px;padding:.18rem .14rem}.calendar-shell.mobile-week .event-indicators{right:.14rem;bottom:.08rem;gap:.12rem}.calendar-shell.mobile-week .event-homework-indicator,.calendar-shell.mobile-week .event-message-indicator{font-size:.76rem}.calendar-shell.mobile-week .event-cancel-indicator{border-top-width:.56rem;border-left-width:.56rem}.calendar-shell.mobile-week .event-subject{font-size:.66rem}.calendar-shell.mobile-week .event-meta{font-size:.58rem}.logout-row{justify-content:center;margin-top:.6rem}.logout-row button{width:100%;max-width:14rem}.messages-shell.mobile{display:block;min-height:0;height:auto;max-height:none;border-radius:12px}.messages-shell.mobile .messages-list{border-right:0;min-height:22rem}.messages-shell.mobile .messages-list-items{padding:.4rem;gap:.38rem}.messages-shell.mobile .messages-list-item{border-radius:14px;padding:.55rem .62rem}.messages-shell.mobile .messages-list-thread-indicator{font-size:.64rem;padding:.05rem .28rem}.messages-shell.mobile .messages-list-attachment-indicator{font-size:.82rem}.messages-shell.mobile .messages-thread{min-height:24rem;grid-template-rows:auto minmax(0,1fr) auto}.messages-thread-mobile-header{display:flex;align-items:center;gap:.5rem;padding:.45rem .55rem;border-bottom:1px solid #d1ddec;background:#f7fbff}.messages-thread-mobile-header button{border:1px solid #abc0d8;border-radius:999px;background:#fff;padding:.2rem .48rem;cursor:pointer}.messages-shell.mobile .messages-thread-header{padding:.55rem .62rem}.messages-shell.mobile .messages-thread-bubbles{padding:.55rem;gap:.42rem}.messages-shell.mobile .message-bubble{max-width:86%;border-radius:18px;padding:.5rem .58rem}.messages-shell.mobile .message-bubble-row.own .message-bubble{background:#157efb;border-color:#157efb;color:#fff}.messages-shell.mobile .message-bubble-row.own .message-bubble-meta{color:#ffffffd1}.messages-shell.mobile .message-bubble-row.other .message-bubble{background:#fff;border-color:#d4dfed;color:#142739}.messages-shell.mobile .message-attachment-button{font-size:.8rem}.messages-shell.mobile .message-attachment-download-button{font-size:.78rem;padding:.2rem .32rem}.modal-backdrop{display:flex;justify-content:center;align-items:flex-end;padding:0}.modal-panel{width:100vw;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:14px 14px 0 0;border-left:0;border-right:0;border-bottom:0;box-shadow:0 -10px 24px #0000002e;overflow-y:auto;padding:.65rem .75rem calc(.8rem + env(safe-area-inset-bottom))}.modal-header{position:sticky;top:0;z-index:1;background:#fff;padding-bottom:.45rem;margin-bottom:.2rem}.modal-content p{margin:.45rem 0;font-size:.93rem;overflow-wrap:anywhere}.modal-homework-list{margin-left:1rem}.modal-content strong{display:block;margin-bottom:.08rem}.modal-content .teacher-text-nowrap{white-space:normal;overflow-wrap:anywhere;word-break:break-word}.attachment-modal-panel{width:100vw;max-width:100vw;max-height:100vh;max-height:100dvh;border-radius:14px 14px 0 0}.attachment-modal-header{grid-template-columns:1fr;gap:.4rem}.attachment-modal-actions{width:100%;justify-content:flex-start}.attachment-modal-frame,.attachment-modal-image{height:calc(100dvh - 9rem);border-radius:8px}}@media print{body{background:#fff!important;color:#000}.page{max-width:none;padding:0}.header,.app-status,.main-view-switcher,.view-switcher,.date-controls,.logout-row,.login-card,.modal-backdrop{display:none!important}.placeholder{border:0;margin:0;padding:0;background:#fff}.placeholder h2,.placeholder p{color:#000}.calendar-shell{border:0;background:#fff;break-inside:avoid;page-break-inside:avoid}.calendar-header-row{border-bottom:0!important}.calendar-corner,.calendar-day-header,.calendar-time-scale,.calendar-day-column{background:#fff!important;color:#000}.calendar-day-header,.calendar-corner,.calendar-time-scale,.calendar-day-column,.calendar-hour-line{border:0!important}.calendar-hour-line{display:none!important}.calendar-event{background:#fff!important;color:#000!important;border:1px solid #000;border-left:1px solid #000;box-shadow:none;break-inside:avoid;page-break-inside:avoid}.event-time,.event-subject,.event-meta,.calendar-time-label,.event-value-replaced,.detail-value-replaced{color:#000!important;background:transparent!important}.event-indicators,.event-homework-indicator,.event-message-indicator{display:none!important}.event-cancel-indicator{border-top-color:#000!important}}
