/* v8.4 — Apple presentation inspired UI */
:root{
  --bg:#f5f5f7;
  --panel:#ffffff;
  --text:#1d1d1f;
  --muted:#6e6e73;
  --line:#d2d2d7;
  --accent:#0071e3;
  --accent-hover:#0077ed;
  --soft:#fbfbfd;
  --danger:#d70015;
  --shadow:0 10px 30px rgba(0,0,0,.06);
  --shadow-lg:0 18px 60px rgba(0,0,0,.08);
}

*{box-sizing:border-box}

body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","SF Pro Text","Helvetica Neue",Arial,sans-serif;
  letter-spacing:-0.01em;
}

header{
  position:sticky;
  top:0;
  z-index:50;
  height:auto;
  min-height:64px;
  padding:12px 28px;
  background:rgba(255,255,255,.82);
  backdrop-filter:saturate(180%) blur(20px);
  -webkit-backdrop-filter:saturate(180%) blur(20px);
  border-bottom:1px solid rgba(0,0,0,.06);
  box-shadow:none;
}

.brand{
  font-size:20px;
  font-weight:700;
  letter-spacing:-0.03em;
  color:var(--text);
}
.brand span{
  color:var(--accent);
}
.brand small{
  color:var(--muted)!important;
  font-weight:500;
  opacity:1!important;
}

#saveStatus{
  color:var(--muted)!important;
  font-size:12px!important;
}

.layout{
  max-width:1440px;
  margin:0 auto;
  gap:24px;
  padding:28px 28px 60px;
}

aside{
  width:220px;
  background:transparent;
}

nav{
  position:sticky;
  top:92px;
  display:flex;
  flex-direction:column;
  gap:8px;
}

nav button{
  border:0;
  border-radius:14px;
  background:transparent;
  color:var(--muted);
  text-align:left;
  padding:12px 14px;
  font-size:14px;
  font-weight:600;
  transition:.2s ease;
}
nav button:hover{
  background:rgba(255,255,255,.7);
  color:var(--text);
}
nav button.active{
  background:#fff;
  color:var(--text);
  box-shadow:0 3px 12px rgba(0,0,0,.05);
}

main{
  min-width:0;
  width:100%;
}

.view{
  animation:appleFade .25s ease;
}
@keyframes appleFade{
  from{opacity:0;transform:translateY(4px)}
  to{opacity:1;transform:none}
}

.section-title{
  align-items:flex-end;
  margin-bottom:20px;
}
.section-title h1{
  margin:0;
  font-size:42px;
  line-height:1.06;
  letter-spacing:-0.045em;
  font-weight:700;
}
.section-title .small{
  margin-top:6px;
  color:var(--muted);
}

h2{
  font-size:20px;
  letter-spacing:-0.025em;
}

.card{
  background:rgba(255,255,255,.92);
  border:1px solid rgba(0,0,0,.05);
  border-radius:24px;
  box-shadow:var(--shadow);
  padding:22px;
}

input,select,textarea{
  width:100%;
  border:1px solid var(--line);
  background:#fff;
  color:var(--text);
  border-radius:12px;
  padding:11px 12px;
  font:inherit;
  outline:none;
  transition:border-color .18s,box-shadow .18s,background .18s;
}
input:focus,select:focus,textarea:focus{
  border-color:var(--accent);
  box-shadow:0 0 0 4px rgba(0,113,227,.12);
}

label{
  color:var(--muted);
  font-size:13px;
  font-weight:600;
  gap:7px;
}

.btn,.btn-light,.btn-danger{
  border-radius:980px!important;
  min-height:38px;
  padding:9px 16px!important;
  font-weight:600!important;
  font-size:13px!important;
  transition:transform .18s ease,background .18s ease,box-shadow .18s ease!important;
}
.btn{
  background:var(--accent)!important;
  color:#fff!important;
  border:0!important;
}
.btn:hover{
  background:var(--accent-hover)!important;
  transform:translateY(-1px);
}
.btn-light{
  background:#fff!important;
  color:var(--text)!important;
  border:1px solid rgba(0,0,0,.08)!important;
  box-shadow:0 2px 8px rgba(0,0,0,.03);
}
.btn-light:hover{
  background:#f9f9fb!important;
  transform:translateY(-1px);
}
.btn-danger{
  background:#fff!important;
  color:var(--danger)!important;
  border:1px solid rgba(215,0,21,.18)!important;
}

