:root{--bg:#f4f6f9;--panel:#fff;--text:#111827;--muted:#667085;--line:#e4e7ec;--accent:#111827;--accent2:#2563eb;--success:#067647;--danger:#b42318;--warn:#b54708;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.center-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card,.student-card{background:#fff;border:1px solid var(--line);border-radius:28px;padding:34px;box-shadow:0 22px 70px rgba(16,24,40,.10)}.login-card{width:min(440px,100%);display:grid;gap:22px}.student-bg{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top,#eaf0ff,#f7f8fb 48%)}.student-card{width:min(500px,100%)}.brand-mark{width:58px;height:58px;border-radius:18px;background:#111827;color:#fff;display:grid;place-items:center;font-weight:800;font-size:26px}.brand-mark.small{width:40px;height:40px;border-radius:12px;font-size:18px}.eyebrow{text-transform:uppercase;letter-spacing:.11em;font-size:11px;font-weight:800;color:#667085}.muted{color:var(--muted);line-height:1.55}.hint{color:#667085;font-size:13px;margin:-4px 0 4px}.privacy-note{font-size:12px;color:#98a2b3;margin-top:24px}h1,h2,h3,p{margin-top:0}h1{font-size:31px;letter-spacing:-.03em}h2{font-size:28px;letter-spacing:-.03em;margin-bottom:4px}h3{font-size:20px;letter-spacing:-.02em;margin-bottom:5px}label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#344054}input,select,textarea{width:100%;border:1px solid #d0d5dd;border-radius:12px;padding:11px 12px;background:#fff;color:#101828;outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:#84adff;box-shadow:0 0 0 4px #eff4ff}.code-input{text-transform:uppercase;letter-spacing:.12em;font-size:22px;text-align:center;font-weight:800}.primary,.ghost,.danger{border:0;border-radius:12px;padding:11px 15px;font-weight:750;transition:.15s}.primary{background:#111827;color:#fff}.primary:hover{background:#1f2937}.ghost{background:#fff;color:#344054;border:1px solid #d0d5dd}.ghost:hover{background:#f9fafb}.danger{background:#fee4e2;color:#b42318}.danger:hover{background:#fecdca}.button-link{text-decoration:none;display:inline-flex;align-items:center}.text-link{color:#667085;text-decoration:none;font-size:13px}.error{color:#b42318;font-size:13px;min-height:18px}.stack{display:grid;gap:16px}.stack.compact{gap:12px}.shell{min-height:100vh;display:grid;grid-template-columns:250px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:#101828;color:white;padding:22px 16px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 6px 26px}.brand strong{display:block;font-size:14px}.brand span{display:block;color:#98a2b3;font-size:11px;margin-top:2px}nav{display:grid;gap:5px}.nav-btn{width:100%;text-align:left;border:0;background:transparent;color:#d0d5dd;border-radius:10px;padding:10px 12px;font-weight:650;font-size:14px}.nav-btn:hover,.nav-btn.active{background:#1d2939;color:#fff}.nav-btn span{float:right;color:#667085;font-size:10px;text-transform:uppercase}.nav-btn.disabled{opacity:.55;cursor:default}.sidebar-foot{margin-top:auto;border-top:1px solid #344054;padding:17px 8px 0;display:flex;justify-content:space-between;gap:12px;align-items:center}.owner-name{font-size:12px;color:#d0d5dd;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main{min-width:0;padding:32px 36px 60px}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:26px}.tab{display:none}.tab.active{display:block}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stat{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px}.stat span{display:block;color:#667085;font-size:12px;font-weight:700}.stat strong{display:block;font-size:30px;margin-top:7px}.panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:22px;margin-bottom:18px;box-shadow:0 1px 2px rgba(16,24,40,.02)}.hero-panel{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:28px}.hero-panel p{max-width:720px;margin-bottom:0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.panel-head p{margin-bottom:0;font-size:13px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.list{display:grid;gap:9px;margin-top:16px}.list-item{border:1px solid var(--line);border-radius:13px;padding:12px 14px;display:flex;justify-content:space-between;align-items:center;gap:12px}.list-item strong{font-size:14px}.list-item span{font-size:12px;color:#667085}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;color:#667085;font-weight:750;padding:10px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:11px 10px;border-bottom:1px solid #f0f2f5;vertical-align:middle}tr:last-child td{border-bottom:0}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:11px;font-weight:750;background:#f2f4f7;color:#475467}.badge.green{background:#ecfdf3;color:#067647}.badge.orange{background:#fffaeb;color:#b54708}.badge.red{background:#fef3f2;color:#b42318}.badge.blue{background:#eff8ff;color:#175cd3}.small-select{width:auto;min-width:190px}.row-wrap{flex-wrap:wrap}.activation-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.activation-card{border:1px solid var(--line);border-radius:14px;padding:13px}.activation-card strong{display:block;font-size:13px}.activation-card code{display:block;margin-top:7px;font-size:17px;font-weight:850;letter-spacing:.08em}.session-form{display:grid;grid-template-columns:2fr 1.4fr 1.2fr .8fr;gap:14px;align-items:end}.session-form fieldset{grid-column:1/-1;border:1px solid var(--line);border-radius:14px;padding:14px}.session-form legend{font-size:12px;font-weight:800;color:#475467;padding:0 6px}.checks{display:flex;gap:10px;flex-wrap:wrap}.check{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:10px;padding:8px 10px}.check input{width:auto}.session-form>button{justify-self:start}.toast{position:fixed;right:28px;top:24px;z-index:1000;background:#101828;color:white;padding:12px 16px;border-radius:12px;box-shadow:0 8px 30px rgba(16,24,40,.2);font-size:13px}.live-overlay{position:fixed;inset:0;background:#f4f6f9;z-index:100;overflow:auto}.live-shell{padding:24px 30px 50px}.live-top{display:grid;grid-template-columns:auto 1fr auto;gap:20px;align-items:center;margin-bottom:22px}.live-title{text-align:center}.live-title h2{margin-bottom:2px}.live-title p{margin-bottom:0}.live-actions{display:flex;gap:8px}.live-grid{display:grid;grid-template-columns:minmax(320px,42%) 1fr;gap:18px}.qr-panel,.attendance-panel{background:#fff;border:1px solid var(--line);border-radius:22px;padding:24px;min-height:650px}.qr-panel{display:flex;flex-direction:column;align-items:center;justify-content:center}.qr-box{width:360px;height:360px;max-width:90%;display:grid;place-items:center}.qr-box img,.qr-box canvas{max-width:100%;height:auto!important}.countdown{font-weight:800;margin-top:22px}.center{text-align:center}.attendance-summary{display:flex;align-items:baseline;gap:10px;padding-bottom:16px;border-bottom:1px solid var(--line)}.attendance-summary strong{font-size:30px}.attendance-summary span{color:#667085}.attendance-list{margin-top:8px}.att-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 4px;border-bottom:1px solid #f2f4f7}.att-name strong{display:block;font-size:13px}.att-name span{font-size:11px;color:#98a2b3}.att-actions select{width:150px;padding:7px 9px;font-size:11px}.empty{padding:24px;text-align:center;color:#98a2b3;font-size:13px}@media(max-width:1000px){.shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto}.sidebar nav{grid-template-columns:repeat(4,1fr)}.sidebar-foot{display:none}.main{padding:24px}.stats-grid{grid-template-columns:repeat(2,1fr)}.two-col,.live-grid{grid-template-columns:1fr}.session-form{grid-template-columns:1fr 1fr}.activation-grid{grid-template-columns:1fr 1fr}.live-overlay{position:absolute}.live-top{grid-template-columns:1fr;text-align:center}.live-actions{justify-content:center}}@media(max-width:640px){.main{padding:18px 12px}.sidebar{padding:14px}.sidebar nav{grid-template-columns:1fr 1fr}.stats-grid,.two-col,.activation-grid,.session-form{grid-template-columns:1fr}.hero-panel{align-items:flex-start;flex-direction:column}.panel{padding:16px}.live-shell{padding:16px 10px 40px}.qr-panel,.attendance-panel{padding:16px;min-height:auto}.qr-box{width:280px;height:280px}.att-row{grid-template-columns:1fr}.att-actions select{width:100%}}
.docx-panel{border-color:#dbe4f0}.file-button{display:inline-flex;align-items:center;justify-content:center;min-width:150px;border-radius:12px;padding:11px 15px;background:#111827;color:#fff;cursor:pointer;font-weight:750}.file-button input{display:none}.docx-preview{margin-top:18px;border-top:1px solid var(--line);padding-top:18px}.docx-meta{display:grid;grid-template-columns:220px 220px 1fr;gap:14px;align-items:end}.docx-summary{min-height:44px;display:flex;flex-direction:column;justify-content:center;align-items:flex-end}.docx-summary strong{font-size:14px}.docx-summary span{font-size:12px;color:#98a2b3;margin-top:3px}.privacy-box{margin:16px 0 10px;border-radius:12px;background:#f8fafc;border:1px solid #e4e7ec;padding:11px 13px;color:#475467;font-size:12px}.docx-table{max-height:430px;border:1px solid var(--line);border-radius:14px}.docx-table thead{position:sticky;top:0;background:#fff;z-index:1}.docx-actions{display:flex;gap:9px;margin-top:14px}@media(max-width:760px){.docx-meta{grid-template-columns:1fr}.docx-summary{align-items:flex-start}.file-button{width:100%}}
.student-tools{align-items:flex-end}.student-filters{display:flex;gap:10px;align-items:center}.search-box{position:relative;display:block;min-width:300px}.search-box span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#98a2b3;font-size:19px;pointer-events:none}.search-box input{padding-left:36px}.modal-overlay{position:fixed;inset:0;z-index:300;background:rgba(15,23,42,.48);display:grid;place-items:center;padding:24px;overflow:auto}.modal-card{width:min(920px,100%);max-height:calc(100vh - 48px);overflow:auto;background:#fff;border-radius:24px;border:1px solid var(--line);box-shadow:0 30px 100px rgba(15,23,42,.28);padding:24px}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:20px}.modal-head h3{margin-bottom:0}.icon-btn{width:42px;height:42px;padding:0;font-size:25px;line-height:1}.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}.modal-grid h4{font-size:14px;margin:0 0 12px;color:#344054}.current-group-box{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid var(--line);border-radius:13px;padding:13px 14px;margin-bottom:14px}.current-group-box strong{font-size:16px}.current-group-box span{font-size:12px;color:#667085}.transfer-form{border-top:1px solid #f1f3f5;padding-top:14px}.history-heading{margin-top:22px!important}.history-list{display:grid;gap:8px}.history-item{display:flex;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:11px;padding:10px 12px}.history-item strong{font-size:13px}.history-item span{font-size:12px;color:#667085}.device-panel{margin-top:24px;padding-top:18px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:16px}.device-panel>div{display:grid;gap:6px}.device-panel>div>span{font-size:12px;color:#667085}.error-box{border:1px solid #fecdca;background:#fef3f2;color:#b42318;border-radius:12px;padding:12px 14px;margin:14px 0;font-size:14px;line-height:1.45}.first-use-card{padding:30px}.first-use-eyebrow{margin-top:18px}.claim-students{display:grid;gap:8px;max-height:360px;overflow:auto;border:1px solid var(--line);border-radius:14px;padding:8px}.claim-person{width:100%;border:1px solid transparent;border-radius:11px;background:#fff;padding:11px 12px;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left}.claim-person:hover:not(:disabled),.claim-person.selected{background:#f8fafc;border-color:#cfd8e6}.claim-person span{display:grid;gap:2px}.claim-person strong{font-size:14px}.claim-person small{font-size:11px;color:#98a2b3}.claim-person em{font-size:11px;font-style:normal;color:#667085}.claim-person:disabled{opacity:.52;cursor:not-allowed}.claim-selected{border-radius:12px;background:#eff8ff;color:#175cd3;padding:11px 13px;font-size:13px}.first-use-card .primary:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:760px){.student-tools{align-items:stretch;flex-direction:column}.student-filters{width:100%;flex-direction:column;align-items:stretch}.search-box{min-width:0}.modal-overlay{padding:10px}.modal-card{max-height:calc(100vh - 20px);border-radius:18px;padding:18px}.modal-grid{grid-template-columns:1fr}.device-panel{align-items:stretch;flex-direction:column}.device-panel button{width:100%}.first-use-card{padding:24px 20px}.claim-students{max-height:320px}}
/* v0.4 */
.badge.purple{background:#f4f3ff;color:#5925dc}.field-label{display:block;font-size:13px;font-weight:700;color:#344054;margin-bottom:7px}.module-box{margin-top:16px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#fafbfc}.module-box>strong{display:block;font-size:13px;margin-bottom:10px}.module-checks{gap:7px}.compact-checks .check{padding:6px 8px;font-size:11px}.v04-meta{grid-template-columns:180px 180px 190px 1fr}.tag-list{display:flex;flex-wrap:wrap;gap:5px}.tiny-tag{display:inline-flex;padding:3px 7px;border-radius:999px;background:#f2f4f7;color:#475467;font-size:10px;font-weight:700}.bulk-bar,.student-bulk{margin-top:14px;border-top:1px solid var(--line);padding-top:14px;display:flex;gap:9px;align-items:center;flex-wrap:wrap}.bulk-bar>div:first-child{display:grid;gap:2px;margin-right:auto}.bulk-bar>div:first-child strong{font-size:12px}.bulk-bar>div:first-child span,.student-bulk>span{font-size:11px;color:#667085}.inline-check{display:flex;grid-template-columns:auto 1fr;align-items:center;gap:7px;font-weight:600}.inline-check input{width:auto}.inline-field{display:flex;grid-template-columns:auto 145px;align-items:center;gap:8px;white-space:nowrap}.inline-field input{width:145px;padding:8px}.student-bulk{background:#f8fafc;border:1px solid var(--line);border-radius:13px;padding:10px 12px;margin:0 0 12px}.student-bulk>span{margin-right:auto}.archived-row{opacity:.68;background:#fafafa}.status-comment{margin-left:8px}.student-tabs{display:flex;gap:5px;overflow:auto;border-bottom:1px solid var(--line);margin:-4px 0 20px}.student-tab-btn{border:0;background:transparent;padding:10px 12px;font-size:12px;font-weight:750;color:#667085;border-bottom:2px solid transparent;white-space:nowrap}.student-tab-btn.active{color:#101828;border-color:#101828}.student-tab-panel{display:none}.student-tab-panel.active{display:block}.mini-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}.mini-stats>div{border:1px solid var(--line);border-radius:13px;padding:12px}.mini-stats span{display:block;font-size:10px;color:#667085}.mini-stats strong{display:block;font-size:22px;margin-top:4px}.current-group-box small{display:block;color:#98a2b3;font-size:10px;margin-bottom:3px}.row-actions{display:flex;gap:8px}.v04-session{grid-template-columns:2fr 1.2fr 1.2fr}.attendance-legend{display:flex;gap:7px;flex-wrap:wrap;padding:12px 0 4px}.v04-att-row{grid-template-columns:minmax(220px,1fr) auto minmax(280px,420px);align-items:start}.v04-att-row .att-actions{display:grid;gap:7px}.v04-att-row .att-actions>select{width:100%;font-size:12px}.att-detail{display:grid;grid-template-columns:150px 1fr;gap:6px}.att-detail select,.att-detail input{font-size:11px;padding:7px 8px}.badge.red{background:#fef3f2;color:#b42318}
@media(max-width:1100px){.bulk-bar{align-items:stretch}.bulk-bar .checks{width:100%}.v04-att-row{grid-template-columns:1fr auto}.v04-att-row .att-actions{grid-column:1/-1}.v04-meta{grid-template-columns:1fr 1fr}.docx-summary{align-items:flex-start}.mini-stats{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.v04-meta,.mini-stats{grid-template-columns:1fr}.bulk-bar,.student-bulk{flex-direction:column;align-items:stretch}.bulk-bar>div:first-child,.student-bulk>span{margin-right:0}.inline-field{grid-template-columns:1fr}.inline-field input{width:100%}.row-actions{width:100%;flex-direction:column}.v04-att-row{grid-template-columns:1fr}.att-detail{grid-template-columns:1fr}.v04-session{grid-template-columns:1fr}}
/* v0.5 */
.wrap{flex-wrap:wrap}.module-builder-grid{display:grid;grid-template-columns:minmax(280px,360px) 1fr;gap:24px}.module-catalog-list{display:grid;gap:8px;margin-top:8px}.module-catalog-item{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:12px;padding:11px 12px}.module-catalog-item>div{display:grid;gap:3px}.module-catalog-item strong{font-size:13px}.module-catalog-item span{font-size:11px;color:#667085}.module-catalog-item .system-label{font-size:10px;font-weight:750;color:#475467;background:#f2f4f7;border-radius:999px;padding:3px 7px}.sync-preview{margin:14px 0}.sync-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:10px}.sync-stat{border:1px solid var(--line);border-radius:11px;padding:10px 11px}.sync-stat span{display:block;color:#667085;font-size:10px}.sync-stat strong{display:block;font-size:19px;margin-top:3px}.sync-sections{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sync-box{border:1px solid var(--line);border-radius:12px;padding:11px}.sync-box h4{font-size:12px;margin:0 0 7px}.sync-box ul{margin:0;padding-left:18px;max-height:120px;overflow:auto;color:#475467;font-size:11px;line-height:1.55}.sync-box.warn{border-color:#fedf89;background:#fffcf5}.sync-box.good{border-color:#abefc6;background:#f6fef9}.sync-box.bad{border-color:#fecdca;background:#fffbfa}.planned-group{font-size:10px;color:#175cd3;margin-left:5px}.subtle-danger{color:#b54708}.select-indeterminate{accent-color:#2563eb}.pilot-note{font-size:12px;color:#667085}.dynamic-module-panel .empty strong{display:block;color:#344054;margin-bottom:5px}
@media(max-width:800px){.module-builder-grid,.sync-sections,.sync-stats{grid-template-columns:1fr}}

/* v0.6 — дисциплины и расписание */
.form-two{display:grid;grid-template-columns:1fr 1fr;gap:14px}.course-groups{max-height:220px;overflow:auto}.course-item{align-items:flex-start}.course-groups-line{display:block;margin-top:5px;color:#64748b}.calendar-panel{border-color:#d7dfec}.calendar-sync-grid{display:grid;grid-template-columns:minmax(320px,520px) 1fr;gap:18px;align-items:end}.calendar-preview{margin-top:18px}.calendar-counts{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.calendar-counts span{background:#f3f6fa;border:1px solid #e1e7ef;border-radius:999px;padding:7px 11px;font-size:13px}.v06-session{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.v06-session fieldset,.v06-session .primary{grid-column:1/-1}.v06-session fieldset{margin:0}.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px}.compact-row{margin-bottom:10px}.link-btn{border:0;background:none;color:#1e3a5f;font-weight:700;cursor:pointer;padding:4px}.field-help{color:#728096;font-size:13px;line-height:1.4}.badge.orange{background:#fff4e5;color:#a55200}.calendar-preview table td{vertical-align:top}
@media(max-width:850px){.form-two,.calendar-sync-grid,.v06-session{grid-template-columns:1fr}.v06-session fieldset,.v06-session .primary{grid-column:auto}}

/* v0.7 — карточка и жизненный цикл дисциплины */
.course-item{width:100%;border:1px solid var(--line);background:#fff;border-radius:14px;padding:14px 16px;text-align:left;display:flex;justify-content:space-between;gap:14px;cursor:pointer;color:inherit}
.course-item:hover{border-color:#b8c5d6;background:#fbfcfe}
.course-card-main{display:grid;gap:5px;min-width:0}.course-title-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.course-title-line strong{font-size:14px}.course-meta-line{font-size:12px;color:#475467}.course-arrow{font-size:25px;color:#98a2b3;align-self:center}.course-modal-card{width:min(1040px,100%)}.course-modal-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:28px}.course-modal-grid h4{font-size:14px;margin:0 0 12px;color:#344054}.course-stats{grid-template-columns:repeat(3,1fr)}.course-safety-note{border:1px solid #fedf89;background:#fffcf5;color:#7a2e0e;border-radius:13px;padding:12px 14px;font-size:12px;line-height:1.5}.course-danger-panel{align-items:flex-end}.course-danger-panel>div:first-child{max-width:560px}.course-danger-panel .row-actions{flex-wrap:wrap;justify-content:flex-end}
@media(max-width:850px){.course-modal-grid{grid-template-columns:1fr}.course-stats{grid-template-columns:1fr}.course-danger-panel{align-items:stretch}.course-danger-panel .row-actions{width:100%;flex-direction:column}.course-danger-panel button{width:100%}}
.calendar-select-line{display:flex;align-items:center;gap:14px;justify-content:space-between;margin:8px 0 12px;padding:10px 12px;background:#f8fafc;border:1px solid var(--line);border-radius:12px}.calendar-row-check{width:16px;height:16px}.calendar-preview th:first-child,.calendar-preview td:first-child{width:34px;text-align:center}
@media(max-width:700px){.calendar-select-line{align-items:flex-start;flex-direction:column}}


.session-list-head{align-items:flex-end;gap:18px}.session-date-tools{display:flex;align-items:flex-end;gap:8px;flex-wrap:wrap}.session-work-date{min-width:160px}.session-work-date input{padding:8px 10px}.compact-btn{padding:9px 12px;min-height:38px}.session-date-hint{min-height:38px;margin:-6px 0 12px;padding:9px 12px;border:1px solid var(--line);border-radius:12px;background:#f8fafc;color:#667085;font-size:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}.qr-panel .empty{line-height:1.55}
@media(max-width:900px){.session-list-head{align-items:stretch;flex-direction:column}.session-date-tools{width:100%}.session-work-date{flex:1;min-width:180px}}
@media(max-width:640px){.session-date-tools{display:grid;grid-template-columns:auto 1fr auto}.session-date-tools #sessionTodayBtn,.session-date-tools #sessionAllDatesBtn{grid-column:1/-1}.session-date-hint{align-items:flex-start;flex-direction:column}}

/* v0.9 — группа, полноэкранный QR и рабочая статистика */
.group-link{border:0;background:none;padding:0;color:#101828;font-weight:800;cursor:pointer;text-align:left}.group-link:hover{text-decoration:underline}.group-modal-card{width:min(1080px,100%)}.group-summary-toolbar{margin:0 0 12px}.group-summary-name{border:0;background:none;padding:0;color:#101828;font-weight:750;cursor:pointer;text-align:left}.group-summary-name:hover{text-decoration:underline}.group-rate{font-weight:800}.group-rate.good{color:#067647}.group-rate.mid{color:#b54708}.group-rate.low{color:#b42318}
.qr-fullscreen{position:fixed;inset:0;z-index:5000;background:#fff;display:grid;place-items:center;padding:2.5vh 3vw;color:#101828}.qr-fullscreen-content{width:min(1200px,100%);height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.qr-fullscreen-head h1{font-size:clamp(28px,3.2vw,54px);margin:4px 0 6px}.qr-fullscreen-head p{font-size:clamp(17px,1.6vw,26px);color:#475467;margin:0 0 2vh}.qr-fullscreen-box{width:min(70vmin,760px);height:min(70vmin,760px);display:grid;place-items:center;background:#fff}.qr-fullscreen-box img,.qr-fullscreen-box canvas{width:100%!important;height:100%!important;image-rendering:pixelated}.qr-fullscreen-meta{display:flex;gap:28px;align-items:center;justify-content:center;font-size:clamp(16px,1.5vw,24px);margin-top:1.5vh}.qr-fullscreen-meta strong{font-weight:850}.qr-fullscreen-hint{font-size:clamp(14px,1.2vw,20px);color:#667085;margin:1vh 0 0}.qr-fullscreen-close{position:fixed;right:24px;top:20px;width:52px;height:52px;border:1px solid #d0d5dd;border-radius:16px;background:#fff;color:#101828;font-size:30px;line-height:1;z-index:5001}.qr-fullscreen-close:hover{background:#f2f4f7}.qr-fullscreen .eyebrow{font-size:clamp(11px,1vw,15px)}
@media(max-width:700px){.group-modal-card{padding:16px}.group-summary-toolbar{align-items:flex-start;flex-direction:column}.qr-fullscreen{padding:60px 12px 18px}.qr-fullscreen-box{width:min(84vw,70vh);height:min(84vw,70vh)}.qr-fullscreen-meta{flex-direction:column;gap:4px}.qr-fullscreen-close{right:12px;top:10px}}

/* v1.0 — analytics, engagement and stronger projector QR */
.analytics-hero{background:linear-gradient(135deg,#fff,#f8fafc)}
.analytics-two-col{align-items:start}.campaign-item{align-items:center}.campaign-item>div:first-child{display:grid;gap:4px}.campaign-item span{font-size:12px;color:#667085}.feedback-sticker{font-size:20px;vertical-align:middle;margin-right:5px}.reward-status{min-width:165px;padding:8px 10px}.analytics-student{font-weight:800}
.qr-fullscreen{padding:1.5vh 2vw}.qr-fullscreen-content{width:min(1500px,100%)}.qr-fullscreen-box{width:min(82vmin,920px);height:min(82vmin,920px)}.qr-fullscreen-head h1{font-size:clamp(24px,2.4vw,44px);margin:0 0 3px}.qr-fullscreen-head p{margin:0 0 .7vh}.qr-fullscreen-meta{margin-top:.7vh}.qr-fullscreen-hint{margin:.4vh 0 0}
@media(max-width:900px){.analytics-two-col{grid-template-columns:1fr}.qr-fullscreen-box{width:min(88vw,76vh);height:min(88vw,76vh)}}

/* v1.1 — persistent projector QR + filtered/paged analytics */
.feedback-filters{display:grid;grid-template-columns:1.4fr 1fr 1.2fr .9fr .9fr 1fr .75fr;gap:10px;align-items:end;margin:-2px 0 14px;padding:12px;border:1px solid var(--line);border-radius:14px;background:#f8fafc}.feedback-filters label{font-size:11px}.feedback-filters input,.feedback-filters select{padding:9px 10px;font-size:12px}.feedback-filter-actions{display:flex;gap:8px;align-items:end}.feedback-filter-actions button{padding:9px 12px}.feedback-pager{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:#667085}.feedback-pager .pager-actions{display:flex;gap:8px;align-items:center}.feedback-pager button{padding:8px 11px}.feedback-panel{min-width:0}
.qr-fullscreen-native{position:fixed;left:24px;top:20px;z-index:5001;border:1px solid #d0d5dd;border-radius:14px;background:#fff;color:#101828;padding:12px 16px;font-weight:800;box-shadow:0 4px 18px rgba(16,24,40,.08)}.qr-fullscreen-native:hover{background:#f9fafb}.qr-fullscreen.qr-visible{display:grid!important}.qr-fullscreen .empty{font-size:18px;color:#667085;line-height:1.5}
@media(max-width:1200px){.feedback-filters{grid-template-columns:repeat(4,1fr)}.feedback-filter-actions{grid-column:span 2}}
@media(max-width:760px){.feedback-filters{grid-template-columns:1fr 1fr}.feedback-filter-actions{grid-column:1/-1}.qr-fullscreen-native{left:12px;top:10px;padding:10px 12px;font-size:12px}.feedback-pager{align-items:flex-start;flex-direction:column}}
.analytics-stack{display:grid;grid-template-columns:1fr;gap:0}.analytics-stack>.panel{width:100%}

/* v1.2 — редактирование кампаний и дата на проекторном QR */
.qr-fullscreen-date{margin-top:8px;font-size:20px;font-weight:800;color:#475467;letter-spacing:.02em}.campaign-section-title{margin:14px 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:#667085}.campaign-item .campaign-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.campaign-item.archived{opacity:.78;background:#fafafa}.campaign-editing-note{border:1px solid #bfd7ff;background:#eff6ff;color:#1849a9;border-radius:12px;padding:10px 12px;font-size:13px}.campaign-item button{white-space:nowrap}

/* v1.3 */
.live-duration{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:750;color:#64748b}.live-duration select{width:auto;min-width:105px;padding:10px 12px;border:1px solid #d7deea;border-radius:12px;background:#fff}.session-countdown{margin-top:14px;font-size:22px;font-weight:850;color:#0f172a;text-align:center}.qr-extra-actions{display:flex;justify-content:center;margin-top:8px}.qr-fullscreen-meta>div{display:flex;flex-direction:column;gap:5px}.qr-fullscreen-meta #qrFullscreenSessionCountdown{font-size:26px}.qr-fullscreen-meta #qrFullscreenCountdown{font-size:15px;color:#64748b}.qr-fullscreen-meta button{white-space:nowrap}@media(max-width:900px){.live-duration{display:none}.qr-fullscreen-meta{gap:10px}.qr-fullscreen-meta #qrFullscreenSessionCountdown{font-size:20px}}

/* v1.4 — server-synced timers, editable absence, safe campaign deletion, subtle project branding */
.qr-brand{margin-top:.7vh;font-size:clamp(11px,.9vw,15px);color:#98a2b3;letter-spacing:.02em}.danger-text{color:#b42318!important;border-color:#fecdca!important}.danger-text:hover{background:#fef3f2!important}

/* v1.5 — LINEA, счётчики кампаний и безопасность */
.campaign-main{min-width:0;flex:1}.campaign-metrics{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0 7px}.campaign-metrics span{display:inline-flex;align-items:baseline;gap:4px;padding:6px 9px;border:1px solid var(--line,#e2e8f0);border-radius:10px;background:#f8fafc;font-size:12px;color:#475569}.campaign-metrics b{font-size:16px;color:#0f172a}.campaign-progress{height:7px;border-radius:999px;background:#edf2f7;overflow:hidden;max-width:520px;margin:0 0 8px}.campaign-progress i{display:block;height:100%;background:#0f172a;border-radius:999px;transition:width .25s ease}.security-grid{align-items:start}.security-grid .panel{min-width:0}#securitySessions table,#securityEvents table,#securityAudit table{min-width:680px}.brand-mark{font-family:Inter,system-ui,sans-serif;font-weight:900;letter-spacing:-.06em}.qr-brand strong{letter-spacing:.08em}

/* LINEA v1.6 — роли, лабораторный журнал и личный кабинет */
.works-toolbar{display:grid;grid-template-columns:2fr 1fr 1.3fr auto;gap:14px;align-items:end}.works-toolbar label{min-width:0}.permission-box{display:grid;gap:8px;padding:14px;border:1px solid var(--line,#dbe2ea);border-radius:14px;background:#f8fafc}.compact-list{margin-top:14px}.compact-input{min-width:120px;padding:8px 10px!important}.wide-table{min-width:1050px}.wide-table th{white-space:nowrap}.wide-table select{min-width:125px}.tiny-date{font-size:11px;color:#64748b;margin-top:5px;white-space:nowrap}.student-portal-body{background:#f3f6fa;color:#111827}.student-portal-shell{width:min(1080px,calc(100% - 28px));margin:0 auto;padding:28px 0 50px}.student-portal-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start;margin-bottom:22px}.student-portal-head h1{margin:.15rem 0 .25rem;font-size:clamp(32px,5vw,52px)}.student-course-grid{display:grid;gap:20px}.student-course-card{background:#fff;border:1px solid #dfe5ec;border-radius:24px;padding:24px;box-shadow:0 10px 32px rgba(15,23,42,.05)}.student-course-title{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid #e5e7eb}.student-course-title h2{font-size:24px;margin:4px 0 0}.student-course-title>span{font-size:13px;color:#64748b}.portal-section{padding-top:20px}.portal-section h3{margin:0 0 12px;font-size:17px}.portal-data-row{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #eef2f6}.portal-data-row span{color:#64748b}.portal-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.portal-stat{border:1px solid #e5e7eb;border-radius:16px;padding:14px}.portal-stat span,.portal-stat small{display:block;color:#64748b}.portal-stat strong{display:block;font-size:25px;margin:4px 0}.portal-work{display:flex;justify-content:space-between;gap:16px;padding:12px 14px;border:1px solid #e5e7eb;border-radius:14px;margin-bottom:8px}.portal-work>div:first-child span,.portal-work>div:last-child small{display:block;color:#64748b;font-size:12px;margin-top:3px}.portal-work.done{background:#f0fdf4;border-color:#bbf7d0}.portal-reward{padding:14px 16px;border:1px solid #fed7aa;background:#fff7ed;border-radius:16px;margin-bottom:8px}.portal-reward strong,.portal-reward span{display:block}.portal-reward span{color:#9a3412;font-size:13px;margin-top:3px}.portal-reward p{color:#7c2d12;font-size:13px;margin:8px 0 0}.portal-reward.lost{background:#fef2f2;border-color:#fecaca}.student-portal-foot{text-align:center;color:#94a3b8;font-size:12px;margin-top:28px}.portal-error{text-align:center}.small-empty{padding:12px!important}.hidden{display:none!important}
@media(max-width:850px){.works-toolbar{grid-template-columns:1fr}.student-portal-head,.student-course-title{flex-direction:column}.student-portal-shell{width:min(100% - 18px,1080px);padding-top:16px}.student-course-card{padding:18px;border-radius:20px}}

/* LINEA v1.8 — QR boundary grace + concurrency hardening; визуальная схема сохранена */

/* LINEA v1.9.2 */
.inline-field{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center}.inline-field .ghost{white-space:nowrap}.works-sheet-wrap{max-width:100%;border:1px solid var(--line);border-radius:14px}.works-sheet{min-width:max-content}.works-sheet th,.works-sheet td{background:#fff}.works-sheet .sticky-student{position:sticky;left:0;z-index:3;min-width:220px;max-width:280px;background:#fff;box-shadow:1px 0 0 var(--line)}.works-sheet thead .sticky-student{z-index:5;background:#f8fafc}.works-sheet thead th{position:sticky;top:0;z-index:2;background:#f8fafc}.works-sheet select{min-width:112px;padding:7px 8px}.works-sheet .lab-col select{min-width:116px}.works-sheet .work-col select{min-width:94px}.works-sheet .current-control{min-width:84px;max-width:110px;padding:8px}.headman-toggle{border:0;background:transparent;padding:2px 5px;font-size:16px;vertical-align:middle}.headman-toggle:hover{transform:scale(1.12)}.works-lab-head{display:grid;gap:2px}.works-lab-head small{font-weight:500;color:#98a2b3}.archived-work{opacity:.72}.field-help{font-size:12px;color:#667085;margin:10px 0 0}@media(max-width:700px){.inline-field{grid-template-columns:1fr}.works-sheet .sticky-student{min-width:180px}}

/* LINEA v1.10 — модульный журнал дисциплины */
.course-group-config-panel{margin-top:18px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fbfcfe}.course-config-grid{display:grid;grid-template-columns:220px 1fr 1fr;gap:16px;align-items:start}.course-config-grid fieldset{border:1px solid var(--line);border-radius:14px;padding:13px}.course-config-grid legend{font-size:12px;font-weight:800;color:#475467;padding:0 6px}.config-checks{display:grid;gap:8px}.edit-banner{display:grid;gap:3px;margin:0 0 14px;padding:12px 14px;border:1px solid #bfd7ff;background:#eff6ff;border-radius:12px;color:#1849a9}.edit-banner strong{font-size:14px}.edit-banner span{font-size:12px}.pin-field{grid-template-columns:minmax(130px,1fr) auto auto auto}.work-copy-box{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end;margin:12px 0;padding:12px;border:1px dashed #d0d5dd;border-radius:12px;background:#f8fafc}.works-sheet-wrap{max-height:68vh;overflow:auto;position:relative}.works-sheet thead th{position:sticky;background:#f8fafc;z-index:4}.works-sheet .works-section-row th{top:0;height:38px;text-align:center;text-transform:uppercase;letter-spacing:.06em;font-size:10px;color:#667085;background:#eef2f6}.works-sheet thead tr:nth-child(2) th{top:38px;z-index:4}.works-sheet .sticky-student{position:sticky;left:0;z-index:5;min-width:245px;max-width:300px;background:#fff;box-shadow:1px 0 0 var(--line)}.works-sheet thead .sticky-student{z-index:8;background:#f8fafc}.works-sheet .works-section-row .sticky-student{background:#eef2f6}.works-sheet .session-col select{min-width:116px}.works-sheet .work-col small{display:block;color:#98a2b3;font-weight:500;margin-top:2px}.work-student-row:hover td{background:#f8fbff}.work-student-row:hover .sticky-student{background:#f8fbff}.selected-work-row td{background:#eef6ff!important}.selected-work-row .sticky-student{background:#e8f2ff!important}.student-cell{display:flex;align-items:center;gap:6px}.journal-student-link{border:0;background:transparent;padding:0;color:#111827;font-weight:800;text-align:left}.journal-student-link:hover{text-decoration:underline;color:#175cd3}.drawer-overlay{position:fixed;inset:0;z-index:1200;background:rgba(15,23,42,.28);display:flex;justify-content:flex-end}.student-drawer{width:min(560px,94vw);height:100%;overflow:auto;background:#fff;padding:22px;box-shadow:-18px 0 55px rgba(15,23,42,.16)}.drawer-section{padding:16px 0;border-top:1px solid var(--line)}.drawer-section:first-child{border-top:0}.drawer-section h4{margin:0 0 10px}.drawer-list{display:grid;gap:7px}.drawer-list>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 10px;border:1px solid #eef2f6;border-radius:11px}.drawer-list span{color:#475467}.drawer-list strong{font-size:12px}.source-fields-owner-panel{}.works-sheet .tiny-date{font-size:10px}.staff-list-actions{display:flex;gap:8px}.course-manage-control.hidden{display:none!important}
@media(max-width:1100px){.course-config-grid{grid-template-columns:1fr}.pin-field{grid-template-columns:1fr 1fr}.work-copy-box{grid-template-columns:1fr}.works-sheet .sticky-student{min-width:210px}.student-drawer{width:min(520px,100vw)}}

/* LINEA 2.0 transition: technical custom-module builder is hidden from ordinary UI. */
.advanced-only{display:none!important}

/* LINEA 2.0 beta.1: academic calendar + readable journal filters */
.advanced-summary{cursor:pointer;font-weight:800;font-size:14px;list-style:none;display:flex;align-items:center;gap:8px}.advanced-summary::-webkit-details-marker{display:none}.advanced-summary::before{content:'›';font-size:20px;transition:transform .15s}.module-builder-panel[open] .advanced-summary::before{transform:rotate(90deg)}.advanced-body{margin-top:18px}.academic-term-grid{display:grid;grid-template-columns:repeat(6,minmax(120px,1fr));gap:12px;align-items:end}.academic-term-grid>button{min-height:44px}.academic-exception-grid{display:grid;grid-template-columns:minmax(300px,.9fr) 1.1fr;gap:18px;margin-top:20px;padding-top:20px;border-top:1px solid var(--line)}.compact-stats{margin-bottom:16px}.compact-stats .stat{padding:14px}.compact-stats .stat strong{font-size:24px}.journal-filter-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}.journal-filter-row .field-label{margin:0}.segmented{display:flex;gap:6px;flex-wrap:wrap}.segment-btn{border:1px solid #d0d5dd;background:#fff;color:#475467;border-radius:10px;padding:8px 11px;font-weight:700;font-size:12px}.segment-btn.active{background:#101828;color:#fff;border-color:#101828}.academic-calendar-panel .module-catalog-item span{display:block;color:#667085;font-size:12px;margin-top:3px}
@media(max-width:1100px){.academic-term-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.academic-term-grid,.academic-exception-grid{grid-template-columns:1fr}.journal-filter-row{align-items:stretch}.journal-filter-row>button{width:100%}.segmented{width:100%}.segment-btn{flex:1 1 auto;min-height:44px}}

/* beta.1 r2: роли группы и более заметный староста */
.group-role-controls{display:inline-flex;align-items:center;gap:1px;flex:0 0 auto}.group-role-toggle{border:0;background:transparent;padding:1px 3px;line-height:1;font-size:17px;color:#b8c0cc;cursor:pointer}.group-role-toggle:hover{transform:scale(1.14)}.headman-toggle.active,.headman-star-readonly,.headman-star-inline{color:#f5b301;font-size:22px;font-weight:900;text-shadow:0 0 0.5px #7a4b00}.deputy-toggle.active,.deputy-symbol-readonly,.deputy-symbol-inline{color:#4f7db8;font-size:17px;font-weight:900}.headman-badge{background:#fff4c2!important;color:#7a4b00!important;border:1px solid #f5cc54!important;font-weight:800}.deputy-badge{background:#eef5ff!important;color:#315f99!important;border:1px solid #bfd5f3!important;font-weight:700}.student-cell .headman-badge,.student-cell .deputy-badge{white-space:nowrap}

.works-sheet .session-col select{min-width:132px}

/* LINEA 2.0 beta.1 r3: meaningful semester progress, role UX and attendance colors */
.week-now-banner{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px;padding:18px 20px;border:1px solid #bfdbfe;border-radius:18px;background:linear-gradient(135deg,#eff6ff,#f8fbff)}
.week-now-banner>div{display:grid;gap:4px}.week-now-banner strong{font-size:20px;letter-spacing:-.02em}.week-now-banner>div>span:last-child{font-size:13px;color:#475467}
.course-progress-list{display:grid;gap:12px;margin:4px 0 20px}.course-progress-card{border:1px solid var(--line);border-radius:15px;background:#fbfcfe;overflow:hidden}.course-progress-card>summary{cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;list-style:none}.course-progress-card>summary::-webkit-details-marker{display:none}.course-progress-card>summary div{display:grid;gap:3px}.course-progress-card>summary strong{font-size:14px}.course-progress-card>summary span{font-size:12px;color:#667085}.course-progress-chevron{font-size:18px}.course-progress-body{padding:0 16px 16px}.course-type-progress{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.type-progress-pill{display:grid;gap:2px;min-width:180px;padding:10px 12px;border:1px solid #dbe5f0;border-radius:11px;background:#fff}.type-progress-pill strong{font-size:12px}.type-progress-pill span{font-size:11px;color:#667085}.progress-group-table th,.progress-group-table td{padding:8px 9px}.group-type-line{display:flex;gap:10px;flex-wrap:wrap}.group-type-line span{font-size:11px;color:#667085}
.exception-help{padding:10px 12px;border-radius:11px;background:#f8fafc;border:1px solid #e4e7ec;color:#475467;font-size:12px;line-height:1.45}.calendar-connect-box{display:grid;grid-template-columns:minmax(220px,1fr) minmax(180px,.55fr) minmax(280px,1.2fr) auto;gap:12px;align-items:end;margin-bottom:16px;padding:14px;border:1px solid #dbe5f0;border-radius:14px;background:#f8fafc}.calendar-connect-box>div{display:grid;gap:3px}.calendar-connect-box>div strong{font-size:13px}.calendar-connect-box>div span{font-size:11px;color:#667085;line-height:1.4}
.works-sheet .attendance-cell{transition:background .15s}.works-sheet .attendance-cell select{font-weight:700}.works-sheet .attendance-cell.attendance-present{background:#ecfdf3}.works-sheet .attendance-cell.attendance-present select{background:#f4fff8;border-color:#abefc6;color:#067647}.works-sheet .attendance-cell.attendance-absent{background:#fef3f2}.works-sheet .attendance-cell.attendance-absent select{background:#fff8f7;border-color:#fecdca;color:#b42318}.works-sheet .attendance-cell.attendance-excused{background:#fffaeb}.works-sheet .attendance-cell.attendance-excused select{background:#fffdf5;border-color:#fedf89;color:#b54708}.works-sheet .attendance-cell.attendance-notified{background:#eff8ff}.works-sheet .attendance-cell.attendance-notified select{background:#f5fbff;border-color:#b2ddff;color:#175cd3}.works-sheet .attendance-cell.attendance-empty{background:#fff}
.role-choice{display:flex;gap:7px;flex-wrap:wrap}.role-choice .segment-btn.active{box-shadow:0 0 0 2px rgba(16,24,40,.08)}.small-note{font-size:12px}.student-cell .headman-star-readonly{min-width:20px;text-align:center}.student-cell .deputy-symbol-readonly{min-width:20px;text-align:center}
@media(max-width:1100px){.calendar-connect-box{grid-template-columns:1fr 1fr}.course-type-progress{display:grid;grid-template-columns:1fr 1fr}}
@media(max-width:760px){.week-now-banner{align-items:flex-start;flex-direction:column}.calendar-connect-box{grid-template-columns:1fr}.course-type-progress{grid-template-columns:1fr}.progress-group-table{min-width:720px}}

/* LINEA 2.0 beta.1 r4: semester calendar, clearer progress and journal hierarchy */
.compact-stats .stat small{display:block;margin-top:4px;color:#667085;font-size:11px;line-height:1.35}.academic-count-help{margin:0 0 14px}.progress-group-table td:not(:first-child){vertical-align:middle}.progress-group-table td strong{font-size:13px}.progress-cell-note{display:block;color:#667085;font-size:10px;margin-top:2px;white-space:nowrap}
.semester-calendar-wrap{margin:18px 0 2px;border:1px solid var(--line);border-radius:16px;background:#fbfcfe;overflow:hidden}.semester-calendar-wrap>summary{cursor:pointer;list-style:none;display:flex;gap:10px;align-items:baseline;padding:14px 16px;background:#fff}.semester-calendar-wrap>summary::-webkit-details-marker{display:none}.semester-calendar-wrap>summary::before{content:'›';font-size:20px;font-weight:800;transition:transform .15s}.semester-calendar-wrap[open]>summary::before{transform:rotate(90deg)}.semester-calendar-wrap>summary .muted{font-size:12px}.semester-calendar-legend{display:flex;gap:16px;flex-wrap:wrap;padding:10px 16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px;color:#667085;background:#f8fafc}.semester-calendar-legend span{display:flex;align-items:center;gap:6px}.cal-legend{width:12px;height:12px;border-radius:3px;border:1px solid #d0d5dd;background:#fff}.cal-legend.weekend{background:#f4f5f7}.cal-legend.today{box-shadow:0 0 0 2px #2e90fa inset}.cal-legend.exception{background:#fff1f0;border-color:#fda29b}.cal-legend.session{background:#eff8ff;border-color:#84caff}
.semester-calendar-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:14px}.semester-month{border:1px solid #e4e7ec;border-radius:14px;overflow:hidden;background:#fff}.semester-month h4{margin:0;padding:11px 13px;border-bottom:1px solid #e4e7ec;font-size:14px}.month-grid{display:grid;grid-template-columns:48px repeat(7,minmax(0,1fr))}.month-head{padding:7px 3px;text-align:center;font-size:10px;font-weight:800;color:#667085;background:#f8fafc;border-right:1px solid #eef2f6;border-bottom:1px solid #e4e7ec}.month-head.weekend{background:#f2f4f7}.week-label-head{font-size:9px}.month-week-label{min-height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:#f8fafc;border-right:1px solid #e4e7ec;border-bottom:1px solid #eef2f6;color:#475467}.month-week-label strong{font-size:12px}.month-week-label span{font-size:9px}.month-week-label.outside-term{color:#c0c6d0}.month-day{position:relative;min-height:56px;padding:6px;border-right:1px solid #eef2f6;border-bottom:1px solid #eef2f6;background:#fff;overflow:hidden}.month-day.weekend{background:#f7f8fa}.month-day.other-month{color:#b7bec9;background:#fbfcfd}.month-day.outside-term{opacity:.58}.month-day.today{box-shadow:0 0 0 2px #2e90fa inset;z-index:1}.month-day.has-exception{background:#fff5f4}.month-day.has-exception.weekend{background:#fff0ef}.month-day-top{display:flex;justify-content:space-between;align-items:center;gap:3px}.month-day-top strong{font-size:11px}.session-dot{min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:#eff8ff;color:#175cd3;display:grid;place-items:center;font-size:9px;font-weight:800}.month-exception{display:block;margin-top:5px;font-size:8px;line-height:1.1;color:#b42318;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.works-toolbar-simple{grid-template-columns:2fr 1fr}.journal-secondary-actions{padding:0;overflow:hidden}.journal-secondary-actions>summary{cursor:pointer;list-style:none;padding:14px 16px;display:flex;gap:9px;align-items:baseline}.journal-secondary-actions>summary::-webkit-details-marker{display:none}.journal-secondary-actions>summary::before{content:'›';font-size:20px;font-weight:800;transition:transform .15s}.journal-secondary-actions[open]>summary::before{transform:rotate(90deg)}.journal-secondary-actions>summary .muted{font-size:12px}.journal-secondary-body{padding:0 16px 16px;border-top:1px solid var(--line)}.manual-finalize-toolbar{grid-template-columns:minmax(260px,1fr) auto;margin-top:10px}.journal-settings-grid{margin-top:0}
@media(max-width:1100px){.semester-calendar-grid{grid-template-columns:1fr}.month-grid{grid-template-columns:42px repeat(7,minmax(0,1fr))}.works-toolbar-simple,.manual-finalize-toolbar{grid-template-columns:1fr}}
@media(max-width:700px){.semester-calendar-grid{padding:8px;gap:9px}.month-day{min-height:48px;padding:4px}.month-grid{grid-template-columns:36px repeat(7,minmax(0,1fr))}.month-week-label{min-height:48px}.semester-calendar-legend{gap:9px}}
.type-progress-pill small{font-size:9px;color:#98a2b3;margin-top:2px}


/* LINEA 2.0 beta.1 r5: compact month calendar + closed course progress cards */
.course-progress-card>summary .course-progress-chevron{font-size:22px;font-weight:800;transition:transform .15s ease;color:#667085}
.course-progress-card[open]>summary .course-progress-chevron{transform:rotate(90deg)}
.week-calendar-layout{display:grid;grid-template-columns:minmax(330px,1fr) minmax(360px,460px);align-items:stretch;gap:18px;padding:16px 18px}
.week-now-copy{display:flex!important;flex-direction:column;justify-content:center;gap:5px!important;min-width:0}
.week-now-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.week-now-title-row strong{font-size:22px}
.week-calendar-help{font-size:11px!important;color:#667085!important;margin-top:5px;line-height:1.4}
.mini-calendar-card{display:block!important;border:1px solid #cfe0f5;border-radius:14px;background:#fff;overflow:hidden;box-shadow:0 1px 2px rgba(16,24,40,.03)}
.mini-calendar-toolbar{display:grid;grid-template-columns:34px 1fr 34px;align-items:center;gap:6px;padding:8px 10px;border-bottom:1px solid #e4e7ec;background:#f8fbff}
.mini-calendar-toolbar strong{text-align:center;font-size:13px!important;letter-spacing:0}
.mini-calendar-arrow{height:30px;border:1px solid #d0d5dd;border-radius:8px;background:#fff;color:#344054;font-size:22px;line-height:1;cursor:pointer}
.mini-calendar-arrow:hover{background:#f2f4f7}
.mini-calendar-legend{display:flex;align-items:center;justify-content:center;gap:5px;padding:5px 8px;border-bottom:1px solid #eef2f6;font-size:9px;color:#667085;background:#fff}
.week-one-key,.week-two-key,.weekend-key{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:17px;padding:0 4px;border-radius:5px;font-weight:800}
.week-one-key{background:#eef6ff;color:#175cd3}.week-two-key{background:#f4f0ff;color:#6938ef}.weekend-key{background:#fff0f0;color:#b42318;margin-left:5px}
.mini-month-calendar{padding:7px 8px 8px;background:#fff}
.mini-calendar-empty{padding:18px;text-align:center;color:#667085;font-size:11px}
.mini-month-grid{display:grid;grid-template-columns:38px repeat(7,minmax(34px,1fr));border-top:1px solid #e4e7ec;border-left:1px solid #e4e7ec}
.mini-week-head,.mini-day-head{padding:5px 2px;text-align:center;font-size:9px;font-weight:800;color:#667085;background:#f8fafc;border-right:1px solid #e4e7ec;border-bottom:1px solid #e4e7ec}
.mini-day-head.weekend{color:#b42318;background:#fff4f3}
.mini-week-label{min-height:37px;display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid #e4e7ec;border-bottom:1px solid #e4e7ec;font-size:9px;gap:0}
.mini-week-label strong{font-size:11px!important}.mini-week-label span{font-size:8px;color:#667085}
.mini-month-day{position:relative;min-height:37px;display:flex;align-items:flex-start;justify-content:center;padding:5px 2px;border-right:1px solid #e4e7ec;border-bottom:1px solid #e4e7ec;color:#344054}
.mini-month-day>strong{font-size:11px!important;line-height:17px}
.mini-month-day.week-type-one,.mini-week-label.week-type-one{background:#f5faff}
.mini-month-day.week-type-two,.mini-week-label.week-type-two{background:#faf7ff}
.mini-month-day.weekend{background:#fff5f4!important;color:#b42318}
.mini-month-day.other-month{opacity:.38}.mini-month-day.outside-term{filter:saturate(.7)}
.mini-month-day.today{box-shadow:inset 0 0 0 2px #2e90fa;z-index:1;font-weight:900}
.mini-month-day.has-exception{box-shadow:inset 0 -3px 0 #f04438}
.mini-session-dot{position:absolute;right:3px;top:3px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:#d1e9ff;color:#175cd3;display:grid;place-items:center;font-size:8px;font-weight:800}
.mini-exception-dot{position:absolute;left:4px;bottom:4px;width:5px;height:5px;border-radius:50%;background:#f04438}
@media(max-width:1050px){.week-calendar-layout{grid-template-columns:1fr}.mini-calendar-card{max-width:520px;width:100%}}
@media(max-width:620px){.week-calendar-layout{padding:12px}.mini-month-grid{grid-template-columns:34px repeat(7,minmax(30px,1fr))}.mini-month-day,.mini-week-label{min-height:34px}.mini-month-calendar{padding:5px}.week-now-title-row strong{font-size:19px}}
