
/* Модуль «Объекты» — UI этапов 0–9 */
.obj-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:14px;min-height:500px}
.obj-tree{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:10px;align-self:start;position:sticky;top:12px;max-height:calc(100vh - 100px);overflow:auto}
.obj-tree-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.obj-tree input{width:100%;margin-bottom:8px}
.obj-tree-list{display:flex;flex-direction:column;gap:4px}
.obj-tree-item{border:1px solid transparent;background:transparent;text-align:left;border-radius:8px;padding:8px 9px;cursor:pointer;color:var(--text);display:flex;flex-direction:column;gap:2px}
.obj-tree-item:hover,.obj-tree-item.active{background:var(--panel-2);border-color:var(--line)}
.obj-tree-item span{font-size:10px;color:var(--muted)}
.obj-tree-item b{font-size:13px}
.obj-tree-item small{font-size:11px;color:var(--muted)}
.obj-main{min-width:0}
.obj-list-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.obj-list-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.obj-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:12px}
.obj-list-top{display:flex;flex-direction:column;gap:7px;margin-bottom:8px}
.obj-list-top b{font-size:16px}
.obj-list-meta{display:flex;justify-content:space-between;gap:8px;margin-top:9px;font-size:11px;color:var(--muted)}
.obj-mini-progress{display:flex;align-items:center;gap:8px;margin-top:9px}.obj-mini-progress .progress{flex:1}.obj-mini-progress span{font-size:11px;color:var(--muted)}
.obj-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap}
.obj-code{font-weight:700;font-size:13px;color:var(--muted)}
.obj-card-title{margin:5px 0 3px;font-size:21px}
.obj-actions{display:flex;gap:6px;flex-wrap:wrap}
.obj-progress{margin:14px 0}.obj-progress-label{font-size:12px;color:var(--muted);margin-bottom:6px}
.progress{height:8px;background:var(--line);border-radius:8px;overflow:hidden}.progress-bar{height:100%;background:var(--accent);transition:width .25s}
.obj-tabs{display:flex;gap:4px;overflow:auto;border-bottom:1px solid var(--line);margin:0 -4px 14px;padding:0 4px;position:sticky;top:0;background:var(--panel);z-index:2}
.obj-tabs button{border:0;background:transparent;padding:10px 11px;color:var(--muted);white-space:nowrap;cursor:pointer;border-bottom:2px solid transparent}
.obj-tabs button.active{color:var(--text);border-bottom-color:var(--accent);font-weight:600}.obj-tab-select{display:none}
.obj-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px 24px}.obj-grid .kv{display:flex;flex-direction:column;gap:2px}.kv-l{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.kv-v{font-size:13.5px;overflow-wrap:anywhere}
.obj-toolbar-row{display:flex;justify-content:space-between;margin-bottom:12px}
.obj-summary{display:flex;gap:24px;flex-wrap:wrap;margin:14px 0;padding:13px 16px;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius)}
.obj-summary-item{display:flex;flex-direction:column;gap:2px}.obj-summary-item .lbl{font-size:10px;color:var(--muted);text-transform:uppercase}.obj-summary-item .val{font-size:17px;font-weight:700}
.obj-kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin:10px 0 15px}.obj-kpi-row>div{border:1px solid var(--line);background:var(--panel-2);border-radius:10px;padding:10px}.obj-kpi-row b{display:block;font-size:18px}.obj-kpi-row small{color:var(--muted)}.obj-kpi-row .danger b{color:#dc2626}
.obj-subtitle{margin:20px 0 8px}.obj-filters{display:flex;gap:7px;flex-wrap:wrap;margin:8px 0}
.sticky-table thead th{position:sticky;top:0;background:var(--panel);z-index:1}
.obj-stage-progress{height:6px;min-width:90px}.row-danger td{background:rgba(220,38,38,.05)}
.gantt{margin-top:18px}.gantt-scroll{overflow:auto;border:1px solid var(--line);border-radius:8px;padding:8px}.gantt-row{display:grid;grid-template-columns:210px minmax(400px,1fr);gap:10px;align-items:center;margin:5px 0}.gantt-name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gantt-track{height:20px;background:var(--panel-2);border-radius:5px;position:relative}.gantt-bar{position:absolute;top:3px;height:14px;border-radius:4px;background:var(--accent);min-width:5px}
.obj-id-checklist{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 14px}.obj-id-checklist span{padding:5px 7px;border:1px solid var(--line);border-radius:7px;font-size:11px;color:var(--muted)}.obj-id-checklist .done{color:var(--text);border-color:var(--accent)}
.obj-calendar,.obj-tracker{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2)}
.finance-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.obj-warning{padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel-2);margin-bottom:12px}
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;margin-bottom:15px}.photo-grid figure{margin:0;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:var(--panel)}.photo-grid img{width:100%;height:145px;object-fit:cover;display:block;background:var(--panel-2)}.photo-grid figcaption{padding:7px;font-size:10px;color:var(--muted)}.photo-grid .btn{float:right}
.timeline{display:flex;flex-direction:column;margin-top:12px}.tl-item{display:flex;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}.tl-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);margin-top:6px;flex:0 0 auto}.tl-item.danger .tl-dot{background:#dc2626}.tl-item.note .tl-dot{background:#d97706}.tl-meta{font-size:11px;color:var(--muted);margin-bottom:3px}.tl-text{font-size:13px;white-space:normal}
.comment-form{display:flex;gap:8px;margin-bottom:10px}.comment-form textarea{flex:1}
.obj-notify-btn{position:relative}.obj-notify-count{position:absolute;top:1px;right:1px;background:#dc2626;color:#fff;border-radius:9px;font-size:9px;line-height:15px;min-width:15px;height:15px;padding:0 3px}
.obj-form-note{margin:8px 0}.obj-check{display:flex;align-items:center;gap:7px;font-size:13px}.obj-check input{width:auto}
.form-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.form-row{display:flex;flex-direction:column;gap:4px}.form-row-full{grid-column:1/-1}.form-row label{font-size:12px;color:var(--muted)}
.modal-box.modal-wide{max-width:1100px;width:min(1100px,96vw)}
@media(max-width:900px){.obj-layout{grid-template-columns:1fr}.obj-tree{position:static;max-height:none}.obj-tree-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}.finance-grid{grid-template-columns:1fr}.obj-tabs{position:static}}
@media(max-width:700px){.obj-grid,.form-grid2{grid-template-columns:1fr}.obj-cards{grid-template-columns:1fr}.obj-card-title{font-size:18px}.obj-tabs-wrap{min-width:0}.obj-tabs{display:none}.obj-tabs-wrap:before{content:'Раздел';display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.obj-tab-select{display:block;width:100%;margin-bottom:10px}.gantt-row{grid-template-columns:130px minmax(300px,1fr)}.table-wrap table{min-width:780px}.obj-card-head{flex-direction:column}.obj-actions{width:100%}.obj-actions .btn{flex:1}.comment-form{flex-direction:column}.photo-grid{grid-template-columns:repeat(2,1fr)}}
