:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}body{margin:0;background:#fff}.container{padding:12px;max-width:700px;margin:0 auto}.appHeader{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:28px}.appBrand{font-size:16px;font-weight:800}.appHeaderTools{display:flex;align-items:center;gap:7px}.appRange{min-height:30px;max-width:145px;font-size:12px}.appUserState{color:var(--tg-theme-hint-color, #68707a);font-size:11px;white-space:nowrap}.tabs{display:flex;gap:5px;margin:5px 0 8px;overflow-x:auto;padding:2px 0;scrollbar-width:thin}.tab{flex:0 0 auto;min-height:35px;padding:6px 9px;border:1px solid #ddd;border-radius:10px;background:#f7f7f7;cursor:pointer;font-size:12px;white-space:nowrap}.tab.active{background:#eaeaea;font-weight:600}.card{border:1px solid #ddd;border-radius:14px;margin:10px 0;overflow:hidden}.cardHeader{padding:10px 12px;font-weight:700;display:flex;justify-content:space-between;gap:10px}.header-normal{color:#111;background:#f3f3f3}.header-special{color:#b00020;background:#fff0f2}.header-holiday{color:#0b4db8;background:#eef4ff}.cardBody{padding:10px 12px}.row{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-top:1px solid #eee}.row:first-child{border-top:none}.btn{padding:4px 10px;border-radius:8px;border:1px solid #ddd;background:#fff;cursor:pointer}.btn:disabled{cursor:not-allowed;opacity:.6}.small{font-size:12px;opacity:.75}.adminUserName{display:flex;align-items:center;gap:7px;font-weight:700}.presenceDot{width:9px;height:9px;flex:0 0 9px;border-radius:50%;border:1px solid rgba(0,0,0,.16)}.presenceDot.isOnline{background:#1f9d55;box-shadow:0 0 0 2px #1f9d5524}.presenceDot.isOffline{background:#a8adb5}.kwsum{margin-top:14px;font-weight:800}.authGate{min-height:100vh;padding:20px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;background:var(--tg-theme-secondary-bg-color, #f4f5f7);color:var(--tg-theme-text-color, #111)}.authGateCard{width:min(100%,380px);padding:24px;box-sizing:border-box;border:1px solid #ddd;border-radius:16px;background:var(--tg-theme-bg-color, #fff);text-align:center;box-shadow:0 8px 28px #00000014}.authGateIcon{margin-bottom:10px;font-size:34px}.authGateTitle{font-size:18px;font-weight:800}.authGateError{margin-top:12px;padding:9px;border:1px solid #f1c0c0;border-radius:8px;background:#fff3f3;color:#8b1a1a;font-size:12px}.authGateButton{width:100%;margin-top:16px;padding:10px;font-weight:700}.monthView{--month-shell: var(--tg-theme-secondary-bg-color, #f3f4f6);--month-surface: var(--tg-theme-bg-color, #fff);--month-line: #d9dde2;--month-muted: var(--tg-theme-hint-color, #68707a);width:min(100%,430px);margin:8px auto 0;padding:6px;box-sizing:border-box;border:1px solid var(--month-line);border-radius:13px;background:var(--month-shell)}.monthToolbar{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;margin-bottom:5px;overflow:hidden;border-radius:9px;background:var(--month-surface)}.monthNavButton,.monthTitleButton{min-height:39px;border:0;background:transparent;color:inherit;cursor:pointer;font-family:inherit}.monthNavButton{padding:0;font-size:23px;line-height:1}.monthTitleButton{padding:4px;font-size:15px;font-weight:700;text-transform:capitalize}.monthWeeks{display:grid;gap:5px}.monthWeek{display:grid;grid-template-columns:38px minmax(0,1fr);gap:5px;padding-top:5px;border-top:1px solid var(--month-line)}.monthWeek:first-child{padding-top:0;border-top:0}.monthWeekLabel{display:flex;flex-direction:column;align-items:center;padding-top:5px;color:var(--month-muted);font-size:9px}.monthWeekLabel strong{color:var(--tg-theme-text-color, #17191c);font-size:14px;line-height:1.05}.monthWeekOpen{margin-top:4px;color:#8a5000;font-size:9px;line-height:1.05;text-align:center}.monthDays{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;align-items:start}.monthDay{-webkit-appearance:none;-moz-appearance:none;appearance:none;min-width:0;overflow:hidden;padding:0;border:1px solid var(--month-line);border-radius:8px;background:var(--month-surface);color:var(--tg-theme-text-color, #17191c);cursor:pointer;font-family:inherit;text-align:left}.monthDay:focus-visible{outline:2px solid var(--tg-theme-button-color, #2e7d32);outline-offset:1px}.monthDayHead{display:flex;align-items:baseline;justify-content:space-between;gap:3px;min-height:27px;padding:4px 5px;box-sizing:border-box;font-size:10px}.monthDayHead strong{flex:0 0 auto;font-size:11px}.monthDayTitle{min-width:0;overflow:hidden;color:var(--month-muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.monthPerson{display:grid;grid-template-columns:21px minmax(0,1fr);align-items:center;min-height:22px;border-top:1px solid rgba(50,55,60,.14)}.monthPerson.isAssigned{background:#b9e8c4;color:#064b1c}.monthPerson.isOpen{background:#ffd66b;color:#5d3500;box-shadow:inset 3px 0 #d67d00}.monthPerson.isSuggestion{background:#e8dcff;color:#3f2372;box-shadow:inset 3px 0 #7653b5,inset 0 0 0 1px #a992d4}.monthPerson.isMine{box-shadow:inset 3px 0 #16833a,inset 0 0 0 1px #16833a}.monthPerson.isSuggestion.isMine{box-shadow:inset 3px 0 #7653b5,inset 0 0 0 1px #7653b5}.monthPersonCode{font-size:9px;font-weight:700;text-align:center}.monthPersonName{min-width:0;overflow:hidden;padding:2px 3px 2px 1px;font-size:11px;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.monthPerson.isMine .monthPersonName{text-decoration:underline;text-decoration-thickness:2px}.monthEmpty{margin:8px 0;padding:16px;border:1px dashed #ccd1d7;border-radius:9px;color:var(--month-muted);text-align:center}.monthModalBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;display:flex;align-items:center;justify-content:center;padding:12px;box-sizing:border-box;background:#0000008c}.monthModal{width:min(100%,390px);max-height:85vh;overflow:hidden;border-radius:14px;background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);box-shadow:0 18px 60px #0000004d}.monthModalHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px}.monthModalTitle{font-size:16px;font-weight:800}.monthModalSubtitle{margin-top:3px;font-size:12px}.monthModalClose{width:30px;height:30px;padding:0;border:0;border-radius:50%;background:#ffffffbf;color:#333;cursor:pointer;font-size:23px;line-height:28px}.monthModalBody{max-height:calc(85vh - 64px);overflow-y:auto;padding:8px 14px 14px}.monthModalPosition{display:grid;grid-template-columns:62px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:43px;border-bottom:1px solid #eee}.monthModalPosition:last-child{border-bottom:0}.monthModalPositionLabel{display:flex;flex-direction:column;min-width:0}.monthModalPositionLabel .small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monthModalName{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:700}.monthModalName.isFree{color:#7a4600;font-weight:700}.monthModalAction{padding:5px 8px;color:#b42318;font-size:11px}.monthModalAssign{background:#2e7d32;color:#fff}.monthModalSuggestionBadge{padding:3px 5px;border:1px solid #a992d4;border-radius:6px;background:#e8dcff;color:#3f2372;font-size:9px;font-weight:800}.adminOverview{width:min(100%,430px);margin:0 auto}.adminOverviewActions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-bottom:6px}.adminOverviewActions .btn{min-height:38px;padding-inline:4px;font-size:11px;font-weight:700}.adminSuggestionButton{border-color:#7653b5;background:#f1ebff;color:#432875}.suggestionReview{margin:6px 0;padding:9px;border:1px solid #a992d4;border-radius:10px;background:#f7f3ff;color:#35215c}.suggestionReviewSummary{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:12px}.suggestionReviewSummary strong{font-size:14px}.suggestionReviewHint{margin-top:4px;font-size:10px;line-height:1.3}.suggestionReviewActions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}.suggestionApplyButton{border-color:#2e7d32;background:#2e7d32;color:#fff;font-weight:700}.adminOverviewDelete,.monthAdminDelete{border-color:#efb7b7;background:#ffebee;color:#b42318}.adminGeneratePanel{margin:6px 0}.adminGenerateDates{display:grid;grid-template-columns:1fr 1fr;gap:8px}.adminGenerateDates label,.adminGenerateDates input{min-width:0;width:100%;box-sizing:border-box}.adminGenerateWeekdays{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;font-size:12px}.adminGenerateButton{width:100%;min-height:38px;margin-top:10px;font-weight:700}.monthAdminEditor{margin-top:10px;padding-top:10px;border-top:2px solid #dfe2e6}.monthAdminEditorTitle{margin-bottom:7px;font-size:13px;font-weight:800}.monthAdminTypeButtons{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.monthAdminTypeButtons .btn{min-height:32px}.monthAdminTypeButtons .btn.isActive{border-color:#2e7d32;background:#dcefe0;box-shadow:inset 0 0 0 1px #2e7d32;color:#123e1c;font-weight:700}.monthAdminForm{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px;margin-top:7px}.monthAdminForm input{min-width:0;width:100%;box-sizing:border-box}.monthAdminDelete{width:100%;min-height:35px;margin-top:8px;font-weight:700}.adminUserRow{align-items:center;margin-bottom:8px}.adminUserMain{flex:1;min-width:0}.adminUserActions{display:flex;flex:0 0 auto;flex-direction:column;align-items:flex-end;gap:6px}.adminPreferenceRow{display:flex;align-items:center;gap:5px;margin-top:5px}.adminPreferenceButton{width:28px;height:25px;padding:0;border:1px solid #c9cdd2;border-radius:7px;background:#eef0f2;color:#6a7078;cursor:pointer;font-weight:800}.adminPreferenceButton.isActive{border-color:#16833a;background:#b9e8c4;box-shadow:inset 0 0 0 1px #16833a;color:#064b1c}.adminPreferenceButton:disabled{cursor:wait;opacity:.55}.adminPreferenceUnset{color:#9a6500;font-size:10px;white-space:nowrap}@media (max-width: 430px){.container{padding:8px}.monthView{padding:5px}.monthWeek{grid-template-columns:34px minmax(0,1fr);gap:4px}.monthDays{gap:4px}.monthDayHead{padding-inline:4px}.monthDayHead strong,.monthPersonName{font-size:10px}}@media (prefers-color-scheme: dark){.monthView{--month-line: #454b53}.monthPerson.isAssigned{background:#214b2d;color:#c9f4d2}.monthPerson.isOpen{background:#634a12;color:#ffe7a3;box-shadow:inset 3px 0 #f2bd43}.monthPerson.isSuggestion,.monthModalSuggestionBadge{border-color:#9f82d4;background:#3d2e59;color:#eadfff}.monthPerson.isSuggestion,.monthPerson.isSuggestion.isMine{box-shadow:inset 3px 0 #b69ae8,inset 0 0 0 1px #9f82d4}.monthWeekOpen{color:#f2bd43}.monthAdminTypeButtons .btn.isActive,.adminPreferenceButton.isActive{border-color:#60bd72;background:#244c2d;box-shadow:inset 0 0 0 1px #60bd72;color:#d8f6de}.adminOverviewDelete,.monthAdminDelete{border-color:#8d4747;background:#4b272a;color:#ffaaa3}.adminSuggestionButton,.suggestionReview{border-color:#7e63ad;background:#332747;color:#eadfff}}.profilePanel{--profile-panel: var(--tg-theme-bg-color, #fff);--profile-control: var(--tg-theme-secondary-bg-color, #f7f8fa);--profile-line: #dfe2e6;--profile-muted: var(--tg-theme-hint-color, #68707a);width:min(100%,390px);margin:10px auto 0;overflow:hidden;border:1px solid var(--profile-line);border-radius:14px;background:var(--profile-panel);color:var(--tg-theme-text-color, #17191c)}.profilePanel *,.profilePanel *:before,.profilePanel *:after{box-sizing:border-box}.profileTitle{margin:0;padding:11px 14px 8px;font-size:17px}.profilePrompt{margin:0 14px 8px;padding:7px 9px;border:1px solid #e6a51c;border-radius:8px;background:#fff4cf;color:#694000;font-size:12px;font-weight:700}.profileBlock{padding:9px 14px;border-top:1px solid var(--profile-line)}.profileInline{display:grid;grid-template-columns:86px minmax(0,1fr);gap:9px;align-items:center}.profileLabel{font-size:13px;font-weight:700}.profileChoices{display:grid;grid-template-columns:1fr 1fr;gap:7px}.profileChoice,.profileSmallAction,.profileSave,.profileLogout,.profileClear,.profilePanel select,.profilePanel input{border:1px solid var(--profile-line);border-radius:8px;background:var(--profile-control);color:inherit;font:inherit}.profileChoice{min-height:40px;padding:6px 9px;cursor:pointer;font-size:14px;font-weight:600}.profileChoice.isActive{border-color:#2e7d32;background:#dcefe0;box-shadow:inset 0 0 0 1px #2e7d32;color:#123e1c}.profileBlockHead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:7px}.profileHint{color:var(--profile-muted);font-size:10px;text-align:right}.profileDays{display:grid;grid-template-columns:1fr 1fr;gap:7px 9px}.profileDay{display:grid;grid-template-columns:24px minmax(0,1fr);gap:5px;align-items:center}.profileDay>span{font-size:12px;font-weight:700}.profilePanel select{width:100%;min-height:38px;padding:4px 5px;font-size:13px}.profileSummaryRow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center}.profileSummary{min-width:0;overflow:hidden;color:var(--profile-muted);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.profileSmallAction{min-height:34px;padding:4px 9px;cursor:pointer;font-size:13px;font-weight:600}.profileVacationEditor,.profileNameEditor{display:grid;gap:7px;margin-top:8px}.profileVacationRow{display:grid;grid-template-columns:14px minmax(0,1fr) minmax(0,1fr) 28px;gap:5px;align-items:end}.profileVacationNumber{align-self:center;color:var(--profile-muted);font-size:11px;font-weight:700}.profileNameEditor{grid-template-columns:1fr 1fr}.profileField{min-width:0}.profileField>span{display:block;margin-bottom:2px;color:var(--profile-muted);font-size:10px}.profilePanel input{width:100%;min-width:0;min-height:39px;padding:5px 7px;font-size:14px}.profileVacationRow input{font-size:12px}.profileClear{width:28px;height:39px;padding:0;cursor:pointer;color:#b42318;font-size:20px}.profileClear:disabled{cursor:default;opacity:.35}.profileSaveWrap{padding:9px 14px 5px;border-top:1px solid var(--profile-line)}.profileSave{width:100%;min-height:40px;border-color:var(--tg-theme-button-color, #2e7d32);background:var(--tg-theme-button-color, #2e7d32);color:var(--tg-theme-button-text-color, #fff);cursor:pointer;font-size:14px;font-weight:700}.profileSave:disabled{cursor:wait;opacity:.65}.profileStatus{min-height:16px;margin-top:3px;color:var(--profile-muted);font-size:11px;text-align:center}.profileLogout{width:100%;min-height:37px;border:0;background:transparent;color:#b42318;cursor:pointer;font-size:13px}@media (max-width: 345px){.profileInline{grid-template-columns:74px minmax(0,1fr)}.profileDays,.profileNameEditor{grid-template-columns:1fr}.profileVacationRow{grid-template-columns:12px minmax(0,1fr) minmax(0,1fr) 26px;gap:3px}.profileVacationRow input{padding-inline:3px;font-size:11px}}@media (prefers-color-scheme: dark){.profilePanel{--profile-line: #454b53}.profileChoice.isActive{border-color:#60bd72;background:#244c2d;box-shadow:inset 0 0 0 1px #60bd72;color:#d8f6de}.profilePrompt{border-color:#9c7018;background:#4b3a12;color:#ffe5a0}.profileLogout,.profileClear{color:#ff8a80}}
