:root{--ink:#162320;--muted:#6f7d78;--line:#e6ebe8;--bg:#f4f7f5;--panel:#fff;--green:#115c4d;--green-2:#1d7a65;--mint:#dcefe8;--lime:#d8f06c;--orange:#e99545;--red:#df625c;--blue:#5677d9;--shadow:0 8px 30px rgba(29,54,47,.06);--radius:16px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Manrope,"Segoe UI",sans-serif;font-size:14px}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}.app-shell{display:grid;grid-template-columns:244px 1fr;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:244px;background:#123d35;color:#fff;padding:27px 16px 18px;display:flex;flex-direction:column;z-index:20}.brand{display:flex;align-items:center;gap:11px;padding:0 10px 28px}.brand-mark{width:34px;height:34px;border-radius:11px;background:var(--lime);display:flex;align-items:flex-end;justify-content:center;gap:3px;padding:8px}.brand-mark span{width:4px;background:#164b40;border-radius:3px}.brand-mark span:nth-child(1){height:9px}.brand-mark span:nth-child(2){height:17px}.brand-mark span:nth-child(3){height:13px}.brand strong{font-size:18px;display:block;line-height:17px}.brand small{font-size:10px;letter-spacing:2.2px;color:#a6c3bb}.nav-list{display:flex;flex-direction:column;gap:3px}.nav-item{appearance:none;border:0;background:transparent;color:#b6cbc5;width:100%;height:44px;border-radius:10px;display:flex;align-items:center;gap:12px;padding:0 13px;font:600 13px Manrope;cursor:pointer;text-align:left;transition:.2s}.nav-item svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8}.nav-item:hover{color:#fff;background:rgba(255,255,255,.07)}.nav-item.active{color:#173e36;background:var(--lime);font-weight:800}.nav-pill{margin-left:auto;background:rgba(255,255,255,.16);padding:2px 7px;border-radius:10px;font-size:10px}.nav-item.active .nav-pill{background:#c4df56}.spark{margin-left:auto;width:7px;height:7px;border-radius:50%;background:var(--lime);box-shadow:0 0 0 3px rgba(216,240,108,.15)}.sidebar-footer{margin-top:auto}.help-card{margin:16px 5px;padding:16px;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.08);border-radius:14px}.help-icon{height:28px;width:28px;border-radius:9px;background:var(--lime);color:#164b40;display:grid;place-items:center;font-weight:800;margin-bottom:10px}.help-card strong{font-size:12px}.help-card p{font-size:10px;line-height:1.5;color:#a8beb8;margin:4px 0 10px}.help-card button{font:700 10px Manrope;color:#fff;border:0;background:transparent;padding:0;cursor:pointer}.side-user{display:flex;align-items:center;gap:9px;padding:13px 6px 0;border-top:1px solid rgba(255,255,255,.1)}.avatar{width:33px;height:33px;border-radius:10px;background:#f4c7a2;color:#664023;display:grid;place-items:center;font-weight:800;font-size:10px}.side-user div:nth-child(2){min-width:0;flex:1}.side-user strong,.side-user small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.side-user strong{font-size:11px}.side-user small{font-size:9px;color:#9db4ae;margin-top:2px}.side-user>span{color:#78978f}.mobile-close{display:none}.main{grid-column:2;min-width:0}.topbar{height:74px;background:rgba(255,255,255,.88);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.period-switch,.week-nav{display:flex;align-items:center;gap:10px}.period-switch button,.week-nav button,.calendar-head button{border:1px solid var(--line);background:#fff;border-radius:8px;width:30px;height:30px;color:var(--ink);cursor:pointer;font-size:18px}.period-switch strong{min-width:124px;text-align:center;font-size:13px}.top-actions,.heading-actions{display:flex;align-items:center;gap:10px}.role-switch{display:flex;align-items:center;gap:8px;border-right:1px solid var(--line);padding-right:14px}.role-switch span{color:var(--muted);font-size:11px}.role-switch select,.select-control,.legend select{border:1px solid var(--line);border-radius:8px;background:#fff;padding:8px 28px 8px 10px;color:var(--ink);font:600 11px Manrope}.icon-btn{position:relative;border:1px solid var(--line);background:#fff;border-radius:9px;width:38px;height:38px;display:grid;place-items:center}.icon-btn svg{width:18px;height:18px;fill:none;stroke:var(--ink);stroke-width:1.8}.icon-btn i{position:absolute;width:6px;height:6px;border-radius:50%;background:var(--orange);right:7px;top:7px;border:1px solid #fff}.export-btn,.primary-btn,.soft-btn,.upload-btn{border:0;border-radius:9px;font:700 11px Manrope;height:38px;padding:0 15px;display:flex;align-items:center;gap:8px;cursor:pointer}.export-btn,.primary-btn{color:#fff;background:var(--green)}.export-btn:hover,.primary-btn:hover{background:#0c4c40}.export-btn svg,.primary-btn svg,.upload-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.soft-btn,.upload-btn{color:var(--green);background:#e7f0ed;border:1px solid #d7e5e0}.upload-btn input{display:none}.menu-btn{display:none}.view{display:none;padding:30px 32px 44px;max-width:1600px;margin:0 auto}.view.active{display:block}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.page-heading h1{font-size:28px;line-height:1.18;letter-spacing:-.8px;margin:2px 0 6px}.page-heading p{margin:0;color:var(--muted);font-size:12px}.eyebrow,.quick-kicker{font-size:9px!important;color:var(--green-2)!important;text-transform:uppercase;letter-spacing:1.4px;font-weight:800}.status-chip{align-self:center;background:#fff;border:1px solid var(--line);border-radius:30px;padding:8px 12px;color:var(--muted);font-size:9px;white-space:nowrap}.status-chip i{display:inline-block;width:7px;height:7px;background:#35a677;border-radius:50%;margin-right:5px;box-shadow:0 0 0 3px #e0f4eb}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.kpi-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 15px;box-shadow:var(--shadow);min-height:145px}.kpi-card.accent{background:var(--green);color:#fff;border-color:var(--green)}.kpi-top{display:flex;align-items:center;justify-content:space-between}.kpi-top>span{font-size:10px;color:var(--muted);font-weight:600}.accent .kpi-top>span{color:#b9d0ca}.kpi-top em{font-style:normal;color:#208f6f;background:#e3f4ed;border-radius:20px;padding:4px 7px;font-size:8px;font-weight:800}.accent .kpi-top em{color:var(--lime);background:rgba(255,255,255,.1)}.kpi-top em.neutral{color:#53645f;background:#eef2f0}.kpi-top em.danger{color:#c04943;background:#fbe8e6}.kpi-card>strong{display:block;font-size:26px;letter-spacing:-1px;margin:12px 0 10px}.kpi-card>small,.kpi-foot small{font-size:8px;color:#92a09c}.accent>small{color:#a8c2ba}.micro-bars{height:18px;display:flex;align-items:flex-end;gap:3px;margin-bottom:5px}.micro-bars i{flex:1;background:rgba(216,240,108,.3);border-radius:2px 2px 0 0}.micro-bars i:last-child,.micro-bars i:nth-last-child(2){background:var(--lime)}.kpi-foot{display:flex;align-items:center;gap:7px}.mini-avatars{display:flex}.mini-avatars i{font-style:normal;width:25px;height:25px;border-radius:50%;background:#d8e4e0;border:2px solid white;display:grid;place-items:center;font-size:7px;margin-left:-5px}.mini-avatars i:first-child{margin-left:0;background:#f5c6aa}.mini-avatars i:nth-child(2){background:#c5d4ef}.progress{height:5px;border-radius:5px;background:#e9eeec;overflow:hidden;margin:17px 0 8px}.progress i{display:block;background:var(--green-2);height:100%;border-radius:5px}.split-meter{height:5px;display:flex;gap:2px;margin:17px 0 8px}.split-meter i{height:100%;border-radius:5px}.split-meter .under{background:var(--red)}.split-meter .ok{background:#4dae82}.split-meter .over{background:var(--orange)}.dot{display:inline-block;width:5px;height:5px;border-radius:50%;margin:0 2px 0 6px}.dot:first-child{margin-left:0}.red{background:var(--red)!important}.green{background:#4dae82!important}.amber{background:var(--orange)!important}.blue{background:var(--blue)!important}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(310px,1fr);gap:14px;margin-top:14px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.panel-head{padding:18px 20px 13px;display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.panel-head h2{font-size:14px;margin:0 0 3px}.panel-head p{font-size:9px;color:var(--muted);margin:0}.legend{display:flex;align-items:center;gap:10px;font-size:8px;color:var(--muted)}.line-dot{display:inline-block;width:15px;height:2px;margin-right:4px;vertical-align:middle}.line-dot.need{background:var(--green-2)}.line-dot.scheduled{background:var(--orange);border-top:1px dashed white}.chart-wrap{position:relative;padding:0 13px 0 10px;height:270px}.chart-wrap canvas{width:100%;height:100%}.chart-tooltip{display:none;position:absolute;pointer-events:none;background:#163f36;color:#fff;border-radius:8px;padding:7px 9px;font-size:9px;box-shadow:0 5px 15px rgba(0,0,0,.15)}.chart-insight{margin:0 18px 15px;padding:10px 12px;border-radius:10px;background:#fff7ed;display:flex;align-items:center;gap:10px}.insight-icon{width:24px;height:24px;border-radius:8px;background:#f9dfbf;color:#b6691e;display:grid;place-items:center;font-weight:800}.chart-insight p{margin:0;font-size:9px;line-height:1.6;flex:1}.chart-insight p span{color:#8a765f}.link-button{display:flex;align-items:center;gap:3px;border:0;background:transparent;color:#9b5a19;font:800 9px Manrope;cursor:pointer}.link-button svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:2}.load-legend{display:flex;align-items:center;gap:3px;color:var(--muted);font-size:7px}.load-legend i{width:10px;height:10px;border-radius:3px;background:#eaf2ef}.load-legend i:nth-of-type(2){background:#cbe5dc}.load-legend i:nth-of-type(3){background:#82bba8}.load-legend i:nth-of-type(4){background:#327b66}.calendar-head{display:flex;align-items:center;justify-content:space-between;padding:0 18px 8px}.calendar-head strong{font-size:11px}.calendar-head button{border:0;background:transparent}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;padding:0 16px}.calendar-week span{text-align:center;color:#9ba7a3;font-size:7px;padding:4px}.calendar-day{aspect-ratio:1;border-radius:7px;display:grid;place-items:center;font-size:8px;color:#53615d;position:relative}.calendar-day.muted{opacity:.25}.calendar-day.level-1{background:#edf5f2}.calendar-day.level-2{background:#cce5dc}.calendar-day.level-3{background:#8ec2b1;color:#174d40}.calendar-day.level-4{background:#2d7763;color:#fff}.calendar-day.selected{outline:2px solid var(--lime);outline-offset:1px}.calendar-day b{position:absolute;font-size:5px;bottom:3px;font-weight:500;opacity:.75}.calendar-note{display:flex;align-items:center;gap:9px;margin:13px 18px 16px;padding:9px 10px;background:#f4f8f6;border-radius:9px}.pulse-dot{width:8px;height:8px;background:var(--green-2);border-radius:50%;box-shadow:0 0 0 4px #dcefe8}.calendar-note p{font-size:8px;line-height:1.5;margin:0}.calendar-note p:not(strong){color:var(--muted)}.quick-panel{margin-top:14px;padding:16px 20px;display:flex;align-items:center;gap:35px}.quick-panel>div:first-child{min-width:235px}.quick-panel h2{font-size:13px;margin:5px 0 0}.flow-steps{display:flex;align-items:center;flex:1}.flow-steps button{border:0;background:transparent;display:flex;align-items:center;gap:8px;text-align:left;cursor:pointer;padding:4px}.flow-steps button>i{width:27px;height:27px;border-radius:9px;background:#e4efeb;color:var(--green);display:grid;place-items:center;font-style:normal;font-weight:800;font-size:9px}.flow-steps button:hover>i{background:var(--lime)}.flow-steps b,.flow-steps small{display:block}.flow-steps b{font-size:9px}.flow-steps small{color:var(--muted);font-size:7px;margin-top:2px}.flow-steps>em{height:1px;background:#dce5e2;flex:1;margin:0 7px}.forecast-layout{display:grid;grid-template-columns:minmax(500px,1.7fr) minmax(330px,1fr);gap:14px}.table-scroll{overflow:auto;max-height:600px}.data-table{border-collapse:collapse;width:100%;font-size:10px}.data-table th{position:sticky;top:0;background:#f7f9f8;color:#83908c;font-size:8px;text-transform:uppercase;letter-spacing:.5px;text-align:left;padding:10px 16px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);z-index:1}.data-table td{padding:9px 16px;border-bottom:1px solid #eff2f0}.data-table tr:hover td{background:#f9fbfa}.data-table input{width:90px;border:1px solid transparent;background:transparent;padding:6px 8px;border-radius:7px;font:600 10px Manrope}.data-table input:focus{outline:0;border-color:#8ec2b1;background:#fff}.day-name{color:var(--muted)}.change-up{color:#288764}.change-down{color:#c65b55}.profile-panel{align-self:start}.sum-badge{font-size:9px;background:#e3f4ed;color:#19785d;padding:5px 8px;border-radius:15px;font-weight:800}.sum-badge.invalid{background:#fbe8e6;color:#c04943}.hour-profile{padding:3px 20px 10px;display:grid;grid-template-columns:1fr 1fr;gap:7px 18px;max-height:535px;overflow:auto}.profile-row{display:grid;grid-template-columns:36px 1fr 48px;gap:7px;align-items:center;font-size:8px}.profile-bar{height:5px;background:#edf1ef;border-radius:5px;overflow:hidden}.profile-bar i{display:block;height:100%;background:var(--green-2);border-radius:5px}.profile-row input{width:48px;border:1px solid var(--line);border-radius:6px;padding:5px;font:600 8px Manrope;text-align:right}.profile-footer{border-top:1px solid var(--line);padding:13px 20px;display:flex;justify-content:space-between;font-size:10px}.parameter-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:14px}.parameter-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:15px;box-shadow:var(--shadow)}.parameter-card>span{font-weight:700;font-size:10px}.parameter-card>div{display:flex;align-items:baseline;margin:8px 0}.parameter-card input{width:100%;border:0;font:800 23px Manrope;color:var(--ink);outline:0}.parameter-card b{font-size:10px;color:var(--muted)}.parameter-card small{font-size:7px;color:#8f9b97;line-height:1.4;display:block}.erlang-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;background:#173f36;border-radius:15px;padding:13px;margin-bottom:14px;color:#fff}.erlang-summary article{padding:8px 14px;border-right:1px solid rgba(255,255,255,.12)}.erlang-summary article:last-child{border:0}.erlang-summary span,.erlang-summary strong{display:block}.erlang-summary span{color:#a9c0ba;font-size:8px;margin-bottom:7px}.erlang-summary strong{font-size:19px}.erlang-summary .highlight{background:var(--lime);color:#173f36;border:0;border-radius:10px}.erlang-summary .highlight span{color:#4b6a62}.compact td{padding:8px 16px}.solver-layout{display:grid;grid-template-columns:300px 1fr;gap:14px}.solver-settings{padding-bottom:17px;align-self:start}.solver-settings>label{display:block;margin:0 20px 14px}.solver-settings label>span{display:block;font-size:9px;font-weight:700;margin-bottom:6px}.solver-settings select,.solver-settings input[type=number]{width:100%;height:36px;border:1px solid var(--line);background:#fff;border-radius:8px;padding:0 9px;font:600 10px Manrope}.inline-input{position:relative}.inline-input b{position:absolute;right:10px;top:9px;font-size:9px;color:var(--muted)}.solver-settings input[type=range]{width:100%;accent-color:var(--green)}.solver-settings label small{display:block;color:var(--muted);font-size:7px;margin-top:3px}.solver-note{margin:5px 18px 0;padding:10px;background:#eff6f3;border-radius:9px;display:flex;gap:8px}.solver-note i{font-style:normal;width:17px;height:17px;border-radius:50%;background:#cbe5dc;color:var(--green);display:grid;place-items:center;font-size:8px;font-weight:800}.solver-note p{font-size:7px;line-height:1.55;color:#587069;margin:0;flex:1}.solver-result{min-height:520px}.solver-score{text-align:right}.solver-score span,.solver-score strong{display:block}.solver-score span{font-size:7px;color:var(--muted)}.solver-score strong{font-size:18px;color:var(--green-2)}.solver-bars{height:175px;margin:0 20px 15px;border-bottom:1px solid var(--line);display:flex;align-items:flex-end;gap:4px;padding-top:15px}.solver-hour{flex:1;height:100%;display:flex;align-items:flex-end;position:relative}.solver-hour .need-bar{width:70%;margin:auto;background:#dce9e5;border-radius:3px 3px 0 0;position:absolute;bottom:0;left:15%}.solver-hour .cover-bar{width:32%;margin:auto;background:var(--green-2);border-radius:3px 3px 0 0;position:absolute;bottom:0;left:34%}.solver-hour label{position:absolute;bottom:-14px;width:100%;text-align:center;font-size:6px;color:var(--muted)}.shift-list{padding:0 20px 20px}.shift-row{display:grid;grid-template-columns:90px 120px 1fr 70px;gap:12px;align-items:center;border-top:1px solid var(--line);padding:11px 4px;font-size:9px}.shift-time{font-weight:800}.shift-count{display:flex;align-items:center;gap:6px}.shift-count button{width:20px;height:20px;border:1px solid var(--line);background:#fff;border-radius:6px;cursor:pointer}.shift-coverage{height:5px;background:#edf1ef;border-radius:5px;overflow:hidden}.shift-coverage i{display:block;background:#54a98a;height:100%}.shift-row strong:last-child{text-align:right;color:var(--green)}.empty-state{text-align:center;padding:70px 20px}.empty-state>div{width:46px;height:46px;border-radius:15px;background:#e8f1ee;display:grid;place-items:center;margin:auto}.empty-state svg{width:22px;height:22px;fill:none;stroke:var(--green);stroke-width:1.7}.empty-state h3{font-size:12px;margin:12px 0 4px}.empty-state p{font-size:9px;color:var(--muted)}.schedule-controls{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.segmented{background:#e5ebe8;border-radius:9px;padding:3px;display:flex}.segmented button{border:0;background:transparent;border-radius:7px;padding:7px 12px;font:700 9px Manrope;color:var(--muted);cursor:pointer}.segmented button.active{background:#fff;color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.07)}.week-nav strong{font-size:11px;min-width:110px;text-align:center}.schedule-legend{display:flex;gap:12px;font-size:8px;color:var(--muted)}.heat{width:9px;height:9px;display:inline-block;border-radius:3px;margin-right:4px;vertical-align:middle}.heat.under{background:#f3b1ad}.heat.ok{background:#9bd0bd}.heat.over{background:#f2c28f}.schedule-scroll{overflow:auto}.schedule-table{display:grid;min-width:930px}.schedule-row{display:grid;grid-template-columns:175px repeat(7,minmax(105px,1fr));border-bottom:1px solid var(--line)}.schedule-cell{min-height:55px;border-right:1px solid var(--line);padding:8px;display:flex;align-items:center;justify-content:center;position:relative}.schedule-row.header .schedule-cell{min-height:45px;background:#f7f9f8;display:block;text-align:center;font-size:8px;color:var(--muted)}.schedule-row.header .schedule-cell b{display:block;color:var(--ink);font-size:10px;margin-top:3px}.employee-cell{justify-content:flex-start;gap:8px}.employee-cell .avatar{flex:0 0 auto}.employee-cell b,.employee-cell small{display:block}.employee-cell b{font-size:9px}.employee-cell small{font-size:7px;color:var(--muted);margin-top:2px}.shift-chip{width:100%;border-radius:7px;background:#dfece8;color:#245c4e;text-align:center;padding:7px 4px;font-size:8px;font-weight:700;cursor:pointer}.shift-chip.day-off{background:#f1f3f2;color:#9ca6a3}.coverage-cell{flex-direction:column;color:#173f36;font-weight:800;font-size:10px}.coverage-cell small{font-size:6px;font-weight:500;opacity:.7}.coverage-under{background:#f9d9d6}.coverage-ok{background:#d9eee6}.coverage-over{background:#f9e5cf}.schedule-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}.schedule-stats article{background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 13px;display:flex;align-items:center;gap:8px;font-size:8px;color:var(--muted)}.schedule-stats article>i{width:8px;height:8px;border-radius:50%}.schedule-stats b{font-size:10px;color:var(--ink);margin-right:3px}.simple-view .panel{min-height:300px}.team-table{width:100%;border-collapse:collapse}.team-table td,.team-table th{padding:13px 20px;border-bottom:1px solid var(--line);text-align:left;font-size:10px}.team-table th{font-size:8px;color:var(--muted);background:#f7f9f8}.person{display:flex;align-items:center;gap:9px}.person b,.person small{display:block}.person small{color:var(--muted);font-size:7px}.skill-tag{background:#e6f0ed;color:#2e6c5b;padding:5px 7px;border-radius:12px;font-size:7px}.status-active{color:#1d805f}.report-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.report-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px;min-height:210px}.report-card .report-icon{width:35px;height:35px;border-radius:11px;background:#e4efeb;display:grid;place-items:center}.report-card svg{width:18px;height:18px;fill:none;stroke:var(--green);stroke-width:1.8}.report-card h2{font-size:13px;margin:14px 0 5px}.report-card p{font-size:9px;color:var(--muted);line-height:1.6;min-height:42px}.report-card button{border:0;background:transparent;padding:0;color:var(--green);font:800 9px Manrope;cursor:pointer}.settings-placeholder{text-align:center;padding:70px 20px}.settings-icon{width:48px;height:48px;border-radius:15px;background:#e4efeb;display:grid;place-items:center;margin:auto}.settings-icon svg{width:24px;height:24px;fill:none;stroke:var(--green);stroke-width:1.6}.settings-placeholder h2{font-size:15px;margin:15px 0 6px}.settings-placeholder p{font-size:10px;color:var(--muted)}.toast{position:fixed;right:24px;bottom:24px;background:#173f36;color:#fff;padding:12px 16px;border-radius:11px;display:flex;align-items:center;gap:9px;z-index:50;box-shadow:0 12px 35px rgba(0,0,0,.2);transform:translateY(90px);opacity:0;transition:.25s}.toast.show{transform:none;opacity:1}.toast span{width:21px;height:21px;border-radius:50%;background:var(--lime);color:#173f36;display:grid;place-items:center;font-weight:800}.toast p{margin:0;font-size:10px}.modal-backdrop{display:none;position:fixed;inset:0;background:rgba(11,35,29,.5);z-index:60;place-items:center;padding:20px}.modal-backdrop.show{display:grid}.modal{position:relative;background:#fff;border-radius:18px;padding:28px;max-width:470px;width:100%;box-shadow:0 25px 70px rgba(0,0,0,.25)}.modal h2{font-size:20px;margin:6px 0 15px}.modal ol{padding-left:20px;font-size:10px;line-height:1.8;color:#54645f}.modal-close{position:absolute;right:14px;top:12px;border:0;background:transparent;font-size:22px;cursor:pointer;color:var(--muted)}body.readonly .edit-only,body.readonly #runSolver,body.readonly #calculateErlang,body.readonly #saveForecast,body.readonly #addEmployee,body.readonly #copyWeek,body.readonly .upload-btn{display:none!important}body.operator .nav-item[data-view="forecast"],body.operator .nav-item[data-view="erlang"],body.operator .nav-item[data-view="solver"],body.operator .nav-item[data-view="team"],body.operator .nav-item[data-view="reports"],body.operator .nav-item[data-view="settings"],body.operator .export-btn{display:none}body.supervisor .nav-item[data-view="forecast"],body.supervisor .nav-item[data-view="erlang"],body.supervisor .nav-item[data-view="solver"],body.supervisor .export-btn{display:none}
.library-badge{height:38px;border:1px solid #cfe0da;background:#f4f9f7;border-radius:9px;padding:0 12px;display:flex;align-items:center;gap:7px;color:#42645b;font-size:9px;font-weight:800}.library-badge i{width:7px;height:7px;border-radius:50%;background:#36a67b;box-shadow:0 0 0 3px #dff2eb}.solver-config-grid{display:grid;grid-template-columns:minmax(600px,1.8fr) minmax(330px,1fr);gap:14px;margin-bottom:14px}.shift-constructor{min-width:0}.template-table-wrap{overflow:auto;padding-bottom:10px}.template-table{border-collapse:collapse;width:100%;min-width:720px}.template-table th{background:#f7f9f8;color:#7e8d88;text-transform:uppercase;letter-spacing:.5px;font-size:7px;text-align:left;padding:9px 8px;border-block:1px solid var(--line)}.template-table th:first-child,.template-table td:first-child{padding-left:18px}.template-table td{padding:8px;border-bottom:1px solid #edf1ef}.template-table input,.template-table select{height:31px;border:1px solid var(--line);border-radius:7px;background:#fff;padding:0 7px;font:600 9px Manrope;color:var(--ink)}.template-table input[type=checkbox]{height:15px;width:15px;accent-color:var(--green)}.template-table .template-name{width:105px}.template-table input[type=time]{width:82px}.template-table input[type=number]{width:55px}.template-break{display:flex;align-items:center;gap:4px}.template-break select{width:67px}.delete-template{width:27px;height:27px;border:0;border-radius:7px;background:#f8e9e7;color:#bd5750;cursor:pointer;font-size:15px}.constraint-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:0 18px 12px}.constraint-grid label>span{display:block;font-size:8px;font-weight:700;margin-bottom:5px}.constraint-grid input[type=number]{height:34px;width:100%;border:1px solid var(--line);border-radius:8px;padding:0 9px;font:600 9px Manrope}.constraint-grid input[type=range]{width:100%;accent-color:var(--green)}.constraint-grid small{display:block;font-size:7px;color:var(--muted)}.solver-result{margin-top:0}.solver-status{display:flex;gap:7px;flex-wrap:wrap;padding:0 20px}.solver-status span{font-size:8px;padding:5px 8px;border-radius:15px;background:#e4f2ed;color:#26755f}.solver-status span.warn{background:#fbe9dc;color:#a65b25}.shift-row{grid-template-columns:150px 120px 1fr 90px}.shift-time small{display:block;font-size:7px;color:var(--muted);margin-top:3px}.solver-hour .cover-bar{background:var(--green-2)}
.schedule-panel .schedule-scroll{max-height:510px}.schedule-table{min-width:1160px}.schedule-row{grid-template-columns:185px repeat(7,minmax(120px,1fr)) 75px}.schedule-row.header{position:sticky;top:0;z-index:4}.schedule-row.footer{position:sticky;bottom:0;z-index:3}.schedule-cell{min-height:76px;padding:7px}.schedule-row.header .schedule-cell{min-height:48px}.shift-chip{border:1px solid #d2e4de;background:#edf6f3;padding:7px;text-align:left;min-height:58px;display:flex;flex-direction:column;justify-content:center;gap:3px}.shift-chip:hover{border-color:#78ae9e;background:#e5f2ed}.shift-chip .shift-interval{font-size:9px;font-weight:800;color:#174e40;white-space:nowrap}.shift-chip .shift-break{font-size:6px;color:#8a6b42;background:#f8ead9;border-radius:4px;padding:2px 4px;width:max-content}.shift-chip .shift-hours{font-size:7px;color:#60716c}.shift-chip.day-off{align-items:center;justify-content:center;text-align:center}.shift-chip.day-off .shift-interval{color:#929e9a}.timesheet-total{background:#f7f9f8;font-size:11px;font-weight:800;color:var(--green)}.schedule-row.footer .schedule-cell{min-height:44px;background:#163f36;color:#fff;border-color:rgba(255,255,255,.08);font-size:9px;font-weight:800}.schedule-row.footer .schedule-cell small{display:block;color:#a9c3bb;font-size:6px;font-weight:500}.schedule-analysis{margin-top:14px}.analysis-controls{display:flex;align-items:center;gap:11px}.chart-legend{font-size:8px;color:var(--muted)}.chart-legend:before{content:"";display:inline-block;width:14px;height:2px;margin-right:5px;vertical-align:middle}.chart-legend.need:before{background:var(--green)}.chart-legend.plan:before{background:var(--orange)}.chart-legend.fact:before{background:var(--blue)}.schedule-chart-wrap{height:290px;padding:0 18px 18px;position:relative}.schedule-chart-wrap canvas{height:100%;width:100%}.shift-modal{max-width:560px}.shift-edit-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:10px}.shift-edit-grid label>span{display:block;font-size:8px;font-weight:700;margin-bottom:5px}.shift-edit-grid input,.shift-edit-grid select,.break-edit-row input,.break-edit-row select{width:100%;height:36px;border:1px solid var(--line);border-radius:8px;background:#fff;padding:0 9px;font:600 10px Manrope}.break-editor-head{display:flex;align-items:center;justify-content:space-between;margin:20px 0 8px}.break-editor-head b,.break-editor-head small{display:block}.break-editor-head b{font-size:11px}.break-editor-head small{font-size:7px;color:var(--muted);margin-top:2px}.break-edit-list{display:flex;flex-direction:column;gap:7px}.break-edit-row{display:grid;grid-template-columns:1fr 1fr 32px;gap:7px}.break-edit-row button{border:0;background:#f8e9e7;color:#b94f48;border-radius:8px;cursor:pointer}.shift-total-preview{display:flex;align-items:center;justify-content:space-between;background:#edf5f2;border-radius:10px;padding:12px 14px;margin-top:14px}.shift-total-preview span{font-size:9px;color:#5b716a}.shift-total-preview strong{font-size:16px;color:var(--green)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}body.operator .schedule-stats,body.operator .schedule-controls .segmented,body.operator .schedule-legend{display:none}
@media(max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dashboard-grid{grid-template-columns:1fr}.parameter-grid{grid-template-columns:repeat(3,1fr)}.quick-panel{align-items:flex-start;flex-direction:column;gap:15px}.flow-steps{width:100%}.forecast-layout{grid-template-columns:1fr}.profile-panel{width:100%}.solver-config-grid{grid-template-columns:1fr}.analysis-controls{flex-wrap:wrap}}
@media(max-width:760px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:none}.mobile-close{display:block;position:absolute;right:12px;top:17px;border:0;background:transparent;color:#fff;font-size:24px}.main{width:100%}.topbar{height:62px;padding:0 14px}.menu-btn{display:block;border:0;background:transparent;font-size:20px}.period-switch{display:none}.role-switch span{display:none}.role-switch{border:0;padding:0}.role-switch select{max-width:135px}.export-btn{width:38px;padding:0;font-size:0;justify-content:center}.view{padding:22px 14px 36px}.page-heading{align-items:flex-start;flex-direction:column}.page-heading h1{font-size:23px}.kpi-grid{grid-template-columns:1fr}.parameter-grid,.erlang-summary,.schedule-stats,.report-grid{grid-template-columns:1fr 1fr}.dashboard-grid,.solver-layout{grid-template-columns:1fr}.solver-settings{width:100%}.flow-steps{overflow:auto}.flow-steps>em{min-width:20px}.legend span{display:none}.quick-panel{display:none}.hour-profile{grid-template-columns:1fr}.heading-actions{width:100%;flex-wrap:wrap}.schedule-controls{align-items:flex-start;gap:10px;flex-wrap:wrap}.schedule-legend{width:100%}.top-actions{gap:6px}.icon-btn{display:none}}
@media(max-width:450px){.parameter-grid,.erlang-summary,.schedule-stats,.report-grid,.constraint-grid{grid-template-columns:1fr}.role-switch{display:none}.forecast-layout{display:block}.panel-head{padding:15px}.chart-wrap{height:230px}.chart-insight button{display:none}.library-badge{display:none}.shift-edit-grid{grid-template-columns:1fr}.schedule-chart-wrap{height:240px}}
.template-table-wrap{max-height:330px}
.kpi-grid{grid-template-columns:repeat(3,1fr)}.dashboard-grid{grid-template-columns:1fr}.demand-panel{min-width:0}
.monthly-forecast-card{display:flex;align-items:center;gap:28px;padding:18px 20px;margin-bottom:14px}.monthly-forecast-card>div{flex:1}.monthly-forecast-card h2{font-size:15px;margin:4px 0}.monthly-forecast-card p{font-size:9px;color:var(--muted);margin:0}.monthly-forecast-card label{display:flex;align-items:baseline;border:1px solid #cfe0da;border-radius:11px;background:#f7faf9;padding:6px 13px;min-width:220px}.monthly-forecast-card input{border:0;background:transparent;outline:0;width:145px;font:800 23px Manrope;color:var(--green)}.monthly-forecast-card label span{font-size:8px;color:var(--muted)}.forecast-profiles-grid{display:grid;grid-template-columns:1fr 1fr 1.35fr;gap:14px;margin-bottom:14px}.distribution-panel,.profile-panel{min-width:0}.distribution-list{padding:2px 18px 10px}.distribution-row{display:grid;grid-template-columns:92px 1fr 54px 10px;align-items:center;gap:7px;min-height:43px;border-bottom:1px solid #eff2f0}.distribution-row>span b,.distribution-row>span small{display:block}.distribution-row>span b{font-size:8px}.distribution-row>span small{font-size:6px;color:var(--muted);margin-top:2px}.distribution-row>i{height:5px;background:#edf2f0;border-radius:4px;overflow:hidden}.distribution-row>i em{display:block;height:100%;background:var(--green-2);border-radius:4px}.distribution-row>input{width:54px;border:1px solid var(--line);border-radius:6px;padding:5px;font:700 8px Manrope;text-align:right}.distribution-row>b{font-size:7px;color:var(--muted)}.weekday-list .distribution-row{min-height:31px}.forecast-profiles-grid .hour-profile{max-height:320px}.daily-forecast-panel .table-scroll{max-height:520px}.forecast-check{font-size:8px;color:#26775f;background:#e4f2ed;border-radius:18px;padding:6px 9px}.forecast-check.invalid{color:#b1524c;background:#fbe8e6}.date-range{display:block;color:var(--muted);font-size:6px;margin-top:2px}
.month-schedule-label{text-align:center}.month-schedule-label strong,.month-schedule-label span{display:block}.month-schedule-label strong{font-size:11px}.month-schedule-label span{font-size:7px;color:var(--muted);margin-top:2px}.schedule-panel .schedule-scroll{max-height:570px}.schedule-table{min-width:3150px}.schedule-row{grid-template-columns:220px repeat(31,92px) 80px}.schedule-row>.schedule-cell:first-child{position:sticky;left:0;z-index:2;background:#fff;box-shadow:3px 0 7px rgba(24,55,47,.05)}.schedule-row>.schedule-cell:last-child{position:sticky;right:0;z-index:2;background:#f7f9f8;box-shadow:-3px 0 7px rgba(24,55,47,.05)}.schedule-row.header>.schedule-cell:first-child,.schedule-row.header>.schedule-cell:last-child{z-index:6}.schedule-row.footer>.schedule-cell:first-child,.schedule-row.footer>.schedule-cell:last-child{background:#163f36}.schedule-cell{min-height:61px}.schedule-row.header .schedule-cell{min-height:47px;border:0;border-right:1px solid var(--line)}.date-header{appearance:none;cursor:pointer;font-family:Manrope}.date-header b,.date-header small{display:block}.date-header.selected{background:#dff1ea!important;box-shadow:inset 0 -3px 0 var(--green-2)}.date-header:hover{background:#eef6f3}.employee-cell em{display:block;font-style:normal;font-size:7px;color:#3184d4;margin-top:3px}.shift-chip{min-height:45px;padding:5px;align-items:center;text-align:center;border:0;border-radius:0;background:transparent}.shift-chip.tone-0{background:#fffdf1}.shift-chip.tone-1{background:#dceafb}.shift-chip.tone-2{background:#edf6f3}.shift-chip .shift-interval{font-size:8px;color:#101815}.shift-chip .shift-hours{font-size:9px;font-weight:800;color:#101815}.shift-code{font-size:11px;font-weight:800}.shift-chip.status-vacation{background:#d4d4d4}.shift-chip.status-sick{background:#eee}.break-dot{position:absolute;right:4px;top:4px;width:5px;height:5px;border-radius:50%;background:#e34f47}.coverage-summary-row .schedule-cell{min-height:64px}.coverage-summary-row button{border:0;font:700 9px Manrope;cursor:pointer}.day-drilldown{margin-top:18px;scroll-margin-top:85px}.day-drilldown.collapsed{display:none}.day-drilldown-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:11px}.day-drilldown-head h2{font-size:18px;margin:4px 0}.day-drilldown-head p{font-size:9px;color:var(--muted);margin:0}.timeline-panel{overflow:hidden;margin-bottom:14px}.timeline-axis{height:35px;margin-left:205px;position:relative;border-bottom:1px solid var(--line)}.timeline-axis>span{position:absolute;left:-205px;width:205px;height:100%;background:#f7f9f8}.timeline-axis b{position:absolute;bottom:8px;transform:translateX(-50%);font-size:7px;color:var(--muted)}.operator-timelines{max-height:430px;overflow:auto}.timeline-row{display:grid;grid-template-columns:205px 1fr;min-height:49px;border-bottom:1px solid var(--line)}.timeline-person{display:flex;align-items:center;gap:8px;padding:6px 12px;background:#fff;border-right:1px solid var(--line);position:sticky;left:0;z-index:2}.timeline-person .avatar{width:28px;height:28px}.timeline-person b{font-size:8px}.timeline-track{position:relative;background:repeating-linear-gradient(to right,#fff 0,#fff calc(12.5% - 1px),#edf1ef calc(12.5% - 1px),#edf1ef 12.5%)}.timeline-shift{position:absolute;top:8px;height:33px;border-radius:7px;background:#bcded2;color:#174f41;padding:4px 7px;min-width:40px;overflow:hidden}.timeline-shift b,.timeline-shift small{display:block;white-space:nowrap}.timeline-shift b{font-size:8px}.timeline-shift small{font-size:6px;margin-top:2px}.timeline-shift i{position:absolute;top:0;height:100%;background:#f2c38e;opacity:.85}.timeline-absence{position:absolute;left:2%;top:12px;color:#87938f;font-size:8px;font-weight:800}.schedule-analysis{margin-top:0}
@media(max-width:1100px){.forecast-profiles-grid{grid-template-columns:1fr 1fr}.forecast-profiles-grid .profile-panel{grid-column:1/-1}.monthly-forecast-card{flex-wrap:wrap}.kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.forecast-profiles-grid,.kpi-grid{grid-template-columns:1fr}.forecast-profiles-grid .profile-panel{grid-column:auto}.monthly-forecast-card{align-items:flex-start;flex-direction:column}.monthly-forecast-card label{width:100%}.day-drilldown-head{align-items:flex-start;flex-direction:column;gap:10px}}
.profile-actions{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}.mini-action{height:25px;border:1px solid #d4e4de;background:#eef6f3;color:var(--green);border-radius:7px;padding:0 8px;font:700 7px Manrope;cursor:pointer}.mini-action.upload{display:flex;align-items:center}.mini-action input{display:none}.hour-profile-table{padding:0 18px}.hour-profile-header{display:grid;grid-template-columns:1fr 70px 12px;gap:8px;color:#899590;text-transform:uppercase;font-size:7px;border-block:1px solid var(--line);padding:7px 0}.hour-profile{display:grid;grid-template-columns:1fr;gap:0;padding:0;max-height:300px}.profile-row.simple{display:grid;grid-template-columns:1fr 70px 12px;gap:8px;min-height:31px;border-bottom:1px solid #eef2f0;align-items:center}.profile-row.simple span{font-size:8px;font-weight:700}.profile-row.simple input{width:70px;height:25px}.profile-row.simple b{font-size:7px;color:var(--muted)}
.solver-heatmap{padding:4px 20px 18px;display:grid;grid-template-columns:105px 1fr;gap:8px}.heatmap-labels{display:grid;grid-template-rows:repeat(4,28px);border:1px solid var(--line);border-radius:9px;overflow:hidden}.heatmap-labels b{display:flex;align-items:center;padding:0 9px;background:#f7f9f8;border-bottom:1px solid var(--line);font-size:7px;color:#65736f}.heatmap-hours{display:grid;grid-template-columns:repeat(24,minmax(48px,1fr));overflow:auto;border:1px solid var(--line);border-radius:9px}.solver-heat-cell{display:grid;grid-template-rows:repeat(4,28px);min-width:48px;text-align:center;border-right:1px solid rgba(255,255,255,.6)}.solver-heat-cell>*{display:grid;place-items:center;font-size:7px}.solver-heat-cell b{background:#f7f9f8;color:#61706b}.solver-heat-cell.deficit span,.solver-heat-cell.deficit strong{background:#fae1df;color:#9e3d38}.solver-heat-cell.surplus span,.solver-heat-cell.surplus strong{background:#faead7;color:#9a5b20}.solver-heat-cell.balanced span,.solver-heat-cell.balanced strong{background:#ddf0e9;color:#236b57}.solver-heat-cell strong{font-size:8px}
.schedule-row>.schedule-cell{padding:0}.schedule-row>.employee-cell{padding:8px 10px}.schedule-row.header>.schedule-cell{display:flex;align-items:center;justify-content:center}.schedule-row.header>.employee-cell{justify-content:flex-start}.shift-chip{width:100%;height:100%;min-height:61px;border-radius:0;padding:4px 2px}.schedule-row.footer>.schedule-cell{padding:5px}.schedule-row.footer>.employee-cell{padding:8px 10px}.schedule-row>.timesheet-total{display:flex;align-items:center;justify-content:center}.date-header{border:0;flex-direction:row;gap:3px}.date-header small{font-size:7px}.day-drilldown.collapsed{display:none}
.annual-upload-card{display:grid;grid-template-columns:54px 1fr minmax(290px,.7fr);align-items:center;gap:18px;padding:20px;margin-bottom:14px}.annual-upload-icon{width:52px;height:52px;border-radius:15px;background:#dff0ea;color:var(--green);display:grid;place-items:center}.annual-upload-icon svg,.annual-drop svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.8}.annual-upload-card h2{font-size:16px;margin:4px 0}.annual-upload-card p{font-size:9px;color:var(--muted);margin:0}.annual-upload-card p b{color:var(--green)}.annual-drop{border:1px dashed #8db8ab;background:#f4faf8;border-radius:12px;min-height:66px;padding:12px 15px;display:flex;align-items:center;gap:11px;color:var(--green);cursor:pointer}.annual-drop:hover{background:#e9f5f1}.annual-drop input{display:none}.annual-drop span b,.annual-drop span small{display:block}.annual-drop span b{font-size:10px}.annual-drop span small{font-size:7px;color:var(--muted);margin-top:3px}.annual-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}.annual-kpis article{background:#fff;border:1px solid var(--line);border-radius:13px;padding:14px 16px;box-shadow:var(--shadow)}.annual-kpis span,.annual-kpis strong{display:block}.annual-kpis span{font-size:8px;color:var(--muted);margin-bottom:7px}.annual-kpis strong{font-size:16px}.annual-kpis strong.valid{color:#21815f}.annual-kpis strong.invalid{color:#c5524c}.annual-forecast-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:14px;margin-bottom:14px}.annual-month-bars{padding:2px 20px 18px;display:grid;grid-template-columns:1fr 1fr;gap:9px 22px}.annual-month{display:grid;grid-template-columns:115px 1fr;align-items:center;gap:9px}.annual-month span{display:flex;justify-content:space-between;gap:5px}.annual-month b{font-size:8px}.annual-month strong{font-size:7px;color:var(--muted)}.annual-month>i{height:7px;border-radius:5px;background:#edf2f0;overflow:hidden}.annual-month>i em{display:block;height:100%;border-radius:5px;background:var(--green-2)}.validation-list{padding:0 20px 18px}.validation-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.validation-item>i{font-style:normal;width:25px;height:25px;border-radius:8px;background:#e6eeeb;color:#64736e;display:grid;place-items:center;font-weight:800}.validation-item.ok>i{background:#def1e9;color:#258060}.validation-item.warn>i{background:#fbe4e1;color:#bd514a}.validation-item span b,.validation-item span small{display:block}.validation-item span b{font-size:9px}.validation-item span small{font-size:7px;color:var(--muted);margin-top:2px}.annual-preview .table-scroll{max-height:520px}.annual-preview .data-table td{padding-block:7px}
@media(max-width:1000px){.annual-kpis{grid-template-columns:repeat(3,1fr)}.annual-forecast-grid{grid-template-columns:1fr}.annual-upload-card{grid-template-columns:54px 1fr}.annual-drop{grid-column:1/-1}}
@media(max-width:600px){.annual-kpis{grid-template-columns:1fr 1fr}.annual-upload-card{grid-template-columns:1fr}.annual-upload-icon{display:none}.annual-month-bars{grid-template-columns:1fr}}

/* Navigation collapse, notifications and annual dashboard refinements */
.app-shell{transition:grid-template-columns .22s ease}.sidebar{transition:width .22s ease,transform .25s}.topbar-left{display:flex;align-items:center;gap:14px}.sidebar-toggle{width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--green);font:700 20px/1 Manrope;cursor:pointer}.sidebar-toggle:hover{background:#edf5f2}.dashboard-grid{grid-template-columns:1fr}.bar-dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:middle}.bar-dot.forecast{background:var(--green-2)}.bar-dot.fte{background:var(--orange)}
body.sidebar-collapsed .app-shell{grid-template-columns:72px 1fr}body.sidebar-collapsed .sidebar{width:72px;padding-inline:10px}body.sidebar-collapsed .brand{padding-inline:9px;justify-content:center}body.sidebar-collapsed .brand>div:last-child,body.sidebar-collapsed .nav-item span,body.sidebar-collapsed .nav-pill,body.sidebar-collapsed .spark,body.sidebar-collapsed .sidebar-footer{display:none}body.sidebar-collapsed .nav-item{justify-content:center;padding:0}body.sidebar-collapsed .nav-item svg{width:21px;height:21px}
.notification-wrap{position:relative}.notification-panel{display:none;position:absolute;right:0;top:47px;width:330px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 50px rgba(21,50,42,.18);padding:8px;z-index:30}.notification-panel.show{display:block}.notification-head{display:flex;align-items:center;justify-content:space-between;padding:9px 10px 11px;border-bottom:1px solid var(--line)}.notification-head b,.notification-head small{display:block}.notification-head b{font-size:12px}.notification-head small{font-size:8px;color:var(--muted);margin-top:2px}.notification-head button{border:0;background:transparent;color:var(--green);font:700 8px Manrope;cursor:pointer}.notification-panel>button{width:100%;border:0;background:#fff;border-radius:9px;display:flex;gap:10px;align-items:flex-start;text-align:left;padding:11px 10px;cursor:pointer}.notification-panel>button:hover{background:#f3f8f6}.notification-panel>button i{font-style:normal;width:24px;height:24px;border-radius:8px;display:grid;place-items:center;flex:0 0 auto;font-size:9px;font-weight:800}.notification-panel>button span b,.notification-panel>button span small{display:block}.notification-panel>button span b{font-size:9px}.notification-panel>button span small{font-size:7px;color:var(--muted);margin-top:3px}.notice-green{background:#def1e9;color:#258060}.notice-orange{background:#fbe9d8;color:#b66b24}.notice-blue{background:#e4ebfa;color:#4e6fc7}.notification-panel.read .notification-head small{visibility:hidden}
.annual-kpis{grid-template-columns:repeat(4,1fr)}.annual-forecast-grid{grid-template-columns:1fr}.annual-month-bars{grid-template-columns:repeat(3,1fr)}
@media(max-width:1000px){.annual-kpis{grid-template-columns:repeat(2,1fr)}.annual-month-bars{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.sidebar-toggle{display:none}body.sidebar-collapsed .app-shell{display:block}body.sidebar-collapsed .sidebar{width:244px;padding:27px 16px 18px}body.sidebar-collapsed .brand>div:last-child,body.sidebar-collapsed .nav-item span,body.sidebar-collapsed .nav-pill,body.sidebar-collapsed .spark,body.sidebar-collapsed .sidebar-footer{display:initial}body.sidebar-collapsed .nav-item{justify-content:flex-start;padding:0 13px}.notification-panel{position:fixed;top:66px;left:14px;right:14px;width:auto}.annual-month-bars{grid-template-columns:1fr}}

/* Readable typography: important values never fall below 10px on desktop. */
.panel-head h2{font-size:16px}.panel-head p,.page-heading p{font-size:12px}.legend,.chart-insight p,.link-button,.chart-tooltip{font-size:11px}.chart-tooltip{line-height:1.55;padding:9px 11px}.kpi-top>span{font-size:12px}.kpi-card>strong{font-size:30px}.kpi-card>small,.kpi-foot small{font-size:10px}.kpi-top em{font-size:10px}.annual-upload-card p{font-size:11px}.annual-drop span b{font-size:12px}.annual-drop span small{font-size:10px}.annual-kpis span{font-size:11px}.annual-kpis strong{font-size:22px}.annual-month{grid-template-columns:150px 1fr}.annual-month b{font-size:11px}.annual-month strong{font-size:11px;color:#53645f}.annual-month>i{height:9px}.data-table{font-size:12px}.data-table th{font-size:10px;padding:12px 16px}.data-table td{padding:11px 16px}.annual-preview .data-table td{padding-block:10px}.parameter-card>span,.parameter-card b{font-size:12px}.parameter-card small{font-size:10px}.parameter-card input{font-size:26px}.erlang-summary span{font-size:11px}.erlang-summary strong{font-size:23px}.flow-steps b{font-size:11px}.flow-steps small{font-size:9px}.status-chip{font-size:10px}.notification-head small,.notification-head button{font-size:10px}.notification-panel>button span b{font-size:11px}.notification-panel>button span small{font-size:10px;line-height:1.4}.schedule-table{min-width:3420px}.schedule-row{grid-template-columns:230px repeat(31,100px) 90px}.date-header b,.schedule-row.header .schedule-cell b{font-size:11px}.date-header small,.employee-cell em{font-size:9px}.employee-cell b{font-size:11px}.employee-cell small{font-size:9px}.shift-chip .shift-interval{font-size:11px}.shift-chip .shift-hours{font-size:11px}.shift-code{font-size:13px}.timesheet-total{font-size:13px}.coverage-summary-row button{font-size:11px}.schedule-row.footer .schedule-cell{font-size:11px}.schedule-row.footer .schedule-cell small{font-size:9px}.schedule-stats article{font-size:10px}.schedule-stats b{font-size:12px}.month-schedule-label strong{font-size:13px}.month-schedule-label span,.schedule-legend,.chart-legend{font-size:10px}.solver-heatmap{grid-template-columns:125px 1fr}.heatmap-labels b,.solver-heat-cell>*{font-size:10px}.solver-heat-cell strong{font-size:11px}.heatmap-hours{grid-template-columns:repeat(24,minmax(58px,1fr))}.solver-heat-cell{min-width:58px}.shift-row{font-size:11px}.shift-time small,.solver-score span,.constraint-grid small,.solver-note p{font-size:9px}.solver-status span{font-size:10px}.timeline-axis b,.timeline-person b,.timeline-shift b{font-size:10px}.timeline-shift small{font-size:9px}
@media(max-width:760px){.kpi-card>strong{font-size:27px}.annual-kpis strong{font-size:19px}.annual-month{grid-template-columns:125px 1fr}.data-table{font-size:11px}.panel-head h2{font-size:15px}}

.dashboard-period-row{display:flex;justify-content:flex-end;margin:-8px 0 12px}.dashboard-month-control{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 11px 9px 15px;box-shadow:var(--shadow)}.dashboard-month-control span{font-size:11px;font-weight:700;color:var(--muted)}.dashboard-month-control select{min-width:175px;height:38px;border:1px solid #d8e3df;border-radius:9px;background:#f7faf9;color:var(--ink);padding:0 34px 0 12px;font:700 12px Manrope;cursor:pointer}.schedule-table .schedule-row{grid-template-columns:230px repeat(var(--schedule-days,31),100px) 90px}
@media(max-width:760px){.dashboard-period-row{justify-content:stretch}.dashboard-month-control{width:100%;justify-content:space-between}.dashboard-month-control select{flex:1;max-width:220px}}

/* Compact annual forecast workspace. */
#view-forecast{padding-top:18px}#view-forecast .page-heading{display:grid;grid-template-columns:max-content auto;justify-content:start;align-items:end;gap:24px;margin-bottom:14px}#view-forecast .page-heading h1{margin-bottom:4px}#view-forecast .heading-actions{width:auto!important;flex:0 0 auto;flex-wrap:nowrap}#view-forecast .heading-actions button{justify-content:center;white-space:nowrap}#view-forecast #downloadYearTemplate{width:180px!important;min-width:180px;flex:0 0 180px!important}#view-forecast #saveForecast{width:150px!important;min-width:150px;flex:0 0 150px!important}.annual-upload-card{grid-template-columns:42px minmax(390px,1fr) minmax(330px,420px);gap:13px;padding:12px 16px;margin-bottom:10px}.annual-upload-icon{width:42px;height:42px;border-radius:12px}.annual-upload-icon svg,.annual-drop svg{width:20px;height:20px}.annual-upload-card h2{font-size:15px;margin:2px 0}.annual-upload-card p{font-size:10px;white-space:nowrap}.annual-drop{min-height:52px;padding:8px 13px;border-radius:10px}.annual-kpis{gap:10px;margin-bottom:10px}.annual-kpis article{padding:11px 15px}.annual-kpis span{margin-bottom:4px}.annual-kpis strong{font-size:20px}.annual-forecast-grid{margin-bottom:10px}.annual-forecast-grid .panel-head,.annual-preview .panel-head{padding:14px 18px 9px}.annual-month-chart{height:220px;padding:0 12px 10px}.annual-month-chart canvas{width:100%;height:100%;display:block}.annual-preview .panel-head{align-items:center}.annual-preview .table-scroll{max-height:560px}
@media(max-width:1000px){#view-forecast .page-heading{grid-template-columns:1fr}#view-forecast .heading-actions{justify-self:start}.annual-upload-card{grid-template-columns:42px 1fr}.annual-drop{grid-column:1/-1}.annual-upload-card p{white-space:normal}}
@media(max-width:600px){#view-forecast .heading-actions{width:100%!important;flex-wrap:wrap}#view-forecast #downloadYearTemplate,#view-forecast #saveForecast{width:auto!important;min-width:140px;flex:1 1 140px!important}.annual-upload-card{grid-template-columns:1fr}.annual-month-chart{height:250px}}

.excel-upload-btn{width:165px!important;min-width:165px;flex:0 0 165px!important;justify-content:center;white-space:nowrap;cursor:pointer}.excel-upload-btn input{display:none}.soft-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.forecast-history{margin-bottom:10px}.forecast-history .panel-head{padding:13px 18px 8px}.forecast-history-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:0 14px 12px}.forecast-history-item{display:flex;align-items:center;gap:10px;min-width:0;background:#f6f9f8;border:1px solid #e5ece9;border-radius:10px;padding:9px 10px}.forecast-history-item>i{width:28px;height:28px;flex:0 0 28px;border-radius:9px;background:#dff0ea;color:var(--green);display:grid;place-items:center;font-style:normal;font-weight:800}.forecast-history-item>div{min-width:0;flex:1}.forecast-history-item span{display:flex;align-items:center;justify-content:space-between;gap:8px}.forecast-history-item span b{font-size:10px;color:var(--green)}.forecast-history-item time{font-size:9px;color:var(--muted);white-space:nowrap}.forecast-history-item strong,.forecast-history-item small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.forecast-history-item strong{font-size:11px;margin:3px 0}.forecast-history-item small{font-size:9px;color:var(--muted)}.forecast-history-empty{grid-column:1/-1;color:var(--muted);font-size:10px;padding:6px 4px}body.readonly .excel-upload-btn{display:none!important}
@media(max-width:1100px){.forecast-history-list{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.forecast-history-list{grid-template-columns:1fr}.excel-upload-btn{width:auto!important;min-width:140px;flex:1 1 140px!important}}

/* Forecast versions: compact header action and focused modal journals. */
.forecast-history-btn{width:165px!important;min-width:165px;flex:0 0 165px!important;justify-content:center;white-space:nowrap}.forecast-history-modal{max-width:760px}.forecast-save-modal{max-width:560px}.modal-description{margin:-8px 0 20px;color:var(--muted);font-size:11px;line-height:1.55}.forecast-history-modal .forecast-history-list{grid-template-columns:1fr;gap:9px;max-height:430px;overflow:auto;padding:2px 4px 2px 0}.forecast-history-modal .forecast-history-item{align-items:flex-start;padding:12px 13px;background:#f7faf9}.forecast-history-modal .forecast-history-item>i{margin-top:1px}.forecast-history-item span b{font-size:11px}.forecast-history-item time{font-size:10px}.forecast-history-item strong{font-size:12px;margin:4px 0}.forecast-history-item p{margin:4px 0 6px;color:#415650;font-size:11px;line-height:1.5;white-space:normal;overflow-wrap:anywhere}.forecast-history-item small{font-size:10px}.forecast-history-empty{display:flex;flex-direction:column;gap:5px;border:1px dashed #cfded9;border-radius:11px;background:#f7faf9;padding:24px;text-align:center;font-size:11px}.forecast-history-empty b{font-size:13px;color:var(--ink)}.forecast-history-empty span{color:var(--muted)}.forecast-comment-field{display:block}.forecast-comment-field>span{display:block;margin-bottom:7px;font-size:11px;font-weight:800}.forecast-comment-field textarea{display:block;width:100%;min-height:112px;resize:vertical;border:1px solid #d5e1dd;border-radius:11px;background:#fbfcfc;padding:12px 13px;color:var(--ink);font:500 12px/1.55 Manrope,"Segoe UI",sans-serif}.forecast-comment-field textarea:focus{outline:0;border-color:#65a491;box-shadow:0 0 0 3px rgba(101,164,145,.13);background:#fff}.forecast-comment-field small{display:block;margin-top:5px;text-align:right;color:var(--muted);font-size:10px}.forecast-comment-field small b{color:var(--green)}
@media(max-width:760px){.forecast-history-btn{width:auto!important;min-width:150px;flex:1 1 150px!important}.forecast-history-modal,.forecast-save-modal{padding:23px 18px}.forecast-history-modal .forecast-history-item span{align-items:flex-start;flex-direction:column;gap:2px}}

/* Compact Erlang C controls. */
#view-erlang{padding-top:18px}#view-erlang .page-heading{margin-bottom:14px}#view-erlang .parameter-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin-bottom:10px}#view-erlang .parameter-card{min-height:96px;padding:11px 14px;border-radius:12px}#view-erlang .parameter-card>div{margin:4px 0 2px}#view-erlang .parameter-card input{font-size:24px;line-height:1.1}#view-erlang .parameter-card small{line-height:1.3}#view-erlang .erlang-summary{grid-template-columns:repeat(4,1fr);gap:0;padding:9px;margin-bottom:10px}#view-erlang .erlang-summary article{padding:7px 18px}#view-erlang .erlang-summary .highlight{padding-inline:18px}
.fte-stage-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:10px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--line);box-shadow:var(--shadow)}.fte-stage-grid article{background:#fff;padding:10px 16px}.fte-stage-grid span,.fte-stage-grid strong,.fte-stage-grid small{display:block}.fte-stage-grid span{color:var(--muted);font-size:9px}.fte-stage-grid strong{font-size:20px;margin:3px 0;color:var(--ink)}.fte-stage-grid small{font-size:8px;color:#8c9995}.fte-stage-grid .final{background:#f2fbc7}.fte-stage-grid .final strong{color:var(--green)}.erlang-model-note{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;margin-bottom:10px;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--line);box-shadow:var(--shadow)}.erlang-model-note>div{min-width:0;background:#fff;padding:10px 14px}.erlang-model-note b,.erlang-model-note span{display:block}.erlang-model-note b{margin-bottom:3px;color:var(--green);font-size:10px}.erlang-model-note span{color:var(--muted);font-size:9px;line-height:1.4}.erlang-detail-table{min-width:620px}.erlang-detail-table td:nth-child(4){background:#eff8f4;color:var(--green)}
.erlang-heatmap-panel{margin-bottom:10px;overflow:hidden}.erlang-heatmap-controls{display:flex;align-items:center;gap:10px}.erlang-heatmap-tabs{flex:0 0 auto}.erlang-heatmap-meta{display:flex;align-items:center;justify-content:space-between;padding:0 20px 10px;color:var(--muted);font-size:10px}.erlang-heatmap-scale{display:grid;grid-template-columns:repeat(5,16px);align-items:center;gap:3px}.erlang-heatmap-scale i{width:16px;height:8px;border-radius:2px}.erlang-heatmap-scale i:nth-child(1){background:#edf5f2}.erlang-heatmap-scale i:nth-child(2){background:#d4e9e2}.erlang-heatmap-scale i:nth-child(3){background:#9dcdbd}.erlang-heatmap-scale i:nth-child(4){background:#55a68d}.erlang-heatmap-scale i:nth-child(5){background:#176b59}.erlang-heatmap-scale b{grid-row:2;font-size:8px;font-weight:600}.erlang-heatmap-scale b:first-of-type{grid-column:1/3;text-align:left}.erlang-heatmap-scale b:last-of-type{grid-column:4/6;text-align:right}.erlang-heatmap-scroll{max-height:535px;overflow:auto;border-top:1px solid var(--line)}.erlang-heatmap-grid{display:grid;grid-template-columns:78px repeat(24,minmax(46px,1fr));min-width:1182px;background:#fff}.erlang-heatmap-grid>button,.erlang-heatmap-grid>div{height:29px;border:0;border-right:1px solid #fff;border-bottom:1px solid #fff;display:grid;place-items:center;font:700 9px Manrope;white-space:nowrap}.erlang-heatmap-corner,.erlang-heatmap-hour{position:sticky;top:0;z-index:4;background:#f3f6f5;color:#6d7a76}.erlang-heatmap-corner{left:0;z-index:6}.erlang-heatmap-day{position:sticky;left:0;z-index:3!important;justify-content:start!important;padding-left:12px;background:#f7f9f8;color:#53645f;cursor:pointer}.erlang-heatmap-day:hover,.erlang-heatmap-day.selected{background:#dff0ea;color:var(--green)}.erlang-heatmap-cell{cursor:pointer;color:#28453d;transition:filter .12s,box-shadow .12s}.erlang-heatmap-cell:hover{filter:brightness(.92);box-shadow:inset 0 0 0 2px #173f36;z-index:2}.erlang-heatmap-cell.selected-day{border-bottom-color:#c2d9d1}.heat-level-0{background:#f4f7f6}.heat-level-1{background:#e6f1ed}.heat-level-2{background:#cce5dc}.heat-level-3{background:#9acdbc}.heat-level-4{background:#55a68d;color:#103d32}.heat-level-5{background:#176b59;color:#fff}.erlang-detail-panel{scroll-margin-top:86px}
@media(max-width:1300px){#view-erlang .parameter-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){#view-erlang .parameter-grid,#view-erlang .erlang-summary,.fte-stage-grid{grid-template-columns:1fr 1fr}}
@media(max-width:900px){.erlang-model-note{grid-template-columns:1fr 1fr}}
@media(max-width:760px){.erlang-heatmap-panel .panel-head{align-items:stretch;flex-direction:column}.erlang-heatmap-controls{align-items:stretch;flex-direction:column}.erlang-heatmap-tabs button{flex:1}.erlang-heatmap-meta{padding-inline:14px}}
@media(max-width:450px){#view-erlang .parameter-grid,#view-erlang .erlang-summary,.fte-stage-grid,.erlang-model-note{grid-template-columns:1fr}}

/* Solver month, HR hiring summary, generated roster and monthly delta. */
.solver-heading-actions{align-items:flex-end}.solver-month-control{display:flex;flex-direction:column;gap:4px}.solver-month-control>span{color:var(--muted);font-size:9px;font-weight:700}.solver-month-control select{min-width:145px;height:38px}.solver-delta-panel,.hr-summary-panel,.solver-roster-panel{margin-top:14px}.solver-delta-legend{display:flex;gap:12px;color:var(--muted);font-size:9px}.solver-delta-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:4px;vertical-align:-1px}.solver-delta-legend .deficit{background:#f5b5b2}.solver-delta-legend .balance{background:#b9efd0}.solver-delta-legend .surplus{background:#b9d7f6}.solver-month-delta{max-height:610px;overflow:auto;border-top:1px solid var(--line)}.solver-delta-grid{display:grid;min-width:max-content}.solver-delta-grid>div{height:29px;display:flex;align-items:center;justify-content:center;border-right:1px solid rgba(255,255,255,.8);border-bottom:1px solid rgba(255,255,255,.8);font:700 9px Manrope}.solver-delta-corner,.solver-delta-date{position:sticky;top:0;z-index:4;background:#f3f6f5;color:#687671}.solver-delta-corner{left:0;z-index:6}.solver-delta-date{flex-direction:column;line-height:1.05}.solver-delta-date small{font-size:7px;color:#94a09c}.solver-delta-hour{position:sticky;left:0;z-index:3;background:#f7f9f8;color:#6c7975}.solver-delta-cell.deficit{background:#f7c3c1;color:#9f302b}.solver-delta-cell.balance{background:#bcefd2;color:#176244}.solver-delta-cell.surplus{background:#bfdaf7;color:#245a96}.solver-placeholder{padding:44px 20px;text-align:center;color:var(--muted);font-size:11px}.hr-summary-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border-block:1px solid var(--line)}.hr-summary-kpis article{padding:13px 18px;background:#f9fbfa}.hr-summary-kpis span,.hr-summary-kpis strong,.hr-summary-kpis small{display:block}.hr-summary-kpis span{font-size:9px;color:var(--muted)}.hr-summary-kpis strong{margin:4px 0 2px;font-size:20px}.hr-summary-kpis small{font-size:8px;color:#8b9894}.hr-summary-kpis strong.danger{color:#c64f49}.hr-summary-scroll{max-height:320px}.hr-summary-table .hr-people{display:inline-grid;place-items:center;min-width:52px;padding:5px;border-radius:8px;background:#eef0ff;color:#4e53d8}.hr-summary-table .hr-total td{background:#f2f7f5}.hr-summary-text{margin:14px 20px 18px;max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:10px;background:#f7f9fb;padding:13px;color:#334b63;font:500 10px/1.55 Consolas,monospace;white-space:pre}.solver-roster-scroll{max-height:590px;overflow:auto;border-top:1px solid var(--line)}.solver-roster-table{border-collapse:separate;border-spacing:0;min-width:max-content;width:100%;font-size:9px}.solver-roster-table th,.solver-roster-table td{height:31px;min-width:58px;padding:5px 7px;border-right:1px solid #e2e8ee;border-bottom:1px solid #e2e8ee;text-align:center;white-space:nowrap}.solver-roster-table th{position:sticky;top:0;z-index:4;background:#f4f7fa;color:#66788f;font-size:8px}.solver-roster-table th b,.solver-roster-table th span{display:block}.solver-roster-table th span{margin-top:2px}.solver-roster-table th:nth-child(1),.solver-roster-table td:nth-child(1){position:sticky;left:0;z-index:3;min-width:205px;text-align:left;background:#fff}.solver-roster-table th:nth-child(2),.solver-roster-table td:nth-child(2){position:sticky;left:205px;z-index:3;min-width:96px;background:#fff}.solver-roster-table th:nth-child(3),.solver-roster-table td:nth-child(3){position:sticky;left:301px;z-index:3;min-width:58px;background:#fff}.solver-roster-table th:nth-child(4),.solver-roster-table td:nth-child(4){position:sticky;left:359px;z-index:3;min-width:68px;background:#fff}.solver-roster-table th:nth-child(-n+4){z-index:6;background:#f4f7fa}.solver-roster-table td.roster-work{background:#eef1ff;color:#5056d8;font-weight:800}.solver-roster-table td.roster-off{background:#fafbfb;color:#a5aeab}.solver-roster-table tbody tr:hover td{filter:brightness(.98)}
@media(max-width:900px){.solver-heading-actions{align-items:stretch;width:100%;flex-wrap:wrap}.solver-month-control{flex:1}.hr-summary-kpis{grid-template-columns:1fr 1fr}.solver-delta-legend{flex-wrap:wrap}}
@media(max-width:520px){.hr-summary-kpis{grid-template-columns:1fr}.solver-delta-panel .panel-head{flex-direction:column}.solver-roster-table th:nth-child(n),.solver-roster-table td:nth-child(n){position:static}.solver-roster-table th{position:sticky;top:0}}

/* Employee profiles, vacations and editable team registry. */
.employee-modal{max-width:820px;padding:26px}.employee-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px 14px}.employee-form-grid label>span,.vacation-interval-row label>span{display:block;margin-bottom:6px;color:#40534d;font-size:10px;font-weight:800}.employee-form-grid input,.employee-form-grid select,.vacation-interval-row input{width:100%;height:40px;border:1px solid #d7e2de;border-radius:9px;background:#fbfcfc;padding:0 11px;color:var(--ink);font:600 11px Manrope}.employee-form-grid input:focus,.employee-form-grid select:focus,.vacation-interval-row input:focus{outline:0;border-color:#65a491;box-shadow:0 0 0 3px rgba(101,164,145,.12);background:#fff}.employee-form-grid label>small{display:block;margin-top:5px;color:var(--muted);font-size:9px}.employee-field-wide{grid-column:1/-1}.vacation-editor-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:20px 0 9px}.vacation-editor-head b,.vacation-editor-head small{display:block}.vacation-editor-head b{font-size:12px}.vacation-editor-head small{margin-top:3px;color:var(--muted);font-size:9px}.vacation-interval-list{display:flex;max-height:210px;overflow:auto;flex-direction:column;gap:8px}.vacation-interval-row{display:grid;grid-template-columns:1fr 22px 1fr 36px;align-items:end;gap:8px;border:1px solid #e3eae7;border-radius:10px;background:#f8faf9;padding:9px}.vacation-arrow{align-self:center;margin-top:18px;text-align:center;color:#7b8a85}.vacation-interval-row>button{height:40px;border:0;border-radius:8px;background:#f8e9e7;color:#b94f48;font-size:19px;cursor:pointer}.vacation-interval-row>button:hover{background:#f3d8d5}.vacation-empty{border:1px dashed #cfded9;border-radius:10px;padding:18px;text-align:center;color:var(--muted);font-size:10px}.team-profile-scroll{overflow:auto}.team-profile-table{min-width:1280px}.team-profile-table td{vertical-align:middle}.team-profile-table td:nth-child(1){min-width:220px}.team-profile-table td:nth-child(2){min-width:145px}.team-profile-table td:nth-child(5){min-width:180px}.team-profile-table td:nth-child(6){min-width:180px}.team-profile-table td:nth-child(7){min-width:210px}.profile-meta{display:block;margin-top:4px;color:var(--muted);font-size:8px;font-weight:500}.work-pattern-tag{display:inline-grid;min-width:45px;place-items:center;border-radius:8px;background:#edf4f1;padding:5px 8px;color:var(--green);font-weight:800}.profile-skills,.profile-vacations{display:flex;flex-wrap:wrap;gap:4px}.profile-skills i,.profile-vacations i{font-style:normal}.profile-vacations i{border-radius:7px;background:#fff2df;padding:5px 7px;color:#8c591f;font-size:8px;white-space:nowrap}.team-edit-btn{height:32px;border:1px solid #cfe0da;border-radius:8px;background:#edf5f2;padding:0 11px;color:var(--green);font:800 9px Manrope;cursor:pointer}.team-edit-btn:hover{border-color:#70a997;background:#dff0ea}body.readonly #addTeamEmployee,body.readonly .team-edit-btn{display:none!important}
.employee-shift-field>span{display:block;margin-bottom:6px;color:#40534d;font-size:10px;font-weight:800}.employee-shift-times{display:grid;grid-template-columns:1fr 18px 1fr;align-items:end;gap:6px}.employee-shift-times label small{display:block;margin-bottom:4px;color:var(--muted);font-size:8px}.employee-shift-times>i{align-self:center;margin-top:15px;color:#7b8a85;font-style:normal;text-align:center}
.employee-modal{max-height:calc(100vh - 30px);overflow:auto}.employee-interval-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 8px}.employee-interval-head b,.employee-interval-head small{display:block}.employee-interval-head b{font-size:11px}.employee-interval-head small{margin-top:2px;color:var(--muted);font-size:8px}.employee-break-interval-list{display:flex;max-height:150px;overflow:auto;flex-direction:column;gap:7px}.employee-break-interval-row{display:grid;grid-template-columns:1fr 22px 1fr 36px;align-items:end;gap:8px;border:1px solid #e3eae7;border-radius:10px;background:#f8faf9;padding:8px}.employee-break-interval-row>span{align-self:center;margin-top:18px;text-align:center;color:#7b8a85}.employee-break-interval-row>button{height:40px;border:0;border-radius:8px;background:#f8e9e7;color:#b94f48;font-size:19px;cursor:pointer}.employee-break-interval-row>button:hover{background:#f3d8d5}.profile-break-times{display:block;margin-top:5px;color:#8a6b42;font-size:8px;font-weight:700;white-space:normal}.employee-break-editor{border-top:1px solid #e8eeeb;padding-top:10px}
@media(max-width:700px){.employee-modal{padding:22px 16px}.employee-form-grid{grid-template-columns:1fr}.employee-field-wide{grid-column:auto}.vacation-interval-row,.employee-break-interval-row{grid-template-columns:1fr 34px}.vacation-arrow,.employee-break-interval-row>span{display:none}.vacation-interval-row>button,.employee-break-interval-row>button{grid-column:2;grid-row:1/3;align-self:end}.vacation-editor-head,.employee-interval-head{align-items:flex-start;flex-direction:column}}

/* Access roles, plan/fact controls and operator personal account. */
.operator-profile-nav[hidden],.nav-item[hidden]{display:none!important}.schedule-control-groups{display:flex;align-items:center;gap:9px}.schedule-kind-tabs{background:#dce8e4}.schedule-kind-tabs button.active{background:var(--green);color:#fff}.schedule-month-control,.operator-profile-month{display:flex;align-items:center;gap:8px}.schedule-month-control>span,.operator-profile-month>span{color:var(--muted);font-size:9px;font-weight:800}.schedule-month-control select,.operator-profile-month select{min-width:150px;height:36px}.access-role-tag{display:inline-flex;border-radius:8px;padding:5px 8px;font-size:8px;font-weight:800;white-space:nowrap}.access-role-tag.role-operator{background:#edf4f1;color:#236855}.access-role-tag.role-supervisor{background:#eaf0fb;color:#4464a5}.access-role-tag.role-wfm{background:#f0f8c9;color:#4f6818}body.supervisor .export-btn{display:flex!important}.operator-profile-grid{display:grid;grid-template-columns:minmax(340px,1.2fr) 2fr;gap:14px;margin-bottom:14px}.operator-identity-card{display:flex;align-items:center;gap:20px;padding:22px}.operator-avatar-large{width:84px;height:84px;flex:0 0 84px;border-radius:24px;display:grid;place-items:center;font-size:36px;font-weight:800}.operator-identity-card h2{margin:4px 0;font-size:21px}.operator-identity-card p{margin:0;color:var(--muted);font-size:10px}.operator-avatar-picker{margin-top:15px}.operator-avatar-picker>b{display:block;margin-bottom:7px;font-size:9px}.operator-avatar-picker>div{display:flex;flex-wrap:wrap;gap:5px}.operator-avatar-picker button{width:34px;height:34px;border:1px solid var(--line);border-radius:10px;background:#f7faf9;font-size:19px;cursor:pointer}.operator-avatar-picker button.selected{border-color:var(--green);background:#dff0ea;box-shadow:0 0 0 2px rgba(17,92,77,.12)}.operator-profile-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.operator-profile-kpis article{border:1px solid var(--line);border-radius:14px;background:#fff;padding:17px;box-shadow:var(--shadow)}.operator-profile-kpis span,.operator-profile-kpis strong,.operator-profile-kpis small{display:block}.operator-profile-kpis span{color:var(--muted);font-size:9px}.operator-profile-kpis strong{margin:8px 0 5px;font-size:19px}.operator-profile-kpis small{color:#84918d;font-size:8px;line-height:1.5}.operator-break-card{margin-bottom:14px}.operator-break-list{display:flex;flex-wrap:wrap;gap:8px;padding:0 20px 18px}.operator-break-list span{border-radius:9px;background:#fff2df;padding:8px 11px;color:#85551f;font-size:10px;font-weight:800}.operator-break-list .empty{background:#f3f6f5;color:var(--muted)}.operator-calendar-card{overflow:hidden}.operator-month-calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--line);border-top:1px solid var(--line)}.operator-day{min-height:92px;background:#fff;padding:10px}.operator-day span,.operator-day b,.operator-day small{display:block}.operator-day span{color:var(--muted);font-size:8px}.operator-day b{margin:7px 0 4px;font-size:10px}.operator-day small{color:#82908b;font-size:7px;line-height:1.45}.operator-day.work{background:#f3faf7}.operator-day.vacation{background:#f2f2f2}.operator-day.vacation b{color:#555}.operator-day.off{background:#fafbfb}.operator-day.sick{background:#fff3f2}.operator-day.sick b{color:#b44f49}
#view-operator-profile .operator-break-card{min-height:0!important}
@media(max-width:1000px){.schedule-controls{align-items:flex-start;flex-wrap:wrap}.schedule-control-groups{width:100%;justify-content:space-between}.operator-profile-grid{grid-template-columns:1fr}.operator-month-calendar{grid-template-columns:repeat(4,1fr)}}
@media(max-width:650px){.schedule-control-groups{align-items:stretch;flex-direction:column}.schedule-month-control{width:100%;justify-content:space-between}.operator-identity-card{align-items:flex-start;flex-direction:column}.operator-profile-kpis{grid-template-columns:1fr}.operator-month-calendar{grid-template-columns:1fr 1fr}}

/* Unified monthly timesheet: approved plan and editable fact in one cell. */
.plan-fact-legend{align-items:center}.plan-fact-legend i{display:inline-grid;place-items:center;width:18px;height:18px;margin-right:5px;border-radius:5px;font-style:normal;font-size:8px;font-weight:900}.plan-fact-legend .plan-mark{background:#eef2f1;color:#65736f}.plan-fact-legend .fact-mark{background:#e8efff;color:#4264b4}.plan-fact-legend .variance-mark{background:#fff0dc;border:1px solid #e7a352}.combined-shift{gap:2px;padding:5px 6px;min-height:68px}.combined-shift .plan-line,.combined-shift .fact-line{display:grid;grid-template-columns:15px 1fr auto;align-items:center;gap:3px;width:100%;white-space:nowrap}.combined-shift .plan-line i,.combined-shift .fact-line i{display:grid;place-items:center;width:15px;height:15px;border-radius:4px;font-style:normal;font-size:7px;font-weight:900}.combined-shift .plan-line i{background:#e8eeec;color:#687570}.combined-shift .fact-line i{background:#dce7ff;color:#365cac}.combined-shift .plan-line b{color:#75817d;font-size:9px;font-weight:700}.combined-shift .fact-line b{color:#163f36;font-size:10px;font-weight:900}.combined-shift>small{align-self:flex-end;border-radius:4px;background:#fff0dc;padding:1px 4px;color:#a35f16;font-size:6px;font-weight:800}.combined-shift.has-variance{border-color:#e7a352;background:#fff9f0;box-shadow:inset 3px 0 #ee9e43}.combined-shift.has-variance:hover{border-color:#d88931;background:#fff4e4}.combined-shift.day-off{align-items:stretch;text-align:left}.combined-shift.day-off .plan-line,.combined-shift.day-off .fact-line{justify-content:start}.timesheet-total{flex-direction:column;gap:4px}.timesheet-total span{color:#71807b;font-size:9px;font-weight:700}.timesheet-total b{color:#315da9;font-size:11px}.schedule-row.footer>.schedule-cell{flex-direction:column;gap:2px}.schedule-row.footer>.schedule-cell span{color:#a9c3bb;font-size:8px}.schedule-row.footer>.schedule-cell b{font-size:9px}.schedule-row.footer>.employee-cell{align-items:flex-start;justify-content:center}.schedule-row.footer>.employee-cell{color:#fff}.schedule-row.footer>.employee-cell b{color:inherit}.schedule-row.footer>.employee-cell span{color:inherit}.schedule-row.footer>.employee-cell{flex-direction:row}
body.operator .schedule-stats{display:grid!important}body.operator .schedule-controls .segmented{display:flex!important}body.operator .schedule-legend{display:flex!important}body.operator .combined-shift{cursor:default}body.operator .combined-shift:hover{border-color:#d2e4de;background:#edf6f3}body.operator .combined-shift.has-variance:hover{border-color:#e7a352;background:#fff9f0}body.operator .timeline-shift,body.operator .timeline-break{cursor:default}
.date-header.future-date{background:#fbfcfc!important}.date-header.future-date b{color:#64736e!important}.date-header.today-date{background:#e8f5ef!important;box-shadow:inset 0 -3px #2a8b6e}.date-header.today-date small{color:#1c765c;font-weight:900}.future-schedule-cell{background:#fcfdfd}.future-plan-shift{position:relative;min-height:68px;align-items:center;justify-content:center;background:#f2f7f5;border-color:#dce8e4}.future-plan-shift .plan-only-line{display:grid;grid-template-columns:17px 1fr;align-items:center;gap:4px;white-space:nowrap}.future-plan-shift .plan-only-line i{display:grid;place-items:center;width:17px;height:17px;border-radius:5px;background:#dce9e4;color:#526b63;font-style:normal;font-size:8px;font-weight:900}.future-plan-shift .plan-only-line b{color:#204f43;font-size:10px}.future-plan-shift>.break-dot{position:absolute;right:7px;top:7px}.future-total span{display:none}.future-total b{color:#fff!important}.schedule-row.footer .future-total{background:#1b493f}

/* Workspace settings. */
#view-settings{max-width:1500px}.settings-tabs{display:flex;gap:7px;margin-bottom:14px;padding:5px;border:1px solid var(--line);border-radius:13px;background:#e9efed;width:max-content;max-width:100%;overflow:auto}.settings-tabs button{height:40px;border:0;border-radius:9px;background:transparent;padding:0 15px;display:flex;align-items:center;gap:8px;color:#66746f;font:800 10px Manrope;white-space:nowrap;cursor:pointer}.settings-tabs button svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8}.settings-tabs button.active{background:#fff;color:var(--green);box-shadow:0 3px 10px rgba(22,59,50,.08)}.settings-content .panel{min-height:0}.settings-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.settings-summary article{padding:16px 18px;border:1px solid var(--line);border-radius:13px;background:#fff;box-shadow:var(--shadow)}.settings-summary span,.settings-summary strong,.settings-summary small{display:block}.settings-summary span{color:var(--muted);font-size:10px}.settings-summary strong{margin:5px 0 2px;font-size:24px}.settings-summary small{color:#8d9995;font-size:9px}.settings-summary .settings-ok{color:#208561;font-size:20px}.settings-section{overflow:hidden}.settings-team-list{border-top:1px solid var(--line)}.settings-team-row{display:grid;grid-template-columns:38px 1.15fr 1fr 1.25fr 105px 34px;gap:10px;align-items:end;padding:12px 18px;border-bottom:1px solid #edf1ef}.settings-team-row:last-child{border-bottom:0}.settings-team-mark{align-self:center;width:36px;height:36px;border-radius:10px;background:#dfeee9;color:var(--green);display:grid;place-items:center;font-size:9px;font-weight:900}.settings-team-row label small{display:block;margin-bottom:5px;color:#84918d;font-size:8px;font-weight:700}.settings-team-row input{width:100%;height:37px;border:1px solid #dbe5e1;border-radius:8px;background:#fbfcfc;padding:0 10px;color:var(--ink);font:700 10px Manrope}.settings-team-row input:focus,.holiday-add-row input:focus{outline:0;border-color:#6ca793;box-shadow:0 0 0 3px rgba(75,146,121,.1);background:#fff}.settings-delete-btn,.holiday-list button{width:32px;height:32px;border:0;border-radius:8px;background:#f8e9e7;color:#b95049;font-size:18px;cursor:pointer}.settings-saved-badge{padding:6px 9px;border-radius:14px;background:#e5f3ed;color:#28765f;font-size:8px;font-weight:800}.settings-access-scroll{overflow:auto;border-top:1px solid var(--line)}.settings-access-table{width:100%;min-width:760px;border-collapse:collapse}.settings-access-table th,.settings-access-table td{padding:12px 18px;border-bottom:1px solid #edf1ef;text-align:left}.settings-access-table th{background:#f7f9f8;color:#7d8c87;font-size:8px;text-transform:uppercase;letter-spacing:.4px}.settings-access-table th:not(:first-child),.settings-access-table td:not(:first-child){text-align:center}.settings-access-table td:first-child{min-width:230px}.settings-access-table td b,.settings-access-table td small{display:block}.settings-access-table td b{font-size:10px}.settings-access-table td small{margin-top:3px;color:#8b9894;font-size:8px}.permission-toggle{min-width:108px;border:0;background:transparent;display:inline-flex;align-items:center;gap:7px;color:#8d9995;font:700 9px Manrope;cursor:pointer}.permission-toggle i{position:relative;width:31px;height:18px;border-radius:18px;background:#dce3e0;transition:.2s}.permission-toggle i:after{content:"";position:absolute;left:3px;top:3px;width:12px;height:12px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.18);transition:.2s}.permission-toggle.enabled{color:#24765e}.permission-toggle.enabled i{background:#58ad8d}.permission-toggle.enabled i:after{transform:translateX(13px)}.permission-toggle.locked{opacity:.72;cursor:not-allowed}.settings-access-notes{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}.settings-access-notes article{border:1px solid var(--line);border-radius:12px;background:#f8faf9;padding:14px}.settings-access-notes b{font-size:10px}.settings-access-notes p{margin:4px 0 0;color:var(--muted);font-size:9px;line-height:1.55}.settings-calendar-layout{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(340px,.85fr);gap:14px}.production-month-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;padding:3px 18px 18px}.production-month{position:relative;border:1px solid #e0e8e5;border-radius:11px;background:#f9fbfa;padding:13px}.production-month.active{border-color:#71ad98;background:#edf7f3;box-shadow:0 0 0 2px rgba(55,139,109,.08)}.production-month span,.production-month strong,.production-month small{display:block}.production-month span{color:#5f6f69;font-size:9px;font-weight:800}.production-month strong{margin:5px 0 2px;font-size:22px}.production-month small{color:#8a9793;font-size:8px}.production-month i{position:absolute;right:8px;top:8px;border-radius:8px;background:#fff0dc;padding:3px 5px;color:#9a5d1d;font-size:7px;font-style:normal;font-weight:800}.settings-holidays{overflow:hidden}.holiday-add-row{display:grid;grid-template-columns:135px 1fr auto;gap:7px;padding:0 16px 12px}.holiday-add-row input{min-width:0;height:37px;border:1px solid #dbe5e1;border-radius:8px;background:#fbfcfc;padding:0 9px;font:600 9px Manrope}.holiday-list{max-height:370px;overflow:auto;border-top:1px solid var(--line)}.holiday-list>div{display:grid;grid-template-columns:86px 1fr 32px;gap:9px;align-items:center;padding:9px 16px;border-bottom:1px solid #edf1ef}.holiday-list time{color:var(--green);font-size:9px;font-weight:900}.holiday-list span{font-size:9px}.holiday-list button{width:28px;height:28px}.integration-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.integration-card{position:relative;padding:20px}.integration-mark{width:46px;height:46px;border-radius:13px;background:#e8eeec;color:#5d6b67;display:grid;place-items:center;font-size:10px;font-weight:900}.integration-card.connected .integration-mark{background:#dff1ea;color:#1f785e}.integration-status{position:absolute;right:18px;top:18px;border-radius:15px;background:#f0f3f2;padding:5px 8px;color:#83908c;font-size:8px;font-weight:800}.integration-status i{display:inline-block;width:6px;height:6px;margin-right:5px;border-radius:50%;background:#a5afac}.integration-card.connected .integration-status{background:#e5f4ee;color:#25785f}.integration-card.connected .integration-status i{background:#37a77d}.integration-card h2{margin:14px 0 4px;font-size:14px}.integration-card p{min-height:34px;margin:0 0 16px;color:var(--muted);font-size:9px;line-height:1.55}.integration-card>div:last-child{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:12px}.integration-card>div:last-child small{color:#8a9793;font-size:8px}.integration-card button{flex:0 0 auto}
@media(max-width:1050px){.settings-team-row{grid-template-columns:38px 1fr 1fr}.settings-team-row label:nth-of-type(3){grid-column:2}.settings-members-field{grid-column:3}.settings-delete-btn{grid-column:3;grid-row:2;justify-self:end}.settings-calendar-layout{grid-template-columns:1fr}.production-month-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.settings-summary,.settings-access-notes,.integration-grid{grid-template-columns:1fr}.settings-team-row{grid-template-columns:36px 1fr 34px}.settings-team-row label{grid-column:2}.settings-team-row label:nth-of-type(3),.settings-members-field{grid-column:2}.settings-delete-btn{grid-column:3;grid-row:1}.production-month-grid{grid-template-columns:1fr 1fr}.holiday-add-row{grid-template-columns:1fr}.integration-card>div:last-child{align-items:flex-start;flex-direction:column}}

/* Direct manipulation of daily shifts and breaks. */
.timeline-shift{overflow:visible;cursor:grab;touch-action:none;user-select:none;z-index:1;transition:box-shadow .15s,filter .15s}.timeline-shift:hover{box-shadow:0 5px 14px rgba(20,77,64,.18),inset 0 0 0 1px rgba(17,92,77,.18)}.timeline-shift.dragging{cursor:grabbing;z-index:8;filter:saturate(1.15);box-shadow:0 9px 22px rgba(20,77,64,.3),inset 0 0 0 2px #19745f}.timeline-shift>b,.timeline-shift>small{pointer-events:none}.timeline-shift .timeline-break{position:absolute;top:0;height:100%;display:block;background:#efb66f;opacity:.92;cursor:ew-resize;touch-action:none;z-index:3;transition:top .14s,height .14s,background .14s,box-shadow .14s,opacity .14s}.timeline-shift .timeline-break:hover,.timeline-shift .timeline-break.dragging-break{top:-7px;height:47px;background:#e88d32;opacity:1;box-shadow:0 0 0 2px #fff,0 6px 16px rgba(159,84,18,.35);z-index:10}.timeline-shift .timeline-break::after{content:'Перерыв ' attr(data-break-label);position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);display:none;min-width:max-content;border-radius:6px;background:#8d4d18;color:#fff;padding:4px 7px;font:800 8px Manrope;white-space:nowrap;pointer-events:none}.timeline-shift .timeline-break:hover::after,.timeline-shift .timeline-break.dragging-break::after{display:block}.timeline-track:has(.timeline-shift.dragging){background-color:#f4faf7}

/* Premium Unitiki blue theme. */
:root{--ink:#0d2148;--muted:#65769a;--line:#dce6f3;--bg:#edf4fb;--panel:rgba(255,255,255,.94);--green:#1747ad;--green-2:#0b84c9;--mint:#e4f3ff;--lime:#ffdb38;--orange:#ffad32;--red:#ef5b70;--blue:#6657df;--shadow:0 16px 42px rgba(21,59,128,.09);--radius:17px}html{background:#edf4fb}body{background:radial-gradient(circle at 78% 5%,rgba(31,167,220,.12),transparent 27%),radial-gradient(circle at 34% 92%,rgba(72,91,210,.09),transparent 30%),linear-gradient(135deg,#f7faff 0%,#eef5fc 55%,#eaf3fb 100%);background-attachment:fixed;color:var(--ink)}body:before{content:"";position:fixed;right:-120px;top:90px;width:330px;height:330px;border-radius:50%;background:rgba(19,159,210,.10);filter:blur(70px);pointer-events:none;z-index:-1}.sidebar{background:linear-gradient(165deg,#163f9e 0%,#10347f 48%,#0a2867 100%);box-shadow:12px 0 38px rgba(11,42,106,.18);border-right:1px solid rgba(255,255,255,.08)}.sidebar:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 20% 3%,rgba(50,202,232,.18),transparent 23%),linear-gradient(120deg,transparent 65%,rgba(255,255,255,.035));pointer-events:none}.sidebar>*{position:relative}.brand-mark{background:linear-gradient(145deg,#ffe75a,#ffc91f);box-shadow:0 9px 24px rgba(255,209,35,.25)}.brand-mark span{background:#123c94}.brand small{color:#9ddff1}.nav-item{color:#b9cae9;transition:color .2s,background .2s,transform .2s,box-shadow .2s}.nav-item:hover{color:#fff;background:rgba(255,255,255,.09);transform:translateX(3px)}.nav-item.active{color:#15306e;background:linear-gradient(135deg,#ffe66a,#ffd329);box-shadow:0 10px 24px rgba(255,210,27,.24),inset 0 1px rgba(255,255,255,.55)}.nav-pill{background:rgba(72,207,230,.2);color:#c8f6ff}.nav-item.active .nav-pill{background:rgba(19,54,130,.12);color:#16377e}.spark{background:#5de6de;box-shadow:0 0 0 4px rgba(93,230,222,.16),0 0 16px rgba(93,230,222,.8)}.side-user{border-color:rgba(198,220,255,.17)}.side-user small{color:#9db8e4}.side-user>span{color:#7fa1d7}.topbar{background:rgba(255,255,255,.82);border-color:rgba(185,204,230,.65);box-shadow:0 8px 28px rgba(28,64,126,.06);backdrop-filter:blur(18px) saturate(1.25)}.topbar:after{content:"";position:absolute;inset:auto 0 -1px;height:1px;background:linear-gradient(90deg,transparent,#62c9ea,transparent);opacity:.45}.period-switch button,.week-nav button,.calendar-head button,.icon-btn{border-color:#d8e4f2;background:rgba(255,255,255,.9);box-shadow:0 4px 13px rgba(34,74,141,.06);transition:.2s}.period-switch button:hover,.week-nav button:hover,.calendar-head button:hover,.icon-btn:hover{border-color:#8dcce7;color:#0d75bd;transform:translateY(-1px);box-shadow:0 8px 18px rgba(24,106,173,.12)}.icon-btn i{background:#ffd128;box-shadow:0 0 0 3px rgba(255,209,40,.18);animation:premiumPulse 2.2s ease-in-out infinite}.view{position:relative}.view.active{animation:premiumViewIn .42s cubic-bezier(.2,.75,.25,1) both}.view.active>.page-heading{animation:premiumHeadingIn .48s cubic-bezier(.2,.75,.25,1) both}.page-heading h1{color:#0a214e;letter-spacing:-1px}.eyebrow,.quick-kicker{color:#0b82c6!important}.status-chip{background:rgba(255,255,255,.82);border-color:#d7e5f3;box-shadow:0 8px 22px rgba(27,67,133,.07)}.status-chip i{background:#23c7b1;box-shadow:0 0 0 4px rgba(35,199,177,.13)}.panel,.kpi-card,.parameter-card,.report-card,.settings-summary article,.operator-profile-kpis article{background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(249,252,255,.91));border-color:rgba(205,220,239,.9);box-shadow:0 16px 44px rgba(24,61,124,.085),inset 0 1px rgba(255,255,255,.9)}.kpi-card,.parameter-card,.report-card,.settings-summary article,.operator-profile-kpis article,.integration-card,.production-month{transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease}.kpi-card:hover,.parameter-card:hover,.report-card:hover,.settings-summary article:hover,.operator-profile-kpis article:hover,.integration-card:hover,.production-month:hover{transform:translateY(-3px);border-color:#b6d6ed;box-shadow:0 22px 48px rgba(27,70,142,.13),inset 0 1px #fff}.kpi-card.accent{position:relative;overflow:hidden;background:linear-gradient(135deg,#194bb6 0%,#097fc6 65%,#12a7cf 100%);border-color:transparent;box-shadow:0 19px 42px rgba(19,82,177,.25)}.kpi-card.accent:after{content:"";position:absolute;width:160px;height:160px;border-radius:50%;right:-65px;top:-95px;background:rgba(255,255,255,.16);filter:blur(2px)}.accent .kpi-top>span,.accent>small{color:#c4e6f7}.micro-bars i{background:rgba(111,227,237,.32)}.micro-bars i:last-child,.micro-bars i:nth-last-child(2){background:#ffe252;box-shadow:0 0 12px rgba(255,226,82,.38)}.primary-btn,.export-btn{position:relative;overflow:hidden;color:#fff;background:linear-gradient(135deg,#1764c9 0%,#0b89ca 100%);box-shadow:0 9px 22px rgba(18,91,183,.18);transition:transform .2s,box-shadow .2s,filter .2s}.primary-btn:before,.export-btn:before{content:"";position:absolute;inset:0;transform:translateX(-120%);background:linear-gradient(110deg,transparent,rgba(255,255,255,.28),transparent);transition:transform .55s}.primary-btn:hover,.export-btn:hover{background:linear-gradient(135deg,#1b6fd8,#0896d4);transform:translateY(-2px);box-shadow:0 14px 28px rgba(18,91,183,.28);filter:saturate(1.06)}.primary-btn:hover:before,.export-btn:hover:before{transform:translateX(120%)}.primary-btn:active,.export-btn:active,.soft-btn:active{transform:translateY(0) scale(.98)}.soft-btn,.upload-btn{color:#144caa;background:linear-gradient(145deg,#f3f8ff,#e9f2fb);border-color:#cfdeef;transition:transform .2s,border-color .2s,box-shadow .2s}.soft-btn:hover,.upload-btn:hover{border-color:#8fc5e5;box-shadow:0 8px 18px rgba(29,91,164,.11);transform:translateY(-1px)}.select-control,.role-switch select,.legend select,.dashboard-month-control select,.solver-settings select,.solver-settings input[type=number]{border-color:#d4e1f0;background:#fbfdff;color:#173160;box-shadow:inset 0 1px 2px rgba(38,73,126,.03)}input:focus,select:focus{border-color:#48a9d5!important;box-shadow:0 0 0 4px rgba(39,155,207,.11)!important}.segmented,.settings-tabs{background:#e7eef8;border-color:#d5e2f1}.segmented button.active,.settings-tabs button.active{color:#1549ab;background:#fff;box-shadow:0 5px 14px rgba(28,71,143,.11)}.chart-tooltip,.toast{background:linear-gradient(145deg,#173f9e,#0b2e78);box-shadow:0 16px 35px rgba(11,43,111,.28)}.toast span{background:#ffe047;color:#153277}.data-table th,.team-table th,.template-table th,.settings-access-table th,.schedule-row.header .schedule-cell{background:#f3f7fc;color:#6e80a2;border-color:#dce6f3}.data-table tr:hover td,.team-table tr:hover td{background:#f5f9ff}.table-scroll,.schedule-scroll,.solver-roster-scroll,.operator-timelines{scrollbar-color:#98b7dd #eaf0f7;scrollbar-width:thin}.erlang-summary{background:linear-gradient(125deg,#173f9f,#0c69ba 64%,#0c8fc4);box-shadow:0 18px 38px rgba(17,74,162,.22)}.erlang-summary .highlight{background:linear-gradient(135deg,#ffe762,#ffd22b);color:#17326f;box-shadow:0 8px 22px rgba(255,209,35,.24)}.erlang-summary .highlight span{color:#6b5915}.sum-badge,.settings-saved-badge{background:#e1f5fb;color:#0877b2}.library-badge{border-color:#cae3f1;background:#f3fbff;color:#315d91}.library-badge i{background:#28c3d2;box-shadow:0 0 0 3px rgba(40,195,210,.14)}.solver-status span{background:#e5f4fb;color:#176ba4}.solver-hour .need-bar{background:#dce8f5}.shift-coverage i{background:#19a8c9}.schedule-row.footer .schedule-cell{background:linear-gradient(145deg,#153f9d,#0f327d);border-color:rgba(255,255,255,.1)}.schedule-row.footer .future-total{background:#123987}.timesheet-total{background:#f4f8fd;color:#154aac}.timesheet-total b{color:#365fc6}.shift-chip{border-color:#d1e1ef;background:#eef6fc;color:#17508a}.shift-chip:hover{border-color:#69b5d8;background:#e7f5fd}.combined-shift .plan-line i{background:#e8eef6;color:#627393}.combined-shift .fact-line i{background:#dce6ff;color:#3558bd}.combined-shift .fact-line b{color:#14366f}.combined-shift.has-variance{border-color:#efb352;background:#fff9ed;box-shadow:inset 3px 0 #ffb332}.future-plan-shift{background:#eff6fc;border-color:#d6e4f0}.future-plan-shift .plan-only-line i{background:#dbe9f4;color:#3f668d}.future-plan-shift .plan-only-line b{color:#174371}.date-header.today-date{background:#e1f4ff!important;box-shadow:inset 0 -3px #138ac6}.date-header.today-date small{color:#0878b5}.coverage-under{background:#ffe0e5}.coverage-ok{background:#ddf4f8}.coverage-over{background:#fff0d2}.schedule-stats article{background:rgba(255,255,255,.91);border-color:#d5e3f1;box-shadow:0 10px 24px rgba(26,67,133,.06)}.timeline-shift{background:linear-gradient(135deg,#bfeaf3,#b9d9fa);color:#123d82}.timeline-shift:hover{box-shadow:0 8px 20px rgba(24,83,167,.22),inset 0 0 0 1px rgba(31,112,190,.22)}.timeline-shift.dragging{box-shadow:0 12px 28px rgba(21,70,155,.32),inset 0 0 0 2px #1a70c2}.timeline-shift .timeline-break{background:#ffd05c}.timeline-shift .timeline-break:hover,.timeline-shift .timeline-break.dragging-break{background:#ffb72b}.timeline-shift .timeline-break::after{background:#173b91}.timeline-track:has(.timeline-shift.dragging){background-color:#eef7ff}.modal{border:1px solid rgba(202,219,239,.9);background:linear-gradient(145deg,#fff,#f7faff);box-shadow:0 30px 90px rgba(13,47,112,.3)}.modal-backdrop{background:rgba(8,31,80,.53);backdrop-filter:blur(5px)}.annual-drop{border-color:#9ecce4;background:#f5fbff}.forecast-history-item,.settings-access-notes article{background:#f5f9fe;border-color:#d9e5f2}.settings-team-mark,.integration-card.connected .integration-mark{background:#dff4fa;color:#0d77b1}.permission-toggle.enabled{color:#116fb0}.permission-toggle.enabled i{background:linear-gradient(90deg,#2466d1,#16a8c7)}.production-month.active{border-color:#63b9dd;background:#edf9ff;box-shadow:0 0 0 3px rgba(50,164,211,.09)}.integration-card.connected .integration-status{background:#e2f7f5;color:#138277}.integration-card.connected .integration-status i{background:#23c7b1;box-shadow:0 0 0 3px rgba(35,199,177,.12)}.operator-day.work{background:#eef8ff}.operator-day.vacation{background:#f1f3f8}.skill-tag,.work-pattern-tag{background:#e7f2fb;color:#155ca8}.profile-vacations i{background:#fff1d8;color:#8f5c10}.report-card .report-icon,.settings-icon{background:linear-gradient(145deg,#e5f4ff,#dbe9fb)}.report-card svg,.settings-icon svg{stroke:#1769bd}.notification-panel,.forecast-history-popover{border-color:#d5e2f1;box-shadow:0 22px 55px rgba(15,53,121,.2)}
@keyframes premiumViewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes premiumHeadingIn{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}@keyframes premiumPulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.22);opacity:.72}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Постоянное хранилище */
.db-status{height:38px;display:inline-flex;align-items:center;gap:8px;padding:0 12px;border:1px solid #d7e3f1;border-radius:12px;background:rgba(248,251,255,.9);color:#587094;font-size:12px;font-weight:700;white-space:nowrap;transition:.2s ease}.db-status i{width:8px;height:8px;border-radius:50%;background:#8ea2bf;box-shadow:0 0 0 4px rgba(142,162,191,.12)}.db-status.connecting i,.db-status.saving i{background:#f5b52e;box-shadow:0 0 0 4px rgba(245,181,46,.14);animation:premiumPulse 1.2s ease-in-out infinite}.db-status.online{color:#11776f;border-color:#cce8e5;background:#f1fbfa}.db-status.online i{background:#24baa9;box-shadow:0 0 0 4px rgba(36,186,169,.13)}.db-status.offline,.db-status.error{color:#a14e5d;border-color:#f0d2d8;background:#fff7f8}.db-status.offline i,.db-status.error i{background:#ec6376;box-shadow:0 0 0 4px rgba(236,99,118,.12)}
@media(max-width:1180px){.db-status span{display:none}.db-status{width:38px;padding:0;justify-content:center}}
@media(max-width:760px){.db-status{display:none}}
.split-meter .ok{background:#1aafd0}.split-meter .over{background:#ffc936}.green{background:#1aafd0!important}.amber{background:#ffc936!important}.chart-insight{background:linear-gradient(135deg,#fff8e7,#fff3d3);border:1px solid #f5dfaa}.insight-icon{background:#ffe3a1;color:#8f6100}.link-button{color:#1555ad}.pulse-dot{background:#26c8d3;box-shadow:0 0 0 4px rgba(38,200,211,.13)}

/* Компактная таблица сотрудников и действия со строкой. */
.team-profile-table{min-width:1120px;table-layout:fixed}.team-profile-table th,.team-profile-table td{padding:10px 12px}.team-profile-table th:nth-child(1),.team-profile-table td:nth-child(1){width:190px;min-width:0}.team-profile-table th:nth-child(2),.team-profile-table td:nth-child(2){width:100px;min-width:0}.team-profile-table th:nth-child(3),.team-profile-table td:nth-child(3){width:80px}.team-profile-table th:nth-child(4),.team-profile-table td:nth-child(4){width:110px}.team-profile-table th:nth-child(5),.team-profile-table td:nth-child(5){width:110px;min-width:0}.team-profile-table th:nth-child(6),.team-profile-table td:nth-child(6){width:155px;min-width:0}.team-profile-table th:nth-child(7),.team-profile-table td:nth-child(7){width:140px;min-width:0}.team-profile-table th:nth-child(8),.team-profile-table td:nth-child(8){width:110px}.team-profile-table th:nth-child(9),.team-profile-table td:nth-child(9){width:175px}.team-row-actions{display:flex;align-items:center;gap:6px}.team-row-actions button{height:30px;padding:0 9px}.team-profile-btn{border:1px solid #bcd9ef;border-radius:8px;background:#e8f5ff;color:#1766ae;font:800 9px Manrope;cursor:pointer}.team-profile-btn:hover{border-color:#69b5d8;background:#dff2ff}.team-delete-btn{border:1px solid #f0cfd5;border-radius:8px;background:#fff5f6;color:#b54859;font:800 9px Manrope;cursor:pointer}.team-delete-btn:hover{border-color:#e69aa7;background:#ffe9ec}body.readonly .team-delete-btn{display:none!important}

/* Авторизация и управление учётными записями. */
.auth-pending .app-shell,.auth-required .app-shell{visibility:hidden}.auth-gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 72% 10%,rgba(32,174,220,.2),transparent 30%),linear-gradient(145deg,#f6faff,#eaf3fb)}body.authenticated .auth-gate{display:none}.auth-card{width:min(430px,100%);border:1px solid #d3e2f2;border-radius:22px;background:rgba(255,255,255,.96);padding:30px;box-shadow:0 28px 80px rgba(13,47,112,.2)}.auth-brand{display:flex;align-items:center;gap:11px;margin-bottom:28px}.auth-brand strong,.auth-brand small{display:block}.auth-brand strong{font-size:18px}.auth-brand small{color:#7790b4;font-size:9px;letter-spacing:2px}.auth-screen[hidden]{display:none!important}.auth-screen h1{margin:5px 0 8px;color:#0a214e;font-size:24px;letter-spacing:-.6px}.auth-screen>p{margin:0 0 20px;color:var(--muted);font-size:11px;line-height:1.6}.auth-screen label{display:block;margin-top:12px}.auth-screen label>span{display:block;margin-bottom:6px;color:#40577e;font-size:10px;font-weight:800}.auth-screen input{width:100%;height:43px;border:1px solid #d4e1f0;border-radius:10px;background:#fbfdff;padding:0 12px;color:var(--ink);font:700 12px Manrope}.auth-screen .primary-btn{width:100%;justify-content:center;margin-top:16px}.auth-hint{display:block;margin-top:7px;color:#7c8da9;font-size:9px}.auth-error{min-height:17px!important;margin:10px 0 0!important;color:#bb4155!important;font-weight:700}.auth-spinner{display:block;width:34px;height:34px;margin-bottom:18px;border:4px solid #d9e7f4;border-top-color:#1687c9;border-radius:50%;animation:authSpin .8s linear infinite}@keyframes authSpin{to{transform:rotate(360deg)}}.auth-logout-btn{height:38px;border:1px solid #d4e1f0;border-radius:9px;background:#fff;color:#36547d;padding:0 12px;font:800 10px Manrope;cursor:pointer}.auth-logout-btn:hover{border-color:#efacb7;background:#fff5f6;color:#b54859}.role-switch select:disabled{opacity:1;cursor:default}
.account-create{display:grid;grid-template-columns:1fr 1fr 1fr 1fr auto;gap:9px;padding:0 18px 18px}.account-create label>span{display:block;margin-bottom:5px;color:#7889a5;font-size:8px;font-weight:800}.account-create input,.account-create select{width:100%;height:38px;border:1px solid #d5e2f1;border-radius:8px;background:#fbfdff;padding:0 9px;color:var(--ink);font:700 9px Manrope}.account-create button{align-self:end}.account-list{border-top:1px solid var(--line)}.account-row{display:grid;grid-template-columns:minmax(145px,1.1fr) minmax(150px,1.2fr) 115px 90px minmax(260px,1.5fr);gap:10px;align-items:center;padding:11px 18px;border-bottom:1px solid #e8eef6}.account-row b,.account-row small{display:block}.account-row small{margin-top:3px;color:var(--muted);font-size:8px}.account-role,.account-status{display:inline-flex;width:max-content;border-radius:14px;padding:5px 8px;background:#e8f2fb;color:#1b5da7;font-size:8px;font-weight:800}.account-status.blocked{background:#fff0f1;color:#b34859}.account-actions{display:flex;flex-wrap:wrap;gap:5px}.account-actions button{height:29px;border:1px solid #d4e1f0;border-radius:7px;background:#f7faff;color:#244f91;padding:0 8px;font:800 8px Manrope;cursor:pointer}.account-actions button.danger{border-color:#f0cfd5;background:#fff5f6;color:#b54859}.account-empty{padding:28px;text-align:center;color:var(--muted);font-size:10px}@media(max-width:1050px){.account-create{grid-template-columns:1fr 1fr}.account-row{grid-template-columns:1fr 1fr}.account-actions{grid-column:1/-1}}@media(max-width:700px){.auth-card{padding:24px}.account-create,.account-row{grid-template-columns:1fr}.account-actions{grid-column:auto}.role-switch{display:none}}

/* Учёт фактического рабочего времени. */
.attendance-toolbar{display:flex;align-items:end;flex-wrap:wrap;gap:9px;margin-bottom:8px}.attendance-toolbar label,.attendance-day-picker label{display:block}.attendance-toolbar label>span,.attendance-day-picker label>span,.attendance-modal-grid label>span{display:block;margin-bottom:5px;color:var(--muted);font-size:8px;font-weight:800}.attendance-toolbar input,.attendance-toolbar select,.attendance-day-picker input,.attendance-modal-grid input,.attendance-modal-grid select,.attendance-modal-grid textarea{height:38px;border:1px solid #d5e2f1;border-radius:9px;background:#fbfdff;padding:0 10px;color:var(--ink);font:700 10px Manrope}.attendance-toolbar select{min-width:210px}.attendance-range-control{display:flex;align-items:end;gap:9px}.attendance-range-tabs{height:38px}.attendance-range-tabs button{min-width:64px;padding:0 10px}.attendance-range-fields{display:flex;gap:7px}.attendance-range-fields input{min-width:138px}.attendance-range-summary{margin:0 0 10px;color:var(--muted);font-size:9px}.attendance-range-summary b{color:#294878}.attendance-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-bottom:12px}.attendance-kpis article{border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.94);padding:14px 16px;box-shadow:var(--shadow)}.attendance-kpis span,.attendance-kpis strong,.attendance-kpis small{display:block}.attendance-kpis span{color:var(--muted);font-size:8px;font-weight:700}.attendance-kpis strong{margin:6px 0 3px;font-size:18px}.attendance-kpis small{color:#8090aa;font-size:8px;line-height:1.4}.attendance-timesheet{overflow:hidden;margin-bottom:12px}.attendance-daily-breakdown{margin-bottom:12px}.attendance-table-scroll{overflow:auto;max-height:620px}.attendance-timesheet table{width:100%;min-width:920px;border-collapse:collapse}.attendance-timesheet th,.attendance-timesheet td{border-bottom:1px solid #e5ecf5;padding:10px 12px;text-align:left;font-size:9px}.attendance-timesheet th{position:sticky;top:0;z-index:1;background:#f3f7fc;color:#7081a1;font-size:8px}.attendance-timesheet td small{display:block;margin-top:3px;color:var(--muted);font-size:7px}.attendance-negative{color:#c2475b;font-weight:800}.attendance-positive{color:#148371;font-weight:800}.attendance-status{display:inline-flex;align-items:center;gap:6px;width:max-content;border-radius:15px;background:#eef3f8;padding:6px 9px;color:#5f708c;font-size:8px;font-weight:800;white-space:nowrap}.attendance-status i{width:7px;height:7px;border-radius:50%;background:#97a7bd}.attendance-status:not(.status-closed){background:#e6f5f2;color:#19725f}.attendance-status:not(.status-closed) i{background:#24b99f;box-shadow:0 0 0 3px rgba(36,185,159,.12)}.attendance-status.status-break,.attendance-status.status-meal{background:#fff3df;color:#8e5d19}.attendance-status.status-break i,.attendance-status.status-meal i{background:#f2a72d}.attendance-status.status-training,.attendance-status.status-error_review,.attendance-status.status-non_billable{background:#eeeafe;color:#5b4db4}.attendance-status.status-training i,.attendance-status.status-error_review i,.attendance-status.status-non_billable i{background:#7364d8}.attendance-events-card{overflow:hidden}.attendance-event-list{border-top:1px solid var(--line)}.attendance-event-row{display:grid;grid-template-columns:92px minmax(220px,1fr) auto;gap:12px;align-items:center;padding:10px 18px;border-bottom:1px solid #e8eef6}.attendance-event-row time{color:#1747ad;font-size:10px;font-weight:800;white-space:nowrap}.attendance-event-row b,.attendance-event-row small{display:block}.attendance-event-row b{font-size:10px}.attendance-event-row small{margin-top:3px;color:var(--muted);font-size:8px;line-height:1.5}.attendance-event-actions{display:flex;gap:5px}.attendance-event-actions button{height:29px;border:1px solid #d4e1f0;border-radius:7px;background:#f7faff;color:#244f91;padding:0 8px;font:800 8px Manrope;cursor:pointer}.attendance-event-actions button.danger{border-color:#f0cfd5;background:#fff5f6;color:#b54859}.attendance-empty,.attendance-loading{padding:28px;text-align:center;color:var(--muted);font-size:10px}.attendance-operator-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,340px);gap:12px;margin-bottom:12px}.attendance-clock-card{padding:20px}.attendance-live{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:9px 0 16px}.attendance-live small,.attendance-live h2,.attendance-live p{display:block;margin:0}.attendance-live small{color:var(--muted);font-size:8px}.attendance-live h2{margin:4px 0;font-size:23px}.attendance-live p,.attendance-day-picker p,.attendance-preview-note{color:var(--muted);font-size:8px;line-height:1.55}.attendance-punches{display:flex;flex-wrap:wrap;gap:7px}.attendance-punches button{min-height:36px;border-radius:9px;padding:0 12px;font:800 9px Manrope;cursor:pointer}.attendance-punches button:disabled{cursor:not-allowed;filter:grayscale(.35);opacity:.55}.attendance-activity-btn{border:1px solid #d6e2f0;background:#f7faff;color:#36547d}.attendance-activity-btn.active{border-color:#70bdaa;background:#e4f5f0;color:#146b59}.attendance-activity-btn.status-training,.attendance-activity-btn.status-error_review,.attendance-activity-btn.status-non_billable{border-color:#d9d2f5;background:#f5f2ff;color:#5e50b4}.attendance-end-btn{border:1px solid #efcbd2;background:#fff2f4;color:#b64758}.attendance-day-picker{padding:20px}.attendance-day-picker .attendance-range-control{align-items:stretch;flex-direction:column}.attendance-day-picker .attendance-range-fields label,.attendance-day-picker .attendance-range-fields input{width:100%}.attendance-day-picker input{margin-bottom:8px}.attendance-preview-note{border-radius:9px;background:#fff7de;padding:9px 11px;color:#755b16}.attendance-modal{max-width:650px}.attendance-modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.attendance-modal-grid label{display:block}.attendance-modal-grid input,.attendance-modal-grid select{width:100%}.attendance-modal-grid textarea{width:100%;height:auto;padding:10px;resize:vertical}.attendance-modal-reason{grid-column:1/-1}@media(max-width:1000px){.attendance-kpis{grid-template-columns:repeat(3,1fr)}.attendance-operator-head{grid-template-columns:1fr}}@media(max-width:700px){.attendance-kpis{grid-template-columns:1fr 1fr}.attendance-toolbar>*{width:100%}.attendance-toolbar select{min-width:0}.attendance-range-control{align-items:stretch;flex-direction:column}.attendance-range-fields label,.attendance-range-fields input{width:100%}.attendance-event-row{grid-template-columns:78px 1fr}.attendance-event-actions{grid-column:1/-1}.attendance-modal-grid{grid-template-columns:1fr}.attendance-modal-reason{grid-column:auto}}@media(max-width:450px){.attendance-kpis{grid-template-columns:1fr}.attendance-range-fields{flex-direction:column}}
.attendance-schedule-ok,.attendance-schedule-warning{margin:0 0 12px;border-radius:9px;padding:9px 11px;font-size:8px;font-weight:800;line-height:1.55}.attendance-schedule-ok{background:#e8f6f1;color:#18715e}.attendance-schedule-warning{background:#fff0f2;color:#af4556}

/* Доработки табеля, таймлайна и читаемости. */
.avatar img,.operator-avatar-large img,.side-user>i img{width:100%;height:100%;display:block;border-radius:inherit;object-fit:cover}.operator-avatar-large{overflow:hidden}.operator-avatar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:9px}.operator-avatar-actions label,.operator-avatar-actions button{height:31px;border:1px solid #c9dced;border-radius:8px;background:#f1f8ff;color:#175ca7;padding:0 10px;display:inline-flex;align-items:center;font:800 9px Manrope;cursor:pointer}.operator-avatar-actions label i{font-style:normal}.operator-avatar-actions button{border-color:#efcbd2;background:#fff4f5;color:#ad4656}
body.readonly #fillScheduleTemplates{display:none!important}
.plan-fact-legend .plan-mark{background:#fff0d5;color:#9a5900}.combined-shift .plan-line i{background:#ffe1ad;color:#945300}.combined-shift .plan-line b{color:#a35b00}.future-schedule-cell{background:#fffdf9}.future-plan-shift{background:#fff7e9;border-color:#f2cf95}.future-plan-shift:hover{background:#fff1d6;border-color:#eaae52}.future-plan-shift .plan-only-line i{background:#ffc768;color:#754000}.future-plan-shift .plan-only-line b{color:#8d5000}.timeline-shift.is-plan{background:linear-gradient(135deg,#ffd580,#ffbc4d);color:#6f3b00}.timeline-shift.is-fact{background:linear-gradient(135deg,#bfeaf3,#b9d9fa);color:#123d82}
.shift-chip[draggable=true]{cursor:grab}.shift-chip.drag-source{opacity:.42;cursor:grabbing}.shift-chip.drag-target{outline:3px solid #28a7d0;outline-offset:2px;transform:translateY(-2px);box-shadow:0 9px 20px rgba(28,121,184,.2)}
.timeline-person{gap:7px}.timeline-add-break{border:1px solid #c8dced;border-radius:7px;background:#f4f9fe;color:#175ca7;padding:3px 6px;font:800 8px Manrope;cursor:pointer;white-space:nowrap}.timeline-break>button{position:absolute;right:-6px;top:-8px;width:17px;height:17px;border:2px solid #fff;border-radius:50%;background:#d94f5d;color:#fff;display:none;align-items:center;justify-content:center;padding:0;font:900 12px/1 Arial;cursor:pointer;z-index:12}.timeline-break:hover>button{display:flex}.timeline-shift .timeline-break:hover::after{top:calc(50% + 13px)}
.attendance-correction-btn{height:29px;border:1px solid #c7daec;border-radius:7px;background:#f1f8ff;color:#185aa4;padding:0 8px;font:800 9px Manrope;cursor:pointer;white-space:nowrap}.attendance-correction-btn:hover{border-color:#6cb6d9;background:#e5f5ff}
.page-heading p{font-size:13px}.panel-head p{font-size:11px}.schedule-row.header .schedule-cell{font-size:10px}.schedule-row.header .schedule-cell b{font-size:12px}.employee-cell b{font-size:11px}.employee-cell small{font-size:9px}.employee-cell em{font-size:8px}.schedule-legend,.plan-fact-legend{font-size:10px}.combined-shift .plan-line b,.combined-shift .fact-line b,.future-plan-shift .plan-only-line b{font-size:10px}.timeline-person b{font-size:11px}.timeline-axis b{font-size:9px}.employee-form-grid label>span,.employee-shift-field>span,.employee-interval-head b{font-size:11px}.employee-form-grid input,.employee-form-grid select{font-size:11px}.attendance-toolbar label>span,.attendance-day-picker label>span,.attendance-modal-grid label>span{font-size:10px}.attendance-range-summary{font-size:11px}.attendance-kpis span,.attendance-kpis small{font-size:10px}.attendance-timesheet th{font-size:10px}.attendance-timesheet td{font-size:11px}.attendance-timesheet td small{font-size:9px}.attendance-event-row b{font-size:11px}.attendance-event-row small{font-size:10px}.attendance-live small,.attendance-live p,.attendance-day-picker p,.attendance-preview-note{font-size:10px}

/* Отчёты: ручной факт трафика и аналитический дашборд. */
.erlang-summary{grid-template-columns:repeat(5,1fr)}.erlang-summary article small{display:block;margin-top:4px;color:#a9c8e3;font-size:8px}.reports-tabs{display:flex;width:max-content;max-width:100%;gap:5px;margin-bottom:14px;padding:5px;border:1px solid var(--line);border-radius:13px;background:#e7eef8;overflow:auto}.reports-tabs button{height:39px;border:0;border-radius:9px;background:transparent;color:#65769a;padding:0 17px;font:800 11px Manrope;white-space:nowrap;cursor:pointer}.reports-tabs button.active{background:#fff;color:#1549ab;box-shadow:0 5px 14px rgba(28,71,143,.11)}.report-subhead{display:flex;align-items:flex-end;justify-content:space-between;gap:15px;margin-bottom:12px}.report-subhead h2{margin:0 0 4px;font-size:18px}.report-subhead p{margin:0;color:var(--muted);font-size:11px}.report-month-control>span{display:block;margin-bottom:5px;color:var(--muted);font-size:10px;font-weight:800}.report-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}.report-kpis article{min-height:100px;padding:15px 17px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#fff,#f7faff);box-shadow:var(--shadow)}.report-kpis span,.report-kpis strong,.report-kpis small{display:block}.report-kpis span{color:var(--muted);font-size:10px;font-weight:700}.report-kpis strong{margin:8px 0 3px;font-size:22px}.report-kpis small{color:#8090aa;font-size:9px}.report-kpis strong.negative,.traffic-plan-fact-table .negative{color:#c2475b}.report-kpis strong.positive,.traffic-plan-fact-table .positive{color:#148371}.traffic-plan-fact-panel,.report-hourly-detail{overflow:hidden}.traffic-table-scroll{max-height:650px;overflow:auto}.traffic-plan-fact-table{width:100%;min-width:1120px;border-collapse:collapse}.traffic-plan-fact-table th,.traffic-plan-fact-table td{padding:9px 11px;border-bottom:1px solid #e5ecf5;text-align:left;font-size:10px}.traffic-plan-fact-table th{position:sticky;top:0;z-index:2;background:#f3f7fc;color:#66799c;font-size:9px}.traffic-plan-fact-table td small{display:block;margin-top:2px;color:var(--muted);font-size:8px}.traffic-plan-fact-table input{width:96px;height:34px;border:1px solid #ceddeb;border-radius:8px;background:#fff;padding:0 9px;color:#0d2148;font:800 11px Manrope}.traffic-plan-fact-table input:placeholder-shown{background:#f7f9fc}.report-readonly-note{color:var(--muted);font-size:10px}.report-chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}.report-chart-wrap{height:250px;padding:0 15px 15px}.report-chart-wrap canvas{width:100%;height:100%}.report-hourly-detail .traffic-plan-fact-table{min-width:760px}.report-dashboard-kpis .accent{background:linear-gradient(135deg,#184caf,#0b8ac9);color:#fff;border-color:transparent}.report-dashboard-kpis .accent span,.report-dashboard-kpis .accent small{color:#c5e5f7}
@media(max-width:1050px){.erlang-summary{grid-template-columns:repeat(3,1fr)}.report-kpis{grid-template-columns:1fr 1fr}.report-chart-grid{grid-template-columns:1fr}}
@media(max-width:650px){.erlang-summary,.report-kpis{grid-template-columns:1fr}.report-subhead{align-items:stretch;flex-direction:column}.report-month-control,.report-month-control select{width:100%}}
.traffic-plan-fact-table input.dashboard-fact-input{width:128px;border-color:#8fc5e5;background:#f4fbff}.traffic-plan-fact-table input.dashboard-fact-input::placeholder{color:#8295b3;font-size:9px}
.daily-traffic-table{min-width:980px}.traffic-plan-fact-table input.daily-fact-input{width:140px;border-color:#8fc5e5;background:#f4fbff}.traffic-plan-fact-table input.daily-fact-input::placeholder{color:#8295b3;font-size:9px}

/* Биржа смен. */
.market-tabs{display:flex;width:max-content;max-width:100%;gap:5px;margin-bottom:13px;padding:5px;border:1px solid var(--line);border-radius:13px;background:#e7eef8}.market-tabs button{height:38px;border:0;border-radius:9px;background:transparent;color:#65769a;padding:0 17px;font:800 11px Manrope;cursor:pointer}.market-tabs button.active{background:#fff;color:#1549ab;box-shadow:0 5px 14px rgba(28,71,143,.11)}.market-tabs button b{margin-left:5px;border-radius:10px;background:#e4475a;color:#fff;padding:2px 6px;font-size:8px}.market-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.market-card{position:relative;overflow:hidden;padding:17px 18px}.market-card::before{content:"";position:absolute;inset:0 auto 0 0;width:4px;background:#31b8a1}.market-card.type-swap::before{background:#725fd4}.market-card.type-overtime::before{background:#168aca}.market-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.market-card-head h2{margin:5px 0 0;font-size:15px}.market-type{color:#6e80a0;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.7px}.market-status,.market-response-status{display:inline-flex;width:max-content;border-radius:15px;background:#e8f5f2;color:#16715f;padding:6px 9px;font-size:8px;font-weight:800;white-space:nowrap}.market-status.pending_approval,.market-response-status.pending{background:#fff3dc;color:#956017}.market-status.matched{background:#eeeafe;color:#5b4db4}.market-status.rejected,.market-status.cancelled,.market-response-status.rejected,.market-response-status.withdrawn{background:#fff0f2;color:#b14759}.market-card-detail{margin:14px 0 7px;color:#16345f;font-size:11px;font-weight:800;line-height:1.5}.market-skill,.market-decision{margin:5px 0;color:#667a9b;font-size:9px}.market-card blockquote{margin:10px 0;border-left:3px solid #d4dfec;padding:5px 9px;color:#61718c;font-size:10px;line-height:1.5}.market-card>time{display:block;margin-top:10px;color:#8b9ab1;font-size:8px}.market-responses{margin:13px -18px 0;border-top:1px solid #e5ecf5}.market-responses h3{margin:0;padding:10px 18px 6px;color:#7283a1;font-size:9px}.market-response{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:8px;align-items:center;padding:8px 18px;border-top:1px solid #edf2f8}.market-response b,.market-response small{display:block}.market-response b{font-size:10px}.market-response small{margin-top:3px;color:#71809b;font-size:8px;line-height:1.45}.market-response-actions{display:flex;gap:5px}.market-response-actions button,.market-cancel-btn{height:29px;border:1px solid #d5e1ef;border-radius:7px;background:#f7faff;color:#37557e;padding:0 8px;font:800 8px Manrope;cursor:pointer}.market-response-actions .market-approve{border-color:#a7d7ca;background:#e8f6f2;color:#176c5b}.market-card-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.market-cancel-btn{border-color:#efcdd3;background:#fff4f5;color:#ad4656}.market-empty{padding:42px;text-align:center;color:#6e7f9d}.market-empty h3{margin:0 0 7px;color:#17335e}.market-empty p{margin:0}.market-preview-note{margin-bottom:11px;border-radius:10px;background:#fff5dd;color:#7a5a18;padding:10px 13px;font-size:9px;font-weight:700}.market-modal{max-width:660px}.market-modal h2{margin:5px 0 6px}.market-form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:17px}.market-form-grid label>span{display:block;margin-bottom:6px;color:#596c8d;font-size:10px;font-weight:800}.market-form-grid input,.market-form-grid select,.market-form-grid textarea{width:100%;height:40px;border:1px solid #d3e1ef;border-radius:9px;background:#fbfdff;padding:0 10px;color:#142e57;font:700 10px Manrope}.market-form-grid textarea{height:auto;padding:10px;resize:vertical}.market-wide{grid-column:1/-1}.timeline-market-extra{position:absolute;top:8px;height:40px;z-index:7;display:flex;flex-direction:column;justify-content:center;overflow:hidden;border:1px solid #56a996;border-radius:8px;background:repeating-linear-gradient(135deg,#dff6ef,#dff6ef 8px,#cceee5 8px,#cceee5 16px);color:#145f51;padding:0 7px;box-shadow:0 4px 10px rgba(20,110,91,.13)}.timeline-market-extra b,.timeline-market-extra small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-market-extra b{font-size:9px}.timeline-market-extra small{font-size:7px;font-weight:800}
@media(max-width:950px){.market-grid{grid-template-columns:1fr}}@media(max-width:650px){.market-form-grid{grid-template-columns:1fr}.market-wide{grid-column:auto}.market-response{grid-template-columns:1fr}.market-response-actions{grid-column:1/-1}.market-tabs{width:100%;overflow:auto}}
.market-card.type-day_off::before{background:#e58a32}.market-day-off-btn{border-color:#efc98f!important;background:#fff8ec!important;color:#965916!important}#shiftMarketHeadingActions{flex-wrap:wrap;justify-content:flex-end}@media(max-width:800px){#view-shift-market .page-heading{align-items:flex-start;flex-direction:column}#shiftMarketHeadingActions{justify-content:flex-start}}

/* График отпусков. */
.vacation-toolbar{display:flex;align-items:end;flex-wrap:wrap;gap:9px;margin-bottom:11px}.vacation-toolbar label>span{display:block;margin-bottom:5px;color:#677b9d;font-size:10px;font-weight:800}.vacation-toolbar select,.vacation-toolbar input{height:39px;border:1px solid #d2e0ef;border-radius:9px;background:#fff;padding:0 10px;color:#18345f;font:700 10px Manrope}.vacation-search input{min-width:240px}.vacation-only{height:39px;display:flex;align-items:center;gap:7px;border:1px solid #d7e3ef;border-radius:9px;background:#f8fbff;padding:0 11px}.vacation-only input{width:15px;height:15px}.vacation-only span{margin:0!important}.vacation-add{display:flex;align-items:end;gap:7px;margin-left:auto}.vacation-add select{min-width:185px}.vacation-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:11px}.vacation-kpis article{padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(145deg,#fff,#f7faff);box-shadow:var(--shadow)}.vacation-kpis article.warning{border-color:#efce98;background:#fff9ee}.vacation-kpis span,.vacation-kpis strong,.vacation-kpis small{display:block}.vacation-kpis span{color:#7283a1;font-size:9px;font-weight:800}.vacation-kpis strong{margin:6px 0 2px;font-size:21px}.vacation-kpis small{color:#8594ad;font-size:8px}.vacation-source-note{display:flex;align-items:center;gap:10px;margin-bottom:11px;padding:11px 14px;background:#edf8f5}.vacation-source-note>i{width:25px;height:25px;display:grid;place-items:center;border-radius:8px;background:#bfe9df;color:#156957;font-style:normal;font-weight:900}.vacation-source-note p{margin:0;color:#55716d;font-size:9px;line-height:1.5}.vacation-timeline-panel{overflow:hidden}.vacation-legend{height:43px;display:flex;align-items:center;justify-content:flex-end;gap:16px;padding:0 17px;border-bottom:1px solid #e5ecf5;color:#6f819f;font-size:9px;font-weight:700}.vacation-legend span{display:flex;align-items:center;gap:6px}.vacation-legend i{width:17px;height:8px;border-radius:4px;background:#54b8a1}.vacation-legend i.overlap{background:#e58b39}.vacation-scroll{overflow:auto}.vacation-timeline{min-width:1120px;display:grid;grid-template-columns:230px minmax(890px,1fr);align-items:stretch}.vacation-name-head,.vacation-days-head{position:sticky;top:0;z-index:8;height:48px;background:#f3f7fc;border-bottom:1px solid #dfe8f3}.vacation-name-head{left:0;display:flex;align-items:center;padding:0 16px;color:#5f7396;font-size:9px;font-weight:900}.vacation-days-head{display:grid;grid-template-columns:repeat(var(--vacation-days),1fr)}.vacation-days-head>b{display:flex;align-items:center;justify-content:center;flex-direction:column;border-left:1px solid #e5ecf5;color:#486184;font-size:9px}.vacation-days-head>b small{margin-top:2px;color:#8b9ab0;font-size:7px}.vacation-days-head>b.weekend{background:#eef2f8;color:#9b5870}.vacation-days-head>b.today{background:#e1f5ef;color:#126c59;box-shadow:inset 0 -3px #28aa91}.vacation-name{position:sticky;left:0;z-index:5;min-height:57px;display:flex;align-items:center;gap:9px;border-bottom:1px solid #e7edf5;background:#fff;padding:8px 12px}.vacation-name .avatar{flex:0 0 32px}.vacation-name span:nth-child(2){min-width:0;flex:1}.vacation-name b,.vacation-name small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vacation-name b{font-size:10px}.vacation-name small{margin-top:3px;color:#8090aa;font-size:8px}.vacation-name>button{width:27px;height:27px;border:1px solid #c9ddeb;border-radius:7px;background:#f1f8ff;color:#1762a9;cursor:pointer}.vacation-track{position:relative;min-height:57px;display:grid;grid-template-columns:repeat(var(--vacation-days),1fr);border-bottom:1px solid #e7edf5;background:#fff}.vacation-grid-day{border-left:1px solid #edf2f7}.vacation-grid-day.weekend{background:#f8f9fc}.vacation-track>em{position:absolute;left:14px;top:20px;color:#a0acc0;font-size:8px;font-style:normal}.vacation-bar{position:absolute;top:10px;height:36px;z-index:3;min-width:16px;overflow:hidden;border:2px solid #fff;border-radius:9px;background:#48b59d;color:#fff;padding:0 5px;box-shadow:0 3px 9px rgba(22,116,96,.2);font:900 9px Manrope;cursor:pointer}.vacation-bar.color-1{background:#5979d4}.vacation-bar.color-2{background:#b16fc1}.vacation-bar.color-3{background:#e18b3b}.vacation-bar.color-4{background:#2693bd}.vacation-bar.color-5{background:#d05f7c}.occupancy-name{background:#f8fbff}.occupancy-track{height:57px;min-height:57px;align-items:end;background:#f8fbff}.occupancy-track>i{position:relative;height:100%;display:flex;align-items:end;justify-content:center;border-left:1px solid #edf2f7}.occupancy-track>i span{width:55%;max-height:35px;border-radius:4px 4px 0 0;background:#86cbbc}.occupancy-track>i.overlap span{background:#e7a154}.vacation-no-results{grid-column:1/-1;padding:36px;text-align:center;color:#8291aa;font-size:10px}
@media(max-width:1000px){.vacation-kpis{grid-template-columns:1fr 1fr}.vacation-add{width:100%;margin-left:0}}@media(max-width:600px){.vacation-kpis{grid-template-columns:1fr}.vacation-toolbar>*{width:100%}.vacation-toolbar input,.vacation-toolbar select,.vacation-add,.vacation-add label,.vacation-add select{width:100%}.vacation-add{align-items:stretch;flex-direction:column}.vacation-legend{justify-content:flex-start;overflow:auto;white-space:nowrap}}
