/* University workspace — local fonts, no external assets required. */
:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#25324a;background:#f4f6fb;font-synthesis:none;--blue:#315da8;--ink:#1c2e50;--line:#e3e8f1;--muted:#7b879c}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:9px;padding:12px 19px;background:var(--blue);color:#fff;font-size:13px;font-weight:600;transition:background .15s,box-shadow .15s}button:hover{background:#254c91;box-shadow:0 3px 9px #24498820}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible{outline:3px solid #96b9f5;outline-offset:3px}input,select,textarea{width:100%;border:1px solid #dce3ef;border-radius:8px;padding:12px 14px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:#6c91cf;box-shadow:0 0 0 3px #315da810}input::placeholder{color:#a0aabc}label{display:grid;gap:8px;font-size:12px;font-weight:600;margin:17px 0}small,.hint,p{color:var(--muted);font-weight:400}h1{font-size:30px;letter-spacing:-.8px;margin:9px 0;color:var(--ink)}h2{font-size:18px;font-weight:650;margin:0 0 8px;color:var(--ink)}p{font-size:13px;line-height:1.7}button.link{background:transparent;color:var(--blue);padding:8px 0;font-size:12px;box-shadow:none}.brand{font-size:28px;font-weight:750;letter-spacing:-.8px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:1.7px;color:#8a97ad}.auth{min-height:100vh;display:grid;grid-template-columns:1.05fr 1fr;background:#fff}.intro{padding:50px 12%;background:radial-gradient(ellipse at 85% 10%,#577fc2 0,transparent 55%),linear-gradient(145deg,#315da8,#24457f);color:white;display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden}.intro:after{content:"";width:420px;height:420px;border:1px solid #ffffff10;border-radius:50%;position:absolute;right:-240px;bottom:-160px;pointer-events:none}.intro .brand{margin-bottom:52px}.intro h1{font-size:56px;line-height:1.13;color:#fff;letter-spacing:-2px;margin:0 0 14px}.intro>p{color:#c9d8f1;font-size:15px;line-height:1.8}.intro-note{font-size:9px;letter-spacing:2px;margin-top:35px;color:#aac1e8}.preview-card{margin-top:25px;border:1px solid #ffffff26;border-radius:14px;background:#ffffff0d;padding:20px;max-width:400px;box-shadow:0 16px 36px #102f5b20}.preview-label{font-size:9px;letter-spacing:1.5px;color:#bccfed}.preview-card>div{display:flex;gap:15px;margin-top:18px;font-size:12px;line-height:1.5}.preview-card b{font-size:12px;color:#c8dbff;padding-right:12px;border-right:2px solid #86a9e3}.preview-card small{display:block;font-size:10px;color:#afc4e6;margin-top:4px}.preview-card p{font-size:10px;color:#c3d4f0;margin:20px 0 0;border-top:1px solid #ffffff20;padding-top:14px}.auth-card{width:min(380px,80%);align-self:center;justify-self:center;margin:45px 0}.auth-card h2{font-size:30px;letter-spacing:-.7px;margin:13px 0 28px}.auth-card button[type=submit]{width:100%;margin:10px 0 9px;padding:14px}.auth-card>.link{display:block;margin:auto}.auth-divider{display:flex;align-items:center;gap:10px;font-size:10px;color:#9ba6b8;margin:24px 0 15px}.auth-divider:before,.auth-divider:after{content:"";height:1px;background:var(--line);flex:1}.demo-button{width:100%}.auth-footnote{text-align:center;font-size:10px;line-height:1.7;margin-top:13px}.secondary{background:#eef3fc;color:#41649d}.secondary:hover{background:#e0eafb}.auth small{font-size:10px}#workspace{display:grid;grid-template-columns:225px minmax(0,1fr);min-height:100vh}aside{padding:34px 18px 22px;background:linear-gradient(180deg,#345fa8,#2e5598);color:white;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}aside .brand{padding-left:14px}aside>.eyebrow{margin:52px 15px 16px;color:#9db6df;font-size:9px}nav{display:grid;gap:7px}nav button{background:transparent;text-align:left;color:#d3dff3;padding:14px 15px;font-size:12px;box-shadow:none}nav button:hover{background:#ffffff12}nav button.active{background:#ffffff21;color:#fff;box-shadow:inset 3px 0 #bcd3ff}#pending-count:not(:empty){margin-left:5px;background:#fff;color:var(--blue);padding:2px 6px;border-radius:5px;font-size:10px}.account{margin-top:auto;padding:22px 13px 0;border-top:1px solid #ffffff20;display:grid;gap:3px;font-size:12px}.account .link{color:#b9cdee;text-align:left;font-size:10px}main{padding:36px 4%;width:100%;max-width:1700px}header,.section-head{display:flex;justify-content:space-between;align-items:center;gap:18px}header{margin-bottom:27px}header>.eyebrow{color:var(--muted)}header>button{box-shadow:0 4px 12px #315da822}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:30px}.stats article{background:white;border:1px solid var(--line);border-radius:12px;padding:20px 23px;position:relative}.stats article:after{content:"";position:absolute;right:24px;top:26px;width:32px;height:32px;background:#edf2fc;border-radius:10px}.stats article:nth-child(2):after{background:#e7f5f0}.stats article:nth-child(3):after{background:#f1ebfa}.stats span{display:block;color:#8a96aa;font-size:11px}.stats strong{display:block;font-size:29px;font-weight:650;margin-top:12px;color:var(--ink)}.section-head p{margin:4px 0}.import{display:flex;align-items:end;gap:12px;padding:5px 20px 19px;background:#edf2fb;border:1px solid #e0e8f7;border-radius:11px;margin:20px 0}.import label{flex:1;margin-bottom:0;color:#6480ab;font-size:11px}.import input{font-size:12px}.import button{white-space:nowrap}.calendar-panel{border:1px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;margin-top:24px}.calendar-toolbar{padding:17px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.month-switch{display:flex;align-items:center;gap:14px}.month-switch h2{margin:0;min-width:155px;text-align:center;font-size:16px;text-transform:capitalize}.month-switch button{padding:5px 12px;font-size:21px;background:#fff;color:#58739f}.calendar-toolbar>button{font-size:11px;padding:8px 12px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}.weekday{text-align:center;font-size:9px;font-weight:650;color:#8b98af;text-transform:uppercase;letter-spacing:.7px;padding:13px 0;border-bottom:1px solid var(--line);background:#fcfdff}.calendar-day{min-height:100px;padding:9px 7px;border-right:1px solid #edf0f6;border-bottom:1px solid #edf0f6;background:#fff}.calendar-day:nth-child(7n){border-right:0}.calendar-day.outside{background:#fafbfd}.day-number{display:block;padding:0;width:24px;height:24px;border-radius:7px;margin:0 0 7px 2px;background:transparent;color:#77859d;font-size:11px;box-shadow:none}.outside .day-number{color:#bdc5d1}.calendar-day.selected{background:#f1f5ff}.calendar-day.selected .day-number,.calendar-day.today .day-number{background:var(--blue);color:#fff}.calendar-event{display:block;width:100%;text-align:left;border-radius:4px;padding:4px 6px;margin:4px 0;color:#477d72;background:#e7f3ef;font-size:9px;font-weight:500;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;box-shadow:none}.calendar-event:hover{background:#d3e8df}.calendar-event.color-1{background:#eee8fb;color:#8463b8}.calendar-event.color-2{background:#e6eefc;color:#547fbf}.calendar-event.color-3{background:#fff1d9;color:#a47c36}.calendar-event.color-4{background:#e5f3f6;color:#4f8d9a}.day-heading{margin-top:25px}.day-heading h2{font-size:15px}.date-filter{display:flex;align-items:center;gap:10px;margin:0;color:#8895ab;font-size:10px}.date-filter input{width:150px;padding:8px 10px;font-size:11px}.cards{display:grid;gap:12px;margin-top:18px}.card{display:flex;align-items:center;gap:20px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:19px 22px;box-shadow:0 2px 5px #20345402}.card .content{flex:1;min-width:0}.card h3{font-size:13px;font-weight:650;line-height:1.5;margin:0 0 5px;overflow-wrap:anywhere}.card p{margin:5px 0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.card .meta{font-size:10px;color:#8d99ae}.time{font-size:16px;color:var(--blue);padding-right:20px;border-right:2px solid #dce7f9;min-width:80px}.time small{display:block;font-size:10px;margin-top:5px;color:#9ba7bc}.tag{display:inline-block;font-size:9px;padding:4px 7px;background:#eaf0fc;color:#6280b2;border-radius:5px;margin:5px 4px 0 0}.tag.pending{background:#fff4dd;color:#a08242}.tag.personal{background:#f0ecfa;color:#9274b5}.done h3{text-decoration:line-through;color:#9ca7b9}.card input[type=checkbox]{width:19px;height:19px;accent-color:var(--blue);cursor:pointer}.empty{padding:45px 25px;border:1px dashed #d8e1ef;border-radius:11px;background:#fcfdff;color:#94a0b5;text-align:center;font-size:12px;line-height:1.8}.group-forms{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:24px}.group-forms form{padding:10px 23px 23px;background:white;border:1px solid var(--line);border-radius:12px}.group-forms button{margin-top:5px}.section-head select{width:auto;font-size:11px}dialog{width:min(520px,92vw);border:1px solid var(--line);border-radius:16px;padding:28px;box-shadow:0 24px 100px #10275130}dialog::backdrop{background:#15294670;backdrop-filter:blur(3px)}dialog .hint{font-size:11px;line-height:1.8}dialog button[type=submit]{width:100%;margin-top:7px}.hint{font-size:11px}.actions{display:flex;gap:7px}.actions button{font-size:11px;padding:10px 13px}#notice{display:none;position:fixed;bottom:24px;left:50%;transform:translateX(-50%);z-index:10;background:#223b64;color:white;padding:14px 22px;border-radius:10px;box-shadow:0 6px 25px #1e365d25;max-width:90vw;font-size:12px;line-height:1.6}#notice.error{background:#9a4650}#demo-banner{padding:11px 16px;margin-bottom:22px;background:#e6edfb;color:#5673a3;border:1px solid #d7e2f6;border-radius:8px;font-size:11px}[hidden]{display:none!important}@media(min-width:1500px){.calendar-day{min-height:125px}.calendar-event{font-size:10px}}@media(max-width:1000px){#workspace{grid-template-columns:190px minmax(0,1fr)}aside{padding:30px 12px}nav button{font-size:11px;padding:13px 10px}.intro{padding:40px 10%}.intro h1{font-size:44px}.calendar-day{min-height:85px;padding:7px 4px}.calendar-event{padding:3px;font-size:8px}}@media(max-width:760px){.auth{grid-template-columns:1fr}.intro{padding:28px 8% 35px}.intro .brand{margin-bottom:22px}.intro h1{font-size:36px;letter-spacing:-1px}.intro>p{font-size:12px;margin-bottom:0}.preview-card,.intro-note{display:none}.auth-card{margin:35px 0;width:84%}.auth-card h2{font-size:26px}#workspace{grid-template-columns:1fr}aside{position:static;height:auto;padding:20px}.brand{font-size:24px}aside .brand{padding-left:0}aside>.eyebrow{display:none}nav{display:flex;overflow-x:auto;margin-top:20px;gap:5px}nav button{white-space:nowrap;padding:11px}.account{position:absolute;right:20px;top:17px;border:0;padding:0;font-size:11px;gap:0}.account .link{font-size:9px}main{padding:24px 5%}h1{font-size:25px}header{align-items:center}header>button{padding:11px;font-size:10px}.stats{gap:9px;margin-bottom:25px}.stats article{padding:15px 12px}.stats article:after{display:none}.stats span{font-size:9px}.stats strong{font-size:25px}.import{display:block;padding:4px 15px 15px}.import button{width:100%;margin-top:12px;font-size:11px}.calendar-scroll{overflow-x:auto}.calendar-grid{min-width:600px}.calendar-toolbar{padding:13px}.month-switch{gap:3px}.month-switch h2{font-size:14px;min-width:140px}.calendar-day{min-height:95px}.calendar-event{font-size:9px}.day-heading{align-items:start;flex-direction:column;gap:10px}.date-filter{width:100%;justify-content:space-between}.date-filter input{width:155px}.card{padding:16px;gap:12px;flex-wrap:wrap}.card .content{min-width:55%}.time{min-width:65px;padding-right:12px;font-size:14px}.card>button{font-size:10px;padding:9px 12px}.group-forms{grid-template-columns:1fr}.section-head{gap:10px}.section-head select{max-width:145px}.section-head h2{font-size:16px}.actions{width:100%;justify-content:end}.calendar-panel{margin-top:20px}dialog{padding:22px}}

