.file-link{min-height:44px}
.shell{padding-bottom:calc(86px + env(safe-area-inset-bottom))}.fab{bottom:calc(20px + env(safe-area-inset-bottom));max-width:calc(100vw - 36px)}
.notify{position:relative;width:44px;height:44px;min-width:44px;padding:10px;border:0;background:transparent;color:#146c43}.notify svg{display:block;width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.notify-dot{position:absolute;right:7px;top:7px;width:8px;height:8px;border-radius:50%;background:#c33b3b;border:2px solid #fff}
.modal-layer{padding:30px 0 0}.modal{max-height:100dvh;overflow:hidden}.modal-scroll{max-height:100dvh;overflow:auto;padding:22px;padding-bottom:calc(22px + env(safe-area-inset-bottom))}.file-list{display:grid;gap:8px;width:100%;margin-top:8px}.file-entry{display:flex;align-items:center;gap:8px;min-width:0;padding:8px;background:#f6fbf8;border-radius:9px}.file-thumb,.file-placeholder,.file-type{flex:0 0 44px;width:44px;height:44px}.file-placeholder,.file-type{display:grid;place-items:center;border-radius:7px;background:#e8eeeb;color:#146c43;font-size:10px;text-align:center}.file-info{display:grid;min-width:0;flex:1}.file-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-info small{color:#68766f}.file-link{min-height:36px;padding:7px 9px;border:1px solid #cfe2d7;border-radius:8px;background:#fff;color:#146c43;white-space:nowrap}.history-list{max-height:calc(100dvh - 150px);overflow:auto;padding-bottom:8px}.modal-actions{position:sticky;bottom:0;background:#fff;padding-top:10px;padding-bottom:env(safe-area-inset-bottom)}
@media(max-width:450px){.actions{padding-bottom:12px}.actions .btn{width:100%}.file-entry{align-items:flex-start}.file-info strong{white-space:normal;overflow-wrap:anywhere}.modal-actions{flex-wrap:wrap}.modal-actions .btn{flex:1 1 120px}}
.file-link{min-height:44px}.history-list{max-height:calc(100dvh - 210px)}.fab{position:static;display:block;margin:16px auto 0}
@media(max-width:450px){.fab{position:static;display:block;margin:16px auto 0}.modal-layer{padding:0}.modal,.modal-scroll{max-height:100dvh}}
.attachment-panel{margin:18px 0;padding:16px;border:1px solid #cfe2d7;border-radius:14px;background:#f6fbf8}.attachment-heading{display:flex;align-items:flex-start;justify-content:space-between}.attachment-heading h3{margin:0;font-size:18px}.attachment-heading p{margin:4px 0 12px;font-size:13px}.attachment-count{min-width:28px;height:28px;padding:5px 8px;border-radius:999px;background:#d9eee1;color:#12603b;text-align:center;font-weight:700}.drop-zone{display:flex;min-height:92px;align-items:center;justify-content:center;flex-direction:column;gap:5px;border:2px dashed #80b596;border-radius:12px;background:#fff;color:#12603b;text-align:center;padding:14px;cursor:pointer}.drop-zone input{position:absolute;width:1px;height:1px;opacity:0}.drop-zone strong{font-size:17px}.drop-zone span{font-size:12px;color:#68766f}.drop-zone.dragging{border-color:#146c43;background:#e6f5eb}.attachment-list{display:grid;gap:8px;margin-top:12px}.attachment-row{display:flex;align-items:center;gap:10px;padding:8px;background:#fff;border:1px solid #e1e7e4;border-radius:10px}.attachment-preview{width:44px;height:44px;display:grid;place-items:center;overflow:hidden;border-radius:7px;background:#e8eeeb}.attachment-preview img,.file-thumb{width:44px;height:44px;object-fit:cover;border-radius:7px;vertical-align:middle;margin-right:6px}.document-icon{font-size:10px;font-weight:800;color:#146c43}.attachment-info{min-width:0;flex:1;display:grid;gap:3px}.attachment-info strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.attachment-info span{color:#68766f;font-size:12px}.remove-file{border:0;background:transparent;color:#a92929;font-size:12px;padding:7px}.upload-progress{height:6px;margin-top:12px;border-radius:5px;background:#dce8e0;overflow:hidden}.upload-progress span{display:block;width:0;height:100%;background:#146c43;transition:width .2s}.field-error{min-height:18px;margin:8px 0 0;color:#a92929;font-size:13px}.history-button{margin-top:12px;border:0;background:transparent;color:#146c43;font-weight:700;padding:4px 0}.history-list{display:grid;gap:12px;max-height:55vh;overflow:auto}.history-version{padding:12px;border:1px solid #e0e7e3;border-radius:12px}.history-version-head{display:flex;justify-content:space-between;gap:10px}.history-version-head span{color:#68766f;font-size:12px}.history-version ul{padding-left:20px;margin:10px 0}.version-preview{padding:14px;border:1px solid #e0e7e3;border-radius:12px;background:#f6fbf8}.version-preview strong{font-size:18px}button{min-height:44px}.tab{min-height:44px}.notify{min-width:44px}.back{min-width:44px;min-height:44px}.profile{min-width:44px;min-height:44px}.btn.primary{min-height:48px}

/* Блок включения push-уведомлений в окне «Уведомления» */
.push-box{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 14px;padding:12px 14px;border-radius:12px;background:#eef6f1;border:1px solid #cfe5d8}
.push-box:empty{display:none}
.push-box p{margin:0;flex:1 1 220px;font-size:14px;line-height:1.4}
.push-box .btn{min-height:44px}
.push-box.push-denied,.push-box.push-error,.push-box.push-unsupported{background:#fff6e6;border-color:#f0d9a8}
.push-box.push-ios-install{background:#eef3fb;border-color:#cddcf2}

/* ---- Этап 2: карточка заявки, «Мои заявки», комментарии ---- */
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:stretch}
.actions .btn{width:auto;flex:1 1 110px;min-height:48px;min-width:0}
.actions .icon-btn{flex:0 0 52px;width:52px;padding:0;font-size:18px;white-space:nowrap}
.actions .icon-btn[data-action="comments"]{flex-basis:auto;min-width:52px;padding:0 10px;font-size:15px}
.status.review{background:#e5eefc;color:#1d4f9a}
.task-late{border-left:4px solid #d64545}
.due{font-weight:600}.due.due-late{color:#b42318}.due.due-soon{color:#8a5a00;background:#fff4d6;border-radius:8px;padding:2px 8px}
.photo-flag{font-size:13px;color:#536159}
.result-label{font-size:12px;font-weight:700;color:#12603b;text-transform:uppercase;letter-spacing:.04em}
.task-hint{display:block;margin-top:10px;font-size:13px;color:#536159;background:#f3f6f4;border-radius:8px;padding:8px 10px}
.task-object{display:inline-flex;align-items:center;min-height:44px;border:0;background:none;padding:0;color:#146c43;font-weight:700;font-size:13px;cursor:pointer}
.task-desc{margin:6px 0 0;color:#425048;font-size:14px;line-height:1.4;white-space:pre-line}
.home-tabs{position:sticky;top:0;z-index:2;background:inherit;padding-top:2px}
.home-tabs .tab{min-height:44px;font-weight:700}
.home-tabs .count{display:inline-block;min-width:20px;padding:1px 6px;border-radius:999px;background:#d64545;color:#fff;font-size:12px;margin-left:4px}
.my-section{margin-bottom:22px}
.comment-list{display:grid;gap:10px;max-height:45vh;overflow:auto;margin:10px 0}
.comment{background:#f3f6f4;border-radius:12px;padding:10px 12px}.comment.own{background:#e6f3ec}.comment.returned{background:#fff4d6}
.comment p{margin:4px 0;white-space:pre-line;line-height:1.4}.comment small{color:#69766f}
.comment-form{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}
.quick-dates{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.chip-btn{min-height:44px;border:1px solid #d9e1dd;background:#fff;border-radius:999px;padding:0 14px;font:inherit;cursor:pointer}
.chip-btn.active{background:#146c43;border-color:#146c43;color:#fff}
.photo-toggle{margin:4px 0 12px}
@media(max-width:360px){.comment-form{grid-template-columns:1fr}}
/* ===== Этап 3: разделы объекта, чат, папка ===== */
.obj-switch{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;background:#e8eeeb;border-radius:14px;padding:4px;margin:0 0 16px}
.obj-switch button{border:0;background:transparent;border-radius:11px;min-height:44px;font-weight:700;color:#425048;white-space:nowrap;padding:0 6px;font-size:15px}
.obj-switch button.active{background:#fff;color:#0f5736;box-shadow:0 1px 4px #173e2b1f}
.obj-switch b{font-size:12px;background:#d9eee1;color:#12603b;border-radius:999px;padding:2px 7px;margin-left:2px}.obj-switch b.unread{background:#146c43;color:#fff}
.chat-badge{background:#146c43;color:#fff;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700}
.chat-shell{height:100vh;height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:0}
.chat-shell #content{flex:1;display:flex;flex-direction:column;min-height:0;width:100%;padding-bottom:0}
.chat-shell .object-head{margin-bottom:8px}.chat-shell .obj-switch{margin-bottom:8px}
.chat-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.chat-list{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column;gap:4px;padding:6px 2px 10px;overscroll-behavior:contain}
.chat-more{align-self:center;margin-bottom:6px}
.chat-day{align-self:center;background:#e8eeeb;color:#56645c;font-size:12px;font-weight:700;border-radius:999px;padding:4px 11px;margin:10px 0 6px}
.msg{max-width:min(82%,520px);align-self:flex-start;background:#fff;border:1px solid #e0e7e3;border-radius:16px 16px 16px 5px;padding:7px 11px 5px;margin-top:6px;-webkit-user-select:text;user-select:text}
.msg.cont{margin-top:0}
.msg.own{align-self:flex-end;background:#dff2e7;border-color:#cbe7d6;border-radius:16px 16px 5px 16px}
.msg-author{font-size:13px;font-weight:800;color:#146c43;margin-bottom:2px}
.msg-text{white-space:pre-wrap;word-break:break-word;line-height:1.38}
.msg time{display:block;text-align:right;font-size:11px;color:#7a877f;margin-top:2px}
.chat-photo{display:block;border:0;padding:0;background:#e8eeeb;border-radius:11px;overflow:hidden;margin:3px 0;min-height:0;max-width:100%}
.chat-photo img{display:block;max-width:100%;width:260px;max-height:320px;object-fit:cover;min-height:120px}
.chat-photo img.loaded{min-height:0}
.chat-doc,.folder-file{display:flex;align-items:center;gap:10px;border:0;background:transparent;text-align:left;padding:4px 0;min-width:0;width:100%;color:inherit}
.chat-doc span,.folder-file span{display:grid;min-width:0}.chat-doc strong,.folder-file strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.chat-doc small,.folder-file small{color:#68766f;font-size:12px}
.doc-badge{flex:0 0 44px;height:44px;border-radius:10px;display:grid;place-items:center;font-size:11px;font-weight:800;background:#e3eef8;color:#1f5b8f}
.doc-pdf{background:#fde8e8;color:#b42318}.doc-xls,.doc-xlsx{background:#dff2e7;color:#12603b}.doc-dwg,.doc-dxf{background:#f3eadc;color:#7a4a12}.doc-zip{background:#ecebf5;color:#4b3f8f}
.chat-composer{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:end;padding:10px 0 max(12px,env(safe-area-inset-bottom));background:#f5f7f6;border-top:1px solid #e1e7e4}
.chat-composer textarea{resize:none;min-height:46px;max-height:140px;line-height:1.35;padding:11px 13px}
.chat-composer .icon-btn{width:46px;height:46px;border:0;border-radius:12px;background:#e8eeeb;font-size:20px}
.chat-composer .btn.primary{width:52px;padding:0;font-size:18px;min-height:46px}
.chat-empty{margin:auto}
.photo-view{display:grid;place-items:center;background:#111;border-radius:14px;overflow:hidden;min-height:200px}.photo-view img{max-width:100%;max-height:75dvh;display:block}
.folder-note{margin:0 0 12px}
.folder-list{display:grid;gap:8px}
.folder-row{display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #e0e7e3;border-radius:14px;padding:6px 8px 6px 10px}
.folder-thumb{flex:0 0 44px;width:44px;height:44px;object-fit:cover;border-radius:10px;background:#e8eeeb}
.folder-del{flex:0 0 44px;width:44px;height:44px;border:0;background:transparent;border-radius:10px;font-size:18px}.folder-del:hover{background:#fff0f0}
@media(max-width:380px){.obj-switch button{font-size:13px;padding:0 3px}}
.chat-bar .btn.small{white-space:nowrap;flex:0 0 auto}.chat-shell #content{padding-top:12px}
/* ===== Этап 4: сеть, очередь, голосовые, отметка на фото ===== */
.net-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 12px;background:#fff6dc;color:#6b4f00;font-size:13px;font-weight:600;padding:6px 12px;border-bottom:1px solid #f0e2b0;text-align:center}
.net-bar:empty{display:none}
.net-queue{border:0;background:#f5e3a6;color:#5b4300;border-radius:999px;padding:4px 12px;font-weight:700;min-height:32px;font-size:13px}
.queue-list{display:grid;gap:8px;margin:12px 0}.queue-row{display:flex;align-items:center;gap:10px;justify-content:space-between;border:1px solid #e0e7e3;border-radius:12px;padding:8px 10px}
.queue-row div{display:grid;min-width:0}.queue-row strong{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-row small{color:#68766f;font-size:12px}
.pending-chip{display:inline-block;background:#fff6dc;color:#6b4f00;border-radius:9px;padding:5px 9px;font-size:13px;font-weight:600}
.msg.pending{opacity:.75;border-style:dashed}.msg.pending time{color:#8a6d00}
.chat-composer{grid-template-columns:auto 1fr auto;position:relative}
.chat-composer .chat-send{display:none}.chat-composer.has-text .chat-send{display:block}.chat-composer.has-text .chat-mic{display:none}
.chat-composer .chat-mic{width:52px;padding:0;font-size:20px;min-height:46px}
.rec-bar{display:none}
.chat-composer.recording .rec-bar{display:flex;position:absolute;inset:10px 0 max(12px,env(safe-area-inset-bottom)) 0;align-items:center;gap:10px;background:#fff;border:1px solid #f1c9c9;border-radius:14px;padding:0 6px 0 14px}
.rec-dot{width:12px;height:12px;border-radius:50%;background:#d92d20;animation:recpulse 1s infinite}
@keyframes recpulse{50%{opacity:.25}}
.rec-time{font-weight:800;font-variant-numeric:tabular-nums;min-width:40px}.rec-hint{flex:1;color:#68766f;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rec-bar .btn{min-height:44px;min-width:48px;padding:0 12px}
.voice{display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:4px 0;min-width:190px;width:100%;color:inherit}
.voice-icon{flex:0 0 40px;height:40px;border-radius:50%;background:#146c43;color:#fff;display:grid;place-items:center;font-size:14px}
.voice.loading .voice-icon{opacity:.5}.voice.pending .voice-icon{background:#9aa8a0}
.voice-track{flex:1;height:5px;border-radius:3px;background:#cfe0d6;overflow:hidden;min-width:70px}.voice-track span{display:block;height:100%;width:0;background:#146c43;transition:width .2s linear}
.voice-time{font-size:12px;color:#56645c;font-variant-numeric:tabular-nums}
.stamp-preview{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.stamp-thumb{width:96px;height:96px;object-fit:cover;border-radius:10px;background:#e8eeeb;display:grid;place-items:center;color:#68766f}
.chat-pending{display:flex;flex-direction:column;gap:4px}.chat-pending:empty{display:none}
@media(max-height:450px) and (orientation:landscape){.chat-bar{display:none}.chat-shell .obj-switch{margin-bottom:4px}.chat-shell #content{padding-top:8px}.chat-composer{padding-top:6px}}
/* ===== Этап 5: сводка, первые шаги, приглашение, подсказки ===== */
.hint-box{display:grid;gap:4px;background:#f3f8f5;border:1px dashed #b9d8c6;border-radius:14px;padding:14px 16px;margin:8px 0}
.hint-box strong{font-size:15px}.hint-box span{color:#56645c;font-size:14px;line-height:1.45}
.setup-card{margin:0 0 16px;border-color:#cfe6d8}
.setup-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.setup-head h2{margin:0 0 2px;font-size:18px}
.setup-bar{height:6px;border-radius:4px;background:#e3ece7;overflow:hidden;margin:12px 0 6px}.setup-bar span{display:block;height:100%;background:#146c43;border-radius:4px}
.setup-steps{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.setup-steps li{display:flex;align-items:center;gap:12px;padding:8px 0}.setup-steps li div{flex:1;display:grid;min-width:0}.setup-steps small{color:#68766f;font-size:13px}
.setup-mark{flex:0 0 30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:800;background:#e8eeeb;color:#56645c;font-size:14px}
.setup-steps li.done strong{color:#68766f;text-decoration:line-through;font-weight:600}.setup-steps li.done .setup-mark{background:#146c43;color:#fff}
.setup-steps li.next .setup-mark{background:#dff2e7;color:#0f5736;box-shadow:inset 0 0 0 2px #146c43}
.invite-text{background:#f3f6f4;border-radius:12px;padding:12px 14px;line-height:1.45;margin:12px 0;white-space:pre-wrap;word-break:break-word}
.invite-actions{display:flex;flex-wrap:wrap;gap:8px}.invite-actions .btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:46px}
.ok-line{background:#e6f5eb;color:#0f5736;border-radius:12px;padding:10px 12px;font-weight:600}
.dash-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 14px}
.seg{display:inline-flex;background:#e8eeeb;border-radius:12px;padding:3px;gap:2px}
.seg button{border:0;background:transparent;border-radius:10px;padding:0 13px;min-height:44px;font-weight:700;color:#425048;white-space:nowrap}.seg button.active{background:#fff;color:#0f5736;box-shadow:0 1px 4px #173e2b1f}
.dash-object{flex:1;min-width:180px;max-width:360px;min-height:50px}
.dash-tiles{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.dash-tile{background:#fff;border:1px solid #e0e7e3;border-radius:16px;padding:14px;display:grid;gap:2px;min-width:0}
.dash-tile .dash-label{font-size:13px;font-weight:700;color:#56645c}.dash-tile strong{font-size:30px;line-height:1.15;color:#15231d;font-variant-numeric:tabular-nums}.dash-tile small{color:#68766f;font-size:12.5px;line-height:1.3}
.dash-tile.bad{background:#fff5f4;border-color:#f5c9c4}.dash-tile.bad .dash-label{color:#b42318}
.dash-note{margin:10px 2px 0}
.dash-section{margin-top:22px}
.dash-row{display:flex;align-items:center;gap:12px;width:100%;text-align:left;background:#fff;border:1px solid #e0e7e3;border-radius:14px;padding:10px 14px;margin-bottom:8px;color:inherit}
.dash-row div{flex:1;display:grid;min-width:0}.dash-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dash-row small{color:#68766f;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.late-days{flex:0 0 auto;color:#b42318;font-weight:700;font-size:13px;background:#fde8e8;border-radius:999px;padding:4px 10px;white-space:nowrap}
.dash-objects{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}
.dash-object-card{border:1px solid #e0e7e3;text-align:left;display:grid;gap:6px;padding:14px;color:inherit}.dash-object-card .timeline{margin:4px 0 0}
.dash-obj-stats{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:13px;color:#56645c;margin-top:4px}.dash-obj-stats b{color:#15231d}
.bad-text,.bad-text b{color:#b42318!important;font-weight:700}
.table-wrap{overflow-x:auto;border:1px solid #e0e7e3;border-radius:14px;background:#fff}
.dash-table{border-collapse:collapse;width:100%;min-width:520px;font-size:14px}
.dash-table th{text-align:right;font-size:12px;color:#56645c;font-weight:700;padding:10px 12px;border-bottom:1px solid #e0e7e3;white-space:nowrap}
.dash-table td{text-align:right;padding:10px 12px;border-bottom:1px solid #eef2f0;font-variant-numeric:tabular-nums}
.dash-table th:first-child,.dash-table td:first-child{text-align:left;position:sticky;left:0;background:#fff;font-weight:600}
.dash-table tr:last-child td{border-bottom:0}.dash-table tbody tr:hover td{background:#f6faf8}
.dash-report{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin:22px 0 10px}.dash-report h2{margin:0 0 4px;font-size:18px}.dash-report p{margin:0}
.dash-report-actions{display:flex;gap:8px}
@media(max-width:620px){.dash-tiles{grid-template-columns:repeat(2,1fr)}.dash-tile strong{font-size:26px}.dash-object{max-width:none}.dash-report-actions{width:100%}.dash-report-actions .btn{flex:1}}
.review-since{flex:0 0 auto;color:#56645c;font-size:13px;white-space:nowrap}
.home-tabs{flex-wrap:nowrap}.home-tabs .tab{flex:0 1 auto}
@media(max-width:620px){
  .home-tabs .tab{flex:1 1 0;padding:10px 8px;font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis}
  .dash-row{flex-wrap:wrap;gap:6px}.dash-row div{flex:1 1 100%}.dash-row strong,.dash-row small{white-space:normal}
  .late-days,.review-since{margin-left:0}
}
.invite-actions .btn{flex:1 1 auto}
