:root{
  --navy:#173f67;--blue:#2176ae;--blue-2:#2f8bc3;--blue-soft:#eaf4fb;
  --text:#1c2b39;--muted:#728092;--border:#dbe4eb;--bg:#f4f7fa;--white:#fff;
  --green:#2d8f68;--violet:#7357b6;--amber:#cc861b;--red:#c84b4b;
  --shadow:0 12px 34px rgba(31,67,98,.08)
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:Inter,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.45}
a{text-decoration:none;color:inherit}
button,input{font:inherit}
button{cursor:pointer}
[hidden]{display:none!important}

.topbar{background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}
.topbar-inner{height:72px;max-width:1180px;margin:auto;padding:0 22px;display:flex;align-items:center;justify-content:space-between}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;font-weight:900;letter-spacing:.03em}
.brand-copy{display:flex;flex-direction:column;line-height:1.12}.brand-copy b{font-size:16px}.brand-copy small{margin-top:5px;color:var(--muted)}
.topbar nav{display:flex;gap:8px}.topbar nav a{padding:9px 13px;border-radius:10px;font-weight:700;color:#4d5d6d}.topbar nav a:hover{background:var(--blue-soft);color:var(--navy)}

.container{max-width:1180px;margin:0 auto;padding:34px 22px 70px}
footer{text-align:center;color:var(--muted);font-size:13px;padding:28px 16px 36px}
.flash{max-width:900px;margin:0 auto 18px;padding:13px 16px;border-radius:12px;border:1px solid transparent}.flash.ok{background:#e9f7f0;color:#21684c;border-color:#ccebdc}.flash.error{background:#fff0f0;color:#963636;border-color:#f0cece}

.home-hero{text-align:center;padding:46px 0 28px}.home-hero h1{font-size:clamp(34px,5vw,52px);line-height:1.05;margin:0;letter-spacing:-.035em;color:#153a5d}.today-date{display:inline-flex;margin-top:15px;padding:9px 16px;border-radius:999px;background:#fff;border:1px solid var(--border);color:#5a6b7b;font-weight:700;box-shadow:0 5px 18px rgba(31,67,98,.05)}

.schedule-picker{max-width:780px;margin:0 auto;background:#fff;border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow);overflow:hidden}
.picker-tabs{display:grid;grid-template-columns:1fr 1fr;background:#f7f9fb;border-bottom:1px solid var(--border);padding:7px}
.picker-tab{border:0;background:transparent;padding:13px;border-radius:13px;font-weight:800;color:var(--muted)}.picker-tab.active{background:#fff;color:var(--navy);box-shadow:0 4px 16px rgba(34,65,94,.08)}
.picker-panel{display:none;padding:20px}.picker-panel.active{display:block}
.search-box{position:relative}.search-box input{width:100%;height:48px;border:1px solid #cfdbe4;border-radius:13px;padding:0 15px 0 43px;background:#fbfcfd;outline:none}.search-box input:focus{border-color:#86b9da;box-shadow:0 0 0 4px rgba(47,139,195,.10);background:#fff}.search-icon{position:absolute;left:15px;top:50%;transform:translateY(-50%);color:#6d8292;font-size:24px;line-height:1}
.entity-list{margin-top:14px;max-height:485px;overflow:auto;border:1px solid #edf1f4;border-radius:14px}.entity-row{display:grid;grid-template-columns:42px 1fr 24px;gap:12px;align-items:center;padding:13px 14px;border-bottom:1px solid #edf1f4;transition:.15s;background:#fff}.entity-row:last-of-type{border-bottom:0}.entity-row:hover{background:#f7fbfe}.entity-row b{display:block}.entity-row small{display:block;margin-top:3px;color:var(--muted)}
.entity-avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:11px;background:var(--blue-soft);color:var(--blue);font-weight:900;font-size:13px}.teacher-avatar{background:#eef0fb;color:#5a58a9}.row-arrow{font-size:28px;color:#9aa9b5;text-align:center}.no-results{display:none;text-align:center;padding:25px;color:var(--muted)}.no-results.show{display:block}

.schedule-title{text-align:center;padding:18px 0 20px}.schedule-title .back-link{display:inline-block;margin-bottom:18px;color:var(--blue);font-weight:700}.schedule-title p{margin:0;color:var(--muted);font-weight:700}.schedule-title h1{font-size:clamp(32px,4vw,46px);margin:5px 0 12px;letter-spacing:-.03em;color:#153a5d}.selected-date{color:#667789;font-weight:700}
.next-lesson-card{margin:8px auto 20px;max-width:980px;border-radius:18px;background:linear-gradient(125deg,#17476f,#277eae);color:#fff;padding:20px 22px;box-shadow:0 14px 30px rgba(24,75,111,.18)}.next-label{text-transform:uppercase;font-size:11px;font-weight:900;letter-spacing:.11em;opacity:.8;margin-bottom:10px}.next-content{display:flex;justify-content:space-between;gap:20px;align-items:flex-end}.next-content h2{margin:0;font-size:23px}.next-content p{margin:5px 0 0;opacity:.86}.next-meta{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.next-meta span{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.20);padding:6px 9px;border-radius:999px;font-size:12px;font-weight:800}

.schedule-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;max-width:980px;margin:0 auto 12px}.date-nav,.mode-tabs{display:flex;align-items:center;gap:6px}.square-btn,.today-btn,.mode-tabs a,.outline-btn,.small-btn{background:#fff;border:1px solid var(--border);border-radius:10px;padding:9px 12px;font-weight:800;color:#445668}.square-btn{min-width:40px;text-align:center;font-size:20px;line-height:1}.mode-tabs{margin-left:4px;background:#fff;border:1px solid var(--border);border-radius:12px;padding:4px}.mode-tabs a{border:0;padding:8px 12px}.mode-tabs a.active{background:var(--navy);color:#fff}.datepick{margin-left:auto}.datepick input{height:40px;border:1px solid var(--border);border-radius:10px;background:#fff;padding:0 10px;color:#435567}
.weekday-tabs{display:flex;gap:7px;max-width:980px;margin:0 auto 24px;overflow:auto;padding-bottom:2px}.weekday-tabs a{min-width:72px;background:#fff;border:1px solid var(--border);border-radius:11px;padding:8px 11px;text-align:center;color:#657687;font-weight:800}.weekday-tabs a span{display:block}.weekday-tabs a small{display:block;font-size:11px;margin-top:2px;font-weight:600}.weekday-tabs a.active{background:var(--navy);border-color:var(--navy);color:#fff}
.pairs-heading{max-width:980px;margin:0 auto}.pairs-heading h2{font-size:25px;margin:0 0 12px}.day-block{max-width:980px;margin:0 auto 28px}.day-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 10px}.day-title b{font-size:16px}.day-title span{color:var(--muted);font-size:13px;font-weight:700}
.lessons{display:grid;gap:9px}.lesson{display:grid;grid-template-columns:126px 1fr;background:#fff;border:1px solid var(--border);border-left:5px solid var(--blue);border-radius:15px;overflow:hidden;box-shadow:0 5px 16px rgba(33,62,88,.035)}.lesson-time{padding:15px 13px;background:#fafbfd;border-right:1px solid var(--border);display:flex;flex-direction:column;align-items:center;justify-content:center}.lesson-time b{font-size:17px}.lesson-time>span{font-size:11px;color:#9aa6b0;margin:-2px 0}.lesson-time small{margin-top:7px;color:var(--muted);font-weight:700}.lesson-main{padding:15px 18px}.lesson-main h3{margin:8px 0 7px;font-size:19px}.badges{display:flex;gap:7px;flex-wrap:wrap}.badge,.room{font-size:11px;font-weight:800;padding:4px 8px;border-radius:999px;background:#e9f4fa;color:#176a94}.room{background:#f6f0e7;color:#7b5a2a}.lesson-links{display:flex;gap:7px;flex-wrap:wrap}.lesson-links a{color:#356c93;font-size:14px;font-weight:700}.lesson-links a:hover{text-decoration:underline}.type-лабораторна{border-left-color:var(--green)}.type-практична{border-left-color:var(--violet)}.type-кп,.type-захист-кп{border-left-color:var(--amber)}.type-залік{border-left-color:var(--red)}.empty{background:#fff;border:1px dashed #cbd7df;color:var(--muted);border-radius:14px;padding:24px;text-align:center}

.admin-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;max-width:1000px;margin:0 auto 20px}.admin-head p{margin:0 0 5px;color:var(--blue);font-weight:900;text-transform:uppercase;font-size:12px;letter-spacing:.1em}.admin-head h1{margin:0;font-size:38px;letter-spacing:-.03em}.outline-btn{display:inline-block}.admin-add-card,.admin-list-card{max-width:1000px;margin:0 auto 18px;background:#fff;border:1px solid var(--border);border-radius:18px;padding:22px;box-shadow:var(--shadow)}.admin-add-card{display:grid;grid-template-columns:1fr minmax(360px,1fr);gap:22px;align-items:center}.admin-add-card h2,.admin-list-card h2{margin:0 0 5px}.admin-add-card p,.admin-list-card p{margin:0;color:var(--muted)}.add-teacher-form{display:flex;gap:9px}.add-teacher-form input,.rename-row input{flex:1;min-width:0;height:44px;border:1px solid #cfdbe4;border-radius:10px;padding:0 12px}.add-teacher-form button,.upload-row button,.secondary-btn,.danger-btn,.login-card button{border:0;border-radius:10px;background:var(--navy);color:#fff;font-weight:800;padding:11px 15px}.admin-list-top{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:16px}.admin-search{width:330px}.teacher-admin-list{display:grid;gap:10px}.teacher-admin-card{border:1px solid var(--border);border-radius:14px;overflow:hidden}.teacher-card-main{display:flex;justify-content:space-between;gap:18px;align-items:center;padding:15px}.teacher-main-info{display:flex;gap:12px;align-items:center}.teacher-main-info h3{margin:0 0 3px}.teacher-main-info p{margin:0 0 3px;font-size:13px}.teacher-main-info small{color:var(--muted)}.file-ok{color:#28765a!important;font-weight:700}.file-missing{color:#98713a!important}.teacher-quick-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.small-btn{font-size:13px;padding:8px 10px}.teacher-card-tools{background:#f8fafc;border-top:1px solid var(--border);padding:12px 15px}.upload-row{display:grid;grid-template-columns:1fr 110px 130px;gap:9px;align-items:end}.file-control,.year-control{font-size:12px;color:var(--muted);font-weight:700}.file-control span{display:block;margin-bottom:5px}.file-control input{width:100%;height:40px;border:1px solid #cfdbe4;border-radius:9px;background:#fff;padding:6px}.year-control input{width:100%;height:40px;border:1px solid #cfdbe4;border-radius:9px;background:#fff;padding:0 9px;margin-top:5px}.edit-details{margin-top:10px}.edit-details summary{cursor:pointer;color:#607181;font-weight:700;font-size:13px}.edit-panel{display:flex;gap:10px;justify-content:space-between;align-items:center;margin-top:10px}.rename-row{display:flex;gap:8px;flex:1}.secondary-btn{background:#60768a}.danger-btn{background:#b94a4a}.login-card{max-width:440px;margin:50px auto;background:#fff;border:1px solid var(--border);border-radius:20px;padding:28px;box-shadow:var(--shadow);text-align:center}.login-icon{width:54px;height:54px;border-radius:15px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;display:grid;place-items:center;font-weight:900;margin:0 auto 14px}.login-card h1{margin:0}.login-card p{color:var(--muted);margin:7px 0 20px}.login-card label{display:block;text-align:left;color:var(--muted);font-size:13px;font-weight:700;margin:12px 0}.login-card input{width:100%;height:44px;border:1px solid #cfdbe4;border-radius:10px;margin-top:6px;padding:0 12px}.login-card button{width:100%;margin-top:7px}

@media(max-width:760px){
  .topbar-inner{height:64px;padding:0 14px}.brand-copy small{display:none}.topbar nav a:first-child{display:none}.topbar nav a{padding:8px 9px}.container{padding:22px 13px 55px}.home-hero{padding:26px 0 20px}.picker-panel{padding:14px}.schedule-title{padding-top:8px}.next-content{display:block}.next-meta{justify-content:flex-start;margin-top:12px}.schedule-controls{gap:7px}.datepick{width:100%;margin-left:0}.datepick input{width:100%}.weekday-tabs a{min-width:64px}.lesson{grid-template-columns:90px 1fr}.lesson-time{padding:12px 7px}.lesson-main{padding:13px}.admin-head{align-items:center}.admin-head h1{font-size:30px}.admin-add-card{grid-template-columns:1fr}.add-teacher-form{flex-direction:column}.admin-list-top{display:block}.admin-search{width:100%;margin-top:13px}.teacher-card-main{display:block}.teacher-quick-actions{justify-content:flex-start;margin-top:12px}.upload-row{grid-template-columns:1fr}.edit-panel{display:block}.rename-row{display:grid;grid-template-columns:1fr;margin-bottom:9px}.danger-btn{width:100%}.today-date{font-size:14px}.day-title{align-items:flex-start;gap:10px}.day-title b{font-size:14px}.schedule-picker{border-radius:16px}
}

.admin-update-card{max-width:1000px;margin:0 auto 18px;background:linear-gradient(135deg,#173f67,#236f9d);color:#fff;border-radius:18px;padding:22px;box-shadow:0 14px 34px rgba(24,65,99,.16);display:flex;align-items:center;justify-content:space-between;gap:22px}
.admin-update-card h2{margin:2px 0 5px}.admin-update-card p{margin:0;opacity:.88}.admin-kicker{text-transform:uppercase;letter-spacing:.1em;font-size:11px;font-weight:900;opacity:.7!important}.update-version{margin-top:8px;font-size:12px;opacity:.72}.update-actions{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}.admin-update-card .outline-btn{border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff}.update-install-btn{border:0;border-radius:10px;background:#fff;color:#173f67;font-weight:900;padding:10px 14px}.admin-update-card button:disabled{opacity:.55;cursor:wait}
@media(max-width:760px){.admin-update-card{display:block}.update-actions{justify-content:flex-start;margin-top:15px}.update-actions button{width:100%}}

/* Compact schedule layout */
.lesson{grid-template-columns:175px 1fr;min-height:82px}
.lesson-time{padding:12px 16px;align-items:flex-start;text-align:left}
.time-range{font-size:18px;font-weight:900;white-space:nowrap;color:#132f49;letter-spacing:-.02em}
.lesson-time small{margin-top:4px;font-size:12px}
.lesson-main{padding:13px 18px;display:flex;flex-direction:column;justify-content:center}
.lesson-title-row{display:flex;align-items:center;justify-content:space-between;gap:18px;min-width:0}
.lesson-title-row h3{margin:0;font-size:19px;line-height:1.25;min-width:0}
.compact-links{justify-content:flex-end;flex-shrink:0}
.compact-links a{background:#f1f6fa;border:1px solid #dce8f0;border-radius:8px;padding:5px 9px;font-size:13px;white-space:nowrap}
.lesson-meta-row{display:flex;gap:7px;align-items:center;margin-top:8px;flex-wrap:wrap}
.next-line{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:6px;font-size:14px;opacity:.9}
.next-line strong{font-size:16px}
.next-line span+span:before{content:"·";margin-right:10px;opacity:.7}
.admin-head form{margin:0}
.admin-head .outline-btn{cursor:pointer}
@media(max-width:760px){
  .lesson{grid-template-columns:1fr}
  .lesson-time{border-right:0;border-bottom:1px solid var(--border);display:flex;flex-direction:row;align-items:center;gap:10px;padding:9px 13px}
  .lesson-time small{margin:0 0 0 auto}
  .time-range{font-size:16px}
  .lesson-title-row{align-items:flex-start;gap:8px}
  .lesson-title-row h3{font-size:17px}
  .compact-links{justify-content:flex-start}
  .compact-links a{font-size:12px}
  .lesson-meta-row{margin-top:7px}
}

.current-pair-status{max-width:980px;margin:0 auto 14px;background:#fff;border:1px solid var(--border);border-radius:13px;padding:11px 15px;display:flex;align-items:center;gap:11px;box-shadow:0 5px 16px rgba(33,62,88,.035)}
.current-dot{width:10px;height:10px;border-radius:50%;background:#8a9aa8;box-shadow:0 0 0 5px rgba(138,154,168,.12);flex:0 0 auto}
.current-pair-copy{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.current-pair-copy b{font-size:15px}.current-pair-copy span{font-size:13px;color:var(--muted);font-weight:700}
.current-pair-status.state-pair{border-color:#b7d9c9;background:#f5fbf8}.current-pair-status.state-pair .current-dot{background:#2d8f68;box-shadow:0 0 0 5px rgba(45,143,104,.13)}
.current-pair-status.state-break{background:#fffaf0;border-color:#ead8b5}.current-pair-status.state-break .current-dot{background:#cc861b;box-shadow:0 0 0 5px rgba(204,134,27,.12)}
.current-lesson{border-color:#8bc9ad!important;box-shadow:0 0 0 2px rgba(45,143,104,.11),0 8px 20px rgba(33,62,88,.06)!important;background:#fbfffd}
.current-lesson .lesson-time{background:#eef9f3}
.current-lesson .time-range{color:#226d51}
@media(max-width:760px){.current-pair-copy{display:block}.current-pair-copy span{display:block;margin-top:2px}}

.permalink-btn{margin-top:13px;border:1px solid var(--border);background:#fff;color:#36566f;border-radius:10px;padding:8px 12px;font-weight:800;box-shadow:0 4px 12px rgba(31,67,98,.04)}
.permalink-btn:hover{background:#f7fbfe;border-color:#c7d9e5}
.permalink-note{min-height:18px;margin-top:6px;color:var(--muted);font-size:12px;font-weight:700}

/* Cleaner entity lists without decorative avatars */
.entity-row{grid-template-columns:1fr 24px;padding:14px 16px}
.entity-row b{font-size:16px}
.entity-row small{margin-top:3px}
.entity-avatar{display:none!important}

/* Monthly schedule */
.month-section{max-width:1120px;margin:0 auto}
.month-heading{display:flex;justify-content:space-between;align-items:end;gap:16px;margin:0 0 12px}
.month-heading h2{margin:0;font-size:25px}.month-heading span{color:var(--muted);font-size:13px;font-weight:700}
.month-scroll{overflow-x:auto;padding-bottom:4px}
.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(135px,1fr));gap:7px;min-width:980px}
.month-weekday{text-align:center;color:#6a7a89;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;padding:7px 0}
.month-day{min-height:150px;background:#fff;border:1px solid var(--border);border-radius:13px;padding:10px;display:block;transition:.15s;overflow:hidden}
.month-day:hover{border-color:#a9c9dd;box-shadow:0 7px 20px rgba(32,65,91,.07);transform:translateY(-1px)}
.month-day.outside{background:#eef2f5;border-color:#e6ebef;box-shadow:none}
.month-day.today{border-color:#6aa9cf;box-shadow:0 0 0 2px rgba(47,139,195,.11)}
.month-day-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.month-day-top b{font-size:17px;color:#20384d}.month-day-top span{min-width:24px;height:24px;border-radius:999px;background:var(--blue-soft);color:var(--blue);display:grid;place-items:center;font-size:11px;font-weight:900;padding:0 6px}
.month-events{display:grid;gap:6px}
.month-event{padding:6px 7px;border-radius:8px;background:#f8fafc;border:1px solid #edf1f4;overflow:hidden}
.month-event strong{font-size:11px;color:#315a78;margin-right:5px}.month-event span{font-size:12px;font-weight:800;color:#21374a}.month-event small{display:block;margin-top:2px;color:#708090;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.month-more{font-size:11px;color:var(--blue);font-weight:800;padding:2px 3px}
@media(max-width:760px){
  .mode-tabs{width:100%;margin-left:0}.mode-tabs a{flex:1;text-align:center}
  .month-heading{display:block}.month-heading span{display:block;margin-top:4px}
  .month-calendar{grid-template-columns:repeat(7,120px);min-width:882px}
  .month-day{min-height:130px;padding:8px}
}

/* Admin teacher/group tabs */
.admin-tabs{max-width:1000px;margin:0 auto 18px;display:flex;gap:8px;background:#fff;border:1px solid var(--border);border-radius:14px;padding:6px;box-shadow:0 6px 20px rgba(31,67,98,.04)}
.admin-tab{flex:1;border:0;background:transparent;color:#607181;border-radius:10px;padding:11px 14px;font-weight:900}
.admin-tab.active{background:var(--navy);color:#fff}
.admin-panel{display:none}
.admin-panel.active{display:block}
.group-upload-row{grid-template-columns:1fr 150px}
@media(max-width:760px){
  .group-upload-row{grid-template-columns:1fr}
}