/* Shared inline SVG sprite: inherits text color and scales consistently. */
.svg-sprite {
  position: absolute;
  width: 0;
  height: 0;
  overflow: hidden;
  pointer-events: none;
}
.icon {
  display: inline-block;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vertical-align: middle;
  transition: none !important;
  transform: translateZ(0);
}
button > .icon { margin-right: 6px; transition: none !important; pointer-events: none; }
button > .icon:last-child { margin-right: 0; }
.brand { display: flex; align-items: center; gap: 10px; }
.brand > .icon { width: 30px; height: 30px; }
nav button { display: flex; align-items: center; gap: 10px; }
nav button > .icon { margin-right: 0; }
nav button > span { min-width: 0; }
#admin-nav-label { text-align: left; }
.account .icon { width: 16px; height: 16px; }
.preview-card p > .icon { width: 13px; height: 13px; margin-right: 4px; }
.demo-button > .icon { margin-left: 5px; }
.month-switch button { display: inline-flex; align-items: center; justify-content: center; }
.month-switch .icon { width: 18px; height: 18px; }
#close-dialog { display: inline-flex; padding: 6px; }
.stats article::after { display: none; }
.stats .stat-icon {
  display: flex;
  position: absolute;
  top: 26px;
  right: 24px;
  width: 32px;
  height: 32px;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: #edf2fc;
  color: #6286bc;
}
.stats article:nth-child(2) .stat-icon { background: #e7f5f0; color: #539b84; }
.stats article:nth-child(3) .stat-icon { background: #f1ebfa; color: #9574b8; }
@media (max-width: 760px) {
  .stats .stat-icon { display: none; }
  nav button { gap: 7px; }
  .brand > .icon { width: 26px; height: 26px; }
}

/* Schedule first: month controls and lessons occupy the initial screen. */
main[data-view="schedule"] { padding: 16px 24px; max-width: none; }
main[data-view="schedule"] > header,
main[data-view="schedule"] > .stats { display: none; }
main[data-view="schedule"] #demo-banner { margin-bottom: 10px; padding: 6px 12px; font-size: 10px; }
#view-schedule .calendar-panel { margin-top: 0; }
#view-schedule .calendar-toolbar { padding: 10px 14px; gap: 12px; }
.calendar-date-top { display: flex; align-items: center; gap: 8px; margin: 0; color: #71819b; font-size: 10px; font-weight: 600; white-space: nowrap; cursor: pointer; }
.calendar-date-top .date-control { display: flex; align-items: center; gap: 7px; min-width: 142px; padding: 7px 9px; border: 1px solid #dce5f3; border-radius: 9px; background: linear-gradient(180deg,#fff,#f8faff); color: var(--ink); transition: border-color .15s, box-shadow .15s, background .15s; }
.calendar-date-top:hover .date-control { border-color: #9bb7e5; background: #f5f8ff; }
.calendar-date-top:focus-within .date-control { border-color: #6c91cf; box-shadow: 0 0 0 3px #315da812; }
.calendar-date-top input { width: 100%; min-width: 0; padding: 0; border: 0; background: transparent; box-shadow: none; font-size: 11px; color: var(--ink); cursor: pointer; }
.calendar-date-top input::-webkit-calendar-picker-indicator { opacity: 0; width: 0; margin: 0; }
.calendar-date-top .icon { width: 16px; height: 16px; color: var(--blue); flex: 0 0 auto; pointer-events: none; }
.calendar-actions { display: flex; align-items: center; gap: 8px; }
.calendar-actions button { display: inline-flex; align-items: center; justify-content: center; gap: 5px; padding: 9px 12px; font-size: 11px; min-height: 36px; }
.calendar-actions button > .icon { margin: 0; width: 16px; height: 16px; }
#view-schedule .calendar-grid {
  min-width: 0;
  height: clamp(520px, calc(100dvh - 145px), 900px);
  grid-template-rows: 28px repeat(var(--week-count, 5), minmax(0, 1fr));
}
#view-schedule .weekday { padding: 8px 0; }
#view-schedule .calendar-day { min-height: 0; padding: 4px; overflow: visible; }
#view-schedule .day-number { margin-bottom: 4px; }
#view-schedule .calendar-event { padding: 3px 5px; margin: 2px 0; font-size: 9px; line-height: 1.25; }
#view-schedule .event-time { font-weight: 650; }
#view-schedule .day-heading { margin-top: 16px; }
.homework-alert { margin-top: 14px; padding: 13px 16px; border: 1px solid #cfe0ff; border-radius: 12px; background: linear-gradient(110deg,#f2f6ff,#fff); box-shadow: 0 5px 16px #315da812; }
.homework-alert-title { display:flex; align-items:center; gap:8px; color:var(--ink); font-size:13px; margin-bottom:8px; }
.homework-alert-title .icon { width:17px; height:17px; color:#315da8; }
.homework-alert-title span { margin-left:auto; color:var(--muted); font-size:10px; font-weight:400; }
.homework-alert-item { display:grid; grid-template-columns:150px minmax(160px,1fr) minmax(150px,1fr) 18px; align-items:center; gap:12px; width:100%; margin-top:6px; padding:9px 10px; text-align:left; color:var(--ink); background:#fff; border:1px solid #e2eafb; box-shadow:none; font-size:11px; }
.homework-alert-item:hover { background:#f6f9ff; border-color:#bcd0f5; }
.alert-date { color:#5275ae; font-weight:650; }.alert-subject { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.alert-task { color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
@media(max-width:760px){.homework-alert-item{grid-template-columns:1fr 18px;gap:3px 8px}.alert-date,.alert-subject{grid-column:1}.alert-task{grid-column:1}.homework-alert-item>.icon{grid-column:2;grid-row:1/4;grid-column-align:end}.homework-alert-title span{display:none}}
.telegram-card{margin-top:18px;padding:20px 23px;background:#fff;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}.telegram-copy{flex:1;min-width:240px}.telegram-action{margin-left:auto}.telegram-card h3{margin:0 0 4px;font-size:14px}.telegram-card p{margin:0}.telegram-settings{display:flex;align-items:center;gap:12px;margin-left:auto}.telegram-settings label{margin:0;font-size:11px}.telegram-settings select{width:auto;padding:9px}.telegram-toggle{display:flex!important;align-items:center;gap:5px}.telegram-toggle input{width:auto}.telegram-code{flex-basis:100%;order:3;margin:0!important;color:var(--blue)!important}.telegram-code code{background:#edf3ff;padding:4px 7px;border-radius:5px}@media(max-width:760px){.telegram-card{display:grid}.telegram-settings{margin-left:0;flex-wrap:wrap}}
dialog{margin:auto}.task-actions{width:100%;justify-content:flex-start}.task-description{width:100%}
.file-picker{display:flex;align-items:center;gap:10px;min-height:48px;padding:8px 10px;border:1px solid #dce3ef;border-radius:8px;background:#fff}.file-picker input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.file-picker-button{display:inline-flex;align-items:center;gap:7px;padding:9px 13px;border-radius:7px;background:#eef3fc;color:#41649d;font-size:11px;font-weight:650;cursor:pointer;white-space:nowrap}.file-picker-button:hover{background:#e0eafb}.file-picker-button .icon{width:15px;height:15px}.file-picker-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#7b879c;font-size:11px}
.feed-list{display:grid;gap:12px;margin-top:20px;width:100%}.feed-card{display:flex;align-items:center;gap:14px;padding:20px 24px;background:#fff;border:1px solid var(--line);border-radius:12px;transition:border-color .15s,box-shadow .15s}.feed-card:hover{border-color:#b9ccec;box-shadow:0 5px 16px #315da812}.feed-dot{width:10px;height:10px;margin-top:5px;border-radius:50%;background:#9eb1cd;flex:0 0 auto}.feed-card.unread .feed-dot{background:#315da8;box-shadow:0 0 0 4px #e8effc}.feed-body{flex:1;min-width:0}.feed-date{font-size:10px;color:#7891b7}.feed-body h3{font-size:14px;margin:6px 0 2px;color:var(--ink)}.feed-body p{margin:3px 0;font-size:12px}.feed-body .tag{margin-top:8px}.feed-go{display:inline-flex;align-items:center;gap:8px;flex:0 0 auto;padding:10px 16px}.feed-go .icon{width:15px}.feed-modal-action{display:flex;justify-content:flex-end;margin-top:18px}
#view-schedule #lessons { margin-top: 12px; grid-template-columns: repeat(auto-fit, minmax(min(300px, 100%), 1fr)); gap: 10px; }
button.lesson-card { width: 100%; text-align: left; color: var(--ink); background: #fff; font-weight: 400; }
button.lesson-card:hover { background: #f0f5ff; border-color: #b9ccee; }
.lesson-card .content { display: grid; gap: 5px; }
.lesson-card strong { font-size: 13px; line-height: 1.5; font-weight: 650; }
.lesson-card > .icon { margin: 0; color: #8398b9; }
button.task-link { display: inline; padding: 0; border-radius: 3px; background: transparent; color: inherit; font: inherit; text-align: left; line-height: inherit; box-shadow: none; }
button.task-link:hover { color: var(--blue); text-decoration: underline; }
.done .task-link { text-decoration: line-through; }
#lesson-dialog .section-head, #task-dialog .section-head { align-items: start; }
dialog [data-close] { display: inline-flex; flex-shrink: 0; padding: 5px; }
#lesson-title, #task-title { overflow-wrap: anywhere; line-height: 1.5; }
#lesson-description, .task-description { white-space: pre-wrap; overflow-wrap: anywhere; }
#lesson-dialog h3 { font-size: 13px; margin-top: 22px; }
#lesson-dialog .cards { margin: 10px 0 18px; }
.lesson-task { display: flex; align-items: center; gap: 10px; width: 100%; padding: 13px; color: var(--ink); background: #f0f4fc; text-align: left; font-size: 12px; }
.lesson-task:hover { background: #e5edfc; }
.lesson-task span { flex: 1; overflow-wrap: anywhere; }
#lesson-add-homework { width: 100%; }
#import-dialog .import { display: block; padding: 0; margin: 0; border: 0; background: transparent; }
#import-dialog .import button { width: 100%; margin-top: 18px; }
@media (max-width: 1050px) and (min-width: 761px) {
  main[data-view="schedule"] { padding: 12px; }
  #view-schedule .calendar-event { font-size: 9px; padding: 4px; }
}
@media (max-width: 760px) {
  #workspace { padding-bottom: calc(70px + env(safe-area-inset-bottom)); }
  #workspace aside { padding: 12px 16px; height: 56px; }
  #workspace aside .brand { font-size: 22px; }
  #workspace .account { top: 10px; right: 16px; max-width: 55%; }
  #workspace .account strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  #workspace nav {
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 5;
    display: flex; gap: 0; margin: 0; padding: 6px 4px calc(6px + env(safe-area-inset-bottom));
    min-height: 64px; background: #fff; border-top: 1px solid var(--line); box-shadow: 0 -3px 14px #1c2e5008; overflow: visible;
  }
  #workspace nav button {
    display: flex; flex: 1; min-width: 0; min-height: 48px; padding: 5px 2px;
    position: relative; flex-direction: column; justify-content: center; gap: 4px;
    color: #8593aa; background: transparent; border-radius: 8px; white-space: normal;
  }
  #workspace nav button.active { color: var(--blue); background: #edf3ff; box-shadow: none; }
  #workspace nav button > .icon { width: 20px; height: 20px; }
  #workspace .nav-label { font-size: 0; line-height: 1; text-align: center; }
  #workspace .nav-label::after { content: attr(data-short); font-size: 9px; }
  #pending-count:not(:empty) { position: absolute; top: 0; right: 10px; background: var(--blue); color: #fff; }
  main[data-view="schedule"] { padding: 0 10px 16px; }
  main[data-view="schedule"] #demo-banner { padding: 5px 8px; font-size: 9px; line-height: 1.4; margin-bottom: 8px; }
  #view-schedule .calendar-toolbar { flex-wrap: wrap; gap: 2px 8px; padding: 5px 7px; }
  .month-switch { flex: 1; justify-content: space-between; }
  .month-switch h2 { min-width: 0; font-size: 14px; }
  .month-switch button { min-height: 44px; min-width: 36px; padding: 8px; }
  .calendar-actions { gap: 4px; }
  .calendar-actions button { min-height: 44px; padding: 8px; font-size: 10px; }
  .calendar-actions button span { display: none; }
  #view-schedule .calendar-scroll { overflow: visible; }
  #view-schedule .calendar-grid {
    height: auto; min-width: 0;
    grid-template-rows: 25px repeat(var(--week-count, 5), minmax(70px, auto));
  }
  #view-schedule .weekday { font-size: 9px; padding: 6px 0; }
  #view-schedule .calendar-day { padding: 3px 2px; overflow: visible; }
  #view-schedule .day-number { width: 100%; height: 24px; margin: 0 0 3px; border-radius: 5px; font-size: 10px; }
  #view-schedule .calendar-event { display: block; width: 100%; padding: 3px 0; margin: 2px 0; font-size: 9px; text-align: center; min-height: 19px; }
  #view-schedule .event-title { display: none; }
  #view-schedule .day-heading { flex-direction: row; align-items: center; gap: 8px; margin-top: 14px; }
  #view-schedule .day-heading h2 { font-size: 13px; white-space: nowrap; }
  #view-schedule .date-filter { width: auto; font-size: 0; }
  #view-schedule .date-filter input { width: 137px; min-height: 38px; font-size: 11px; }
  #view-schedule #lessons { grid-template-columns: 1fr; margin-top: 8px; gap: 8px; }
  #view-schedule .lesson-card { flex-wrap: nowrap; padding: 12px; gap: 10px; }
  #view-schedule .lesson-card .content { min-width: 0; }
  .lesson-card strong { font-size: 12px; }
  .lesson-card .time { min-width: 57px; padding-right: 10px; font-size: 13px; }
  .lesson-card .time small { font-size: 9px; }
  #notice { bottom: calc(80px + env(safe-area-inset-bottom)); width: max-content; }
  dialog { max-height: calc(100dvh - 32px); overflow-y: auto; padding: 20px; }
  dialog input, dialog select, dialog textarea { font-size: 16px; }
  dialog button[type="submit"], #lesson-add-homework { min-height: 44px; }
  .card input[type="checkbox"] { width: 24px; height: 24px; }
}

/* Homework markers stay visible even when mobile lesson titles are hidden. */
.lesson-homework-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 3px;
  flex-shrink: 0;
  padding: 3px 5px;
  border-radius: 5px;
  background: #315da8;
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 1;
}
.lesson-homework-badge .icon { width: 12px; height: 12px; }
#view-schedule .calendar-event { display: flex; align-items: center; gap: 4px; }
#view-schedule .event-time { flex-shrink: 0; }
#view-schedule .event-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.calendar-event .lesson-homework-badge { margin-left: auto; padding: 2px 4px; font-size: 9px; }

#view-schedule .day-number {
  width: calc(100% - 10px);
  margin: 0 5px 4px;
  text-align: center;
}

/* Keep dense desktop calendar cells fully visible instead of scrolling after six lessons. */
@media (min-width: 1001px) {
  #view-schedule .calendar-day { min-height: 0; overflow: visible; }
  #view-schedule .calendar-event { margin: 2px 0; padding: 3px 5px; font-size: 9px; line-height: 1.25; }
}
@media (max-width: 760px) {
  #view-schedule .calendar-event { justify-content: center; gap: 2px; }
  .calendar-event .lesson-homework-badge { margin-left: 0; padding: 2px 3px; font-size: 8px; }
  .calendar-event .lesson-homework-badge .icon { display: none; }
}

/* Full-width date hit area on every viewport. */
#view-schedule .day-number { width: calc(100% - 10px); margin-left: 5px; margin-right: 5px; text-align: center; }

/* Brighter base palette, keeping the existing visual language. */
:root { --blue: #3d6fc1; --ink: #1d3560; --line: #dfe7f3; --muted: #7485a0; }
body { background: #f7f9fe; color: #283754; }
aside { background: linear-gradient(180deg,#3f72c3,#315da8); }
.intro { background: radial-gradient(ellipse at 85% 10%,#6790d4 0,transparent 55%),linear-gradient(145deg,#3d6fc1,#2c5597); }
nav button { font-size: 13px; font-weight: 650; }
.account { font-size: 13px; }
.account .link { font-size: 11px; }
html { font-size: 112%; }
nav button { font-size: 14px; }
.account { font-size: 14px; }
.account .link { font-size: 12px; }
.filter-row { display: flex; gap: .6rem; align-items: center; padding-right: .75rem; }
.filter-row select { min-width: 11rem; min-height: 2.8rem; padding: .65rem 3.1rem .65rem 1rem; appearance: none; background-color: #fff; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%233d6fc1' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; background-size: .9rem; }
.auth-card select { appearance:none; padding-right:3rem; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%233d6fc1' stroke-width='2.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:calc(100% - 1.4rem) center; background-size:.9rem; }
.filter-row select:focus { background-position: right 1rem center; }
.homework-groups { display: grid; gap: 1.4rem; width: 100%; }
.homework-date { margin: 0 0 .55rem; color: var(--ink); font-size: 1rem; }
.homework-groups .cards { margin-top: 0; }
#view-homework .card > input[type="checkbox"] { order: 3; margin-left: auto; }
main[data-view="homework"] { max-width: none; }
body { font-size: 1rem; }
#workspace { grid-template-columns: clamp(12rem, 15vw, 15rem) minmax(0, 1fr); }
aside { padding: clamp(1.25rem, 2.5vw, 2.2rem) clamp(.75rem, 1.5vw, 1.2rem) 1.25rem; }
main { padding: clamp(1rem, 3vw, 2.5rem) clamp(1rem, 4vw, 4rem); max-width: 110rem; }
nav { gap: .45rem; }
nav button { padding: .8rem 1rem; font-size: .82rem; }
.account { padding: 1.25rem .75rem 0; }
.calendar-toolbar { padding: clamp(.65rem, 1.2vw, 1rem) clamp(.75rem, 1.5vw, 1.25rem); }
.calendar-day { min-height: clamp(5rem, 9vw, 8rem); padding: .45rem; }
.calendar-event { padding: .22rem .35rem; margin: .12rem 0; font-size: clamp(.58rem, .7vw, .72rem); }
.card { padding: clamp(.8rem, 1.4vw, 1.25rem); gap: clamp(.6rem, 1.2vw, 1.25rem); }
button { padding: .72rem 1.15rem; }
input, select, textarea { padding: .72rem .85rem; }
@media (max-width: 48rem) {
  #workspace { grid-template-columns: 1fr; }
  main { padding: 1rem 5%; }
  nav button { padding: .7rem .8rem; }
  .calendar-day { min-height: 5.5rem; }
}
.task-edit-form { max-width: 440px; }
.task-public-id { font-family: ui-monospace, SFMono-Regular, Consolas, monospace; font-size: .72rem; color: #7283a0; word-break: break-all; }
dialog:has(.task-edit-form) { width: min(460px, 92vw); padding: 22px; }
.task-edit-form .task-actions { justify-content: space-between; align-items: center; margin-top: 14px; }
.task-edit-form .task-actions button[type="submit"] { width: auto; margin-top: 0; }
.task-edit-form .task-actions button { min-width: 150px; }

@media (max-width: 760px) {
  #view-schedule .calendar-toolbar { flex-wrap: wrap; }
  #view-schedule .calendar-date-top { order: -1; width: 100%; justify-content: flex-start; }
  #view-schedule .calendar-date-top input { width: 145px; }
}

/* Vue manages visibility and rendering; dialogs retain their native focus behavior. */
[v-cloak] { display: none !important; }
.app-loading { min-height: 100vh; display: grid; place-content: center; justify-items: center; gap: 14px; color: var(--muted); font-size: 13px; background: #f4f6fb; }
.loading-mark { width: 30px; height: 30px; border: 3px solid #dce5f5; border-top-color: var(--blue); border-radius: 50%; animation: app-spin .8s linear infinite; }
@keyframes app-spin { to { transform: rotate(360deg); } }
.full-width { width: 100%; }
.dialog-close { display: inline-flex; flex-shrink: 0; padding: 5px !important; }
dialog > .section-head { align-items: start; }
#modal-title { line-height: 1.5; overflow-wrap: anywhere; }
dialog .lesson-tasks { margin: 10px 0 18px; }
dialog .lesson-details { display: grid; gap: 12px; margin: 12px 0 22px; }
dialog .lesson-detail { display: grid; grid-template-columns: 20px minmax(0, 1fr); align-items: start; gap: 10px; color: #34445e; font-size: 13px; line-height: 1.5; }
dialog .lesson-detail .icon { width: 18px; height: 18px; color: var(--blue); }
dialog .lesson-detail-subject { color: var(--blue); font-weight: 600; }
dialog .import { display: block; padding: 0; margin: 0; border: 0; background: transparent; }
dialog .import button { width: 100%; margin-top: 18px; }

.task-actions { margin-top: 20px; flex-wrap: wrap; }
button.danger { background: #a7424e; color: white; }
button.danger:hover { background: #913640; }
button.danger.secondary { background: #fbebed; color: #a7424e; }

#auth-card select, .auth-card select { text-align: center; letter-spacing: .08em; }
.group-forms-single{grid-template-columns:minmax(0,1fr)}
main{max-width:none}
