:root{--paper:#f7f6f2;--ink:#22301f;--muted:#5a6a56;--green:#2f6b46;--green-deep:#204c32;--green-soft:#e4efe6;--line:#d8ddd3;--card:#ffffff;--amber:#8a5a1f;--amber-soft:#f6ead8}*{box-sizing:border-box;margin:0;padding:0}:focus-visible{outline:2.5px solid var(--amber);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--paper);color:var(--ink);line-height:1.4;padding-bottom:48px}header{background:var(--green-deep);color:#fff;padding:12px 16px 10px;border-bottom:4px solid var(--green)}header h1{display:inline-flex;align-items:center;gap:8px;font-size:1.05rem;font-weight:700;letter-spacing:.01em;order:1}header p.beta{display:inline-block;order:3;flex:0 0 100%;margin-top:5px;font-size:.62rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;background:var(--amber);color:#fff;border-radius:20px;padding:2px 9px}.headtop{display:flex;align-items:center;flex-wrap:wrap;gap:4px 12px}.headtop .share{order:2;margin-left:auto}@media (min-width:700px){header p.beta{order:2;flex:0 0 auto;margin-top:0}.headtop .share{order:3}}.share{display:flex;gap:6px;flex-shrink:0}.sharedot{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:700;color:#fff;text-decoration:none;border:0;cursor:pointer;background:var(--muted)}.sharedot.tg{background:#229ed9}.sharedot.wa{background:#25d366}.sharedot.vb{background:#7360f2}.sharedot.copy{background:#ffffff2e;border:1px solid rgba(255,255,255,.4);font-size:.85rem}.sharedot.copy.copied{background:var(--amber)}.sharedot:hover{filter:brightness(1.1)}.controls{position:sticky;top:0;z-index:10;background:var(--paper);border-bottom:1px solid var(--line);padding:10px 16px 12px;display:flex;flex-wrap:wrap;gap:8px}.controls select{flex:1 1 46%;min-width:140px;font:inherit;font-size:.9rem;color:var(--ink);padding:9px 10px;border:1.5px solid var(--line);border-radius:10px;background:var(--card);-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%232f6b46' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.viewswitch{flex:1 1 100%;display:flex;border:1.5px solid var(--green);border-radius:10px;overflow:hidden}.viewswitch button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-size:.85rem;font-weight:600;padding:8px 0;border:0;background:var(--card);color:var(--green);cursor:pointer;white-space:nowrap}.viewswitch button.on{background:var(--green);color:#fff;font-weight:700}@media (min-width:700px){.controls select{flex:0 1 220px}.viewswitch{flex:0 1 auto;min-width:330px}}.note a{color:var(--green-deep);font-weight:600}.installbar{margin:12px 16px 0;padding:10px 12px;border-radius:12px;background:var(--green-soft);border:1.5px solid var(--green);color:var(--green-deep);font-size:.85rem;display:flex;align-items:center;gap:10px}.installbar .ib-icon{display:flex;flex-shrink:0}.installbar .ib-text{flex:1}.installbar .ib-btn{flex-shrink:0;font:inherit;font-size:.8rem;font-weight:700;background:var(--green);color:#fff;border:0;border-radius:8px;padding:7px 12px;cursor:pointer}.installbar .ib-close{display:flex;flex-shrink:0;background:none;border:0;color:var(--green-deep);opacity:.6;cursor:pointer;padding:2px 4px}.installbar .ib-close:hover{opacity:1}@media (min-width:700px){.installbar{max-width:640px;margin-left:auto;margin-right:auto}}.monthmini{margin:14px 12px 0}.calhead.mini{display:flex;align-items:center;justify-content:space-between;margin:0 4px 8px}.calhead.mini b{font-size:1.1rem;color:var(--green-deep);text-transform:capitalize}.calhead.mini button{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;border:1.5px solid var(--line);background:var(--card);color:var(--green-deep);cursor:pointer}.calhead.mini button:disabled{opacity:.3;cursor:default}.calgrid.mini{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:0}.calgrid.mini .dow{display:flex;align-items:center;justify-content:center;height:24px;font-size:.78rem;color:var(--muted)}.cell.mini{width:100%;height:46px;border-radius:10px;background:var(--card);border:1px solid var(--line);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:0;text-align:center;font:inherit;font-size:.8rem;color:inherit;position:relative;overflow:hidden}.cell.mini.out{visibility:hidden}.cell.mini:not(.off){cursor:pointer}.cell.mini.wk1{background:var(--green-soft)}.cell.mini.wk2{background:#ece7fa}.cell.mini.off{background:transparent;border-color:transparent;color:var(--muted);cursor:default}.cell.mini.today{border-color:var(--amber);border-width:2px}.cell.mini.sel{background:var(--green);border-color:var(--green);color:#fff}.cell.mini.none .n{color:var(--muted);font-weight:400}.cell.mini .n{display:block;font-weight:600;line-height:1}.cell.mini .cnt{font-size:.68rem;font-weight:700;line-height:1.4;min-width:16px;background:var(--green-deep);color:#fff;border-radius:8px;padding:0 5px}.cell.mini.sel .cnt{background:#ffffff4d}.cell.mini .dash{font-size:.78rem;color:var(--muted);line-height:1}.cell.mini.sel .dash{color:#dfe9e0}.cell.mini .chgdot{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 2px var(--card)}.cell.mini.sel .chgdot{box-shadow:0 0 0 2px var(--green)}.mmlegend{display:flex;flex-wrap:wrap;gap:10px 14px;margin:8px 4px 0;font-size:.75rem;color:var(--muted)}.mmlegend span{display:inline-flex;align-items:center;gap:4px}.mmlegend .sw{width:10px;height:10px;display:inline-block;flex-shrink:0;border-radius:3px}.mmlegend .sw.wk1{background:var(--green-soft);border:1px solid var(--green)}.mmlegend .sw.wk2{background:#ece7fa;border:1px solid #4a4390}.cell.mini.hol:not(.sel){background:repeating-linear-gradient(135deg,var(--card) 0 5px,#eceae3 5px 10px)}.cell.mini.hol .n{color:var(--muted)}.cell.mini .hmark{font-size:.62rem;color:var(--muted);line-height:1}.cell.mini.sel .hmark{color:#dfe9e0}.mmlegend .sw.hol{background:repeating-linear-gradient(135deg,var(--card) 0 2px,#d9d6cc 2px 4px);border:1px solid var(--line)}.holidaynote{margin:6px 4px 0;padding:10px 12px;border-radius:10px;background:repeating-linear-gradient(135deg,var(--card) 0 6px,#f1efe9 6px 12px);border:1px solid var(--line);font-size:.88rem;color:var(--ink)}.mmlegend .dash.ex{font-weight:700}@media (min-width:700px){.monthmini{max-width:640px;margin-left:auto;margin-right:auto}}.daydetail{margin:16px 4px 0}.daydetail,.weekview{scroll-margin-top:84px}.daydetail h3{font-size:1rem;color:var(--green-deep);margin:0 4px 8px;text-transform:capitalize}.changealert{display:flex;gap:8px;align-items:flex-start;background:var(--amber-soft);color:var(--amber);border:1px solid var(--amber);border-radius:10px;padding:9px 11px;margin:0 4px 10px;font-size:.84rem}.changealert svg{flex-shrink:0;margin-top:1px}.changealert p{margin:0 0 3px;font-weight:700}.changealert p:last-child{margin-bottom:0}.changealert.small{font-size:.74rem;padding:7px 9px;margin:0 0 8px}.chgpage{margin:4px 0 0}.chgpage .changeslist:first-child{margin-top:6px}.chgmsg.was{color:var(--muted);text-decoration:line-through}.chgrow{display:flex;align-items:center;gap:10px}.chgrow .chgitem{flex:1;min-width:0}.chgdoc{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:0;padding:4px;cursor:pointer;font:inherit}.chgdoc img{width:64px;height:64px;object-fit:cover;object-position:top;border-radius:8px;border:1px solid var(--line);background:var(--paper)}.chgdoc span{font-size:.68rem;color:var(--green-deep);font-weight:600}.chgdoc:hover img{border-color:var(--green)}.docviewer{border:0;padding:0;margin:auto;top:0;right:0;bottom:0;left:0;background:transparent;max-width:96vw;max-height:94vh;overflow:visible}.docviewer::backdrop{background:#141914b8}.docviewer img{display:block;max-width:94vw;max-height:90vh;border-radius:10px;background:#fff}.docviewer{position:fixed}.docclose{position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:50%;border:0;background:#fff;color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 8px #00000040}.changealert .chgtexts{flex:1;min-width:0}.changealert .chgline{display:flex;gap:10px;align-items:flex-start;justify-content:space-between}.changealert .chgline+.chgline{margin-top:6px}.docthumb{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:2px;background:none;border:0;padding:0;cursor:pointer;font:inherit}.docthumb img{width:52px;height:52px;object-fit:cover;object-position:top;border-radius:6px;border:1px solid var(--amber);background:#fff}.docthumb span{font-size:.66rem;color:var(--amber);font-weight:700}.changealert.small .docthumb img{width:40px;height:40px}.docthumb:hover img{box-shadow:0 0 0 2px var(--amber)}.docopen{position:absolute;left:50%;bottom:10px;transform:translate(-50%);display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;background:#fff;color:var(--green-deep);font-size:.8rem;font-weight:700;text-decoration:none;box-shadow:0 2px 8px #00000040;white-space:nowrap}.changeslist{margin:18px 12px 0;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}.changeslist h2{display:flex;align-items:center;gap:6px;margin:0 0 8px;font-size:.9rem;color:var(--amber)}.changeslist .chgcount{background:var(--amber);color:#fff;border-radius:9px;padding:0 7px;font-size:.72rem;line-height:1.5}.changeslist ul{list-style:none;margin:0;padding:0}.changeslist li+li{border-top:1px solid var(--line)}.chgitem{display:flex;gap:12px;width:100%;text-align:left;background:none;border:0;padding:9px 2px;font:inherit;color:inherit;cursor:pointer;border-radius:8px}.chgitem:hover{background:var(--amber-soft)}.chgwhen{flex:0 0 118px;display:flex;flex-direction:column;font-size:.8rem}.chgwhen b{color:var(--ink)}.chgwhen span{color:var(--muted);font-size:.74rem}.chgbody{display:flex;flex-direction:column;gap:2px;font-size:.82rem;min-width:0}.chgwho{font-weight:700;color:var(--amber);font-size:.76rem}.chgmsg{color:var(--ink)}.changeslist .empty{margin:2px 0 0}.changeslist details.chgpast{margin:10px 0 0;border:0;background:none}.changeslist details.chgpast summary{padding:6px 0;font-size:.8rem;color:var(--muted)}.ics{display:flex;align-items:center;justify-content:center;gap:8px;margin:18px 4px 0;width:calc(100% - 8px);font:inherit;font-size:.92rem;font-weight:700;color:#fff;text-align:center;background:var(--green);border:0;border-radius:12px;padding:13px;cursor:pointer;text-decoration:none;box-sizing:border-box}.icsnote{margin:8px 8px 0;font-size:.74rem;color:var(--muted)}.calexport-alt{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;margin:8px 4px 0}.calexport-alt a,.calexport-alt button{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:.8rem;font-weight:600;color:var(--green-deep);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:6px 12px;cursor:pointer;text-decoration:none}.lesson{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--green);border-radius:12px;padding:10px 12px;margin-bottom:8px;display:grid;grid-template-columns:52px minmax(0,1fr);gap:10px;align-items:start}.lesson.lek{border-left-color:var(--amber)}.slot{text-align:center;padding-top:2px}.slot b{display:block;font-size:1.15rem;color:var(--green-deep);line-height:1}.lesson.lek .slot b{color:var(--amber)}.slot span{display:block;font-size:.66rem;color:var(--muted);margin-top:3px;line-height:1.25}.body .subj{font-weight:700;font-size:.95rem}.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}.chip{display:inline-flex;align-items:center;gap:3px;font-size:.7rem;padding:2px 8px;border-radius:20px;background:var(--green-soft);color:var(--green-deep)}.chip.type{background:var(--amber-soft);color:var(--amber);font-weight:700}.chip.week{background:#e8e6f5;color:#4a4390}.chip.room{background:#eef1ec;color:var(--ink);font-weight:600}.who{margin-top:6px;font-size:.86rem;font-weight:600;color:var(--ink)}.empty{margin:6px 4px 0;font-size:.82rem;color:var(--muted);font-style:italic}.note{margin:20px 16px 0;font-size:.78rem;color:var(--muted);border-top:1px dashed var(--line);padding-top:12px}details{margin:18px 12px 0;background:var(--card);border:1px solid var(--line);border-radius:12px}summary{padding:12px 14px;font-weight:700;font-size:.9rem;color:var(--green-deep);cursor:pointer;list-style:none}summary svg{vertical-align:-3px;margin-right:6px}summary::-webkit-details-marker{display:none}summary:after{content:"+";float:right;color:var(--green)}details[open] summary:after{content:"–"}.bells{width:100%;border-collapse:collapse;font-size:.85rem}.bells td{padding:7px 14px;border-top:1px solid var(--line)}.bells td:last-child{text-align:right;font-variant-numeric:tabular-nums}.bells .br td{color:var(--muted);font-size:.75rem;font-style:italic}@media (min-width:700px){.controls,.note,details,.changeslist{max-width:640px;margin-left:auto;margin-right:auto}header{padding-left:calc(50% - 320px);padding-right:calc(50% - 320px)}}@media (min-width:880px){.controls,.note,details,.installbar,.changeslist{max-width:980px}header{padding-left:calc(50% - 490px);padding-right:calc(50% - 490px)}.monthmini{max-width:980px;display:grid;grid-template-columns:360px 1fr;gap:32px;align-items:start}.monthmini .daydetail{margin-top:0}}.weekview{margin:14px 12px 0}@media (min-width:700px){.weekview{max-width:640px;margin-left:auto;margin-right:auto}}@media (min-width:880px){.weekview{max-width:980px}}.weekhead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 4px 10px}.weekhead button{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:30px;height:30px;border-radius:8px;border:1.5px solid var(--line);background:var(--card);color:var(--green-deep);cursor:pointer}.weekhead button:disabled{opacity:.3;cursor:default}.wh-label{flex:1;min-width:0;text-align:center}.wh-range{font-size:1.05rem;font-weight:700;color:var(--green-deep);text-transform:capitalize}.wh-week{font-size:.78rem;color:var(--muted);margin-top:2px}.weekgrid{display:flex;gap:8px;margin-top:16px;padding:2px 2px 10px;overflow-x:auto;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}.daycol{flex:0 0 82%;max-width:260px;scroll-snap-align:start;background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:8px}.daycol.today{border-color:var(--amber)}.daycol-head{display:flex;align-items:baseline;gap:5px;margin-bottom:8px;padding-bottom:6px;border-bottom:1px solid var(--line)}.daycol-dow{font-weight:700;color:var(--green-deep);text-transform:capitalize;font-size:.88rem}.daycol-date{color:var(--muted);font-size:.78rem}.daycol-head .tag-now{margin-left:auto}.daycol .lesson{grid-template-columns:38px minmax(0,1fr);gap:6px;padding:7px 8px;margin-bottom:6px}.daycol .lesson .slot b{font-size:.95rem}.daycol .lesson .slot span{font-size:.6rem}.daycol .lesson .subj{font-size:.82rem;line-height:1.25}.daycol .lesson .chips{gap:3px;margin-top:4px}.daycol .lesson .chip{font-size:.62rem;padding:1px 6px;gap:2px}.daycol .lesson .who{font-size:.76rem;margin-top:4px}@media (min-width:880px){.weekgrid{overflow-x:visible}.daycol{flex:1 1 0;max-width:none;min-width:0}}.tag-now{font-size:.62rem;background:var(--amber);color:#fff;border-radius:20px;padding:2px 8px;font-weight:700;flex-shrink:0}.loadstate{text-align:center;color:var(--muted);margin:40px 0 12px}.loadstate button{font:inherit;padding:8px 16px;border-radius:8px;border:1px solid var(--green);background:var(--green);color:#fff;cursor:pointer}
