:root{color:#172033;background:#f5f7fb;font-family:Inter,ui-sans-serif,system-ui,-apple-system,sans-serif}*{box-sizing:border-box}body{margin:0}.app-shell{grid-template-columns:246px 1fr;min-height:100vh;display:grid}.sidebar{color:#dbe7ff;background:#15233b;padding:28px 16px}.brand{letter-spacing:.13em;padding:0 12px 28px;font-size:21px;font-weight:850}.brand span{color:#7fa8ff;font-size:10px}nav{gap:4px;display:grid}nav button{font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;padding:11px 12px}nav button.active,nav button:hover{color:#fff;background:#294369}main{width:100%;max-width:1100px;margin:auto;padding:42px}header{justify-content:space-between;align-items:start;gap:24px;display:flex}.eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#5272a9;margin:0 0 6px;font-size:11px;font-weight:700}h1{color:#13233d;margin:0;font-size:36px}.subtitle{color:#63728a;margin:8px 0}.status{color:#176d47;background:#e8f6ee;border-radius:99px;padding:8px 11px;font-size:13px}.status span{color:#22a06b}.legend{flex-wrap:wrap;gap:8px;margin:28px 0;display:flex}.badge{border-radius:6px;align-items:center;gap:6px;padding:5px 8px;font-size:12px;font-weight:700;display:inline-flex}.normal{color:#176d47;background:#e8f6ee}.changed{color:#4252aa;background:#eef0ff}.substitution{color:#9a5b00;background:#fff2d8}.conflict{color:#b42335;background:#ffe7e9}.schedule{background:#fff;border:1px solid #e3e8f1;border-radius:16px;padding:22px;box-shadow:0 8px 32px #20324a0a}.section-title{border-bottom:1px solid #e7ebf2;justify-content:space-between;align-items:center;padding-bottom:14px;display:flex}.section-title h2{margin:0;font-size:20px}.section-title span{color:#65738a;font-size:13px}.event-card{border-bottom:1px solid #edf0f5;border-left:4px solid #4aaa77;grid-template-columns:96px 1fr;gap:18px;padding:18px 0;display:grid}.event-card.changed{border-left-color:#5968c7}.event-card.substitution{border-left-color:#d89420}.event-card.conflict{border-left-color:#d43a50}.time{font-variant-numeric:tabular-nums;font-weight:750}.time span{color:#77849a;margin-top:4px;font-size:13px;font-weight:500;display:block}.event-top{justify-content:space-between;align-items:start;gap:12px;display:flex}.event-top h3{margin:0;font-size:16px}.event-body p{color:#536177;margin:7px 0}.event-body ul{color:#3b4960;margin:8px 0 0;padding-left:18px;font-size:13px}.error{color:#b42335}@media (width<=720px){.app-shell{display:block}.sidebar{z-index:2;padding:10px 14px;position:sticky;top:0}.brand{padding:0;font-size:16px}.sidebar nav{margin-top:8px;display:flex;overflow:auto}.sidebar nav button{white-space:nowrap;padding:7px 9px;font-size:13px}main{padding:22px 14px}header{display:block}h1{font-size:29px}.status{margin-top:12px;display:inline-block}.schedule{padding:15px}.event-card{grid-template-columns:1fr;gap:7px}.time{gap:8px;display:flex}.time span{margin:0}.event-top{display:block}.event-top .badge{margin-top:8px}}.toolbar{flex-wrap:wrap;align-items:center;gap:14px;margin:24px 0 12px;display:flex}.toolbar input,.toolbar select,.load-inspector input{color:#172033;background:#fff;border:1px solid #d8dfeb;border-radius:8px;padding:9px 11px}.toolbar input{margin-left:auto}.segmented{background:#e9eef7;border-radius:9px;padding:3px;display:flex}.segmented button{color:#4b5b73;background:0 0;border:0;border-radius:7px;padding:8px 12px}.segmented button.selected{color:#172033;background:#fff;font-weight:700;box-shadow:0 1px 4px #182b481c}.workspace{background:#fff;border:1px solid #dfe5ef;border-radius:14px;overflow:auto;box-shadow:0 8px 32px #20324a0a}.grid-head,.grid-row{grid-template-columns:130px repeat(3,minmax(260px,1fr));min-width:910px;display:grid}.corner,.row-label{z-index:1;background:#f9fbfe;border-right:1px solid #e3e8f1;position:sticky;left:0}.corner{color:#758198;padding:12px;font-size:12px}.day{text-align:center;border-right:1px solid #e3e8f1;padding:10px 12px 0;font-weight:800}.day span{grid-template-columns:repeat(4,1fr);margin-top:9px;display:grid}.day i{color:#758198;border-top:1px solid #e3e8f1;padding:4px;font-size:11px;font-style:normal}.row-label{padding:12px;font-weight:750}.row-label small,.matrix-row small{color:#8090a7;font-size:10px;font-weight:600;display:block}.day-cells{border-right:1px solid #e3e8f1;grid-template-columns:repeat(4,1fr);display:grid}.cell{border-top:1px solid #eef1f5;border-right:1px solid #eef1f5;min-height:74px;padding:4px}.lesson{border-left:4px solid var(--lesson-color);background:color-mix(in srgb,var(--lesson-color) 12%,white);cursor:grab;border-radius:5px;flex-direction:column;gap:2px;min-width:0;height:100%;padding:6px;font-size:11px;display:flex}.lesson strong,.lesson span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lesson span{color:#56657d}.lesson.changed{outline:2px solid #5968c755}.lesson.substitution{border-bottom:3px solid #d89420}.lesson.conflict{outline:2px solid #d43a50}.lesson.locked{cursor:not-allowed;box-shadow:inset 0 0 0 1px #28364e}.unplaced{background:#fff;border:1px solid #dfe5ef;border-radius:14px;margin-top:16px;padding:16px}.unplaced>div:first-child{align-items:center;gap:9px;display:flex}.unplaced>div:first-child span{background:#edf1f8;border-radius:99px;padding:2px 8px;font-size:12px}.unplaced-list{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.unplaced-card{cursor:grab;border:1px dashed #b9c5d8;border-radius:8px;flex-direction:column;gap:4px;padding:8px 10px;font-size:12px;display:flex}.unplaced-card span{color:#718099}.inspector,.load-inspector{z-index:4;background:#fff;width:310px;height:100vh;padding:30px 24px;position:fixed;top:0;right:0;box-shadow:-12px 0 30px #20324a22}.close{background:#eef2f8;border:0;border-radius:50%;width:30px;height:30px;font-size:20px;position:absolute;top:18px;right:18px}.inspector h2,.load-inspector h2{margin:8px 0 14px}.inspector dl{grid-template-columns:85px 1fr;gap:10px;margin-top:24px;font-size:13px;display:grid}.inspector dt{color:#7b8799}.inspector dd{margin:0;font-weight:650}.hint{color:#63718a;background:#f4f7fb;border-radius:8px;padding:11px;font-size:12px;line-height:1.45}.workload{grid-template-columns:1fr 280px;gap:18px;margin-top:28px;display:grid}.matrix{background:#fff;border:1px solid #dfe5ef;border-radius:14px;overflow:auto}.matrix-row{border-bottom:1px solid #e8edf4;grid-template-columns:130px repeat(4,minmax(120px,1fr));min-width:620px;display:grid}.matrix-row>div:first-child{z-index:1;background:#fff;position:sticky;left:0}.matrix-row>div,.load-cell{border-right:1px solid #e8edf4;padding:14px}.matrix-header{color:#586880;background:#f7f9fc;font-size:12px;font-weight:750}.matrix-header>div:first-child{background:#f7f9fc}.load-cell{text-align:left;color:#172033;cursor:pointer;background:#fff;border-width:0 0 0 4px;font-size:18px;font-weight:800}.load-cell:hover{background:#f5f8ff}.load-inspector{width:auto;height:max-content;box-shadow:none;border:1px solid #dfe5ef;border-radius:14px;position:sticky;top:20px}.load-inspector label{color:#65738a;gap:7px;font-size:12px;display:grid}.primary{color:#fff;background:#1e4f9a;border:0;border-radius:7px;padding:10px 14px;font-weight:700}.badge b{font-size:14px}@media (width<=900px){.workload{display:block}.load-inspector{margin-top:16px}.inspector{width:min(310px,92vw)}}.mobile-summary{display:none}@media (width<=720px){.workspace{display:none}.mobile-summary{background:#fff;border:1px solid #dfe5ef;border-radius:14px;padding:14px;display:block}.mobile-summary-head{border-bottom:1px solid #e7ebf2;justify-content:space-between;padding-bottom:12px;display:flex}.mobile-summary-head span{color:#758198;font-size:12px}.mobile-event{border-bottom:1px solid #edf0f5;border-left:4px solid var(--mobile-color,#5272a9);gap:12px;padding:13px 4px;display:flex}.mobile-event time{font-variant-numeric:tabular-nums;font-weight:750}.mobile-event strong,.mobile-event span{display:block}.mobile-event span{color:#65738a;margin-top:4px;font-size:12px}.mobile-event.changed{--mobile-color:#5968c7}.mobile-event.substitution{--mobile-color:#d89420}.mobile-event.conflict{--mobile-color:#d43a50}}.workspace{contain:layout paint;position:relative;overflow:auto}.grid-head,.grid-row,.day-cells,.cell{min-width:0}.cell{position:relative;overflow:visible}.lesson{box-sizing:border-box;white-space:normal;word-break:break-word;isolation:isolate;min-width:0;max-width:100%;position:relative;overflow:hidden}.lesson strong,.lesson span{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:100%;display:block;overflow:hidden}.lesson:focus{outline-offset:1px;outline:3px solid #1e4f9a}.lesson:hover:after,.lesson:focus-visible:after{content:attr(data-preview);z-index:20;color:#fff;white-space:normal;overflow-wrap:anywhere;pointer-events:none;background:#17233a;border:1px solid #cbd6e6;border-radius:9px;width:230px;max-width:calc(100vw - 32px);padding:10px 11px;font-size:12px;line-height:1.4;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 10px 26px #15233b35}.lesson:hover:before,.lesson:focus-visible:before{content:"";z-index:21;pointer-events:none;border:5px solid #0000;border-top-color:#17233a;position:absolute;bottom:calc(100% + 2px);left:12px}.lesson.locked:hover:after,.lesson.locked:focus-visible:after{content:attr(data-preview) " · ручная разблокировка нужна для перемещения"}.mobile-summary .mobile-event{cursor:pointer}.mobile-summary .mobile-event:focus{outline-offset:-2px;outline:3px solid #1e4f9a}@media (width<=720px){.lesson:hover:after,.lesson:hover:before{display:none}.mobile-summary{overflow:hidden}}.rule-page{margin-top:28px}.hint-inline{color:#65738a;font-size:12px}.availability-card,.rule-builder,.rule-list{background:#fff;border:1px solid #dfe5ef;border-radius:14px;padding:18px}.availability-card{overflow:auto}.availability-head,.availability-row{border-bottom:1px solid #edf0f5;grid-template-columns:160px repeat(5,minmax(100px,1fr));align-items:center;min-width:700px;display:grid}.availability-head{color:#65738a;padding-bottom:12px;font-size:12px}.availability-row{padding:10px 0}.availability-day{gap:5px;display:flex}.availability-day button{border:0;border-radius:5px;width:27px;height:27px;font-weight:800}.availability-day .available{color:#176d47;background:#e8f6ee}.availability-day .unavailable{color:#b42335;background:#ffe7e9}.availability-day .preferred_not{color:#9a5b00;background:#fff2d8}.rule-page{grid-template-columns:minmax(0,1fr) 360px;gap:18px;display:grid}.rule-builder{align-content:start;gap:12px;display:grid}.rule-builder label{color:#65738a;gap:6px;font-size:12px;display:grid}.rule-builder select,.rule-builder input{background:#fff;border:1px solid #d8dfeb;border-radius:8px;padding:9px}.rule-list h2{margin-top:0}.rule-list article{border-bottom:1px solid #edf0f5;flex-direction:column;gap:5px;padding:12px 0;display:flex}.rule-list article span{color:#65738a;font-size:12px}.diagnostic-summary{grid-column:1/-1;gap:12px;display:flex}.diagnostic-summary article{background:#fff;border:1px solid #dfe5ef;border-radius:12px;gap:8px;padding:15px 22px;display:grid}.diagnostic-summary strong{font-size:28px}.diagnostic-summary+.rule-list{grid-column:1/-1}@media (width<=900px){.rule-page{display:block}.rule-list{margin-top:16px}}.job-banner{color:#2c5796;background:#eef4ff;border:1px solid #cadbfa;border-radius:9px;margin:10px 0;padding:10px 12px;font-size:12px}.candidate-panel{background:#fff;border:1px solid #dfe5ef;border-radius:12px;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0;padding:12px;display:flex}.candidate-heading{justify-content:space-between;align-items:center;gap:10px;width:100%;display:flex}.candidate-heading button,.candidate-card,.candidate-actions button{cursor:pointer;background:#fff;border:1px solid #d3dcea;border-radius:7px;padding:8px 10px}.candidate-card{flex-direction:column;align-items:flex-start;gap:3px;font-size:12px;display:flex}.candidate-card span{color:#65738a}.candidate-card.selected{border-color:#1e4f9a;box-shadow:0 0 0 2px #1e4f9a22}.candidate-actions{flex-wrap:wrap;gap:8px;margin:16px 0;display:flex}.candidate-actions button:disabled{opacity:.45;cursor:not-allowed}.success{color:#176d47}.change-list{gap:7px;max-height:42vh;display:grid;overflow:auto}.change-list article{border-bottom:1px solid #edf0f5;gap:3px;padding:7px 0;font-size:12px;display:grid}.change-list span{color:#65738a}.today{margin-top:28px}.today-cards{grid-template-columns:repeat(4,1fr);gap:12px;display:grid}.today-cards article,.today-action,.absence-groups article,.case-card{background:#fff;border:1px solid #dfe5ef;border-radius:14px}.today-cards article{gap:8px;padding:18px;display:grid}.today-cards span{color:#65738a;font-size:12px}.today-cards b{font-size:30px}.today-action{justify-content:space-between;align-items:center;gap:20px;margin-top:18px;padding:20px;display:flex}.today-action h2{margin:4px 0}.today-action p:last-child{color:#63728a;max-width:600px}.substitutions{margin-top:24px}.substitution-head{justify-content:space-between;align-items:center;gap:14px;display:flex}.substitution-head h2{margin:2px 0}.absence-form{background:#fff;border:1px solid #dfe5ef;border-radius:14px;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0;padding:18px;display:grid}.absence-form label{color:#65738a;gap:6px;font-size:12px;display:grid}.absence-form input,.absence-form select{background:#fff;border:1px solid #d8dfeb;border-radius:8px;padding:9px}.absence-form button{align-self:end}.absence-groups{gap:10px;margin:16px 0;display:flex;overflow:auto}.absence-groups article{gap:4px;min-width:210px;padding:12px;display:grid}.absence-groups span,.absence-groups small{color:#65738a;font-size:12px}.case-list{gap:10px;display:grid}.case-card{border-left:4px solid #d89420;grid-template-columns:1fr auto auto;align-items:center;gap:14px;padding:16px;display:grid}.case-card.applied{border-left-color:#22a06b}.case-card.no_solution{border-left-color:#d43a50}.case-card h3{margin:5px 0}.case-card p,.case-card time{color:#65738a;margin:0;font-size:12px}.case-status{font-size:12px;font-weight:700}.case-actions{gap:8px;display:flex}.case-actions button,.sub-candidates button{cursor:pointer;background:#fff;border:1px solid #d3dcea;border-radius:7px;padding:8px 10px}.case-actions .primary,.sub-candidates .primary{color:#fff;background:#1e4f9a;border:0}.substitution-inspector{overflow:auto}.sub-candidates{gap:10px;display:grid}.sub-candidates article{border:1px solid #dbe3ef;border-radius:10px;gap:6px;padding:11px;display:grid}.sub-candidates article.rejected{background:#fff8f8;border-color:#f2c9cf}.sub-candidates span,.sub-candidates li{color:#63728a;font-size:12px}.sub-candidates ul{margin:2px 0;padding-left:18px}.sub-candidates .error{color:#b42335}@media (width<=720px){.today-cards{grid-template-columns:repeat(2,1fr)}.today-action,.substitution-head{display:block}.today-action .primary,.substitution-head .primary{margin-top:12px}.absence-form,.case-card{grid-template-columns:1fr}.substitution-inspector{border-radius:18px 18px 0 0;width:100%;height:80vh;top:auto;bottom:0}}.import-page{gap:16px;margin-top:25px;display:grid}.import-steps{flex-wrap:wrap;gap:8px;display:flex}.import-steps span{color:#65738a;background:#e9eef7;border-radius:99px;padding:7px 10px;font-size:12px;font-weight:700}.import-steps .done{color:#176d47;background:#e8f6ee}.import-grid{grid-template-columns:minmax(0,1.6fr) minmax(250px,1fr);gap:16px;display:grid}.import-card{background:#fff;border:1px solid #dfe5ef;border-radius:14px;padding:18px}.import-card h2{margin:4px 0 8px;font-size:20px}.import-card p{color:#63728a;line-height:1.45}.import-card label{color:#65738a;gap:6px;margin:12px 0;font-size:12px;display:grid}.import-card select,.import-card input{background:#fff;border:1px solid #d8dfeb;border-radius:8px;padding:9px}.import-card button{cursor:pointer;font:inherit;background:#fff;border:1px solid #d3dcea;border-radius:7px;padding:9px 11px}.import-card .primary{color:#fff;background:#1e4f9a;border:0}.import-card button:disabled{opacity:.5;cursor:not-allowed}.exports>div{flex-wrap:wrap;gap:8px;display:flex}.import-preview,.import-ready,.import-conflicts{background:#f5f8ff;border-radius:9px;gap:8px;margin-top:16px;padding:12px;font-size:13px;display:grid}.import-preview span{color:#65738a}.import-preview code{white-space:pre-wrap;background:#eef2f8;border-radius:6px;max-height:90px;padding:8px;font-size:11px;overflow:auto}.import-ready{background:#edf9f1}.import-conflicts{background:#fff7f7;border:1px solid #f2c9cf}.import-history>div{gap:7px;display:grid}.import-history>div button{text-align:left;justify-content:space-between;gap:10px;display:flex}.import-history span{color:#65738a;font-size:12px}@media (width<=720px){.import-grid{grid-template-columns:1fr}.import-history>div button{display:grid}.import-steps{gap:5px}.import-steps span{font-size:11px}}.import-card textarea{resize:vertical;background:#fff;border:1px solid #d8dfeb;border-radius:8px;min-height:92px;padding:9px;font:11px ui-monospace,SFMono-Regular,monospace}.client-shell{max-width:760px;min-height:100vh;padding:30px 20px}.client-header{border-bottom:1px solid #dfe5ef;padding-bottom:18px}.client-header .brand{padding:0 0 12px}.client-header h1{font-size:30px}.client-header p{color:#65738a;margin:5px 0}.client-tabs{gap:7px;padding:16px 0;display:flex;overflow:auto}.client-tabs button,.link-button{color:#375a91;font:inherit;cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:8px 10px}.client-tabs button.active{color:#173a72;background:#dce8fb;font-weight:750}.client-list{gap:10px;display:grid}.lesson-card,.notification{background:#fff;border:1px solid #dfe5ef;border-radius:13px;gap:5px;padding:14px;display:grid}.lesson-card time,.notification small{color:#65738a;font-size:12px}.lesson-card span{color:#536177;font-size:14px}.lesson-card em{color:#9a5b00;background:#fff2d8;border-radius:5px;width:max-content;padding:3px 6px;font-size:12px;font-style:normal}.notification.unread{border-left:4px solid #1e4f9a}.notification p{color:#536177;margin:0}.login-shell{place-items:center;max-width:none;display:grid}.login-card{background:#fff;border:1px solid #dfe5ef;border-radius:18px;width:min(100%,420px);padding:28px;box-shadow:0 12px 34px #20324a14}.login-card .brand{padding:0 0 20px}.login-card h1{font-size:27px}.login-card>p{color:#63728a}.login-card form{gap:13px;margin:22px 0;display:grid}.login-card label{color:#536177;gap:6px;font-size:13px;display:grid}.login-card input{font:inherit;border:1px solid #d8dfeb;border-radius:8px;padding:10px}.login-card .primary{width:100%}@media (width<=480px){.client-shell{padding:20px 14px}.client-header{align-items:start;display:flex}.client-header h1{font-size:27px}.client-tabs{margin:0 -4px}.lesson-card{padding:13px}.login-card{padding:22px 18px}}.access-page{max-width:640px;margin-top:26px}.access-page h2{margin:4px 0}.access-page>div>p:last-child{color:#63728a}.access-form{background:#fff;border:1px solid #dfe5ef;border-radius:14px;gap:12px;margin-top:18px;padding:18px;display:grid}.access-form label{color:#65738a;gap:6px;font-size:12px;display:grid}.access-form input,.access-form select{font:inherit;background:#fff;border:1px solid #d8dfeb;border-radius:8px;padding:10px}.access-form .primary{justify-self:start}.bells-page{gap:16px;margin-top:25px;display:grid}.bell-status{flex-wrap:wrap;justify-content:space-between;align-items:end;gap:14px;display:flex}.bell-status h2{margin:3px 0}.bell-status p{color:#65738a;margin:4px 0}.bell-status label,.bell-editor label{color:#65738a;gap:6px;font-size:12px;display:grid}.bell-status input,.bell-editor input,.bell-editor textarea{font:inherit;background:#fff;border:1px solid #d8dfeb;border-radius:8px;padding:9px}.bells-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.bell-card{background:#fff;border:1px solid #dfe5ef;border-radius:14px;padding:18px}.bell-card h3{margin:0 0 8px}.bell-card h4{color:#65738a;margin:18px 0 7px;font-size:12px}.bell-actions{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.bell-actions button,.schedule-chips button{cursor:pointer;background:#fff;border:1px solid #d3dcea;border-radius:7px;padding:7px 9px}.timeline{align-content:start;gap:8px;display:grid}.timeline>div{border-bottom:1px solid #edf0f5;grid-template-columns:62px 1fr;gap:10px;padding:8px 0;display:grid}.timeline time{font-weight:800}.timeline span{color:#536177}.schedule-chips{flex-wrap:wrap;gap:8px;display:flex}.schedule-chips article{border:1px solid #dfe5ef;border-radius:9px;gap:5px;padding:10px;display:grid}.schedule-chips small{color:#65738a}.bell-editor{grid-template-columns:1fr 1fr auto;align-items:end;gap:10px;margin-top:16px;display:grid}.bell-editor textarea{min-height:78px;font:12px ui-monospace,monospace}.history-row{border-bottom:1px solid #edf0f5;grid-template-columns:90px 1fr auto;gap:12px;padding:9px 0;font-size:13px;display:grid}.history-row b{color:#176d47}@media (width<=720px){.bells-grid{grid-template-columns:1fr}.bell-status{align-items:start}.bell-editor{grid-template-columns:1fr}.history-row{grid-template-columns:80px 1fr}.history-row time{color:#65738a;grid-column:1/-1}}
