: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;font-family:var(--font-main);line-height:1.4;color-scheme:light}body{margin:0;background:linear-gradient(180deg,#eef2f7,#f7f9fc 42%,#fff);color:var(--text-strong)}.page{margin:0 auto;max-width:1220px;padding:1.5rem 1rem 2.5rem}.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 input{border:1px solid #b8c1d1;border-radius:8px;padding:.5rem .6rem;font:inherit}.login-form button{width:max-content;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:#fff;padding:.55rem .9rem;cursor:pointer}.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}.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}.calendar-day-column{position:relative;border-right:1px solid var(--line);background:linear-gradient(180deg,#fff,#f8fbff)}.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-homework-indicator{position:absolute;right:.34rem;bottom:.2rem;font-size:.78rem;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{right:.2rem;bottom:.1rem;font-size:.62rem}.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)}.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}@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){.page{padding:.6rem .45rem 1rem}.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{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}.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-homework-indicator{right:.14rem;bottom:.08rem;font-size:.56rem}.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}.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}}@media print{body{background:#fff!important;color:#000}.page{max-width:none;padding:0}.header,.app-status,.view-switcher,.date-controls,.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:1px solid #000;background:#fff;break-inside:avoid;page-break-inside:avoid}.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-color:#000!important}.calendar-event{background:#fff!important;color:#000!important;border:1px solid #000;border-left:3px 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-homework-indicator{color:#000!important}.event-cancel-indicator{border-top-color:#000!important}}
