:root{color-scheme:dark;--bg:#121518;--panel:#1b1f23;--panel2:#22272c;--line:#30363b;--text:#f1f3ed;--muted:#a3abae;--lime:#cff580;--orange:#edb780;--radius:16px;font-family:Inter,'Segoe UI',sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input,textarea,select{font:inherit}button,a,input,textarea,select{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--lime);outline-offset:3px}a{color:inherit;text-decoration:none}button{color:inherit;border:1px solid var(--line);background:var(--panel2);border-radius:9px;padding:10px 15px}button:hover{background:#323a3e}button.primary{background:var(--lime);color:#202718;border-color:var(--lime);font-weight:650}button.primary:hover{background:#ddffa0}button.subtle{background:transparent;border-color:transparent;color:var(--muted)}button.danger{color:#ffb5ae}svg.icon{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.shell{display:grid;grid-template-columns:245px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:32px 20px 20px;border-right:1px solid var(--line);display:flex;flex-direction:column;background:#15191c}.brand{display:flex;gap:11px;align-items:center;font-size:25px;font-weight:720;letter-spacing:-1px;padding:0 12px 32px}.brand img{width:38px;height:38px}.brand small{font-size:12px;font-weight:500;letter-spacing:.05em;display:block;color:var(--muted);margin-top:3px}.context{padding:17px 16px;border:1px solid var(--line);border-radius:12px;margin-bottom:30px}.context strong{display:block;font-size:15px}.context span{display:block;font-size:13px;color:var(--muted);margin-top:8px}.nav-label,.eyebrow{font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted);font-weight:650}.nav-label{padding:0 14px;margin-bottom:12px}.nav{display:grid;gap:6px}.nav button{border:0;display:flex;gap:12px;align-items:center;background:none;text-align:left;padding:13px 14px;color:var(--muted);font-size:14px}.nav button.active{background:#2a3325;color:var(--lime)}.nav button:hover{background:var(--panel2)}.nav .count{margin-left:auto;background:#3b482e;color:var(--lime);padding:1px 7px;border-radius:5px;font-size:12px}.side-bottom{margin-top:auto;padding-top:30px}.sync{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);padding:14px}.dot{width:7px;height:7px;border-radius:50%;background:var(--lime);flex:none}.dot.off{background:var(--orange)}.side-foot{color:#788385;font-size:12px;padding:0 14px;line-height:1.7}.main{min-width:0;padding:0 42px 40px;max-width:1560px;width:100%;margin:auto}.topbar{height:83px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px;font-size:14px;color:var(--muted)}.topbar strong{color:var(--text);font-weight:500}.avatar{background:#303a2b;border-radius:50%;width:34px;height:34px;display:inline-grid;place-items:center;color:var(--lime);font-size:13px;margin-left:15px}.page-head{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:34px 0 25px}h1{font-size:32px;letter-spacing:-1.1px;margin:0 0 9px;font-weight:650}h2{font-size:19px;letter-spacing:-.3px;margin:0}h3{font-size:16px;margin:0;font-weight:600}p{line-height:1.65}.muted{color:var(--muted)}.page-head p{margin:0;color:var(--muted);font-size:14px}.flex{display:flex;gap:10px;align-items:center}.wrap{flex-wrap:wrap}.between{justify-content:space-between}.action{display:inline-flex;gap:8px;align-items:center;justify-content:center}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:27px}.stat{padding:19px 22px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius)}.stat .number{font-size:32px;font-weight:600;letter-spacing:-1px;display:block;margin:9px 0}.stat span{font-size:13px;color:var(--muted)}.stat-top{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:14px}.stat:first-child{background:#222b21;border-color:#394632}.stat:first-child .number{color:var(--lime)}.columns{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:24px}.section-head{display:flex;gap:10px;justify-content:space-between;align-items:center;margin:7px 0 17px}.section-head button{font-size:13px}.panel{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);overflow:hidden}.empty{padding:37px 25px;text-align:center;color:var(--muted)}.empty .empty-icon{width:50px;height:50px;display:grid;place-items:center;border:1px dashed #556044;border-radius:14px;margin:0 auto 18px;color:var(--lime)}.empty h3{color:var(--text);margin-bottom:9px}.empty p{font-size:14px;max-width:380px;margin:0 auto 20px}.empty button{font-size:14px}.note-box{border:1px solid #3c472f;background:#20281e;border-radius:12px;padding:16px 18px;font-size:14px;color:#c9d9b3;line-height:1.65;margin-top:19px}.note-box strong{display:block;color:var(--lime);margin-bottom:3px}.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.quick{padding:19px;border:1px solid var(--line);border-radius:12px;background:var(--panel);min-width:0;transition:border-color .15s,transform .15s}.quick:hover,.link-card:hover{border-color:#5d7044;transform:translateY(-2px)}.quick .icon{color:var(--lime);margin-bottom:17px}.quick h3{font-size:14px}.quick small{display:block;font-size:12px;color:var(--muted);margin-top:5px}.quick-top{display:flex;justify-content:space-between;color:#737d78}.activity{margin-top:26px}.activity-row{display:flex;gap:14px;padding:15px 19px;border-bottom:1px solid var(--line);font-size:14px}.activity-row:last-child{border:0}.activity-row .icon{color:var(--muted);margin-top:3px}.activity-row small{display:block;color:var(--muted);font-size:12px;margin-top:5px}.source-note{font-size:12px;color:var(--muted);margin-top:22px;line-height:1.6}.source-note a{text-decoration:underline}.toolbar{display:flex;gap:12px;align-items:center;margin-bottom:22px;flex-wrap:wrap}.search{position:relative;flex:1;min-width:200px}.search .icon{position:absolute;left:13px;top:12px;color:var(--muted)}input,textarea,select{width:100%;padding:12px 13px;background:#14181b;color:var(--text);border:1px solid #3d4549;border-radius:8px;min-width:0}input::placeholder,textarea::placeholder{color:#7f8a8e}input[type=checkbox]{width:auto}.search input{padding-left:42px;background:var(--panel)}.toolbar select{width:auto;max-width:100%}.chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:23px}.chip{font-size:13px;padding:8px 13px;border-radius:7px;background:transparent}.chip.active{background:var(--lime);color:#202718;border-color:var(--lime)}.link-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.link-card{position:relative;display:flex;flex-direction:column;padding:22px;background:var(--panel);border:1px solid var(--line);border-radius:14px;transition:.15s;min-width:0}.link-card .category{font-size:12px;color:var(--lime);margin:17px 0 11px}.link-card p{font-size:14px;color:var(--muted);margin:10px 0 22px;flex:1}.link-card h3 a:hover{text-decoration:underline}.link-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:12px;gap:8px}.link-bottom small{font-size:12px;color:var(--muted);overflow-wrap:anywhere}.icon-button{padding:7px;border:0;background:transparent;display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}.icon-button:hover{color:var(--text)}.thread-row{display:flex;gap:18px;width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;background:var(--panel);text-align:left;padding:21px}.thread-row:last-child{border:0}.date-tile{flex:none;min-width:55px;height:62px;background:#2a3225;border-radius:10px;display:flex;flex-direction:column;justify-content:center;align-items:center;color:var(--lime)}.date-tile strong{font-size:24px;line-height:1.2}.date-tile span{font-size:12px;text-transform:uppercase}.thread-text{flex:1;min-width:0}.thread-text h3{margin:5px 0 8px;overflow-wrap:anywhere}.thread-text p{font-size:13px;color:var(--muted);margin:0}.badge{font-size:12px;display:inline-block;background:#2e3830;color:#c5deba;padding:4px 8px;border-radius:5px;white-space:nowrap}.badge.amber{background:#3a3027;color:var(--orange)}.badge.gray{background:#30363b;color:var(--muted)}.row-meta{display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;font-size:13px;color:var(--muted);gap:9px}.breadcrumb{margin:24px 0 0}.detail-head{margin-top:18px}.detail-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:24px}.description{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted);font-size:15px;margin:0 0 24px}.timeline{padding:8px 22px}.timeline-item{border-left:1px solid #46513a;padding:17px 0 22px 20px;position:relative}.timeline-item:before{content:'';position:absolute;left:-5px;top:23px;width:9px;height:9px;border-radius:50%;background:#76865f}.timeline-item:last-child:before{background:var(--lime)}.timeline-item p{font-size:14px;margin:8px 0 0}.timeline-item small{display:block;color:var(--muted);margin-top:7px;font-size:13px}.material{padding:20px;margin-bottom:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}.material h3{overflow-wrap:anywhere}.material .note-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:15px;margin-bottom:10px}.material img{width:100%;max-height:320px;object-fit:contain;background:#111;margin-top:15px;border-radius:8px}.material .file-link{display:flex;gap:12px;align-items:center;color:var(--lime);margin:15px 0;overflow-wrap:anywhere}.material footer{font-size:12px;color:var(--muted);margin-top:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.field{display:block;margin:0 0 17px;font-size:14px}.field>span{display:block;margin-bottom:8px;color:#d1d6d2}.field small{display:block;margin-top:7px;line-height:1.5;color:var(--muted);font-size:12px}.field textarea{min-height:100px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:20px;margin-top:8px}.error{color:#ffb5ae;font-size:14px;white-space:pre-wrap;line-height:1.5}.error:empty{display:none}dialog{width:min(590px,calc(100% - 32px));max-height:90vh;padding:27px;background:#1b2024;border:1px solid #414a4f;border-radius:18px;color:var(--text);box-shadow:0 25px 100px #0008}dialog::backdrop{background:#060a0dc9;backdrop-filter:blur(4px)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:24px}.modal-head h2{font-size:22px}.modal-intro{color:var(--muted);font-size:14px;margin:-8px 0 23px}.upload-zone{display:block;border:1px dashed #65724e;background:#252d22;padding:24px;border-radius:12px;text-align:center;margin:16px 0;color:var(--lime)}.upload-zone input{margin-top:15px;background:transparent;font-size:13px}.upload-zone small{display:block;margin-top:10px;color:var(--muted);font-size:12px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 20px;border:1px solid #64704c;border-radius:10px;background:#2a3625;color:#e6f4d3;box-shadow:0 10px 35px #0006;z-index:10;display:none;max-width:90vw;font-size:14px}#toast.visible{display:block}.settings-panel{padding:25px;max-width:850px;margin-bottom:22px}.settings-panel p{color:var(--muted);font-size:14px}.settings-panel code{display:block;overflow-wrap:anywhere;padding:13px;background:#101517;border:1px solid var(--line);border-radius:8px;font-family:Consolas,monospace;font-size:14px;user-select:all;margin:12px 0}.settings-panel h3{margin:20px 0 8px}.login-page{max-width:460px;padding:40px 25px;margin:8vh auto}.login-page .brand{padding-left:0}.login-page h1{margin-bottom:20px}.login-page p{color:var(--muted);font-size:15px}.login-page form{margin-top:30px}.loading{padding:80px;text-align:center;color:var(--muted)}.resources-title{margin:30px 0 15px}.idea{padding:18px 0;border-bottom:1px solid var(--line)}.idea:last-child{border:0}.idea p{margin:7px 0}.idea a{color:var(--lime);font-size:13px}.mobile-label{display:none}.only-print{display:none}@media(min-width:1600px){.main{padding-left:55px;padding-right:55px}}@media(max-width:1150px){.shell{grid-template-columns:210px minmax(0,1fr)}.sidebar{padding:26px 12px}.main{padding:0 25px 30px}.columns,.detail-grid{grid-template-columns:1fr}.link-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.quick{padding:16px}.page-head{align-items:flex-start}}@media(max-width:720px){.shell{display:block}.sidebar{height:auto;position:static;padding:17px 18px 10px;border-right:0;border-bottom:1px solid var(--line)}.brand{padding:0;font-size:22px}.brand img{width:33px;height:33px}.brand small{display:none}.context,.nav-label,.side-bottom{display:none}.nav{display:flex;margin-top:17px;overflow:auto;gap:4px}.nav button{font-size:13px;padding:10px;white-space:nowrap}.nav .icon{width:17px}.nav .count{display:none}.main{padding:0 18px 30px}.topbar{height:57px;font-size:12px}.topbar .today{display:none}.page-head{margin:26px 0 22px;flex-wrap:wrap}h1{font-size:28px}.page-head .primary{font-size:14px}.stats{gap:8px}.stat{padding:14px 12px}.stat-top{font-size:12px}.stat-top .icon{display:none}.stat .number{font-size:27px}.stat span{font-size:12px}.quick-grid{grid-template-columns:1fr 1fr}.link-grid{grid-template-columns:1fr}.thread-row{padding:17px 13px;gap:12px}.row-meta{font-size:12px}.row-meta .badge{max-width:100px;white-space:normal;text-align:right}.thread-text h3{font-size:14px}.date-tile{min-width:45px;height:56px}.date-tile strong{font-size:22px}.form-grid{grid-template-columns:1fr;gap:0}.toolbar select{width:100%}.settings-panel{padding:20px}dialog{padding:22px}.detail-head .flex{flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

.exam-retakes{border-top:1px solid var(--border,#30393e)}
.exam-retakes>summary{padding:14px 20px;cursor:pointer;color:var(--muted,#a8b4be);font-size:13px}
.exam-retakes>summary:hover{color:var(--text,#eef2f0);background:rgba(255,255,255,.03)}
.exam-retakes>summary:focus-visible{outline:2px solid #9bc7ff;outline-offset:-3px}
.nearest-exam-group+.nearest-exam-group{border-top:1px solid var(--border,#30393e)}

/* EE-ZI: four consistently labelled teaching forms. */
.class-badge{display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:6px;padding:4px 8px;font-size:12px;font-weight:600;white-space:nowrap;line-height:1.3}
.class-badge:before{content:'';width:6px;height:6px;border-radius:2px;background:currentColor;flex:none}
.class-lecture{color:#9acbff;background:#1d3450;border-color:#365579}
.class-exercise{color:#ffe083;background:#39321d;border-color:#65562a}
.class-lab{color:#ffb5dd;background:#40283a;border-color:#744460}
.class-project{color:#98e5b7;background:#1e382b;border-color:#38664c}
.class-unknown{color:#abb3b8;background:#292f34;border-color:#3f484e}
.type-legend{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}
.page-legend{margin:0 0 23px}
.thread-type{margin-top:10px}
.thread-row{border-left:3px solid transparent}
.thread-lecture{border-left-color:#74b5ff}.thread-exercise{border-left-color:#ebc450}.thread-lab{border-left-color:#ed91c3}.thread-project{border-left-color:#78ce9b}
.thread-lecture .date-tile{color:#9acbff;background:#1d3450}.thread-exercise .date-tile{color:#ffe083;background:#39321d}.thread-lab .date-tile{color:#ffb5dd;background:#40283a}.thread-project .date-tile{color:#98e5b7;background:#1e382b}
.subject-picker{margin-bottom:23px}
.picker-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:14px;margin-bottom:9px}
.semester-label{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:13px}
.semester-label select{width:auto;font-size:13px;padding:6px 8px}
.subject-picker>small{display:block;color:var(--muted);font-size:12px;line-height:1.6;margin-top:8px}
.subject-picker .catalog-source{font-size:12px}.catalog-source a{color:var(--lime)}
.subject-options{margin-top:7px;border:1px solid #47545a;background:#151a1e;border-radius:9px;max-height:260px;overflow:auto;overscroll-behavior:contain;scroll-padding:6px}
.subject-options[hidden]{display:none}
.subject-choice{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 13px;border-bottom:1px solid #2b3237;cursor:pointer}
.subject-choice:last-child{border-bottom:0}.subject-choice:hover,.subject-choice[aria-selected=true]{background:#2b353b}
.subject-choice strong{display:block;font-size:14px;font-weight:500}.subject-choice small{display:block;font-size:12px;color:var(--muted);margin-top:5px}
.picker-empty{padding:20px;color:var(--muted);font-size:14px;line-height:1.6}
.weekend-list{display:grid;gap:23px}
.weekend-block{min-width:0}
.weekend-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:11px}
.weekend-heading h3{font-size:16px;font-weight:650}.weekend-heading>span{font-size:13px;color:var(--muted)}
.weekend-days{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid var(--line);border-radius:13px;overflow:hidden;background:var(--panel)}
.weekend-day{min-width:0}.weekend-day+.weekend-day{border-left:1px solid var(--line)}
.weekend-day>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 17px;border-bottom:1px solid var(--line);background:#20262a}
.weekend-day>header strong{font-size:14px;display:block;font-weight:550}.weekend-day>header span{font-size:12px;color:var(--muted);display:block;margin-top:4px}
.weekend-day .icon-button{font-size:21px;width:32px;height:32px;color:var(--lime)}
.day-empty{color:#8c989e;font-size:13px;padding:25px 17px;margin:0;line-height:1.5;min-height:73px}
.weekend-day.past-day{opacity:.58}
.weekend-day .thread-row{padding:15px 14px;gap:10px;flex-wrap:wrap}
.weekend-day .date-tile{display:none}
.weekend-day .thread-text{flex:1 1 150px}
.weekend-day .thread-text .eyebrow{font-size:11px;letter-spacing:.05em;line-height:1.5}
.weekend-day .thread-text h3{font-size:15px;line-height:1.45}
.weekend-day .row-meta{font-size:12px;gap:12px;flex:0 1 auto}
.weekend-day .row-meta .badge{font-size:11px}
.compact-weekends .weekend-day .row-meta{display:none}
.compact-weekends .weekend-heading{flex-wrap:wrap;gap:5px}
.weekend-more{text-align:center;padding:24px 0}.weekend-more p{font-size:13px}
.weekday-events{margin-top:26px}
@media(max-width:720px){.weekend-days{grid-template-columns:1fr}.weekend-day+.weekend-day{border-left:0;border-top:1px solid var(--line)}.weekend-heading{align-items:flex-start;flex-direction:column;gap:5px}.picker-heading{flex-wrap:wrap}.subject-choice{gap:7px;padding:11px}.subject-choice strong{font-size:13px}.subject-choice .class-badge{font-size:11px}.subject-options{max-height:220px}.weekend-day .row-meta{flex-direction:row;align-items:center;justify-content:space-between;flex-basis:100%}.compact-weekends .row-meta{display:none}}

/* Share header and card rows between Saturday and Sunday. */
@media(min-width:721px){
 .weekend-days{grid-template-rows:auto repeat(var(--weekend-rows,1),minmax(0,1fr))}
 .weekend-day{display:grid;grid-template-rows:subgrid;grid-row:1 / span calc(var(--weekend-rows,1) + 1);align-content:start}
 .weekend-day .thread-row{height:100%;box-sizing:border-box;min-width:0}
 .weekend-day .thread-text{min-width:0;overflow-wrap:anywhere}
}

.retake-picker{margin:18px 0 24px}.retake-label{display:block;margin-bottom:12px}.retake-calendar{border:1px solid var(--line);border-radius:12px;padding:14px;background:#161c20}
.retake-month{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.retake-month strong{text-transform:capitalize}.retake-month button{padding:6px 12px}
.retake-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.retake-weekday{text-align:center;font-size:11px;color:var(--muted);padding:5px 0}.retake-day{padding:10px 0;min-width:0;min-height:42px;background:transparent;border-color:transparent}.retake-day.teaching-weekend{background:#203650;border-color:#3f6591;color:#acccff}.retake-day.selected{outline:2px solid var(--lime);outline-offset:-2px;color:var(--lime)}.retake-day[aria-current=date]{text-decoration:underline;text-underline-offset:4px}.retake-legend{display:block;margin-top:12px;color:#acccff;font-size:11px}
.retake-time{display:flex;gap:12px;align-items:end;margin-top:14px}.retake-time label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}.retake-time select{min-width:85px;color:var(--text);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:9px}.retake-time>span{padding-bottom:10px}.retake-chosen{font-size:13px;color:var(--muted);margin:10px 0}

.schedule-nav{display:flex;align-items:center;gap:12px;margin:22px 0;flex-wrap:wrap}.schedule-nav label{display:flex;align-items:center;gap:10px}.schedule-nav input{color-scheme:dark;background:#202529;color:#e6e9ed;border:1px solid #394149;border-radius:8px;padding:9px}.schedule-scroll{max-height:650px;overflow:auto;border:1px solid #333b42;border-radius:14px;margin:20px 0 32px}.schedule-days{display:grid;grid-template-columns:1fr 1fr;min-width:700px;background:#171c20}.schedule-days h2{position:sticky;top:0;z-index:8;background:#22292e;margin:0;padding:16px;font-size:16px;border-bottom:1px solid #3a434a}.day-track{height:1920px;position:relative;border-right:1px solid #485058;background:repeating-linear-gradient(to bottom,transparent 0,transparent 39px,#283137 39px,#283137 40px)}.hour-label{position:absolute;left:5px;font-size:11px;color:#8c989f}.lesson{position:absolute;border:1px solid currentColor;border-left-width:4px;background:#1c2b3e;color:#87b9ff;border-radius:8px;z-index:2;min-height:20px;cursor:grab;touch-action:none;box-shadow:0 5px 12px #0003}.lesson.class-exercise{background:#37301b;color:#e7ca6b}.lesson.class-lab{background:#372536;color:#ef9cca}.lesson.class-project{background:#1e342b;color:#8ddbb0}.lesson-body{height:100%;overflow:auto;padding:10px 8px;display:flex;flex-direction:column;gap:4px;font-size:11px}.lesson-body strong{font-size:13px}.lesson-body button{font-size:11px;padding:3px 6px;align-self:flex-start;min-height:24px;background:#0002;color:inherit}.resize{height:9px;position:absolute;left:0;right:0;cursor:ns-resize;z-index:5}.resize:after{content:'';display:block;width:30px;height:3px;border-radius:4px;background:currentColor;margin:3px auto;opacity:.6}.resize.start{top:0}.resize.end{bottom:0}.lesson-red,.lesson.lesson-red{background:#3f2027;color:#ffa8af;border-color:#e47380}.lesson.dragging{z-index:10;opacity:.8;outline:2px dashed #fff}.schedule-pending{margin:26px 0}.schedule-pending article{margin:12px 0}.directory{margin:24px 0}.contact-links{display:flex;flex-direction:column;gap:8px;font-size:13px}.directory .link-card p{overflow-wrap:anywhere}details{margin:18px 0;padding:16px;border:1px solid #343c42;border-radius:10px}summary{cursor:pointer}.lesson:focus{outline:2px solid white}

.import-preview{max-height:300px;overflow:auto;padding:12px 12px 12px 30px;background:#14191d;border:1px solid #343c42;border-radius:8px;font-size:12px}.import-preview li{margin-bottom:10px}


/* Content determines card height; unused morning/evening hours collapse per day. */
.schedule-scroll{max-height:none;overflow:visible}
.schedule-days{min-width:0;border-radius:14px;overflow:visible;align-items:start}
.schedule-days>section{min-width:0}
.schedule-days h2{position:static;padding:18px 14px;font-size:15px}
.day-track{background-image:linear-gradient(to bottom,transparent calc(100% - 1px),#283137 calc(100% - 1px));background-repeat:repeat-y;background-position:0 8px}
.hour-label{transform:translateY(-50%);z-index:1;font-size:11px}
.lesson{min-height:0;overflow:visible;border-radius:9px}
.lesson-body{height:auto;overflow:visible;padding:17px 12px;gap:6px;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.lesson-body strong{font-size:14px;line-height:1.35}
.lesson-body .lesson-edit{position:static;min-height:25px;font-size:12px;line-height:1.3;padding:3px 9px;margin-top:3px}
.lesson-body button{white-space:normal;overflow-wrap:anywhere;max-width:100%}
.empty-day{padding:60px 55px;color:#95a1a9}
.term-heading{display:flex;flex-direction:column;gap:5px;margin:24px 0 14px}.term-heading span{font-size:12px;color:#a6b2bb}
.term-nav{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.term-nav button{padding:8px;font-size:12px}.term-nav label{display:flex;align-items:center;gap:5px;font-size:12px}.term-nav input{width:140px;padding:7px;color-scheme:dark}
.term-selection{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;background:#273322;border:1px solid #475a36;border-radius:9px;padding:12px;margin:14px 0;font-size:13px}.term-selection button{font-size:11px;padding:6px}
.term-days{display:grid;grid-template-columns:1fr 1fr;gap:12px}.term-days>section{min-width:0}.term-days h3{font-size:14px;margin:8px 0 12px}.term-track{position:relative;border:1px solid #38434b;border-radius:8px;background:#151b20}
.term-slot{display:block;width:100%;height:26px;min-height:0;padding:3px 8px;text-align:left;border:0;border-bottom:1px solid #2a333b;border-radius:0;background:transparent;font-size:10px;color:#93a3af}.term-slot.occupied{background:#2b3038;color:#c1c7ce}.term-slot:hover{background:#35452e}
.term-window{position:absolute;left:55px;right:5px;z-index:2;background:#354b2c;border:1px solid #b9de77;border-left:4px solid #ccf58b;border-radius:6px;display:flex;flex-direction:column;justify-content:center;gap:4px;padding:5px;font-size:11px;touch-action:none;cursor:grab;box-shadow:0 4px 12px #0006}.term-window span,.term-window small{font-size:10px}.term-window:focus{outline:2px solid white}
.term-conflict{font-size:12px;line-height:1.5;color:#f0c86a}
.term-details>summary{font-weight:600;color:#d1ef9a}.term-details[open]>summary{margin-bottom:20px}
@media(max-width:650px){.schedule-days{grid-template-columns:1fr}.lesson-body{padding:15px 10px}.lesson-body strong{font-size:14px}.term-days{gap:7px}.term-window{left:42px}.term-nav{gap:4px}}

.term-nav select{max-width:100%;padding:8px;color-scheme:dark;background:#202529;color:#e6e9ed;border:1px solid #394149;border-radius:8px}.term-nav label{min-width:0;flex-wrap:wrap}

.schedule-day-tabs{display:none}
.schedule-nav{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;max-width:440px}
.schedule-week-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.schedule-week-buttons button{width:100%;min-height:42px}
.schedule-nav #schedule-date{width:100%;min-height:42px;box-sizing:border-box}
@media(max-width:760px),(pointer:coarse){
 .schedule-day-tabs{display:flex;gap:8px;margin-top:16px}
 .schedule-day-tabs button{flex:1;min-height:44px}
 .schedule-day-tabs button[aria-pressed=true]{background:var(--lime);color:#202718;border-color:var(--lime)}
 .schedule-scroll{overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;max-height:none;margin-top:10px;touch-action:pan-x pan-y;overscroll-behavior-x:contain}
 .schedule-days{grid-template-columns:100% 100%;width:100%;gap:0}
 .schedule-days>section{scroll-snap-align:start;scroll-snap-stop:always}
 .schedule-days h2{padding:10px 12px;font-size:14px}
 .lesson,.term-window{touch-action:pan-x pan-y;cursor:default}
 .lesson .resize{display:none}
 .lesson-body{padding:6px 7px;gap:2px;font-size:11px;line-height:1.25}
 .lesson-body strong{font-size:13px;line-height:1.2}
 .lesson-body .lesson-edit{font-size:11px;line-height:1.2;min-height:32px;padding:4px 7px;margin-top:2px}
 .schedule-nav{gap:8px;margin:14px 0}
 .schedule-nav button{min-height:40px;padding:8px}
}

.lesson-preview{position:relative;display:flex;flex-direction:column;gap:9px;padding:22px 24px;margin:20px 0 16px;border:1px solid #87b9ff;border-left:5px solid #87b9ff;border-radius:12px;background:#1c2b3e;color:#87b9ff;overflow-wrap:anywhere}
.lesson-preview strong{font-size:20px;line-height:1.4}.lesson-preview>span{font-size:14px;line-height:1.5}.lesson-preview .preview-caption{font-size:12px;opacity:.8;margin-bottom:2px}
.lesson-preview.class-exercise{background:#37301b;color:#e7ca6b;border-color:#e7ca6b}.lesson-preview.class-lab{background:#372536;color:#ef9cca;border-color:#ef9cca}.lesson-preview.class-project{background:#1e342b;color:#8ddbb0;border-color:#8ddbb0}.lesson-preview.lesson-red{background:#3f2027;color:#ffa8af;border-color:#e47380}
.term-details .subject-picker{margin-bottom:24px}

.term-slot.available{background:#263e2d;color:#bdeca4;border-left:3px solid #91cd70}.term-slot.available:hover{background:#385839;color:#edffe5}.term-slot:disabled{cursor:not-allowed;opacity:1}.term-slot.too-short{background:#1c2227;color:#8f9ba5}.term-slot.occupied:disabled{background:#2b3038;color:#a9adb4}


.directory .link-card.teacher-active{border-color:#69aaff;box-shadow:0 0 0 1px #69aaff}

.study-actions{display:grid;gap:12px;margin:22px 0}.study-actions button{text-align:left;padding:19px;border-radius:12px;background:#1c252c;border:1px solid #3b4e5d}.study-actions button:hover{background:#263640}.study-actions strong{display:block;font-size:16px}.study-actions span{display:block;margin-top:7px;color:var(--muted);font-size:12px}
.study-tools{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:18px 0}.study-tools label{display:flex;gap:8px;align-items:center}.study-tools select{background:#1c252c;color:var(--text);padding:8px;border-radius:8px}.study-tools>span{font-size:12px;color:var(--muted)}
.study-editor,.sample-entry,.trash-entry{border:1px solid var(--line);padding:15px;border-radius:12px;margin:15px 0}.study-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:12px}.study-card-head button{padding:5px 9px;font-size:12px}.study-editor textarea{font-family:ui-monospace,Consolas,monospace;line-height:1.15}.study-card-preview{font-size:var(--study-font,8pt);line-height:1.1;background:#fff;color:#161616;border:0;padding:3mm;width:55mm;max-width:100%;min-height:85mm;overflow-wrap:anywhere;white-space:pre-wrap}.study-card-preview b{display:block;margin-bottom:1mm}.sample-entry img{max-width:100%;max-height:350px;object-fit:contain}.sample-text{white-space:pre-wrap;overflow-wrap:anywhere}.sample-entry a{color:#b1d2ff}.delete-exam{margin-right:auto}.danger.delete-exam{background:#3c2127;border-color:#944752;color:#ffb4bb}.danger.delete-exam:hover{background:#5a2932}.form-actions{flex-wrap:wrap}.study-print-card{width:55mm;height:85mm;box-sizing:border-box;padding:3mm;border:0;break-inside:avoid;page-break-inside:avoid;background:white;color:black;font:var(--study-font,8pt)/1.1 Arial,sans-serif}.study-print-content{height:100%;overflow:visible;overflow-wrap:anywhere;white-space:pre-wrap}.study-print-content b{display:block;margin-bottom:1mm}
#study-print-area{display:none}#study-print-area.study-print-measure{display:grid;grid-template-columns:55mm 55mm;gap:8mm;position:fixed;left:-10000px;top:0;width:118mm;visibility:hidden}
@media print{
 dialog::backdrop{background:transparent!important;backdrop-filter:none!important}
 @page{size:A4;margin:10mm}
 body:has(#study-print-area)>*:not(#study-print-area){display:none!important}
 body:has(#study-print-area){background:white!important;margin:0!important;overflow:visible!important}
 #study-print-area{display:block!important;position:static!important;visibility:visible!important;width:100%}
 .study-print-page{display:grid;grid-template-columns:55mm 55mm;grid-template-rows:85mm 85mm;gap:8mm;width:118mm;margin:0 auto;break-after:page;page-break-after:always;break-inside:avoid}
 .study-print-page:last-child{break-after:auto;page-break-after:auto}
 .study-print-card{print-color-adjust:exact;-webkit-print-color-adjust:exact}
}

.study-workspace .study-tools{position:sticky;top:0;z-index:2;background:var(--bg,#111618);padding:14px 0;border-bottom:1px solid var(--line)}
.study-workspace .study-editor{display:grid;grid-template-columns:minmax(0,1fr) 55mm;column-gap:32px;align-items:start;padding:24px}
.study-workspace .study-card-head{grid-column:1/-1}
.study-workspace .study-editor>.field{grid-column:1}
.study-workspace .study-editor>.study-card-preview{grid-column:2;grid-row:2/5}
.study-workspace .study-content{min-height:240px;resize:vertical}
.study-workspace #study-form>details{margin:22px 0}
@media(max-width:760px){.study-workspace .study-editor{display:block;padding:15px}.study-workspace .study-card-preview{margin:20px auto}.study-workspace .page-head{align-items:flex-start;gap:16px;flex-wrap:wrap}}

.study-workspace .study-preview-pair{grid-column:2;grid-row:2/6;display:grid;gap:10px;align-content:start}
.study-preview-pair>span{font-size:12px;color:var(--muted)}
.study-workspace .study-back{min-height:240px;resize:vertical}
.study-tools input[type=checkbox]{width:auto;accent-color:#cffa75}
@media(max-width:760px){.study-workspace .study-preview-pair{justify-content:center}.study-preview-pair .study-card-preview{margin:0}}

.study-ai-panel{border:1px solid var(--line);border-radius:12px;padding:20px;margin:20px 0}.study-source-option{display:flex;align-items:center;gap:10px;margin:12px 0}.study-source-option input{width:auto}

.subject-annotation{border:1px solid #456487;border-left:4px solid #80b7f5;border-radius:12px;padding:18px 22px;margin:18px 0 26px;background:#182631}.subject-annotation p,.subject-card-note p{white-space:pre-wrap;overflow-wrap:anywhere}.subject-note-short{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;color:#acd1ff;font-size:12px;margin-top:10px;white-space:pre-wrap;overflow-wrap:anywhere}.subject-card-note{margin:20px 0}.subject-card[hidden]{display:none}

.mini-plan{padding:20px}.mini-plan .section-head{margin-bottom:4px;gap:8px}.mini-plan .section-head button{font-size:12px;padding:6px;white-space:nowrap}.mini-plan-date{font-size:13px;color:var(--muted);margin:0 0 18px}.mini-plan-list{display:grid;gap:10px}.mini-lesson{display:grid;grid-template-columns:86px minmax(0,1fr);gap:12px;padding:13px 12px;border-radius:9px;border-left:3px solid #89939b;background:#20292e}.mini-lesson strong{display:block;font-size:13px;line-height:1.35;overflow-wrap:anywhere}.mini-lesson small{display:block;color:var(--muted);margin-top:5px;font-size:11px}.mini-lesson-time{font-size:12px;white-space:nowrap}.mini-lesson-time b{display:block;font-size:10px;margin-top:6px}.mini-lecture{border-color:#88baff;background:#1b2b3d}.mini-exercise{border-color:#f2cf67;background:#322e20}.mini-lab{border-color:#eaa2cc;background:#322432}.mini-project{border-color:#8bdcb0;background:#20342c}.mini-ongoing{outline:1px solid #a9d1ff}.mini-ongoing .mini-lesson-time b{color:#c1e0ff}

.home-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.home-columns{align-items:start}.home-columns>section{min-width:0}.home-right>.mini-plan{margin:0 0 28px}.home-quick-heading{margin-top:0}.home-right .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}

.description{color:var(--orange,#edb780)}
details.subject-annotation{padding:13px 16px;margin:14px 0;background:var(--panel);border:1px solid var(--line);color:var(--muted);font-size:13px}
.subject-annotation summary{cursor:pointer;font-weight:500;line-height:1.5;overflow-wrap:anywhere}
.subject-annotation p{margin:12px 0;line-height:1.55}
.subject-annotation button{font-size:12px;padding:7px 10px}

.nearest-exam-date{margin:0;padding:16px 20px;border-bottom:1px solid var(--line);font-size:14px;color:var(--lime)}
.lecture-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:18px}.lecture-subject,.lecture-material,.lecture-session{padding:24px;border:1px solid var(--border,#343d42);border-radius:18px;background:var(--panel,#1b2125);text-align:left;overflow-wrap:anywhere}.lecture-subject h2{font-size:19px;margin:18px 0 12px}.lecture-subject>span:last-child{color:#88baff}.lecture-lessons{display:grid;gap:14px}.lecture-session{display:flex;justify-content:space-between;align-items:center;gap:20px;border-left:3px solid #88baff}.lecture-session p,.lecture-subject p{color:#a1abb2}.lecture-note{white-space:pre-wrap;line-height:1.5}.lecture-choices{display:grid;gap:14px;margin:20px 0}.lecture-choices label{display:flex;align-items:center;gap:10px}.lecture-choices input{width:18px;height:18px}.lecture-material h3{margin-top:0}

.video-panel{margin-bottom:32px;padding:22px;border:1px solid #344654;border-radius:18px;background:#18232b}.video-job{margin-top:18px;padding:20px;background:#121a20;border-radius:14px;border:1px solid #344654}.video-job progress{width:100%;height:10px;accent-color:#8cbfff}.video-actions{display:flex;gap:10px;flex-wrap:wrap}.video-warning{color:#e7b56d}.video-preview{margin-top:18px}.video-preview summary{cursor:pointer}.video-screens{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-top:16px}.video-screens img{width:100%;aspect-ratio:16/9;object-fit:contain;border-radius:8px}.video-screens a{display:grid;gap:8px}.video-checkbox{display:flex;gap:10px;align-items:center}.video-checkbox input{width:18px;height:18px}

.video-summary{margin:24px 0;padding:20px;border:1px solid #436174;border-radius:14px}.video-summary>summary{font-size:20px;font-weight:700;color:#a9cfff;cursor:pointer}.video-summary-core{padding:14px 0}.video-summary-core li{margin-bottom:10px;line-height:1.5}.video-summary-sections{display:grid;gap:28px;margin:22px 0}.video-summary-section{display:grid;grid-template-columns:minmax(220px,1fr) minmax(240px,1fr);gap:22px;align-items:start;border-top:1px solid #344654;padding-top:22px}.video-summary-section img{width:100%;border-radius:8px}.video-summary-section a>span{display:block;margin-top:6px;font-size:12px;color:#99a9b7}.video-summary-section h3{margin-top:0;color:#d7e9ff}.video-summary-section p,.video-summary-text{white-space:pre-wrap;line-height:1.65}.video-summary-section strong{color:#ffbd7a}.video-summary a{color:#a9cfff}@media(max-width:1000px){.video-summary-section{grid-template-columns:1fr}}
.board-card{overflow-wrap:anywhere}
.board-opens{margin:18px 0;font-size:13px}
.board-opens ul{list-style:none;padding:0;margin:8px 0}
.board-opens li{margin:6px 0}
.board-opens time{color:var(--muted,#a2afb7)}
.lecture-queues{display:grid;gap:16px;margin:24px 0 0;min-width:0}
.lecture-queue-heading{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.lecture-queue-heading h2{font-size:14px;margin:0}
.lecture-queue-heading>span{font-size:12px;color:var(--muted);border:1px solid var(--line);border-radius:20px;padding:2px 8px}
.lecture-queue-track{display:flex;gap:12px;overflow-x:auto;padding:2px 2px 10px;min-width:0;scrollbar-width:thin}
.lecture-queue-card{flex:0 0 280px;display:flex;flex-direction:column;align-items:stretch;text-align:left;gap:7px;padding:14px;border-radius:12px;white-space:normal;overflow-wrap:anywhere}
.lecture-queue-card>span{font-size:12px;color:var(--muted)}
.lecture-queue-card>small{font-size:12px;color:#9bc7ff}
.lecture-queue-card progress{width:100%;height:6px;accent-color:#9bc7ff}
.lecture-queue-card.queue-error{border-color:#d98773}
.lecture-queue-empty{margin:0;color:var(--muted);font-size:13px;padding:12px 0}
@media(max-width:720px){.lecture-queue-card{flex-basis:240px}.lecture-queues{margin-top:18px}}
