
.ktss-wrap{--ktss-red:#c62828;--ktss-bg:#fff;--ktss-text:#172033;--ktss-muted:#64748b;--ktss-line:#e5e7eb;--ktss-card:#ffffff;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ktss-text);background:var(--ktss-bg);border:1px solid var(--ktss-line);border-radius:18px;padding:18px;max-width:1240px;margin:24px auto;box-shadow:0 10px 30px rgba(15,23,42,.08)}
.ktss-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:16px}
.ktss-title{font-weight:800;font-size:24px}
.ktss-subtitle,.ktss-user span,.ktss-muted{color:var(--ktss-muted);font-size:13px}
.ktss-user{text-align:right}
.ktss-nav{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 16px}
.ktss-nav button{appearance:none;border:1px solid var(--ktss-red)!important;background:var(--ktss-red)!important;color:#fff!important;border-radius:12px;padding:10px 14px;cursor:pointer;font-weight:700;line-height:1.2;box-shadow:none;opacity:1!important}
.ktss-nav button:hover,.ktss-nav button.is-active{filter:brightness(.92);outline:2px solid rgba(198,40,40,.25)}
.ktss-panel{display:none;border:1px solid var(--ktss-line);border-radius:16px;background:var(--ktss-card);padding:16px;min-height:280px}
.ktss-panel.is-active{display:block}
.ktss-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}
.ktss-card{border:1px solid var(--ktss-line);border-radius:14px;padding:14px;background:#fff}
.ktss-card h3{margin:.2rem 0 .7rem}
.ktss-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;align-items:center}
.ktss-btn{border:1px solid var(--ktss-red);background:var(--ktss-red);color:#fff!important;border-radius:10px;padding:9px 12px;font-weight:700;cursor:pointer;text-decoration:none;line-height:1.2}
.ktss-btn.secondary{background:#fff;color:var(--ktss-red)!important}
.ktss-input,.ktss-select,.ktss-textarea{box-sizing:border-box;width:100%;border:1px solid #cbd5e1;border-radius:10px;padding:10px;color:#111827;background:#fff;min-height:40px}
.ktss-label{display:block;font-weight:700;margin:8px 0 4px}
.ktss-table{width:100%;border-collapse:collapse;margin-top:12px;background:#fff}
.ktss-table th,.ktss-table td{border-bottom:1px solid var(--ktss-line);padding:9px;text-align:left;vertical-align:top}
.ktss-table th{background:#f8fafc;color:#111827}
.ktss-pill{display:inline-block;border-radius:999px;background:#fee2e2;color:#991b1b;padding:3px 8px;font-size:12px;font-weight:700;margin:2px}
.ktss-warning{border-left:4px solid #f59e0b;background:#fffbeb;padding:10px;border-radius:10px;margin:8px 0;color:#7c2d12}
.ktss-modal{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:99999;display:none;align-items:center;justify-content:center;padding:18px}
.ktss-modal.is-open{display:flex}
.ktss-modal-box{background:#fff;color:#111827;border-radius:18px;max-width:820px;width:100%;max-height:90vh;overflow:auto;padding:18px;position:relative}
.ktss-close{position:absolute;right:12px;top:10px;width:36px;height:36px;border-radius:999px;border:1px solid #cbd5e1;background:#fff;color:#111827;font-size:24px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.ktss-help{font-size:13px;color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:10px;margin:10px 0}
.ktss-checkbox-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px}
.ktss-mini{font-size:12px;color:#64748b}
@media (prefers-color-scheme:dark){.ktss-wrap{--ktss-bg:#0f172a;--ktss-text:#f8fafc;--ktss-muted:#cbd5e1;--ktss-line:#334155;--ktss-card:#111827}.ktss-card,.ktss-panel,.ktss-table{background:#111827}.ktss-table th{background:#1f2937;color:#f8fafc}.ktss-input,.ktss-select,.ktss-textarea{background:#0b1220;color:#f8fafc;border-color:#475569}.ktss-btn.secondary{background:#111827}.ktss-help{background:#172033;color:#e2e8f0;border-color:#334155}}
@media print{.ktss-nav,.ktss-actions,.ktss-topbar{display:none!important}.ktss-wrap{box-shadow:none;border:none;margin:0}.ktss-panel{display:block!important;border:none}}


/* v2.2.1: исправление стартового/приветственного окна и форм */
.ktss-wrap,
.ktss-wrap * {
  box-sizing: border-box;
}

.ktss-welcome,
.ktss-first-run,
.ktss-start,
.ktss-onboarding,
.ktss-empty-state {
  width: 100%;
  max-width: 980px;
  margin: 0 auto;
}

.ktss-welcome .ktss-card,
.ktss-first-run .ktss-card,
.ktss-start .ktss-card,
.ktss-onboarding .ktss-card,
.ktss-empty-state .ktss-card {
  overflow: hidden;
}

.ktss-form,
.ktss-welcome-form,
.ktss-start-form,
.ktss-onboarding-form {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  width: 100%;
  max-width: 720px;
}

.ktss-form-row,
.ktss-row,
.ktss-field-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  align-items: end;
  width: 100%;
}

.ktss-actions,
.ktss-welcome .ktss-actions,
.ktss-first-run .ktss-actions,
.ktss-start .ktss-actions,
.ktss-onboarding .ktss-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  clear: both;
}

.ktss-actions .ktss-btn,
.ktss-actions button,
.ktss-actions input[type="button"],
.ktss-actions input[type="submit"],
.ktss-actions a {
  width: auto;
  max-width: 100%;
  white-space: normal;
  text-align: center;
  margin: 0;
  position: static;
}

.ktss-input,
.ktss-select,
.ktss-textarea,
.ktss-wrap input[type="text"],
.ktss-wrap input[type="email"],
.ktss-wrap input[type="tel"],
.ktss-wrap input[type="number"],
.ktss-wrap input[type="month"],
.ktss-wrap input[type="time"],
.ktss-wrap select,
.ktss-wrap textarea {
  display: block;
  width: 100% !important;
  max-width: 100%;
  min-width: 0;
  margin: 0;
}

.ktss-label {
  display: block;
  width: 100%;
}

.ktss-card > .ktss-input,
.ktss-card > .ktss-select,
.ktss-card > .ktss-textarea,
.ktss-card > input,
.ktss-card > select,
.ktss-card > textarea {
  margin-top: 6px;
}

.ktss-topbar {
  flex-wrap: wrap;
}

.ktss-user {
  min-width: 0;
}

.ktss-nav {
  overflow: visible;
}

.ktss-nav button {
  min-height: 42px;
}

.ktss-panel {
  overflow: visible;
}

.ktss-modal-box {
  display: block;
}

@media (max-width: 640px) {
  .ktss-wrap {
    padding: 12px;
    margin: 12px auto;
    border-radius: 14px;
  }

  .ktss-topbar {
    align-items: flex-start;
  }

  .ktss-title {
    font-size: 20px;
    line-height: 1.2;
  }

  .ktss-user {
    text-align: left;
    width: 100%;
  }

  .ktss-form-row,
  .ktss-row,
  .ktss-field-row,
  .ktss-grid {
    grid-template-columns: 1fr !important;
  }

  .ktss-actions {
    flex-direction: column;
    align-items: stretch;
  }

  .ktss-actions .ktss-btn,
  .ktss-actions button,
  .ktss-actions input[type="button"],
  .ktss-actions input[type="submit"],
  .ktss-actions a {
    width: 100%;
  }

  .ktss-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }

  .ktss-nav button {
    width: 100%;
    padding: 10px 8px;
  }

  .ktss-table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
  }
}


/* v2.2.2: компактный блок выбора логики бригад */
.ktss-segmented {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  width: 100%;
  margin: 6px 0 12px;
}

.ktss-segmented label {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  border: 1px solid #cbd5e1;
  border-radius: 12px;
  background: #fff;
  color: #111827;
  padding: 9px 8px;
  font-weight: 700;
  line-height: 1.15;
  text-align: center;
  cursor: pointer;
}

.ktss-segmented input {
  flex: 0 0 auto;
  margin: 0;
}

.ktss-segmented span {
  min-width: 0;
  overflow-wrap: anywhere;
}

@media (max-width: 760px) {
  .ktss-segmented {
    grid-template-columns: 1fr;
  }

  .ktss-segmented label {
    justify-content: flex-start;
    text-align: left;
    padding: 11px 12px;
  }
}

@media (prefers-color-scheme:dark) {
  .ktss-segmented label {
    background: #111827;
    color: #f8fafc;
    border-color: #475569;
  }
}


/* v2.2.3: импорт базы */
.ktss-input[type="file"] {
  padding: 8px;
  cursor: pointer;
}

.ktss-btn:disabled,
.ktss-btn[disabled] {
  opacity: .55;
  cursor: not-allowed;
  filter: grayscale(.3);
}


/* v2.2.4: предпросмотр подборок в календаре */
.ktss-selection-card.is-preview {
  border-color: var(--ktss-red);
  box-shadow: 0 0 0 2px rgba(198,40,40,.12);
}

.ktss-selection-head {
  display: flex;
  gap: 12px;
  justify-content: space-between;
  align-items: flex-start;
  flex-wrap: wrap;
}

.ktss-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(140px, 1fr));
  gap: 10px;
  margin: 12px 0 18px;
}

.ktss-day-card {
  border: 1px solid var(--ktss-line);
  border-radius: 14px;
  background: #fff;
  padding: 10px;
  min-height: 120px;
}

.ktss-day-title {
  font-weight: 800;
  color: var(--ktss-red);
  border-bottom: 1px solid var(--ktss-line);
  padding-bottom: 6px;
  margin-bottom: 8px;
}

.ktss-shift-item {
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  padding: 8px;
  margin: 6px 0;
  background: #f8fafc;
  font-size: 13px;
}

.ktss-preview-note {
  border-color: var(--ktss-red);
}

@media (max-width: 1100px) {
  .ktss-calendar-grid {
    grid-template-columns: repeat(4, minmax(140px, 1fr));
  }
}

@media (max-width: 760px) {
  .ktss-calendar-grid {
    grid-template-columns: 1fr;
  }

  .ktss-selection-head {
    display: block;
  }
}

@media (prefers-color-scheme:dark) {
  .ktss-day-card {
    background: #111827;
  }
  .ktss-shift-item {
    background: #172033;
    border-color: #334155;
  }
}


/* v2.2.5: настройки без наезда */
.ktss-settings-stack {
  display: grid;
  gap: 14px;
  max-width: 920px;
}

.ktss-setting-block {
  border: 1px solid var(--ktss-line);
  border-radius: 14px;
  padding: 12px;
  background: #fff;
  overflow: hidden;
}

.ktss-switch-row {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 10px;
  align-items: start;
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 10px;
  margin: 8px 0;
  background: #f8fafc;
  line-height: 1.25;
}

.ktss-switch-row input {
  margin-top: 3px;
}

.ktss-switch-row strong,
.ktss-switch-row em {
  display: block;
}

.ktss-switch-row em {
  color: #64748b;
  font-style: normal;
  font-size: 12px;
  margin-top: 3px;
}

.ktss-actions-safe {
  align-items: stretch;
}

.ktss-actions-safe .ktss-btn {
  min-width: 180px;
}

/* v2.2.5: настоящий календарь месяца */
.ktss-month-calendar {
  width: 100%;
  margin: 14px 0 20px;
}

.ktss-weekdays,
.ktss-month-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 6px;
}

.ktss-weekdays div {
  text-align: center;
  font-weight: 800;
  color: var(--ktss-red);
  padding: 6px 4px;
}

.ktss-month-day {
  position: relative;
  min-height: 124px;
  border: 1px solid var(--ktss-line);
  border-radius: 12px;
  background: #fff;
  padding: 7px;
  overflow: visible;
  transition: transform .16s ease, box-shadow .16s ease, z-index .16s ease;
}

.ktss-month-day.is-weekend {
  background: #fff7f7;
}

.ktss-month-day.has-shifts {
  border-color: rgba(198,40,40,.35);
}

.ktss-empty-day {
  background: #f8fafc;
  opacity: .65;
}

.ktss-day-num {
  font-weight: 900;
  color: var(--ktss-red);
  font-size: 15px;
  line-height: 1;
}

.ktss-day-full {
  font-size: 10px;
  color: #64748b;
  margin: 3px 0 5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ktss-day-shifts {
  display: grid;
  gap: 4px;
  max-height: 82px;
  overflow: hidden;
}

.ktss-mini-shift {
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #f8fafc;
  padding: 4px 5px;
  font-size: 10px;
  line-height: 1.15;
  overflow: hidden;
}

.ktss-mini-shift strong,
.ktss-mini-shift span,
.ktss-mini-shift em {
  display: block;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ktss-mini-shift em {
  color: #64748b;
  font-style: normal;
}

.ktss-no-shift {
  color: #94a3b8;
  font-size: 12px;
}

.ktss-more {
  margin-top: 4px;
  font-size: 10px;
  color: var(--ktss-red);
  font-weight: 800;
}

.ktss-day-popover {
  display: none;
  position: absolute;
  left: 8px;
  top: 34px;
  width: min(320px, 82vw);
  max-height: 360px;
  overflow: auto;
  background: #fff;
  border: 2px solid var(--ktss-red);
  border-radius: 14px;
  padding: 12px;
  box-shadow: 0 18px 42px rgba(15,23,42,.25);
  z-index: 50;
  color: #111827;
}

.ktss-pop-shift {
  border-top: 1px solid #e2e8f0;
  padding-top: 8px;
  margin-top: 8px;
  font-size: 13px;
}

.ktss-pop-shift span {
  color: #64748b;
  font-size: 12px;
}

.ktss-month-day:hover,
.ktss-month-day:focus-within {
  z-index: 30;
  transform: scale(1.025);
  box-shadow: 0 12px 30px rgba(15,23,42,.18);
}

.ktss-month-day:hover .ktss-day-popover,
.ktss-month-day:focus-within .ktss-day-popover {
  display: block;
}

@media (max-width: 980px) {
  .ktss-weekdays,
  .ktss-month-grid {
    gap: 4px;
  }

  .ktss-month-day {
    min-height: 106px;
    padding: 5px;
  }

  .ktss-mini-shift {
    font-size: 9px;
    padding: 3px 4px;
  }

  .ktss-day-full {
    display: none;
  }
}

@media (max-width: 680px) {
  .ktss-weekdays {
    display: none;
  }

  .ktss-month-grid {
    grid-template-columns: 1fr;
  }

  .ktss-month-day {
    min-height: auto;
  }

  .ktss-empty-day {
    display: none;
  }

  .ktss-day-full {
    display: block;
    font-size: 12px;
  }

  .ktss-mini-shift {
    font-size: 12px;
  }

  .ktss-day-shifts {
    max-height: none;
  }

  .ktss-day-popover {
    position: static;
    display: block;
    width: 100%;
    max-height: none;
    margin-top: 8px;
    border-width: 1px;
    box-shadow: none;
  }

  .ktss-month-day:hover,
  .ktss-month-day:focus-within {
    transform: none;
    box-shadow: none;
  }
}

@media (prefers-color-scheme:dark) {
  .ktss-setting-block,
  .ktss-month-day,
  .ktss-day-popover {
    background: #111827;
    color: #f8fafc;
  }

  .ktss-switch-row,
  .ktss-mini-shift {
    background: #172033;
    border-color: #334155;
  }

  .ktss-month-day.is-weekend {
    background: #1f1720;
  }

  .ktss-empty-day {
    background: #0f172a;
  }
}


/* v2.2.6: аварийная стабилизация фронта */
.ktss-panel { position: relative; z-index: 1; }
.ktss-nav { position: relative; z-index: 5; }
.ktss-settings-stack { display:grid; gap:14px; max-width:920px; }
.ktss-setting-block { border:1px solid var(--ktss-line); border-radius:14px; padding:12px; background:#fff; overflow:hidden; }
.ktss-switch-row { display:grid; grid-template-columns:24px 1fr; gap:10px; align-items:start; border:1px solid #e2e8f0; border-radius:12px; padding:10px; margin:8px 0; background:#f8fafc; line-height:1.25; }
.ktss-switch-row input { margin-top:3px; }
.ktss-switch-row strong,.ktss-switch-row em { display:block; }
.ktss-switch-row em { color:#64748b; font-style:normal; font-size:12px; margin-top:3px; }
.ktss-actions-safe { display:flex; flex-wrap:wrap; gap:10px; align-items:stretch; }
.ktss-actions-safe .ktss-btn { min-width:180px; }

.ktss-month-calendar { width:100%; margin:14px 0 20px; }
.ktss-weekdays,.ktss-month-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:6px; }
.ktss-weekdays div { text-align:center; font-weight:800; color:var(--ktss-red); padding:6px 4px; }
.ktss-month-day { position:relative; min-height:124px; border:1px solid var(--ktss-line); border-radius:12px; background:#fff; padding:7px; overflow:visible; }
.ktss-month-day.is-weekend { background:#fff7f7; }
.ktss-month-day.has-shifts { border-color:rgba(198,40,40,.35); }
.ktss-empty-day { background:#f8fafc; opacity:.65; }
.ktss-day-head { display:flex; justify-content:space-between; gap:4px; align-items:center; margin-bottom:5px; }
.ktss-day-num { font-weight:900; color:var(--ktss-red); font-size:15px; line-height:1; }
.ktss-day-small { font-size:10px; color:#64748b; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ktss-day-shifts { display:grid; gap:4px; max-height:86px; overflow:hidden; }
.ktss-mini-shift { border:1px solid #e2e8f0; border-radius:8px; background:#f8fafc; padding:4px 5px; font-size:10px; line-height:1.15; overflow:hidden; }
.ktss-mini-shift strong,.ktss-mini-shift span,.ktss-mini-shift em { display:block; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ktss-mini-shift em { color:#64748b; font-style:normal; }
.ktss-no-shift { color:#94a3b8; font-size:12px; }
.ktss-more { margin-top:4px; font-size:10px; color:var(--ktss-red); font-weight:800; }
.ktss-day-popover { display:none; position:absolute; left:8px; top:34px; width:min(320px,82vw); max-height:360px; overflow:auto; background:#fff; border:2px solid var(--ktss-red); border-radius:14px; padding:12px; box-shadow:0 18px 42px rgba(15,23,42,.25); z-index:100; color:#111827; }
.ktss-pop-shift { border-top:1px solid #e2e8f0; padding-top:8px; margin-top:8px; font-size:13px; }
.ktss-pop-shift span { color:#64748b; font-size:12px; }
.ktss-month-day:hover,.ktss-month-day:focus-within { z-index:30; box-shadow:0 12px 30px rgba(15,23,42,.18); }
.ktss-month-day:hover .ktss-day-popover,.ktss-month-day:focus-within .ktss-day-popover { display:block; }

@media (max-width:980px){
  .ktss-weekdays,.ktss-month-grid{gap:4px;}
  .ktss-month-day{min-height:106px;padding:5px;}
  .ktss-mini-shift{font-size:9px;padding:3px 4px;}
}
@media (max-width:680px){
  .ktss-weekdays{display:none;}
  .ktss-month-grid{grid-template-columns:1fr;}
  .ktss-month-day{min-height:auto;}
  .ktss-empty-day{display:none;}
  .ktss-mini-shift{font-size:12px;}
  .ktss-day-shifts{max-height:none;}
  .ktss-day-popover{position:static;display:block;width:100%;max-height:none;margin-top:8px;border-width:1px;box-shadow:none;}
}
@media (prefers-color-scheme:dark){
  .ktss-setting-block,.ktss-month-day,.ktss-day-popover{background:#111827;color:#f8fafc;}
  .ktss-switch-row,.ktss-mini-shift{background:#172033;border-color:#334155;}
  .ktss-month-day.is-weekend{background:#1f1720;}
  .ktss-empty-day{background:#0f172a;}
}


/* v2.2.7: безопасный раздел организаций */
[data-panel="orgs"] .ktss-table td { vertical-align: middle; }


/* v2.2.8: стабильные справочники */
.ktss-dict-list .ktss-table td:last-child {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.ktss-dict-list .ktss-table .ktss-btn {
  white-space: normal;
}

@media (max-width: 680px) {
  .ktss-dict-list .ktss-table,
  .ktss-dict-list .ktss-table thead,
  .ktss-dict-list .ktss-table tbody,
  .ktss-dict-list .ktss-table tr,
  .ktss-dict-list .ktss-table th,
  .ktss-dict-list .ktss-table td {
    white-space: normal;
  }
}


/* v2.2.9: стабильная загрузка базы */
.ktss-wrap input[type="file"].ktss-input {
  height: auto;
  min-height: 44px;
}

#db-result {
  word-break: break-word;
}

.ktss-warning {
  overflow-wrap: anywhere;
}


/* v2.2.11: время сайта и персональные часы */
.ktss-site-time {
  display: block;
  margin-top: 4px;
  color: var(--ktss-muted);
}

.ktss-site-time strong {
  color: var(--ktss-red);
  font-variant-numeric: tabular-nums;
}

.ktss-personal-shift-row {
  margin: 10px 0;
  border-color: rgba(198,40,40,.25);
}

@media (max-width: 640px) {
  .ktss-site-time {
    font-size: 12px;
  }
}


/* v2.3.0: SaaS-изоляция и тарифы организации */
.ktss-org-card {
  border-color: rgba(198,40,40,.25);
}

.ktss-lock {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #991b1b;
  background: #fee2e2;
  border: 1px solid #fecaca;
  border-radius: 999px;
  padding: 6px 10px;
  font-weight: 800;
}

.ktss-btn:disabled,
.ktss-btn[disabled] {
  opacity: .55;
  cursor: not-allowed;
  filter: grayscale(.4);
}

#ktss-current-org-plan {
  display: inline-block;
  border-radius: 999px;
  padding: 2px 7px;
  color: #fff;
  background: var(--ktss-red);
  font-weight: 800;
  font-size: 11px;
}


/* v2.3.1: резервные копии */
.ktss-card input[type="file"].ktss-input {
  height: auto;
  min-height: 44px;
}

#backup-result {
  overflow-wrap: anywhere;
}

.ktss-mini {
  color: var(--ktss-muted);
  font-size: 12px;
  line-height: 1.35;
}
