@@ -1266,6 +1358,81 @@ function selectPlan(n) {
}
+
+/* ── ЭКРАН СТАТУСА ЗАКАЗА ── */
+.os-wrap{max-width:560px;margin:0 auto;padding:24px 20px 60px}
+.os-ok{text-align:center;margin:8px 0 20px}
+.os-ok-icon{font-size:44px;margin-bottom:8px}
+.os-ok-ttl{font-size:20px;font-weight:800;color:var(--bg)}
+.os-ok-sub{font-size:13px;color:var(--mut);margin-top:4px}
+.os-card{background:var(--card);border:1.5px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:20px}
+.os-card .oc-ttl{font-size:16px;font-weight:800;margin-bottom:4px}
+.os-card .oc-plan{font-size:13px;color:var(--mut);margin-bottom:10px}
+.os-card .oc-price{font-size:22px;font-weight:800;color:var(--bg)}
+.os-card .oc-id{font-size:11px;color:var(--mut);margin-top:4px;letter-spacing:.3px}
+.os-steps{display:flex;align-items:flex-start;gap:0;margin:0 0 20px;position:relative}
+.os-steps::before{content:'';position:absolute;top:13px;left:13px;right:13px;height:2px;background:var(--line);z-index:0}
+.os-step{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;z-index:1}
+.os-dot{width:26px;height:26px;border-radius:50%;border:2.5px solid var(--line);background:var(--surf);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--mut);flex-shrink:0}
+.os-step.done .os-dot{background:var(--ok);border-color:var(--ok);color:#fff;font-size:13px}
+.os-step.active .os-dot{background:var(--bg);border-color:var(--bg);color:#fff;font-size:13px}
+.os-step-lbl{font-size:11px;color:var(--mut);text-align:center;line-height:1.35;max-width:80px}
+.os-step.done .os-step-lbl{color:var(--ok);font-weight:600}
+.os-step.active .os-step-lbl{color:var(--bg);font-weight:700}
+.os-deadline{background:var(--tint);border:1.5px solid rgba(159,18,57,.2);border-radius:10px;padding:10px 14px;font-size:13px;margin:0 0 16px;display:flex;align-items:center;gap:8px}
+.os-deadline .od-icon{font-size:16px}
+.os-deadline .od-text strong{display:block;font-weight:700;color:var(--bg);font-size:13px}
+.os-deadline .od-text span{font-size:12px;color:var(--mut)}
+.os-actions{display:flex;gap:10px;flex-wrap:wrap}
+.os-tg{display:flex;align-items:center;gap:8px;background:var(--card);border:1.5px solid var(--line);border-radius:10px;padding:10px 16px;font-size:13px;font-weight:700;cursor:pointer;color:var(--ink);text-decoration:none;font-family:inherit}
+.os-tg:hover{border-color:var(--bg);color:var(--bg)}
+
+
+/* ── СТАТУС ЗАКАЗА ── */
+const OS_DEADLINES = {
+ protocol: { 1:'до 12 часов', 2:'до 24 часов', 3:'до 48 часов', sub:'после получения файла договора' },
+ redact: { 1:'до 12 часов', 2:'до 24 часов', 3:'до 48 часов', sub:'после получения файла договора' },
+ clean: { 1:'до 24 часов', 2:'до 48 часов', 3:'до 72 часов', sub:'после получения файла договора' },
+ partner: { 1:'до 24 часов', 2:'до 48 часов', 3:'до 72 часов', sub:'после получения файла договора' },
+ consult: { 1:'2 часа', 2:'сегодня', 3:'24 часа', sub:'отвечаем после получения оплаты' },
+ reply: { 1:'до 12 часов', 2:'до 12 часов', 3:'до результата', sub:'после получения переписки с контрагентом' }
+};
+const OS_STEP2 = {
+ protocol:'Юрист изучает договор',
+ redact:'Юрист готовит редакцию',
+ clean:'Юрист чистит текст',
+ partner:'Юрист пишет партнёрскую версию',
+ consult:'Юрист готовится к консультации',
+ reply:'Юрист составляет ответ'
+};
+const OS_ELENA = {
+ protocol:'Заказ получен — уже передала юристу.
Пришлите договор в Telegram
@wasrusgen1 — без него начать не получится. Как только файл придёт — сразу приступаем 💛',
+ redact:'Заказ получен.
Пришлите договор в Telegram
@wasrusgen1 — и обозначьте что хотите изменить, если есть конкретные пункты. Начнём сразу 💛',
+ clean:'Заказ получен.
Пришлите договор в Telegram
@wasrusgen1 — юрист сделает его читаемым и структурированным. Жду файл 💛',
+ partner:'Заказ получен.
Пришлите договор в Telegram
@wasrusgen1 — и кратко опишите вашу позицию в переговорах. Это поможет сделать текст работающим 💛',
+ consult:'Заказ получен.
Пришлите договор + вопросы в Telegram
@wasrusgen1 — или просто напишите «разберите сами», и юрист найдёт риски. Отвечаем быстро 💛',
+ reply:'Заказ получен.
Пришлите переписку с контрагентом и текст возражения в Telegram
@wasrusgen1 — юрист составит ответ с вашей правовой позицией 💛'
+};
+
+function showOrderStatus() {
+ const d = DELIVS[_selDeliv] || {};
+ const pKey = 'p' + _selPlan;
+ const pArr = d[pKey] || [];
+ const dl = (OS_DEADLINES[_selDeliv] || {})[_selPlan] || 'уточним';
+ const dlSub = (OS_DEADLINES[_selDeliv] || {}).sub || '';
+
+ const set = (id, val) => { const el = document.getElementById(id); if (el) el.innerHTML = val; };
+ set('os-svc', d.ttl || 'Юридическая услуга');
+ set('os-plan-name', pArr[1] || ('Тариф ' + _selPlan));
+ set('os-price', pArr[0] || '');
+ set('os-orderid', 'Заказ #' + Math.floor(1000 + Math.random() * 8999));
+ set('os-step2-lbl', (OS_STEP2[_selDeliv] || 'Юрист работает').replace(' ', '
'));
+ set('os-deadline-ttl', 'Срок: ' + dl);
+ set('os-deadline-sub', dlSub);
+ set('os-elena-msg', OS_ELENA[_selDeliv] || OS_ELENA.protocol);
+ set('os-ok-sub', 'Заказ №' + Math.floor(1000 + Math.random() * 8999) + ' передан в работу');
+}
+
/* ── АНАЛИТИКА CUSTOM-ЗАПРОСОВ ── */
const CA_STOPWORDS = new Set(['и','в','на','с','по','для','что','это','как','не','а','но','из','к','о','от','за','до','при','без','под','над','со','об','же','бы','ли','ещё','уже','когда','если','мне','мы','я','вы','он','она','они','то','так','ну','ладно','просто','только','очень','нет','да','быть','есть','это','свой','мой','ваш','наш','его','её','их','все','всё','один','одна','других','другой','которые','который','можно','нужно','надо','хочу','хочется','нужна','нужен','нужно','получить','сделать','чтобы','также']);
@@ -1407,6 +1574,17 @@ function showToast(msg) {
window.addEventListener('DOMContentLoaded', renderStats);
window.addEventListener('DOMContentLoaded', renderCustomStats);
window.addEventListener('DOMContentLoaded', renderCustomAdmin);
+function handleHash() {
+ const h = window.location.hash.slice(1);
+ if (!h) return;
+ const [screen, deliv, plan] = h.split(':');
+ if (deliv) _selDeliv = deliv;
+ if (plan) _selPlan = parseInt(plan) || 2;
+ if (screen === 'order-status') { showOrderStatus(); go('order-status'); }
+ else if (screen) go(screen);
+}
+window.addEventListener('DOMContentLoaded', handleHash);
+window.addEventListener('hashchange', handleHash);
function tab(name){
document.querySelectorAll('.tabpane').forEach(p=>p.classList.toggle('on',p.id==='p-'+name));
document.querySelectorAll('.side a').forEach(a=>a.classList.remove('on'));