.ai-main-create-btn{
  width:100%;
  min-height:70px!important;
  border-radius:22px!important;
  font-size:20px!important;
  font-weight:700!important;
  letter-spacing:-0.025em;
  background:linear-gradient(135deg,#0071e3 0%,#2997ff 100%)!important;
  box-shadow:0 18px 45px rgba(0,113,227,.2)!important;
}
.ai-main-create-btn:hover{
  transform:translateY(-2px);
  box-shadow:0 22px 50px rgba(0,113,227,.24)!important;
}

.file-menu-button{
  min-width:88px;
}
.file-menu-dropdown{
  border:1px solid rgba(0,0,0,.06)!important;
  border-radius:16px!important;
  box-shadow:var(--shadow-lg)!important;
  padding:8px!important;
  background:rgba(255,255,255,.97)!important;
  backdrop-filter:blur(20px);
}
.file-menu-dropdown button{
  border-radius:10px!important;
  padding:10px 12px!important;
  font-size:13px!important;
}

table{
  border-collapse:separate!important;
  border-spacing:0!important;
  overflow:hidden;
}
thead th{
  background:#f5f5f7!important;
  color:var(--muted)!important;
  font-size:12px!important;
  text-transform:none!important;
  letter-spacing:0!important;
  border-bottom:1px solid var(--line)!important;
}
tbody td{
  background:#fff;
  border-bottom:1px solid rgba(0,0,0,.05)!important;
}

.main-work-row td{
  background:#fbfbfd!important;
  font-weight:600;
}

.work-subgroup-row td,
.material-category-row td,
.work-category-row td{
  background:#f5f5f7!important;
  color:var(--text)!important;
}

.work-total-row td{
  background:#fafafa!important;
}
.work-total-row.final td{
  background:#f2f7fd!important;
  color:#0059b2!important;
}

.work-subgroup-toggle, .material-cat-toggle, .work-cat-toggle{
  border-radius:50%!important;
  width:30px!important;
  height:30px!important;
  min-height:30px!important;
  background:#fff!important;
  border:1px solid rgba(0,0,0,.08)!important;
  color:var(--text)!important;
}





.badge{
  border-radius:980px!important;
  padding:4px 8px!important;
  font-size:10px!important;
}

.empty{
  color:var(--muted)!important;
  padding:28px!important;
}

.small{
  color:var(--muted);
}

.form-grid{
  gap:16px!important;
}

.toolbar{
  gap:10px!important;
}

@media(max-width:900px){
  .layout{
    display:block!important;
    padding:18px 14px 40px;
  }
  aside{
    width:100%;
    margin-bottom:14px;
  }
  nav{
    position:static;
    flex-direction:row;
    overflow:auto;
    padding-bottom:4px;
  }
  nav button{
    white-space:nowrap;
    text-align:center;
  }
  .section-title h1{
    font-size:34px;
  }
  header{
    padding:10px 14px;
  }
}


/* v8.6 — окно выбора состава работ */
#subworkPickerModal .modal-box{
  max-height:88vh;
  overflow:auto;
}
.subwork-picker-row{
  display:grid;
  grid-template-columns:minmax(240px,1fr) 80px 120px 130px;
  gap:12px;
  align-items:center;
  padding:13px 16px;
  border-bottom:1px solid rgba(0,0,0,.05);
}
@media(max-width:720px){
  .subwork-picker-row{
    grid-template-columns:1fr;
    gap:6px;
  }
  .subwork-picker-row button{width:100%}
}


/* v8.7 — отдельная вкладка «Состав работ» */
.subwork-library-head{
  display:flex;
  align-items:center;
  gap:8px;
  padding:14px 16px;
  background:#f5f5f7;
  border-bottom:1px solid rgba(0,0,0,.06);
}

.subwork-library-row{
  display:grid;
  grid-template-columns:minmax(260px,1fr) 90px 120px 130px;
  gap:12px;
  align-items:center;
  padding:14px 16px;
  border-bottom:1px solid rgba(0,0,0,.05);
  background:#fff;
}
.subwork-library-row:last-child{border-bottom:0}
@media(max-width:760px){
  .subwork-library-row{
    grid-template-columns:1fr;
    gap:6px;
  }
  .subwork-library-row button{width:100%}
}

.subscription-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.subscription-card{position:relative;background:#fff;border:1px solid #dce3eb;border-radius:18px;padding:20px;display:flex;flex-direction:column;min-height:360px}
.subscription-card-featured{border:2px solid #1769e0;box-shadow:0 10px 28px rgba(23,105,224,.10)}
.subscription-card-current{box-shadow:0 0 0 3px rgba(23,105,224,.16)}
.subscription-badge{position:absolute;top:12px;right:12px;background:#1769e0;color:#fff;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800}
.subscription-plan{font-size:25px;font-weight:800;margin-bottom:6px}
.subscription-price{font-size:16px;font-weight:700;color:#1769e0;margin-bottom:6px}
.subscription-desc{color:#74808e;margin-bottom:18px;min-height:42px}
.subscription-features{display:grid;gap:9px;line-height:1.35;margin-bottom:20px;flex:1}
.subscription-plan-btn{width:100%}
.subscription-usage-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.subscription-usage-item{padding:13px;border:1px solid #e0e6ed;border-radius:12px;background:#f8fafc}
.subscription-usage-value{font-size:24px;font-weight:800;margin-top:4px}
.subscription-progress{height:8px;border-radius:999px;background:#e7ecf2;overflow:hidden;margin-top:8px}
.subscription-progress>span{display:block;height:100%;background:#1769e0;border-radius:999px}




@media(max-width:850px){.subscription-grid, .subscription-usage-grid{grid-template-columns:1fr}}

.tariff-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.tariff-table{width:100%;border-collapse:separate;border-spacing:0;min-width:720px}
.tariff-table th,.tariff-table td{padding:12px 14px;border-bottom:1px solid #e5e9ef;text-align:center}
.tariff-table th:first-child,.tariff-table td:first-child{text-align:left}
.tariff-table thead th{background:#f7f9fc;font-weight:800}
.tariff-yes{color:#18794e;font-weight:900}.tariff-no{color:#98a2b3;font-weight:800}.tariff-limit{font-weight:900}
.tariff-admin-table input[type=number]{width:100px;text-align:center}
.tariff-toggle{width:22px;height:22px;accent-color:#1769e0}
.tariff-feature-note{display:block;font-size:11px;color:#7b8794;margin-top:3px}

/* ===== Строй ОС v21.70 — component: tasks ===== */
.tasks-list{display:grid;gap:9px}
.task-card{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:start;gap:12px;padding:15px}
.task-check{width:30px;height:30px;border:2px solid #b9bbc1;border-radius:50%;background:transparent;color:#fff;font-size:17px;font-weight:800}
.task-card.done .task-check{background:#34c759;border-color:#34c759}
.task-card-title{font-size:16px;font-weight:720;color:var(--text,#1d1d1f)}
.task-card.done .task-card-title{text-decoration:line-through;color:#8e8e93}
.task-card-description{margin-top:5px;color:var(--muted,#626268);font-size:13px;white-space:pre-wrap}
.task-card-meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
.task-card-meta span{padding:4px 8px;border-radius:99px;background:var(--soft,#f0f1f4);color:var(--muted,#65656b);font-size:11px;font-weight:620}
.task-card-meta .task-binding{background:#eaf4ff;color:#0071e3}
.task-card.overdue{border-color:rgba(215,0,21,.30)}
.task-card.overdue .task-due,.task-card-meta .priority-high{background:#fff0f1;color:#d70015}
.task-card.today .task-due{background:#fff4e5;color:#b65d00}
.task-card-meta .priority-low{background:#eef8f0;color:#248a3d}
.task-card-meta .task-notify-status{background:rgba(52,199,89,.12);color:#248a3d}
.task-card-actions{display:flex;gap:6px}
.task-card-actions button{min-height:34px;padding:7px 10px}
.tasks-empty{text-align:center;padding:36px 18px}
.tasks-empty-icon{display:grid;place-items:center;width:56px;height:56px;margin:0 auto 12px;border-radius:50%;background:transparent;box-shadow:none;color:#248a3d;font-size:28px}


/* ===== Строй ОС v21.73 — component: object expenses ===== */
.expenses-list{display:grid;gap:10px}
.expense-card{
  display:grid;
  grid-template-columns:115px minmax(0,1fr) auto;
  gap:14px;
  align-items:start;
  padding:15px 16px;
}
.expense-date{
  padding-top:3px;
  color:#5f6872;
  font-size:13px;
  font-weight:800;
}
.expense-main{min-width:0}
.expense-amount{
  margin-bottom:8px;
  font-size:22px;
  font-weight:850;
  letter-spacing:-.025em;
}
.expense-payee,
.expense-purpose{
  display:flex;
  align-items:flex-start;
  gap:8px;
  margin-top:5px;
  line-height:1.4;
}
.expense-payee>span,
.expense-purpose>span{
  flex:0 0 52px;
  color:#7c838c;
  font-size:12px;
}
.expense-payee b,
.expense-purpose div{
  min-width:0;
  overflow-wrap:anywhere;
}
.expense-actions{display:flex;align-items:center;gap:6px}
.expense-actions button{padding:7px 10px;font-size:12px}
.expense-purpose-field{grid-column:1/-1}
.expense-editor-box{max-width:680px}


/* ===== Строй ОС v21.72 — component: object receipts ===== */
.receipt-editor-card{max-width:720px}
.receipt-photo-picker{
  display:block;
  min-height:150px;
  overflow:hidden;
  border:1px dashed var(--line,#cbd5e1);
  border-radius:14px;
  text-align:center;
  cursor:pointer;
}
.receipt-photo-picker input{display:none}
.receipt-photo-picker span{
  display:flex;
  align-items:center;
  justify-content:center;
  min-height:150px;
  padding:16px;
}
.receipt-photo-picker img{
  display:block;
  max-width:100%;
  max-height:300px;
  margin:auto;
  object-fit:contain;
}
.receipt-ai-row{display:flex;align-items:center;gap:12px;margin:12px 0}
.receipt-items-preview{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.receipt-items-preview span{
  padding:4px 7px;
  border-radius:999px;
  background:var(--soft,#f3f4f6);
  font-size:12px;
}
.receipt-thumb{object-fit:cover}
.receipt-editor-card textarea,
.receipt-editor-card input{width:100%}


/* ===== Строй ОС v21.71 — component: object materials ===== */
.material-supply-card{border-left:4px solid var(--line,#d1d5db)}
.material-supply-card.status-ordered{border-left-color:#f59e0b}
.material-supply-card.status-transit{border-left-color:#3b82f6}
.material-supply-card.status-delivered{border-left-color:#22c55e}
.material-status-badge{font-weight:700}
.material-status-actions select{
  min-width:150px;
  padding:9px 10px;
  border:1px solid var(--line,#d1d5db);
  border-radius:10px;
  background:var(--card,#fff);
  color:var(--text,#111);
}


/* ===== Строй ОС v21.69 — component: object resources ===== */
.ai-home-resource-panel{
  margin-top:12px;
  overflow:hidden;
  border:1px solid rgba(60,60,67,.12);
  border-radius:18px;
  background:var(--panel,#fff);
  box-shadow:0 2px 12px rgba(0,0,0,.035);
}
.ai-home-resource-toggle{
  display:grid;
  grid-template-columns:42px minmax(0,1fr) 30px;
  align-items:center;
  gap:11px;
  width:100%;
  padding:14px 15px;
  border:0;
  background:transparent;
  color:var(--text,#1d1d1f);
  text-align:left;
  cursor:pointer;
}
.ai-home-resource-icon{
  display:grid;
  place-items:center;
  width:38px;
  height:38px;
  border-radius:12px;
  background:transparent;
  box-shadow:none;
  color:currentColor;
  font-size:19px;
}
.ai-home-resource-icon svg{
  display:block;
  width:24px;
  height:24px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
  background:transparent;
}
.ai-home-resource-title{display:flex;min-width:0;flex-direction:column;gap:2px}
.ai-home-resource-title b{font-size:15px;font-weight:740}
.ai-home-resource-title small{color:var(--muted,#77777d);font-size:11px}
.ai-home-resource-chevron{
  justify-self:end;
  color:#8e8e93;
  font-size:22px;
  line-height:1;
  transition:transform .18s;
}
.ai-home-resource-panel.open .ai-home-resource-chevron{transform:rotate(180deg)}
.ai-home-resource-body{padding:0 12px 12px}
.ai-home-resource-actions{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:7px;
  padding:10px 2px;
  border-top:1px solid rgba(60,60,67,.08);
}
.ai-home-resource-actions button{
  min-height:36px;
  border:0;
  border-radius:11px;
  background:#0071e3;
  color:#fff;
  font-size:12px;
  font-weight:700;
}
.ai-home-resource-actions button.secondary{background:var(--soft,#f0f1f4);color:var(--text,#3a3a3c)}
.ai-home-resource-list{display:grid;gap:7px}
.ai-home-resource-item{
  display:grid;
  grid-template-columns:36px minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  padding:9px 8px;
  border-radius:12px;
  background:var(--soft,#f7f7f9);
}
.ai-home-resource-info{display:flex;min-width:0;flex-direction:column;gap:2px}
.ai-home-resource-info b,
.ai-home-resource-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ai-home-resource-info b{font-size:13px}
.ai-home-resource-info small{color:var(--muted,#77777d);font-size:10px}
.ai-home-resource-item-actions{display:flex;gap:4px}
.ai-home-resource-item-actions button{
  width:30px;
  height:30px;
  padding:0;
  border:0;
  border-radius:9px;
  background:var(--panel,#fff);
  color:#0071e3;
  font-size:16px;
  font-weight:700;
}
.ai-home-resource-item-actions button.call{background:#eaf8ef;color:#248a3d}
.ai-home-resource-item-actions button.danger{color:#d70015}
.ai-home-resource-empty{padding:15px 10px;text-align:center;color:#8e8e93;font-size:12px}


/* ===== Строй ОС v21.68 — component: objects list/cards ===== */
#objects{min-width:0}
.current-object-block{margin-bottom:24px}
.objects-section-label{
  display:flex;
  align-items:center;
  gap:8px;
  margin:0 3px 9px;
  color:var(--muted,#6e6e73);
  font-size:13px;
  font-weight:750;
  letter-spacing:.01em;
}
.objects-section-label span{
  min-width:23px;
  padding:3px 7px;
  border-radius:999px;
  background:var(--soft,#ececf0);
  text-align:center;
  font-size:11px;
}
.other-objects-list{display:grid;gap:12px}
.objects-no-others{margin:4px 3px 0;padding:14px;text-align:center}

.object-card{
  display:grid;
  grid-template-columns:58px minmax(0,1fr) auto;
  align-items:center;
  gap:15px;
  padding:17px;
  cursor:pointer;
  transition:border-color .18s,transform .18s,box-shadow .18s;
}
.object-card:hover{
  transform:translateY(-1px);
  border-color:rgba(0,113,227,.30);
  box-shadow:0 8px 28px rgba(0,80,170,.09);
}
.object-card.current{
  border-color:rgba(0,113,227,.40);
  background:linear-gradient(135deg,rgba(0,113,227,.06),rgba(255,255,255,.80));
}
.object-card-icon{
  display:grid;
  place-items:center;
  width:54px;
  height:54px;
  border-radius:16px;
  background:transparent;
  color:#0071e3;
  box-shadow:none;
  font-size:28px;
}
.object-card-icon svg{background:transparent}
.object-card h2{margin:0 0 4px;font-size:19px}
.object-card-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:9px}
.object-card-stats{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}
.object-card-stats span{
  padding:5px 8px;
  border-radius:999px;
  background:var(--soft,#f0f1f4);
  color:var(--muted,#626268);
  font-size:11px;
}
.object-card-actions{display:flex;align-items:center;gap:12px}
.object-card-actions>span{color:#8e8e93;font-size:28px}

.current-object-card{
  border:1px solid rgba(0,113,227,.48);
  background:linear-gradient(135deg,#eaf5ff 0%,#f7fbff 60%,#fff 100%);
  box-shadow:0 10px 32px rgba(0,113,227,.13);
}
.current-object-card .object-card-icon{
  background:transparent;
  color:#0a84ff;
  box-shadow:none;
}
.current-object-badge{
  padding:4px 8px;
  border-radius:999px;
  background:#0071e3;
  color:#fff;
  font-size:10px;
  font-weight:760;
  text-transform:uppercase;
  letter-spacing:.04em;
}

/* Tabs inside object card */
.object-card-tabs{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:5px;
  margin:0 0 18px;
  padding:5px;
  border-radius:15px;
  background:var(--soft,#ececf0);
}
.object-card-tabs button{
  min-height:42px;
  padding:8px 10px;
  border:0;
  border-radius:11px;
  background:transparent;
  color:var(--muted,#626268);
  font-size:13px;
  font-weight:700;
}
.object-card-tabs button.active{
  background:var(--panel,#fff);
  color:#0071e3;
  box-shadow:0 2px 8px rgba(0,0,0,.10);
}


/* ===== Строй ОС v21.67 — component: settings ===== */
#settings{min-width:0}
.settings-tabs{
  display:flex;
  gap:6px;
  width:max-content;
  max-width:100%;
  margin:0 0 14px;
  padding:4px;
  border:1px solid var(--border,#dfe6ee);
  border-radius:14px;
  background:var(--soft,#eef2f6);
}
.settings-tab{
  min-height:40px;
  padding:9px 14px;
  border:0;
  border-radius:10px;
  background:transparent;
  color:var(--muted,#687586);
  font-weight:800;
  cursor:pointer;
}
.settings-tab.active{
  background:var(--panel,#fff);
  color:#1769e0;
  box-shadow:0 1px 4px rgba(20,32,46,.10);
}
.settings-pane{display:none}
.settings-pane.active{display:block}

.settings-danger-zone{
  padding:14px;
  border:1px solid rgba(180,35,24,.22);
  border-radius:14px;
  background:rgba(180,35,24,.035);
}

/* REST API settings */
.api-endpoint-box{
  margin:12px 0;
  padding:12px 14px;
  overflow:auto;
  border:1px solid var(--border,#e2e8f0);
  border-radius:12px;
  background:#f8fafc;
  color:#172033;
}
.api-endpoint-box code{color:inherit;white-space:nowrap}
.api-key-create-row{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:8px;
  margin:14px 0;
}
.api-key-created-box{
  margin:12px 0;
  padding:14px;
  border:1px solid #86efac;
  border-radius:12px;
  background:#f0fdf4;
}
.api-key-secret{display:flex;gap:8px;align-items:center;margin-top:8px}
.api-key-secret code{
  flex:1;
  min-width:0;
  overflow:auto;
  padding:8px;
  border-radius:8px;
  background:var(--panel,#fff);
}
.api-keys-list{
  overflow:hidden;
  border:1px solid var(--border,#e2e8f0);
  border-radius:12px;
  background:transparent;
}
.api-key-row{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:12px 14px;
  border-bottom:1px solid var(--border,#eef2f6);
}
.api-key-row:last-child{border-bottom:0}
.api-methods{display:grid;gap:6px;margin-top:8px}
.api-methods code{
  display:block;
  padding:9px 11px;
  overflow:auto;
  border:1px solid var(--border,#e2e8f0);
  border-radius:8px;
  background:#f8fafc;
}
.api-empty-state{
  display:grid;
  gap:5px;
  padding:18px 16px;
  border:0;
  color:var(--text,#172033);
  text-align:center;
}
.api-empty-icon{font-size:28px;line-height:1;opacity:.55}
.api-empty-state .small{color:var(--muted,#667085)}


/* ===== Строй ОС v21.66 — component: modal system ===== */
.modal{
  position:fixed;
  inset:0;
  z-index:50000;
  display:none;
  align-items:center;
  justify-content:center;
  box-sizing:border-box;
  padding:18px;
  overflow-y:auto;
  overscroll-behavior:contain;
  background:rgba(20,20,24,.34);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
}
.modal.open{display:flex}
.modal-box{
  position:relative;
  z-index:1;
  box-sizing:border-box;
  width:min(850px,100%);
  max-height:calc(100dvh - 36px);
  margin:auto;
  padding:24px;
  overflow:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  border:1px solid rgba(255,255,255,.75);
  border-radius:22px;
  background:rgba(255,255,255,.96);
  color:var(--ais-text,#172033);
  box-shadow:0 28px 80px rgba(0,0,0,.20);
}
.modal-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:14px;
  padding-bottom:13px;
  border-bottom:1px solid var(--ais-border,var(--border,#dfe5ec));
}
.modal-head h2{
  margin:0;
  font-size:21px;
  letter-spacing:-.025em;
}

/* Dynamic application dialogs created from auth.js helpers. */
.stroy-app-overlay-dialog{
  box-sizing:border-box;
  overflow-y:auto;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.stroy-app-dialog-card{
  box-sizing:border-box;
  background:var(--card,#fff);
  color:var(--text,#111827);
  border:1px solid var(--border,#e5e7eb);
}
.stroy-app-dialog-head{
  display:flex;
  justify-content:space-between;
  gap:12px;
  align-items:center;
  margin-bottom:18px;
}
.stroy-app-dialog-head h2{color:var(--text,#111827)}
.stroy-app-dialog-head [data-close]{
  min-height:42px;
  border:1px solid var(--border,#d7dee8);
  border-radius:10px;
  padding:8px 12px;
  background:var(--soft,#eef2f6);
  color:var(--text,#111827);
  font-weight:800;
}
.stroy-app-dialog-card label{color:var(--text,#344054)}
.stroy-app-dialog-card input,
.stroy-app-dialog-card select,
.stroy-app-dialog-card textarea{
  background:var(--card,#fff);
  color:var(--text,#111827);
  border-color:var(--border,#cfd8e3);
}
.stroy-app-dialog-card input::placeholder,
.stroy-app-dialog-card textarea::placeholder{
  color:var(--muted,#98a2b3);
  opacity:1;
}


/* ===== Строй ОС v21.65 — component: object wizard =====
   Компонентные правила мастера создания объекта. Без theme/mobile override-костылей. */
.object-wizard-box{
  width:min(900px,calc(100vw - 28px));
  max-width:900px;
  max-height:min(92vh,980px);
  overflow:auto;
  overscroll-behavior:contain;
  background:var(--panel,#fff);
  color:var(--text,#172033);
}
.object-wizard-head{
  position:sticky;
  top:0;
  z-index:4;
  padding-bottom:12px;
  background:var(--panel,#fff);
}
.object-wizard-progress{
  display:flex;
  align-items:center;
  gap:8px;
  margin:4px 0 24px;
  padding:14px 4px;
  overflow-x:auto;
  scrollbar-width:none;
}
.object-wizard-progress::-webkit-scrollbar{display:none}
.object-wizard-progress-item{
  display:flex;
  align-items:center;
  gap:7px;
  min-width:max-content;
  color:var(--muted,#738096);
  font-size:12px;
}
.object-wizard-progress-item span{
  display:grid;
  place-items:center;
  width:28px;
  height:28px;
  border-radius:50%;
  background:var(--soft,#eef2f7);
  font-weight:800;
}
.object-wizard-progress-item.active{color:var(--text,#172033)}
.object-wizard-progress-item.active span{
  background:#0a84ff;
  color:#fff;
  box-shadow:0 0 0 5px rgba(10,132,255,.12);
}
.object-wizard-progress-item.done span{background:#dff6e7;color:#168244}
.object-wizard-progress-line{height:2px;min-width:22px;flex:1;background:var(--border,#dfe5ec)}
.object-wizard-step{min-width:0}
.object-wizard-step h3{font-size:26px;margin:0 0 8px}
.object-wizard-kicker{
  font-size:12px;
  font-weight:800;
  letter-spacing:.04em;
  text-transform:uppercase;
  color:#0a84ff;
  margin-bottom:7px;
}
.object-wizard-help{margin-bottom:20px;line-height:1.5}
.object-wizard-actions{
  display:flex;
  justify-content:space-between;
  gap:10px;
  margin-top:22px;
  flex-wrap:wrap;
  background:transparent;
}
.object-wizard-actions-end{justify-content:flex-end}
.object-wizard-wide-label{display:grid;gap:7px;font-weight:700}
.object-wizard-wide-label input{width:100%}
.object-wizard-ai-choice{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.object-wizard-choice-card{
  display:grid;
  grid-template-columns:46px 1fr;
  column-gap:12px;
  row-gap:4px;
  text-align:left;
  padding:18px;
  border:1px solid var(--border,#dfe5ec);
  background:var(--panel,#fff);
  color:var(--text,#172033);
  border-radius:18px;
  cursor:pointer;
}
.object-wizard-choice-card:hover{border-color:#0a84ff;box-shadow:0 8px 28px rgba(0,80,170,.10)}
.object-wizard-choice-card>span{grid-row:1/3;font-size:28px}
.object-wizard-choice-card b{font-size:16px}
.object-wizard-choice-card small{color:var(--muted,#738096);line-height:1.35}
.object-wizard-status{margin-top:14px;min-height:24px;font-size:13px}
.object-wizard-status .ok{color:#178347;font-weight:700}
.object-wizard-inline-form{display:grid;grid-template-columns:1.1fr 1fr 1fr 1fr auto;gap:9px;align-items:end}
.object-wizard-material-form{display:grid;grid-template-columns:1fr 140px auto;gap:9px}
.object-wizard-added-list{display:grid;gap:8px;margin-top:16px}
.object-wizard-added-item{
  display:grid;
  grid-template-columns:34px 1fr 34px;
  align-items:center;
  gap:9px;
  padding:11px 12px;
  border:1px solid var(--border,#dfe5ec);
  border-radius:14px;
  background:var(--soft-panel,#f8fafc);
}
.object-wizard-added-item>span{
  display:grid;
  place-items:center;
  width:30px;
  height:30px;
  border-radius:9px;
  background:var(--panel,#fff);
}
.object-wizard-added-item div{display:grid;gap:2px}
.object-wizard-added-item small{color:var(--muted,#738096)}
.object-wizard-added-item button{border:0;background:transparent;font-size:22px;color:var(--muted,#738096);cursor:pointer}
.object-wizard-empty{padding:13px;border:1px dashed var(--border,#dfe5ec);border-radius:12px}
.object-wizard-date-hint{margin:6px 0 4px;color:var(--muted,#738096)}
.object-wizard-tool-status{min-height:20px;margin:4px 0 8px}
.object-wizard-tool-status.ok{color:#18794e}
.object-wizard-tool-status.error{color:#b42318}


/* ===== Строй ОС v21.87 — component: object documents ===== */
.object-documents-list{display:grid;gap:10px}
.object-document-card{
 display:grid;grid-template-columns:62px minmax(0,1fr) auto;
 gap:14px;align-items:center;padding:16px
}
.object-document-icon{
 display:grid;place-items:center;width:54px;height:54px;border-radius:14px;
 background:var(--soft,#f2f4f7);font-size:12px;font-weight:850;letter-spacing:.04em
}
.object-document-main{min-width:0}
.object-document-title{font-size:16px;font-weight:800;overflow-wrap:anywhere}
.object-document-description{margin-top:6px;color:var(--muted,#69707a);font-size:13px;white-space:pre-wrap}
.object-document-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:7px}
.object-document-actions button{min-height:38px}
.object-document-file-field,.object-document-description-field{grid-column:1/-1}
.object-document-file-field input{display:block;width:100%;margin:7px 0}
.object-document-editor-box{max-width:720px}

/* ===== Строй ОС v21.99 — account/admin password security ===== */
.account-security-card{margin-top:16px}
.account-password-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.account-password-grid label{display:flex;flex-direction:column;gap:6px;font-weight:700}
.account-password-grid input{width:100%;box-sizing:border-box}
.account-password-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px}
#accountPasswordStatus,#settingsPasswordStatus{min-height:20px}
@media(max-width:760px){
 .account-password-grid{grid-template-columns:1fr}
 .account-password-actions .btn{width:100%}
}


/* ===== Строй ОС v22.00 — combined expenses + receipts ===== */
.finance-combined-head{margin-bottom:14px}
.finance-combined-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;align-items:start}
.finance-combined-pane{min-width:0}
.finance-combined-pane .tasks-head{margin-top:0}
@media(max-width:900px){
  .finance-combined-grid{grid-template-columns:1fr}
}


/* ===== Строй ОС v22.01 — object works + grouped materials ===== */
.object-works-list{display:grid;gap:12px}
.object-work-card{display:flex;align-items:center;justify-content:space-between;gap:16px}
.object-work-card.completed{opacity:.82}
.object-work-main{min-width:0;flex:1}
.object-work-title{font-size:16px;font-weight:800}
.object-work-controls{display:grid;grid-template-columns:minmax(130px,170px) minmax(160px,190px);gap:10px;align-items:end}
.object-work-controls label{display:flex;flex-direction:column;gap:6px;font-size:12px;font-weight:700}
.object-work-controls select,.object-work-controls input{width:100%;box-sizing:border-box}
@media(max-width:760px){
 .object-work-card{align-items:stretch;flex-direction:column}
 .object-work-controls{grid-template-columns:1fr 1fr}
}
@media(max-width:460px){
 .object-work-controls{grid-template-columns:1fr}
}


/* ===== Строй ОС v22.12 — выбор назначения результата ТЗ ===== */
.ai-tz-apply-choice{margin-top:16px;padding-top:14px;border-top:1px solid var(--line,rgba(127,127,127,.24))}
.ai-tz-apply-hint{margin-bottom:10px;font-weight:700}
.ai-tz-apply-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
@media(max-width:640px){
 .ai-tz-apply-actions{display:grid;grid-template-columns:1fr}
 .ai-tz-apply-actions button{width:100%;min-height:48px}
}


/* ===== Строй ОС v22.14 — удаление сметы ===== */
.ai-home-current-buttons .danger{
  border-color:#dc2626!important;
  color:#b91c1c!important;
  background:transparent!important;
}
.ai-home-current-buttons .danger:hover{
  background:rgba(220,38,38,.08)!important;
}
@media(max-width:760px){
  .ai-home-current-buttons{
    display:grid!important;
    grid-template-columns:1fr 1fr!important;
  }
  .ai-home-current-buttons .danger{
    grid-column:1/-1!important;
    width:100%!important;
  }
  #estimatesHubList .estimate-hub-actions .estimate-delete-btn{
    display:block!important;
    grid-column:1/-1!important;
    width:100%!important;
  }
}


/* ===== Строй ОС v22.15 — мягкое удаление смет ===== */
.estimate-hub-card.estimate-deleted{opacity:.78;border-style:dashed}
.estimate-deleted-badge{
  display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;
  font-size:12px;font-weight:700;background:rgba(220,38,38,.10);color:#b91c1c;
}
.estimate-deleted-meta{margin-top:8px}

/* ===== Строй ОС v22.17 — UX/UI fixes ===== */
.required-mark{color:#b42318;font-weight:800}
.field-error{display:block;margin-top:5px;color:#b42318;font-size:12px;font-weight:600}
.field-error[hidden]{display:none!important}
.field-invalid{border-color:#d92d20!important;box-shadow:0 0 0 3px rgba(217,45,32,.10)!important}
.material-library-toolbar{align-items:center}
#materialCategoryFilter{min-width:190px;max-width:280px}
@media(max-width:720px){.material-library-toolbar{display:grid;grid-template-columns:1fr}#materialCategoryFilter{min-width:0;max-width:none;width:100%}}
/* v22.41-stages: construction stages */
.stage-head-actions,.stage-empty-actions,.stage-card-actions{display:flex;gap:10px;flex-wrap:wrap}.stage-object-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 22px;margin:0 0 18px;border-radius:22px;background:linear-gradient(135deg,#18283f,#2366d1);color:#fff;box-shadow:0 16px 36px rgba(22,54,100,.18)}.stage-object-summary>div:first-child{display:grid;gap:3px}.stage-object-summary span,.stage-object-summary small{opacity:.76}.stage-object-summary b{font-size:22px}.stage-progress-ring{width:82px;height:82px;border-radius:50%;display:grid;place-content:center;text-align:center;background:radial-gradient(circle at center,#1d3a67 55%,transparent 57%),conic-gradient(#62dc9d calc(var(--stage-progress)*1%),rgba(255,255,255,.16) 0)}.stage-progress-ring b{font-size:20px}.stage-progress-ring span{font-size:11px}.stages-timeline{display:flex;gap:8px;overflow-x:auto;padding:5px 2px 17px;scrollbar-width:thin}.stage-timeline-step{min-width:132px;padding:11px 12px;border:1px solid var(--border,#dbe2ea);border-radius:14px;background:var(--card,#fff);display:flex;align-items:center;gap:8px;text-align:left}.stage-timeline-step i{font-style:normal;font-size:18px;color:#94a3b8}.stage-timeline-step.done i{color:#18a66a}.stage-timeline-step.active{border-color:#3278e8;box-shadow:0 0 0 3px rgba(50,120,232,.12)}.stage-timeline-step.active i{color:#3278e8}.stage-empty-hint{width:100%;padding:18px;text-align:center;border:1px dashed var(--border,#dbe2ea);border-radius:14px;color:var(--muted,#64748b)}.stages-list{display:grid;gap:14px}.stage-card{display:grid;grid-template-columns:48px 1fr;padding:0!important;overflow:hidden;border-left:5px solid #aab5c4}.stage-card.active{border-left-color:#3278e8}.stage-card.done{border-left-color:#18a66a}.stage-card.paused{border-left-color:#f59e0b}.stage-card.blocked{opacity:.84}.stage-order-actions{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:rgba(128,145,166,.08);padding:10px 6px}.stage-order-actions button{border:0;background:transparent;font-size:18px;cursor:pointer;color:inherit}.stage-order-actions button:disabled{opacity:.2}.stage-order-actions span{font-size:12px;color:var(--muted,#64748b)}.stage-card-main{padding:18px}.stage-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.stage-card-head h2{margin:6px 0 0;font-size:20px}.stage-status{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:4px 8px;border-radius:999px;background:#eef2f7;color:#526174}.stage-status.active{background:#e7f0ff;color:#2366d1}.stage-status.done{background:#e6f8ef;color:#07834f}.stage-status.paused{background:#fff4dc;color:#9a6100}.stage-meta,.stage-linked{display:flex;gap:8px 16px;flex-wrap:wrap;margin-top:12px;color:var(--muted,#64748b);font-size:13px}.stage-linked span{padding:5px 9px;border-radius:9px;background:rgba(128,145,166,.1)}.stage-blocked-label{color:#b66b00;font-weight:700}.stage-card-actions{margin-top:14px}.stage-name-field,.stage-notes-field{grid-column:1/-1}.stage-template-list{display:grid;gap:10px}.stage-template-list button{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:16px;border:1px solid var(--border,#dbe2ea);border-radius:14px;background:var(--card,#fff);text-align:left;color:inherit}.stage-template-list span{color:var(--muted,#64748b)}.stage-template-list i{font-style:normal;font-size:24px}.stage-links-body{max-height:55vh;overflow:auto}.stage-links-body h3{margin:16px 0 8px}.stage-links-body label{display:flex;align-items:center;gap:10px;padding:10px;border-bottom:1px solid var(--border,#e4e8ee)}.stage-links-body label span{display:flex;flex-direction:column}.stage-links-body input{width:20px;height:20px}
.stage-dashboard-card{display:grid;grid-template-columns:1fr minmax(120px,180px) auto;align-items:center;gap:16px;padding:16px 18px;border:1px solid rgba(50,120,232,.25);border-radius:18px;background:linear-gradient(135deg,rgba(50,120,232,.1),rgba(98,220,157,.08))}.stage-dashboard-card>div:first-child{display:grid;gap:3px}.stage-dashboard-card small,.stage-dashboard-card span{font-size:12px;color:var(--muted,#64748b)}.stage-dashboard-card b{font-size:17px}.stage-dashboard-card>button{border:0;background:transparent;color:#2769d4;font-weight:700}.stage-dashboard-progress{height:8px;border-radius:99px;background:rgba(128,145,166,.16);position:relative}.stage-dashboard-progress i{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:#3278e8}.stage-dashboard-progress span{position:absolute;right:0;top:-20px}
.stage-auto-button{background:linear-gradient(135deg,#3278e8,#6b55df)!important}.auto-stages-summary{display:flex;justify-content:space-between;gap:12px;padding:14px 16px;margin-bottom:12px;border-radius:14px;background:rgba(50,120,232,.1)}.auto-stages-summary span{color:var(--muted,#64748b)}.auto-stages-list{display:grid;gap:8px;max-height:52vh;overflow:auto}.auto-stage-row{display:grid;grid-template-columns:auto 34px 1fr auto;align-items:center;gap:10px;padding:12px;border:1px solid var(--border,#dbe2ea);border-radius:14px}.auto-stage-row>input{width:20px;height:20px}.auto-stage-row>i{display:grid;place-content:center;width:30px;height:30px;border-radius:50%;background:rgba(50,120,232,.12);color:#2769d4;font-style:normal;font-weight:800}.auto-stage-row>span{display:grid}.auto-stage-row small{color:var(--muted,#64748b)}.auto-stage-row>button{border:0;background:transparent;color:#2769d4}.auto-stage-row>em{display:none;grid-column:3/-1;padding:10px;border-radius:10px;background:rgba(128,145,166,.08);font-style:normal;font-size:12px;line-height:1.6}.auto-stage-row.expanded>em{display:block}.auto-stages-options{padding:14px 2px}.auto-stages-options label{display:flex;gap:9px;align-items:center}.auto-stages-options input{width:19px;height:19px}
