        :root { --bg-body:#0f172a; --bg-card:#1e293b; --bg-input:#334155; --bg-btn:#334155; --text-primary:#f1f5f9; --text-secondary:#cbd5e1; --text-muted:#94a3b8; --border-color:#334155; --shadow-card:0 4px 12px rgba(0,0,0,0.3); --accent-blue:#60a5fa; --accent-green:#34d399; --accent-red:#f87171; --accent-purple:#8b5cf6; --radius:16px; --transition:0.3s ease; }

        [data-theme="light"] {
            --bg-body:#f8fafc;
            --bg-card:#ffffff;
            --bg-input:#f1f5f9;
            --bg-btn:#e2e8f0;
            --text-primary:#0f172a;
            --text-secondary:#334155;
            --text-muted:#64748b;
            --border-color:#e2e8f0;
            --shadow-card:0 4px 12px rgba(0,0,0,0.08);
            --accent-blue:#3b82f6;
            --accent-green:#10b981;
            --accent-red:#ef4444;
            --accent-purple:#7c3aed;
        }
        [data-theme="light"] body { background: #eef2f7; color: var(--text-primary); }
        [data-theme="light"] #appContainer { background: #eef2f7; }
        [data-theme="light"] .login-card { box-shadow: 0 8px 32px rgba(0,0,0,0.08); }
        [data-theme="light"] .login-card input { background: var(--bg-input); color: var(--text-primary); border-color: var(--border-color); }
        [data-theme="light"] .store-card.done { background: #ecfdf5; }
        [data-theme="light"] .day-status.all-done {
            background: linear-gradient(135deg, #dbeafe, #bfdbfe);
            color: #1e3a8a;
            border-color: #3b82f6;
            box-shadow: 0 4px 16px rgba(30, 58, 138, 0.15);
        }
        [data-theme="light"] .modal-overlay { background: rgba(15,23,42,0.45); }
        [data-theme="light"] .modal-content { box-shadow: 0 8px 32px rgba(0,0,0,0.15); }
        [data-theme="light"] .photo-thumb-wrap { border-color: var(--border-color); }
        [data-theme="light"] .photo-viewer { background: rgba(15,23,42,0.92); }
        [data-theme="light"] .ct-photos .ct-photo { background: #f1f5f9; }
        [data-theme="light"] .completed-card { background: rgba(16,185,129,0.08); border-color: rgba(16,185,129,0.35); }
        [data-theme="light"] .completed-card:hover { background: rgba(16,185,129,0.14); }
        [data-theme="light"] .completed-card .cc-time { color: #059669; }
        [data-theme="light"] #offlineIndicator { background: rgba(245,158,11,0.12); color: #b45309; border-color: rgba(245,158,11,0.4); }
        [data-theme="light"] .btn-redo-task,
        [data-theme="light"] .btn-claim-task { color: #0f172a; }
        [data-theme="light"] #completedSection h3 .completed-sum { color: #0f172a; }
        [data-theme="light"] #completedSection h3 .count-badge { color: #0f172a; }
        [data-theme="light"] .pv-image-wrap { background: #0f172a; }

        * { box-sizing: border-box; margin: 0; padding: 0; }
        body { font-family: system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif; background: var(--bg-body); color: var(--text-primary); padding: 12px; padding-bottom: calc(12px + env(safe-area-inset-bottom)); min-height: 100vh; transition: background 0.3s ease, color 0.3s ease; }
        .hidden { display: none !important; }
        #loginContainer { display: flex; justify-content: center; align-items: center; min-height: 100vh; padding: 20px; }
        .login-card { max-width: 400px; width: 100%; background: var(--bg-card); border-radius: var(--radius); padding: 30px 25px; box-shadow: var(--shadow-card); border: 1px solid var(--border-color); }
        .login-card h2 { margin-bottom: 24px; text-align: center; }
        .login-card input { width: 100%; padding: 14px 16px; border-radius: 10px; border: 1px solid var(--border-color); background: var(--bg-input); color: var(--text-primary); font-size: 16px; margin-bottom: 14px; }
        .login-card input:focus { outline: none; border-color: var(--accent-blue); }
        .btn-login { width: 100%; border: none; border-radius: 60px; padding: 16px; font-size: 20px; font-weight: 600; background: var(--accent-blue); color: white; cursor: pointer; box-shadow: 0 8px 24px rgba(59,130,246,0.3); }
        .btn-login:active { transform: scale(0.96); }
        .btn-login:disabled { opacity: 0.6; pointer-events: none; }
        .login-error { color: var(--accent-red); margin-top: 10px; text-align: center; font-size: 14px; }

        #appContainer { display: none; }

        .header-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; flex-wrap: nowrap; }

        .app-brand {
            display: none;
            align-items: center;
            gap: 6px;
            padding: 4px 10px 4px 4px;
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            border-radius: 40px;
            flex-shrink: 0;
            transition: background 0.3s ease, border-color 0.3s ease;
        }
        .app-brand-icon {
            width: 30px;
            height: 30px;
            border-radius: 9px;
            flex-shrink: 0;
            object-fit: contain;
            display: block;
        }
        .app-brand-text {
            font-size: 14px;
            font-weight: 800;
            letter-spacing: -0.02em;
            color: var(--text-primary);
            white-space: nowrap;
        }
        #appContainer .app-brand { display: inline-flex; }

        #greeting { display: none; padding: 8px 14px; background: var(--bg-card); border-radius: var(--radius); font-size: 15px; font-weight: 600; color: var(--accent-blue); border: 1px solid var(--border-color); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .header-actions { display: flex; gap: 6px; flex-shrink: 0; }
        .icon-btn { width: 42px; height: 42px; border-radius: 50%; background: var(--bg-card); color: var(--text-primary); font-size: 18px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: transform 0.15s ease, background 0.15s ease; border: 1px solid var(--border-color); padding: 0; }
        .icon-btn:active { transform: scale(0.9); background: var(--bg-input); }
        .icon-btn:disabled { opacity: 0.5; pointer-events: none; }
        .icon-btn svg { display: block; width: 20px; height: 20px; }
        .icon-btn.spinning svg { animation: icon-spin 1s linear infinite; }
        @keyframes icon-spin { to { transform: rotate(360deg); } }

        #offlineIndicator { display: none; padding: 6px 12px; border-radius: 12px; margin-bottom: 10px; text-align: center; font-size: 13px; font-weight: 500; background: rgba(245,158,11,0.15); color: #f59e0b; border: 1px solid rgba(245,158,11,0.4); }

        .day-status { padding: 18px 20px; border-radius: 12px; text-align: center; font-size: 15px; font-weight: 500; line-height: 1.5; }
        .day-status.all-done { background: linear-gradient(135deg, #1e3a8a, #1e40af); color: #dbeafe; border: 1px solid #3b82f6; box-shadow: 0 4px 16px rgba(30, 58, 138, 0.4); }
        .day-status.none { background: var(--bg-card); color: var(--text-muted); border: 1px dashed var(--border-color); }

        /* ===== Toast (сессия 40) ===== */
        #toastContainer {
            position: fixed; bottom: calc(16px + env(safe-area-inset-bottom));
            left: 50%; transform: translateX(-50%);
            z-index: 9999; display: flex; flex-direction: column-reverse; gap: 6px;
            pointer-events: none; max-width: 92vw; width: max-content;
        }
        .toast {
            padding: 10px 16px; border-radius: 10px;
            font-size: 13px; font-weight: 500; color: #fff;
            box-shadow: 0 6px 20px rgba(0,0,0,0.4);
            pointer-events: auto; max-width: 100%; word-break: break-word;
            animation: toastIn 0.25s ease;
        }
        .toast--info  { background: #334155; }
        .toast--ok    { background: var(--accent-green); color: #0f172a; }
        .toast--warn  { background: #f59e0b; color: #0f172a; }
        .toast--error { background: var(--accent-red); color: #ffffff; }
        .toast--out { opacity: 0; transform: translateY(10px); transition: 0.25s ease; }
        @keyframes toastIn {
            from { opacity: 0; transform: translateY(10px); }
            to   { opacity: 1; transform: translateY(0); }
        }

        /* ===== Pull-to-refresh (сессия 40) ===== */
        .pull-indicator {
            position: fixed; top: 10px; left: 50%; transform: translateX(-50%);
            background: var(--bg-card); color: var(--text-secondary);
            padding: 6px 14px; border-radius: 20px; font-size: 12px;
            z-index: 9998; box-shadow: 0 4px 12px rgba(0,0,0,0.35);
            border: 1px solid var(--border-color);
            animation: pullFadeIn 0.2s ease;
        }
        @keyframes pullFadeIn {
            from { opacity: 0; transform: translateX(-50%) translateY(-10px); }
            to   { opacity: 1; transform: translateX(-50%) translateY(0); }
        }

        /* ===== Bottom sheet «Ещё» (сессия 40) ===== */
        .more-menu { display: flex; flex-direction: column; gap: 6px; margin: 8px 0 12px; }
        .more-menu__item {
            display: flex; align-items: center; gap: 10px;
            padding: 12px 14px; border-radius: 10px;
            background: var(--bg-input); border: 1px solid var(--border-color);
            color: var(--text-primary); font-size: 14px; font-weight: 500;
            font-family: inherit; cursor: pointer; text-align: left;
            touch-action: manipulation;
        }
        .more-menu__item:active { background: var(--bg-btn); transform: scale(0.98); }
        .more-menu__item--danger { color: var(--accent-red); }
        [data-theme="light"] .more-menu__item { background: #f1f5f9; border-color: #cbd5e1; }

        /* ===== Border-left по статусу карточки (сессия 40) ===== */
        .store-card[data-status="started"]   { border-left: 3px solid #60a5fa; }
        .store-card[data-status="redo"]      { border-left: 3px solid #f59e0b; }
        .store-card[data-status="completed"] { border-left: 3px solid #34d399; opacity: 0.9; }

        /* ===== Staggered-анимация (сессия 40) ===== */
        .store-card:nth-child(1) { animation-delay: 0ms; }
        .store-card:nth-child(2) { animation-delay: 50ms; }
        .store-card:nth-child(3) { animation-delay: 100ms; }
        .store-card:nth-child(4) { animation-delay: 150ms; }
        .store-card:nth-child(5) { animation-delay: 200ms; }
        .store-card:nth-child(n+6) { animation-delay: 250ms; }

        /* ===== Карточка магазина: новая структура (сессия 38) ===== */
        .store-card__header {
            display: flex; gap: 10px; align-items: stretch;
            text-decoration: none; color: inherit;
            padding: 10px 12px; margin-bottom: 8px;
            background: linear-gradient(135deg, rgba(139,92,246,0.18), rgba(139,92,246,0.08));
            border: 1px solid rgba(139,92,246,0.5); border-radius: 12px;
            transition: transform 0.15s ease, background 0.15s ease;
        }
        [data-theme="light"] .store-card__header {
            background: #eef2ff;
            border-color: #c7d2fe;
            color: #1e1b4b;
        }
        [data-theme="light"] .store-card__header:active {
            background: #e0e7ff;
        }
        [data-theme="light"] .store-card__header.disabled {
            background: #f1f5f9;
            border-color: #cbd5e1;
            color: #334155;
        }
        [data-theme="light"] .store-card__title { color: #0f172a; }
        [data-theme="light"] .store-card__subtitle { color: #475569; }
        .store-card__header:active {
            transform: scale(0.985);
            background: linear-gradient(135deg, rgba(139,92,246,0.28), rgba(139,92,246,0.14));
        }
        .store-card__header.disabled {
            background: var(--bg-input); border-color: var(--border-color);
            opacity: 0.7; pointer-events: none;
        }
        .store-card__title-wrap { flex: 1 1 auto; min-width: 0; }
        .store-card__title {
            font-size: 16px; font-weight: 700; color: var(--text-primary);
            overflow: hidden; text-overflow: ellipsis; white-space: nowrap; line-height: 1.2;
        }
        .store-card__subtitle {
            display: flex; align-items: center; gap: 6px;
            margin-top: 3px; font-size: 13.5px; font-weight: 600; color: var(--text-secondary);
            min-width: 0; flex-wrap: wrap;
        }
        .store-card__subtitle > span:first-child {
            flex: 1 1 auto; min-width: 0;
            overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
        }
        .store-card__badges { display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0; }
        .store-card__badges .badge {
            padding: 2px 8px; border-radius: 40px; font-size: 10px;
            font-weight: 700; white-space: nowrap; line-height: 1.4;
        }
        .store-card__badges .badge.public { background: #f59e0b; color: #0f172a; }
        .store-card__badges .badge.manual { background: #f59e0b; color: #0f172a; }
        .store-card__badges .badge.plan   { background: #60a5fa; color: #ffffff; }
        [data-theme="light"] .store-card__badges .badge.plan   { background: #3b82f6; color: #ffffff; }
        [data-theme="light"] .store-card__badges .badge.public { background: #f59e0b; color: #ffffff; }
        [data-theme="light"] .store-card__badges .badge.manual { background: #f59e0b; color: #ffffff; }
        [data-theme="light"] .store-card__badges .badge.redo   { background: #f59e0b; color: #ffffff; }
        .store-card__badges .badge.redo   { background: #f59e0b; color: #0f172a; }
        .store-card__history-btn {
            /* v3: размер ×1.5 (24→36), шрифт ×1.5 (12→18) */
            width: 36px; height: 36px; padding: 0; border-radius: 50%;
            background: var(--bg-input); border: 1px solid var(--border-color);
            color: var(--text-secondary); font-size: 18px; line-height: 1;
            cursor: pointer; display: inline-flex; align-items: center;
            justify-content: center; flex-shrink: 0;
        }
        .store-card__history-btn:active { transform: scale(0.9); background: var(--bg-btn); }
        .store-card__route {
            display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
            flex-shrink: 0; padding: 5px 9px;
            background: rgba(139,92,246,0.20); border: 1px solid rgba(139,92,246,0.45);
            border-radius: 10px; color: var(--accent-purple);
            text-decoration: none; font-size: 10px; font-weight: 700; line-height: 1;
        }
        .store-card__route-arrow { font-size: 18px; line-height: 1; font-weight: 700; }
        .store-card__route-dist { white-space: nowrap; letter-spacing: 0.02em; }
        .store-card__route.no-dist .store-card__route-arrow { display: none; }
        .store-card__route.no-dist { font-size: 12px; padding: 6px 10px; }
        .store-sup-btn, .store-card__history-btn, .store-card__route { touch-action: manipulation; }

        #offlineIndicator { cursor: pointer; }
        .modal-scrollable video.is-off {
            min-height: 80px; max-height: 80px;
            background: var(--bg-input); opacity: 0.4;
        }
        .store-card__summary {
            padding: 6px 10px; background: var(--bg-input); border-radius: 8px;
            font-size: 12.5px; color: var(--text-secondary); margin-bottom: 8px;
        }
        .store-card__suppliers {
            display: flex; flex-direction: column; gap: 6px;
            margin-top: 4px; margin-bottom: 8px;
        }
        .store-sup-row {
            display: flex; align-items: center; gap: 8px;
            padding: 6px 8px 6px 10px; background: var(--bg-input);
            border-radius: 8px; border-left: 3px solid transparent; min-width: 0;
        }
        .store-sup-row.is-active { background: rgba(96,165,250,0.12); border-left-color: var(--accent-blue); }
        /* REDO_GEO_V1: строка «Доделать» — оранжевая, не голубая. */
        .store-sup-row.is-redo   { background: rgba(245,158,11,0.14); border-left-color: #f59e0b; }
        .store-sup-row.is-public { border-left-color: #f59e0b; }
        .store-sup-name {
            flex: 1 1 auto; min-width: 0; font-size: 13px; font-weight: 600;
            color: var(--text-primary);
            overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
        }
        .store-sup-metrics {
            display: inline-flex; gap: 6px; flex-shrink: 0;
            font-size: 12px; color: var(--text-secondary);
        }
        .store-sup-metric { white-space: nowrap; }
        .store-sup-btn {
            flex-shrink: 0; padding: 6px 12px; border-radius: 20px; border: none;
            font-size: 12px; font-weight: 600; cursor: pointer;
            font-family: inherit; white-space: nowrap; color: #ffffff; line-height: 1.2;
        }
        .store-sup-btn:active { transform: scale(0.95); }
        .store-sup-btn--start { background: var(--accent-green); }
        .store-sup-btn--redo  { background: #f59e0b; color: #0f172a; }
        .store-sup-btn--claim { background: #f59e0b; color: #0f172a; }
        .store-sup-btn--far {
            background: var(--bg-input);
            color: var(--text-muted);
            border: 1px dashed var(--border-color);
            cursor: pointer;
            font-weight: 600;
        }
        .store-sup-btn--far:active { background: var(--bg-btn); }

        /* Плашка «вне зоны» вместо кнопки «Начать задание» (сессия 2026-09-27) */
        .out-of-zone {
            display: block;
            width: 100%;
            background: var(--bg-input);
            color: var(--text-muted);
            border: 1px dashed var(--border-color);
            padding: 12px 16px;
            border-radius: 40px;
            font-size: 13px;
            font-weight: 500;
            text-align: center;
            cursor: pointer;
            user-select: none;
            transition: background 0.15s ease;
            font-family: inherit;
            box-sizing: border-box;
        }
        .out-of-zone:active { background: var(--bg-btn); }
        [data-theme="light"] .out-of-zone {
            background: #f1f5f9;
            color: #64748b;
            border-color: #cbd5e1;
        }

        /* REDO_GEO_V1: плашка «вне зоны» для статуса «Доделать».
           Некликабельная — мерч обязан физически вернуться к магазину. */
        .redo-locked {
            display: block;
            width: 100%;
            background: var(--bg-input);
            color: var(--text-muted);
            border: 1px dashed var(--border-color);
            padding: 11px 16px;
            border-radius: 10px;
            font-size: 13px;
            font-weight: 500;
            text-align: center;
            cursor: not-allowed;
            user-select: none;
            box-sizing: border-box;
            font-family: inherit;
            line-height: 1.3;
        }
        [data-theme="light"] .redo-locked {
            background: #f1f5f9;
            color: #64748b;
            border-color: #cbd5e1;
        }
        .completed-card .redo-locked {
            padding: 7px 12px;
            font-size: 12px;
            border-radius: 8px;
        }
        /* REDO_ADD_PHOTOS_V1: серая плашка «📷 Просмотреть фото» в
           completed-карточке кликабельна — клик всплывает до карточки
           и открывает completedTaskModal. Курсор — pointer. */
        .redo-locked--view {
            cursor: pointer;
            pointer-events: auto;
        }
        .redo-locked--view:active {
            background: var(--bg-btn);
        }
        [data-theme="light"] .redo-locked--view:active {
            background: #e2e8f0;
        }
        [data-theme="light"] .store-sup-btn--far {
            background: #f1f5f9;
            color: #64748b;
            border-color: #cbd5e1;
        }
        [data-theme="light"] .store-sup-row {
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            border-left-width: 3px;
        }
        [data-theme="light"] .store-sup-row.is-active {
            background: #dbeafe;
            border-color: #bfdbfe;
            border-left-color: #3b82f6;
        }
        [data-theme="light"] .store-sup-row.is-public {
            background: #fff7ed;
            border-color: #fed7aa;
            border-left-color: #f59e0b;
        }
        [data-theme="light"] .store-sup-name { color: #0f172a; }
        [data-theme="light"] .store-sup-metrics { color: #475569; }
        [data-theme="light"] .store-sup-row.is-active { background: #dbeafe; }
        [data-theme="light"] .store-card__summary {
            background: #f1f5f9;
            border: 1px solid #e2e8f0;
            color: #475569;
        }
        [data-theme="light"] .store-card__history-btn {
            background: #ffffff;
            border-color: #cbd5e1;
            color: #475569;
        }
        [data-theme="light"] .store-card__history-btn:active { background: #e2e8f0; }
        [data-theme="light"] .store-card__route {
            background: #ffffff;
            border-color: #c7d2fe;
            color: #6d28d9;
            box-shadow: 0 1px 2px rgba(15,23,42,0.06);
        }
        [data-theme="light"] .store-card__route.no-dist { background: #ffffff; }

                /* ===== Мой день: батарейка + маршрут (Сессия A) ===== */
        .day-summary {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 10px 14px;
            margin-bottom: 10px;
            background: var(--bg-card);
            border: 1px solid var(--border-color);
            border-radius: var(--radius);
            transition: background 0.3s ease, border-color 0.3s ease;
        }
        .day-summary.hidden { display: none; }
        .day-summary .battery { flex: 1 1 auto; min-width: 0; }
        .day-summary .battery__body {
            position: relative;
            width: 100%;
            max-width: 240px;
            height: 32px;
            border: 2px solid #94a3b8;
            border-radius: 6px;
            padding: 2px;
            background: transparent;
            overflow: hidden;
        }
        .day-summary .battery__fill {
            position: absolute;
            top: 2px; left: 2px; bottom: 2px;
            width: 0;
            background: #f87171;
            border-radius: 4px;
            transition: width .4s ease, background .3s ease;
        }
        .day-summary .battery__fill[data-level="mid"]  { background: #f59e0b; }
        .day-summary .battery__fill[data-level="high"] { background: #34d399; }
        .day-summary .battery__label {
            position: absolute;
            top: 0; left: 0; right: 0; bottom: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 5px;
            font-size: 14px;
            font-weight: 700;
            color: #f1f5f9;
            text-shadow: 0 0 3px rgba(0,0,0,0.7), 0 0 6px rgba(0,0,0,0.5);
            z-index: 2;
            white-space: nowrap;
            pointer-events: none;
        }
        .day-summary .battery__label-word { font-weight: 500; font-size: 12px; color: #e2e8f0; }
        [data-theme="light"] .day-route-btn { background: #7c3aed; }
        [data-theme="light"] .day-route-btn:active { background: #6d28d9; }
        .day-route-btn {
            flex: 0 0 auto;
            background: #8b5cf6;
            color: #ffffff;
            border: none;
            border-radius: 40px;
            padding: 8px 14px;
            font-size: 13px;
            font-weight: 600;
            cursor: pointer;
            white-space: nowrap;
            font-family: inherit;
            transition: transform 0.15s ease, background 0.15s ease;
        }
        .day-route-btn:active { transform: scale(0.96); background: #7c3aed; }
        .day-route-btn.hidden { display: none; }
        [data-theme="light"] .day-summary .battery__body {
            border-color: #475569;
            background: #ffffff;
        }
        [data-theme="light"] .day-summary .battery__fill { box-shadow: inset 0 0 0 1px rgba(0,0,0,0.05); }
        [data-theme="light"] .day-summary .battery__label { color: #0f172a; text-shadow: 0 0 3px rgba(255,255,255,0.85); }
        [data-theme="light"] .day-summary .battery__label-word { color: #1e293b; }

        @media (max-width: 640px) {
            .day-summary { padding: 8px 10px; gap: 8px; flex-wrap: wrap; }
            .day-summary .battery { flex: 1 1 100%; }
            .day-summary .battery__body { max-width: none; height: 26px; }
            .day-summary .battery__label { font-size: 12px; }
            .day-summary .battery__label-word { font-size: 10px; }
            .day-route-btn { width: 100%; padding: 8px; font-size: 13px; text-align: center; }
        }

        /* ===== История магазина (Сессия C) ===== */
        .store-history-row { margin-top: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
        .store-history-btn {
            background: var(--bg-input);
            color: var(--text-secondary);
            border: 1px solid var(--border-color);
            border-radius: 20px;
            padding: 5px 12px;
            font-size: 12px;
            cursor: pointer;
            font-family: inherit;
            transition: background 0.15s, border-color 0.15s;
        }
        .store-history-btn:active { background: var(--bg-btn); }
        [data-theme="light"] .store-history-btn { background: #f1f5f9; color: #334155; border-color: #cbd5e1; }

        .sh-item { padding: 10px 0; border-bottom: 1px dashed var(--border-color); }
        .sh-item:last-child { border-bottom: none; }
        .sh-item__head {
            display: flex; justify-content: space-between; gap: 8px;
            align-items: baseline; font-size: 13px; margin-bottom: 4px;
        }
        .sh-item__date { font-weight: 600; color: var(--text-primary); }
        .sh-item__status { font-size: 11px; color: var(--text-muted); font-weight: 600; }
        .sh-item__status.done     { color: var(--accent-green); }
        .sh-item__status.redo     { color: #f59e0b; }
        .sh-item__status.rejected { color: var(--accent-red); }
        .sh-item__comment {
            font-size: 12.5px;
            color: var(--text-secondary);
            margin-top: 4px;
            padding-left: 8px;
            border-left: 2px solid var(--accent-blue);
            white-space: pre-wrap;
            word-break: break-word;
        }
        .sh-item__comment.admin { border-left-color: #f59e0b; }
        .sh-item__photos { display: flex; gap: 4px; margin-top: 6px; flex-wrap: wrap; }
        .sh-item__photos img {
            width: 44px; height: 44px;
            object-fit: cover; border-radius: 6px;
            cursor: pointer; border: 1px solid var(--border-color);
        }
        .sh-item__photos img:active { opacity: 0.7; }

        /* ===== Ранее загруженные end-фото в «Доделать» (Сессия C) ===== */
        .eep-title { font-size: 12.5px; font-weight: 600; color: var(--text-primary); margin-bottom: 6px; }
        .eep-grid { display: flex; flex-wrap: wrap; gap: 6px; }
        .eep-item {
            position: relative;
            width: 56px; height: 56px;
            border-radius: 8px;
            overflow: hidden;
            border: 1px solid var(--border-color);
            background: var(--bg-input);
        }
        .eep-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .eep-remove {
            position: absolute;
            top: 2px; right: 2px;
            width: 18px; height: 18px;
            border-radius: 50%;
            background: rgba(248,113,113,0.95);
            color: #ffffff;
            border: none;
            font-size: 11px;
            line-height: 1;
            padding: 0;
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
        }
        .eep-remove:active { transform: scale(0.9); }

        /* ===== Голосовой ввод (Сессия C) ===== */
        .voice-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            margin-top: 4px;
            padding: 8px 14px;
            background: var(--bg-input);
            color: var(--text-primary);
            border: 1px solid var(--border-color);
            border-radius: 20px;
            font-size: 14px;
            cursor: pointer;
            font-family: inherit;
            transition: background 0.15s, border-color 0.15s;
        }
        .voice-btn.active {
            background: var(--accent-red);
            color: #ffffff;
            border-color: var(--accent-red);
            animation: voice-pulse 1s infinite;
        }
        @keyframes voice-pulse {
            0%, 100% { box-shadow: 0 0 0 0 rgba(248,113,113,0.7); }
            50%      { box-shadow: 0 0 0 6px rgba(248,113,113,0); }
        }

        /* ===== План на неделю (Сессия B) ===== */
        #weekPlanContent { padding: 4px 0; }
        .wp-empty { text-align: center; color: var(--text-muted); padding: 24px 0; font-size: 14px; }
        .wp-day { margin-bottom: 14px; }
        .wp-day:last-child { margin-bottom: 0; }
        .wp-day__head {
            display: flex;
            justify-content: space-between;
            align-items: baseline;
            gap: 8px;
            padding-bottom: 6px;
            margin-bottom: 8px;
            border-bottom: 1px solid var(--border-color);
        }
        .wp-day__title { font-size: 14px; font-weight: 700; color: var(--text-primary); }
        .wp-day__meta { font-size: 12px; color: var(--text-muted); white-space: nowrap; }
        .wp-day__items { display: flex; flex-direction: column; gap: 6px; }
        /* Карточка магазина (склейка мульти-поставщиков) */
        .wp-store {
            padding: 8px 10px;
            background: var(--bg-input);
            border-radius: 8px;
            border-left: 3px solid var(--accent-blue);
            font-size: 13px;
            line-height: 1.35;
        }
        .wp-store.is-public-only { border-left-color: #f59e0b; }
        .wp-store.is-today        { border-left-color: #34d399; }

        .wp-store__head { margin-bottom: 6px; }
        .wp-store__name {
            font-weight: 600;
            color: var(--text-primary);
            font-size: 13.5px;
        }
        .wp-store__addr {
            font-size: 12px;
            color: var(--text-secondary);
            margin-top: 1px;
        }

        .wp-store__sups {
            display: flex;
            flex-direction: column;
            gap: 4px;
            padding-top: 6px;
            border-top: 1px dashed var(--border-color);
        }
        .wp-sup {
            display: flex;
            align-items: baseline;
            gap: 8px;
            min-width: 0;
        }
        .wp-sup__name {
            flex: 1 1 auto;
            min-width: 0;
            font-size: 12.5px;
            color: var(--text-secondary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .wp-sup.is-public .wp-sup__name { color: #f59e0b; font-weight: 600; }
        .wp-sup__price {
            flex: 0 0 auto;
            font-size: 12px;
            font-weight: 600;
            color: var(--accent-green);
        }
        .wp-sup__timing {
            flex: 0 0 auto;
            font-size: 12px;
            color: var(--text-muted);
        }

        @media (max-width: 640px) {
            .wp-day__title { font-size: 13px; }
            .wp-day__meta { font-size: 11px; }
            .wp-store { padding: 7px 9px; font-size: 12.5px; }
            .wp-store__name { font-size: 13px; }
            .wp-store__addr { font-size: 11px; }
            .wp-sup__name { font-size: 12px; }
            .wp-sup__price, .wp-sup__timing { font-size: 11px; }
        }

        .loading { text-align: center; padding: 50px 20px; color: var(--text-muted); }
        .loading .spinner { display: inline-block; width: 40px; height: 40px; border: 4px solid var(--border-color); border-top-color: var(--accent-blue); border-radius: 50%; animation: spin 0.8s linear infinite; margin-bottom: 16px; }
        @keyframes spin { to { transform: rotate(360deg); } }

        .store-list { display: flex; flex-direction: column; gap: 12px; }
        .store-card { background: var(--bg-card); border-radius: var(--radius); padding: 12px; box-shadow: var(--shadow-card); border: 1px solid var(--border-color); animation: fadeInUp 0.4s ease forwards; opacity: 0; transform: translateY(16px); position: relative; }
        [data-theme="light"] .store-card {
            border-color: #cbd5e1;
            box-shadow: 0 1px 2px rgba(15,23,42,0.06), 0 4px 14px rgba(15,23,42,0.08);
        }
        [data-theme="light"] .store-card.done {
            background: #ecfdf5;
            border-color: #6ee7b7;
        }
        .store-card.done { border-color: var(--accent-green); background: #1a3a2a; }
        @keyframes fadeInUp { to { opacity: 1; transform: translateY(0); } }

        /* Пульсация карточки при deep-link ?task=<id> (сессия 2026-09-27) */
        .store-card--highlight {
            animation: taskHighlightPulse 0.9s ease 3;
        }
        @keyframes taskHighlightPulse {
            0%, 100% { box-shadow: 0 0 0 0 rgba(96,165,250,0.7), var(--shadow-card); }
            50%      { box-shadow: 0 0 0 8px rgba(96,165,250,0.15), var(--shadow-card); }
        }
        [data-theme="light"] .store-card--highlight {
            animation-name: taskHighlightPulseLight;
        }
        @keyframes taskHighlightPulseLight {
            0%, 100% { box-shadow: 0 0 0 0 rgba(59,130,246,0.6), 0 1px 3px rgba(0,0,0,0.06); }
            50%      { box-shadow: 0 0 0 8px rgba(59,130,246,0.18), 0 1px 3px rgba(0,0,0,0.06); }
        }

        /* Шапка карточки визита: [Название] [📍 Адрес] [Город].
           Адрес — центральный, в плашке (как .tmc-addr-inline у админа).
           Порядок важен: у мерча в работе адрес первичен, название сети —
           вторично. Слева и справа — края, чтобы центральная плашка
           визуально доминировала. */
        /* Строка 1: [📍 Адрес] ... [Город]. Название сети — строкой ниже.
           У мерча в работе адрес первичен. */
        /* Строка 2: [Название сети] ... [бейджи] [📜].
           flex с space-between: название прижато влево, значки — вправо.
           Названию разрешаем сжиматься с ellipsis (flex: 1 1 auto;
           min-width: 0), бейджи не сжимаются (flex-shrink: 0 у .badges). */
        /* v3: убрали space-between — badge сидит сразу после title
           (flex:1 на title забирает всю ширину, badge прижат к нему
           вплотную), а actions-wrap отжимается вправо. */
        .store-card__title-row {
            display: flex;
            align-items: center;
            gap: 6px;
            min-width: 0;
            margin: 0;
        }
        .store-card__title-row > .store-card__title {
            flex: 1 1 auto;
            min-width: 0;
        }
        /* Контейнер кнопок справа — фиксирован, не сжимается */
        .store-card__actions {
            flex: 0 0 auto;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            margin-left: 4px;
        }
        .store-card__top {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            margin-bottom: 4px;
            min-width: 0;
        }

        /* STORE_HOURS_V1 (2026-10-06): живой чип часов.
           5 состояний: open / closing / soon / closed / unknown. */
        .store-card__hours {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            font-size: 11.5px;
            font-weight: 600;
            padding: 3px 9px;
            border-radius: 12px;
            margin-top: 4px;
            margin-bottom: 4px;
            line-height: 1.3;
            border: 1px solid transparent;
        }
        .store-card__hours.is-open {
            background: rgba(52,211,153,0.12);
            color: #34d399;
            border-color: rgba(52,211,153,0.35);
        }
        .store-card__hours.is-closing {
            background: rgba(245,158,11,0.14);
            color: #f59e0b;
            border-color: rgba(245,158,11,0.4);
        }
        .store-card__hours.is-soon {
            background: rgba(248,113,113,0.14);
            color: #f87171;
            border-color: rgba(248,113,113,0.4);
        }
        .store-card__hours.is-closed,
        .store-card__hours.is-unknown {
            background: rgba(148,163,184,0.10);
            color: var(--text-muted);
            border-color: rgba(148,163,184,0.25);
        }
        [data-theme="light"] .store-card__hours.is-open {
            background: #ecfdf5; color: #047857; border-color: #a7f3d0;
        }
        [data-theme="light"] .store-card__hours.is-closing {
            background: #fef3c7; color: #b45309; border-color: #fcd34d;
        }
        [data-theme="light"] .store-card__hours.is-soon {
            background: #fee2e2; color: #b91c1c; border-color: #fca5a5;
        }
        [data-theme="light"] .store-card__hours.is-closed,
        [data-theme="light"] .store-card__hours.is-unknown {
            background: #f1f5f9; color: #64748b; border-color: #cbd5e1;
        }

        /* E3: предупреждение о закрытых часах в модалке визита. */
        .store-hours-warning {
            background: rgba(245, 158, 11, 0.14);
            border: 1px solid rgba(245, 158, 11, 0.42);
            border-left: 4px solid #f59e0b;
            border-radius: 10px;
            margin-bottom: 10px;
            padding: 10px 12px;
            font-size: 13px;
            line-height: 1.4;
            color: var(--text-primary);
            flex-shrink: 0;
        }
        .store-hours-warning.hidden { display: none; }
        [data-theme="light"] .store-hours-warning,
        [data-theme="gray"] .store-hours-warning {
            background: #fff7ed;
            border-color: #fcd34d;
            border-left-color: #f59e0b;
        }
        .store-card__addr {
            flex: 0 1 auto;
            min-width: 0;
            max-width: 100%;
            padding: 3px 10px;
            font-size: 14px;
            font-weight: 700;
            line-height: 1.3;
            color: #dbeafe;
            background: rgba(96, 165, 250, 0.18);
            border: 1px solid rgba(96, 165, 250, 0.45);
            border-radius: 10px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        [data-theme="light"] .store-card__addr {
            color: #1e40af;
            background: #e0efff;
            border-color: #93c5fd;
        }
        [data-theme="modern"] .store-card__addr {
            color: #c7d2fe;
            background: rgba(99, 102, 241, 0.18);
            border-color: rgba(99, 102, 241, 0.45);
        }
        .store-card__city {
            justify-self: end;
            font-size: 12px;
            color: var(--text-muted);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .store-info-line { display: flex; align-items: center; justify-content: space-between; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
        .store-info-line .store-supplier { font-size: 13px; color: var(--text-secondary); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .store-pills { display: flex; gap: 6px; flex-wrap: wrap; flex-shrink: 0; }
        .store-pill { font-size: 12px; font-weight: 600; padding: 3px 10px; border-radius: 20px; background: var(--bg-input); color: var(--text-primary); white-space: nowrap; }
        .store-comment { font-size: 13px; color: var(--text-secondary); margin-top: 6px; padding: 6px 10px; background: var(--bg-input); border-radius: 8px; border-left: 3px solid var(--accent-blue); }
        [data-theme="light"] .store-comment {
            background: #eff6ff;
            color: #1e40af;
            border-left-color: #3b82f6;
        }

        .store-task-row { margin-top: 10px; }

        .store-group-badge {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            margin-top: 6px;
            padding: 4px 10px;
            border-radius: 10px;
            font-size: 11px;
            font-weight: 600;
            line-height: 1.3;
        }
        .store-group-badge.single {
            background: rgba(148,163,184,0.15);
            color: var(--text-muted);
        }
        .store-group-badge.multi {
            background: rgba(245,158,11,0.18);
            color: #f59e0b;
            border: 1px solid rgba(245,158,11,0.45);
            font-size: 12px;
        }
        [data-theme="light"] .store-group-badge.single { background: #f1f5f9; color: #64748b; }
        [data-theme="light"] .store-group-badge.multi { background: #fef3c7; color: #b45309; border-color: #fcd34d; }

        .store-task-row.multi {
            display: flex;
            flex-direction: column;
            gap: 6px;
        }
        .btn-start-supplier {
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            background: var(--accent-green);
            color: white;
            border: none;
            padding: 11px 14px;
            border-radius: 30px;
            font-size: 14px;
            font-weight: 600;
            cursor: pointer;
            transition: transform 0.15s ease;
            font-family: inherit;
            width: 100%;
        }
        .btn-start-supplier:active { transform: scale(0.98); }
        .btn-start-supplier:disabled { opacity: 0.5; pointer-events: none; }

        #continueVisitModal .modal-content { max-width: 400px; }
        #continueVisitModal .cv-success-icon { font-size: 44px; text-align: center; margin-bottom: 6px; }
        #continueVisitModal .cv-store-name { font-weight: 700; color: var(--text-primary); }
        #continueVisitModal .cv-supplier-list {
            margin: 12px 0;
            padding: 12px;
            background: var(--bg-input);
            border-radius: 10px;
        }
        #continueVisitModal .cv-supplier-item {
            padding: 6px 0;
            font-size: 14px;
            display: flex;
            align-items: center;
            gap: 8px;
        }
        #continueVisitModal .cv-supplier-item .cv-tag {
            display: inline-block;
            padding: 2px 10px;
            border-radius: 12px;
            background: rgba(96,165,250,0.2);
            color: var(--accent-blue);
            font-size: 12px;
            font-weight: 600;
        }

        .btn-start-task, .btn-redo-task, .btn-claim-task { display: block; width: 100%; background: var(--accent-green); color: white; border: none; padding: 12px 16px; border-radius: 40px; font-size: 15px; font-weight: 600; cursor: pointer; transition: transform 0.15s ease, background 0.15s ease; text-align: center; }
        .btn-start-task:active, .btn-redo-task:active, .btn-claim-task:active { transform: scale(0.98); }
        .btn-start-task:disabled, .btn-redo-task:disabled, .btn-claim-task:disabled { opacity: 0.5; pointer-events: none; }
        .btn-start-task, .btn-start-supplier, .btn-claim-task, .btn-redo-task { touch-action: manipulation; }
        .btn-redo-task { background: #f59e0b; color: #0f172a; }
        .btn-claim-task { background: #f59e0b; color: #0f172a; }

        .floating-actions { position: fixed; right: 12px; top: 50%; transform: translateY(-50%); display: none; flex-direction: column; gap: 10px; z-index: 1100; }
        .floating-actions.visible { display: flex; }
        .floating-actions .fab { width: 52px; height: 52px; border-radius: 50%; border: none; background: var(--accent-blue); color: white; font-size: 22px; cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; transition: transform 0.15s ease; }
        .floating-actions .fab:active { transform: scale(0.9); }
        .floating-actions .fab.standards { background: var(--accent-blue); }
        .floating-actions .fab.manager { background: #6366f1; }
        .floating-actions .fab.photos { background: var(--accent-green); }

        /* E4: в светлой и серой темах круги — белые с тёмными иконками. */
        [data-theme="light"] .floating-actions .fab,
        [data-theme="gray"] .floating-actions .fab {
            background: #ffffff !important;
            color: var(--text-primary) !important;
            border: 1px solid rgba(15, 23, 42, 0.10);
            box-shadow: 0 2px 8px rgba(15, 23, 42, 0.10), 0 1px 2px rgba(15, 23, 42, 0.06);
        }
        [data-theme="light"] .floating-actions .fab:active,
        [data-theme="gray"] .floating-actions .fab:active {
            background: #eef2f7 !important;
        }

        #completedSection { margin-top: 26px; padding-top: 16px; border-top: 2px dashed var(--border-color); }
        #completedSection h3 { color: var(--text-secondary); font-size: 15px; font-weight: 600; margin-bottom: 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
        #completedSection h3 .count-badge { background: var(--accent-green); color: #0f172a; padding: 1px 10px; border-radius: 40px; font-size: 12px; font-weight: 700; }
        #completedSection h3 .completed-sum { background: #f59e0b; color: #0f172a; padding: 1px 10px; border-radius: 40px; font-size: 12px; font-weight: 700; margin-left: 4px; }

        .completed-card { background: rgba(52, 211, 153, 0.08); border: 1px solid rgba(52, 211, 153, 0.35); border-radius: 10px; padding: 8px 12px; margin-bottom: 6px; font-size: 13px; color: var(--text-secondary); line-height: 1.4; cursor: pointer; transition: background 0.15s ease, transform 0.15s ease, border-color 0.15s ease; }
        .completed-card:active { transform: scale(0.99); }
        .completed-card:hover { background: rgba(52, 211, 153, 0.14); border-color: rgba(52, 211, 153, 0.55); }
        .completed-card .cc-name { font-weight: 700; color: var(--text-primary); font-size: 14px; margin-bottom: 2px; display: flex; align-items: center; justify-content: space-between; gap: 8px; }
        .completed-card .cc-name .cc-name-left { display: flex; align-items: center; gap: 6px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .completed-card .cc-time { color: var(--accent-green); font-size: 12px; font-weight: 600; flex-shrink: 0; }
        .completed-card .cc-line { font-size: 12.5px; color: var(--text-secondary); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
        .completed-card .cc-hint { font-size: 11px; color: var(--accent-blue); margin-top: 4px; font-weight: 500; }
        .completed-card .cc-photo-badge { font-size: 11px; font-weight: 700; color: var(--accent-blue); background: rgba(96,165,250,0.15); border: 1px solid rgba(96,165,250,0.4); border-radius: 20px; padding: 1px 8px; margin-left: 6px; }

        .completed-card .cc-actions { margin-top: 8px; display: flex; gap: 6px; }
        .completed-card .cc-redo-btn {
            background: #f59e0b; color: #0f172a; border: none; border-radius: 20px;
            padding: 6px 14px; font-size: 12px; font-weight: 700; cursor: pointer;
            transition: transform 0.15s ease, opacity 0.15s ease; font-family: inherit;
        }
        .completed-card .cc-redo-btn:active { transform: scale(0.96); }
        .completed-card .cc-redo-btn:disabled { opacity: 0.5; pointer-events: none; }

        .modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.7); z-index: 1000; justify-content: center; align-items: center; }
        .modal-overlay.active { display: flex; }
        #managerModal, #photoViewerModal, #salaryModal, #claimConfirmModal, #claimDaysModal, #completedTaskModal, #supplierChoiceModal, #continueVisitModal { z-index: 1200; }

        .modal-content { background: var(--bg-card); border-radius: var(--radius); padding: 16px 20px 20px; max-width: 460px; width: 95%; max-height: 92vh; box-shadow: 0 8px 32px rgba(0,0,0,0.5); display: flex; flex-direction: column; overflow: hidden; }
        .modal-content h2 { font-size: 18px; margin-bottom: 6px; flex-shrink: 0; text-align: center; }
        .modal-scrollable { flex: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; margin-bottom: 8px; padding-right: 2px; }
        .modal-scrollable video { width: 100%; flex: 1 1 auto; min-height: 280px; object-fit: cover; border-radius: 12px; background: #000; display: block; }
        .modal-scrollable .photo-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(70px, 1fr)); gap: 6px; min-height: 78px; max-height: 158px; overflow-y: auto; flex-shrink: 0; }
        .modal-scrollable .photo-counter { font-size: 13px; color: var(--text-secondary); text-align: center; flex-shrink: 0; }
        .modal-actions-bottom { flex-shrink: 0; display: flex; flex-direction: column; gap: 8px; border-top: 1px solid var(--border-color); padding-top: 10px; margin-top: 4px; }
        .camera-controls { display: flex; gap: 8px; align-items: stretch; }
        .btn-add-photo { flex: 1; display: inline-flex; align-items: center; justify-content: center; min-height: 52px; padding: 0 16px; border: none; border-radius: 26px; font-size: 16px; font-weight: 600; background: var(--accent-blue); color: white; cursor: pointer; font-family: inherit; }
        .btn-add-photo:disabled { opacity: 0.5; pointer-events: none; }
        .btn-close-camera { display: none; flex: 0 0 52px; width: 52px; height: 52px; padding: 0; border: none; border-radius: 50%; background: var(--accent-green); color: white; font-size: 26px; font-weight: 700; cursor: pointer; line-height: 1; font-family: inherit; }
        .btn-close-camera.active { display: inline-flex; align-items: center; justify-content: center; }
        .btn-submit { background: var(--accent-blue); color: white; border: none; border-radius: 60px; padding: 12px; font-size: 16px; font-weight: 600; width: 100%; cursor: pointer; }
        .btn-submit:disabled { opacity: 0.5; pointer-events: none; }

        /* CTA «Отправить / Отправить (завершить)» — всегда зелёная */
        #submitBtn { background: var(--accent-green); }
        #submitBtn:active { transform: scale(0.98); }
        #submitBtn:disabled { opacity: 0.5; pointer-events: none; }
        [data-theme="light"] #submitBtn { background: var(--accent-green); }
        .btn-finish { background: var(--accent-green); color: white; border: none; border-radius: 60px; padding: 12px; font-size: 16px; font-weight: 600; width: 100%; cursor: pointer; }
        .btn-finish:disabled { opacity: 0.5; pointer-events: none; }
        #commentSection { display: none; flex-direction: column; gap: 8px; }
        #commentInputWrapper { display: none; flex-direction: column; gap: 8px; }
        #commentInputWrapper textarea { width: 100%; padding: 8px; border-radius: 8px; border: 1px solid var(--border-color); background: var(--bg-input); color: var(--text-primary); resize: vertical; font-family: inherit; font-size: 14px; }
        .modal-content .btn-close { background: var(--bg-btn); color: var(--text-secondary); border: none; padding: 10px 20px; border-radius: 40px; margin-top: 8px; cursor: pointer; width: 100%; font-size: 14px; flex-shrink: 0; }
        .task-message { margin-top: 4px; font-weight: 500; text-align: center; font-size: 14px; flex-shrink: 0; }
        #salaryModal .modal-content { max-width: 500px; }
        #salarySummary { margin-bottom: 12px; font-size: 16px; font-weight: 600; color: var(--accent-green); }
        #salaryMonthsList { max-height: 60vh; overflow-y: auto; }
        .salary-month-row { display: flex; justify-content: space-between; align-items: center; padding: 10px 14px; border-radius: 10px; background: var(--bg-input); margin-bottom: 6px; font-size: 15px; }
        .salary-month-row .s-month-name { color: var(--text-secondary); font-weight: 500; }
        .salary-month-row .s-month-total { color: var(--accent-green); font-weight: 700; font-size: 15px; }
        .salary-month-row .s-month-count { color: var(--text-muted); font-size: 12px; margin-left: 6px; }
        .salary-month-row.current { border: 1px solid var(--accent-green); }
        .salary-month-row.zero { opacity: 0.55; }
        .footer-note { margin-top: 28px; text-align: center; font-size: 13px; color: var(--text-muted); border-top: 1px solid var(--border-color); padding-top: 18px; }

        .store-ann {
            margin-top: 8px;
            background: linear-gradient(135deg, rgba(96,165,250,0.15), rgba(139,92,246,0.10));
            border: 1px solid rgba(96,165,250,0.4);
            border-left: 3px solid var(--accent-blue);
            border-radius: 8px;
            font-size: 12.5px;
            line-height: 1.4;
            color: var(--text-primary);
            overflow: hidden;
        }
        .store-ann-collapsed {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 8px 12px;
            cursor: pointer;
            user-select: none;
        }
        .store-ann-collapsed-text {
            flex: 1;
            min-width: 0;
            font-size: 12.5px;
            color: var(--text-primary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .store-ann-toggle-icon {
            font-size: 11px;
            color: var(--accent-blue);
            flex-shrink: 0;
        }
        .store-ann-expanded {
            padding: 8px 12px 10px;
            border-top: 1px dashed rgba(96,165,250,0.3);
        }
        .store-ann-expanded.hidden { display: none; }
        .store-ann .store-ann-item + .store-ann-item {
            margin-top: 8px;
            padding-top: 8px;
            border-top: 1px dashed var(--border-color);
        }
        .store-ann .store-ann-title {
            font-weight: 700;
            font-size: 13px;
            margin-bottom: 2px;
        }
        .store-ann .store-ann-body {
            white-space: pre-wrap;
            word-break: break-word;
            color: var(--text-secondary);
        }
        .store-ann .store-ann-period {
            font-size: 11px;
            color: var(--text-muted);
            margin-top: 3px;
        }
        [data-theme="light"] .store-ann {
            background: linear-gradient(135deg, #eff6ff, #f5f3ff);
            border-color: #bfdbfe;
        }
        [data-theme="light"] .store-ann .store-ann-collapsed-text { color: #1e3a8a; }
        [data-theme="light"] .store-ann .store-ann-toggle-icon { color: #2563eb; }

        .task-ann-banner {
            background: linear-gradient(135deg, rgba(96,165,250,0.15), rgba(139,92,246,0.12));
            border: 1px solid rgba(96,165,250,0.4);
            border-left: 4px solid var(--accent-blue);
            border-radius: 10px;
            margin-bottom: 10px;
            font-size: 13px;
            line-height: 1.4;
            color: var(--text-primary);
            flex-shrink: 0;
            overflow: hidden;
        }
        .task-ann-collapsed {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 10px 12px;
            cursor: pointer;
            user-select: none;
        }
        .task-ann-collapsed-text {
            flex: 1;
            min-width: 0;
            font-size: 13px;
            color: var(--text-primary);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .task-ann-toggle-icon {
            font-size: 12px;
            color: var(--accent-blue);
            flex-shrink: 0;
        }
        .task-ann-expanded {
            padding: 10px 14px 12px;
            border-top: 1px dashed rgba(96,165,250,0.3);
            max-height: 40vh;
            overflow-y: auto;
        }
        .task-ann-expanded.hidden { display: none; }
        .task-ann-banner .task-ann-item + .task-ann-item {
            margin-top: 10px;
            padding-top: 10px;
            border-top: 1px dashed var(--border-color);
        }
        .task-ann-banner .task-ann-title {
            font-weight: 700;
            color: var(--text-primary);
            margin-bottom: 3px;
            font-size: 14px;
        }
        .task-ann-banner .task-ann-body {
            color: var(--text-secondary);
            white-space: pre-wrap;
            word-break: break-word;
        }
        .task-ann-banner .task-ann-period {
            font-size: 11px;
            color: var(--text-muted);
            margin-top: 4px;
        }

        /* D3: баннер «⚠️ Замечание из прошлого визита» */
        .visit-notes-banner {
            background: rgba(245, 158, 11, 0.12);
            border: 1px solid rgba(245, 158, 11, 0.4);
            border-left: 4px solid #f59e0b;
            border-radius: 10px;
            margin-bottom: 10px;
            font-size: 13px;
            line-height: 1.4;
            color: var(--text-primary);
            flex-shrink: 0;
            overflow: hidden;
        }
        .visit-notes-banner.hidden { display: none; }
        .visit-notes-banner .vn-item { padding: 10px 12px; }
        .visit-notes-banner .vn-item + .vn-item { border-top: 1px dashed rgba(245, 158, 11, 0.35); }
        .visit-notes-banner .vn-item__head {
            font-size: 11.5px;
            font-weight: 700;
            color: #f59e0b;
            margin-bottom: 4px;
        }
        .visit-notes-banner .vn-item__text {
            color: var(--text-primary);
            white-space: pre-wrap;
            word-break: break-word;
        }
        .visit-notes-banner .vn-item__photos {
            display: flex;
            gap: 6px;
            margin-top: 8px;
            flex-wrap: wrap;
        }
        .visit-notes-banner .vn-item__photos img {
            width: 52px;
            height: 52px;
            object-fit: cover;
            border-radius: 6px;
            border: 1px solid rgba(245, 158, 11, 0.4);
            cursor: pointer;
        }
        .visit-notes-banner .vn-item__photos img:active { opacity: 0.7; }

        /* ============================================================
           D6: чат мерч <-> админ. Badge на иконке 💬.
           ============================================================ */
        .scb-badge {
            position: absolute;
            top: -3px;
            right: -3px;
            min-width: 16px;
            height: 16px;
            padding: 0 4px;
            border-radius: 8px;
            background: #f87171;
            color: #ffffff;
            font-size: 10px;
            font-weight: 700;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            border: 1.5px solid var(--bg-card);
            box-sizing: border-box;
        }
        .store-card__history-btn { position: relative; }

        .msg-modal { max-width: 560px; width: 94vw; }
        .msg-subtitle {
            font-size: 12.5px;
            color: var(--text-muted);
            margin: 4px 0 10px;
            line-height: 1.35;
        }
        .msg-list {
            flex: 1;
            overflow-y: auto;
            max-height: 55vh;
            min-height: 180px;
            display: flex;
            flex-direction: column;
            gap: 8px;
            padding: 10px 4px 10px 0;
            margin-bottom: 8px;
        }
        .msg-empty {
            text-align: center;
            color: var(--text-muted);
            padding: 30px 10px;
            font-size: 13px;
        }
        .msg-row { display: flex; }
        .msg-row.mine  { justify-content: flex-end; }
        .msg-row.other { justify-content: flex-start; }
        .msg-bubble {
            max-width: 82%;
            padding: 8px 12px;
            border-radius: 14px;
            font-size: 13.5px;
            line-height: 1.4;
            word-break: break-word;
            white-space: pre-wrap;
        }
        .msg-bubble.mine {
            background: var(--accent-blue);
            color: #0f172a;
            border-bottom-right-radius: 4px;
        }
        [data-theme="light"] .msg-bubble.mine { color: #ffffff; }
        .msg-bubble.other {
            background: var(--bg-input);
            color: var(--text-primary);
            border-bottom-left-radius: 4px;
        }
        .msg-author {
            font-size: 11px;
            font-weight: 700;
            opacity: 0.8;
            margin-bottom: 3px;
        }
        .msg-time {
            font-size: 10px;
            opacity: 0.65;
            margin-top: 3px;
            text-align: right;
        }
        /* D6.1: кнопка «Отправить» в чате — по содержимому,
           textarea растягивается на свободное место. */
        .msg-input-row {
            display: flex;
            gap: 8px;
            align-items: stretch;
            margin-bottom: 6px;
        }
        .msg-input-row textarea {
            flex: 1 1 auto;
            width: auto;
            min-width: 0;
            min-height: 44px;
            max-height: 140px;
            padding: 10px;
            border-radius: 10px;
            border: 1px solid var(--border-color);
            background: var(--bg-input);
            color: var(--text-primary);
            font-family: inherit;
            font-size: 14px;
            resize: vertical;
            box-sizing: border-box;
        }

        /* D7: ссылки в шапке чата (мерч-сторона). */
        .msg-links {
            display: flex;
            gap: 6px;
            flex-wrap: wrap;
            margin: 6px 0 4px;
        }
        .msg-link {
            padding: 5px 12px;
            border-radius: 8px;
            background: var(--bg-input);
            color: var(--text-secondary);
            border: 1px solid var(--border-color);
            font-size: 12.5px;
            font-weight: 600;
            cursor: pointer;
            font-family: inherit;
            transition: background 0.15s ease, transform 0.15s ease;
        }
        .msg-link:hover { background: var(--bg-btn); }
        .msg-link:active { transform: scale(0.96); }

        /* D8: inbox мерча — стили как у админских. */
        .inbox-list {
            max-height: 55vh;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: 6px;
            margin-bottom: 10px;
            min-height: 120px;
        }
        .inbox-item {
            padding: 10px 12px;
            border-radius: 10px;
            background: var(--bg-input);
            border-left: 3px solid var(--accent-blue);
            cursor: pointer;
            transition: background 0.15s ease, transform 0.15s ease;
            font-size: 13px;
            line-height: 1.4;
        }
        .inbox-item:active { transform: scale(0.99); }
        .inbox-item.has-unread { border-left-color: #f87171; }
        .inbox-item__head {
            display: flex;
            justify-content: space-between;
            align-items: baseline;
            gap: 8px;
            margin-bottom: 3px;
        }
        .inbox-item__store {
            font-weight: 700;
            color: var(--text-primary);
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .inbox-item__time {
            font-size: 11px;
            color: var(--text-muted);
            flex-shrink: 0;
        }
        .inbox-item__meta {
            font-size: 11.5px;
            color: var(--text-muted);
            margin-bottom: 3px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }
        .inbox-item__preview {
            color: var(--text-secondary);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            font-size: 12.5px;
        }
        .inbox-item__badge {
            display: inline-block;
            margin-left: 6px;
            padding: 1px 7px;
            border-radius: 10px;
            background: #f87171;
            color: #ffffff;
            font-size: 11px;
            font-weight: 700;
        }
        .inbox-empty {
            text-align: center;
            color: var(--text-muted);
            padding: 30px 10px;
            font-size: 13px;
        }
        /* Кнопка внутри #messagesModal — без .btn-submit ширины 100%. */
        #messagesModal .msg-input-row button {
            flex: 0 0 auto;
            width: auto;
            min-width: 100px;
            padding: 0 18px;
            font-size: 14px;
            font-weight: 600;
            border-radius: 10px;
            align-self: stretch;
        }
        [data-theme="light"] .visit-notes-banner {
            background: #fff7ed;
            border-color: #fcd34d;
            border-left-color: #f59e0b;
        }
        [data-theme="light"] .visit-notes-banner .vn-item__head { color: #b45309; }
        [data-theme="light"] .task-ann-banner {
            background: linear-gradient(135deg, #eff6ff, #f5f3ff);
            border-color: #bfdbfe;
            border-left-color: var(--accent-blue);
        }

        #pushPermissionBanner {
            position: fixed;
            bottom: 16px;
            left: 16px;
            right: 16px;
            background: linear-gradient(135deg, #8b5cf6, #60a5fa);
            color: #fff;
            padding: 14px 16px;
            border-radius: 14px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.5);
            z-index: 9998;
            font-size: 14px;
            animation: updSlideUp 0.3s ease;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        #pushPermissionBanner .push-banner-content {
            display: flex;
            align-items: center;
            gap: 12px;
        }
        #pushPermissionBanner .push-banner-icon {
            font-size: 28px;
            flex-shrink: 0;
        }
        #pushPermissionBanner .push-banner-text {
            flex: 1;
            min-width: 0;
        }
        #pushPermissionBanner .push-banner-title {
            font-weight: 700;
            font-size: 15px;
            margin-bottom: 2px;
        }
        #pushPermissionBanner .push-banner-sub {
            font-size: 12px;
            opacity: 0.9;
            line-height: 1.3;
        }
        #pushPermissionBanner .push-banner-actions {
            display: flex;
            gap: 8px;
        }
        #pushPermissionBanner .push-banner-btn-primary {
            flex: 1;
            background: rgba(255, 255, 255, 0.28);
            color: #fff;
            border: none;
            padding: 10px 16px;
            border-radius: 22px;
            cursor: pointer;
            font-weight: 700;
            font-size: 14px;
            font-family: inherit;
        }
        #pushPermissionBanner .push-banner-btn-primary:active { transform: scale(0.97); }
        #pushPermissionBanner .push-banner-btn-ghost {
            background: transparent;
            color: #fff;
            border: none;
            padding: 10px 16px;
            cursor: pointer;
            opacity: 0.85;
            font-size: 14px;
            font-family: inherit;
        }

        #updateBanner {
            position: fixed;
            bottom: 16px;
            left: 16px;
            right: 16px;
            background: linear-gradient(135deg, #60a5fa, #8b5cf6);
            color: #fff;
            padding: 12px 16px;
            border-radius: 12px;
            display: flex;
            align-items: center;
            gap: 10px;
            box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
            z-index: 9999;
            font-size: 14px;
            font-weight: 500;
            animation: updSlideUp 0.3s ease;
        }
        @keyframes updSlideUp {
            from { transform: translateY(80px); opacity: 0; }
            to { transform: translateY(0); opacity: 1; }
        }
        #updateBanner .upd-text { flex: 1; min-width: 0; }
        #updateBanner .upd-btn-primary {
            background: rgba(255, 255, 255, 0.25);
            color: #fff;
            border: none;
            padding: 6px 14px;
            border-radius: 20px;
            cursor: pointer;
            font-weight: 600;
            font-size: 13px;
            white-space: nowrap;
        }
        #updateBanner .upd-btn-primary:active { transform: scale(0.96); }
        #updateBanner .upd-btn-ghost {
            background: transparent;
            color: #fff;
            border: none;
            padding: 6px 10px;
            cursor: pointer;
            opacity: 0.8;
            font-size: 13px;
            white-space: nowrap;
        }
        #updateBanner .upd-btn-ghost:active { opacity: 1; }
        .photo-thumb-wrap { position: relative; aspect-ratio: 1; border-radius: 8px; overflow: hidden; border: 2px solid var(--border-color); }
        .photo-thumb-wrap img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .photo-thumb-wrap .photo-remove { position: absolute; top: 3px; right: 3px; width: 22px; height: 22px; border-radius: 50%; background: rgba(248, 113, 113, 0.95); color: white; border: none; font-size: 14px; font-weight: 700; cursor: pointer; display: flex; align-items: center; justify-content: center; line-height: 1; padding: 0; box-shadow: 0 2px 6px rgba(0,0,0,0.4); }
        .photo-thumb-wrap .photo-remove:active { transform: scale(0.9); }

        #photoViewerModal .modal-content { max-width: 94vw; width: 94vw; }
        .pv-image-wrap { position: relative; width: 100%; display: flex; justify-content: center; align-items: center; background: #000; border-radius: 12px; min-height: 40vh; }
        .pv-image-wrap img { max-width: 100%; max-height: 70vh; object-fit: contain; border-radius: 12px; }
        .pv-nav { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0,0,0,0.55); color: white; border: none; width: 44px; height: 44px; border-radius: 50%; font-size: 24px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
        .pv-nav:active { background: rgba(0,0,0,0.85); }
        .pv-prev { left: 10px; }
        .pv-next { right: 10px; }
        .pv-actions { display: flex; gap: 8px; margin-top: 10px; }
        .btn-delete-photo { background: var(--accent-red); color: white; border: none; border-radius: 60px; padding: 10px 16px; font-size: 14px; font-weight: 600; cursor: pointer; flex: 1; }
        .btn-delete-photo:disabled { opacity: 0.6; pointer-events: none; }
        .pv-type-badge { display: inline-block; font-size: 11px; font-weight: 700; padding: 2px 10px; border-radius: 12px; background: var(--bg-input); color: var(--text-secondary); margin-bottom: 8px; align-self: flex-start; }
        .pv-type-badge.start { background: rgba(96,165,250,0.2); color: var(--accent-blue); }
        .pv-type-badge.end { background: rgba(52,211,153,0.2); color: var(--accent-green); }

        /* Лайтбокс локальных превью — кнопка удаления фото */
        .lpv-delete {
            position: absolute;
            top: 10px;
            right: 10px;
            width: 30px;
            height: 30px;
            border-radius: 50%;
            background: var(--accent-red);
            color: #ffffff;
            border: none;
            font-size: 14px;
            font-weight: 700;
            line-height: 1;
            padding: 0;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            box-shadow: 0 2px 8px rgba(0,0,0,0.5);
            z-index: 5;
            font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Android Emoji", "EmojiOne Color", sans-serif;
            transition: transform 0.15s ease, background 0.15s ease;
        }
        .lpv-delete:hover { background: #dc2626; }
        .lpv-delete:active { transform: scale(0.9); }

        #completedTaskModal .modal-content { max-width: 560px; }
        .ct-section-title { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; color: var(--text-primary); margin: 10px 0 6px; }
        .ct-section-title .ct-badge { font-size: 11px; font-weight: 700; padding: 2px 8px; border-radius: 12px; background: var(--bg-input); color: var(--text-secondary); }
        .ct-section-title.start .ct-badge { background: rgba(96,165,250,0.2); color: var(--accent-blue); }
        .ct-section-title.end .ct-badge { background: rgba(52,211,153,0.2); color: var(--accent-green); }
        .ct-photos { display: grid; grid-template-columns: repeat(auto-fill, minmax(72px, 1fr)); gap: 6px; margin-bottom: 4px; }
        .ct-photos .ct-photo { aspect-ratio: 1; border-radius: 8px; overflow: hidden; border: 2px solid var(--border-color); cursor: pointer; transition: transform 0.15s ease, border-color 0.15s ease; background: #0b1220; }
        .ct-photos .ct-photo:active { transform: scale(0.96); }
        .ct-photos .ct-photo:hover { border-color: var(--accent-blue); }
        .ct-photos .ct-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
        .ct-empty { font-size: 13px; color: var(--text-muted); padding: 10px; background: var(--bg-input); border-radius: 8px; text-align: center; font-style: italic; }
        .ct-info { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 13px; color: var(--text-secondary); margin-bottom: 4px; }
        .ct-info .ct-info-item { display: flex; align-items: center; gap: 4px; }
        .ct-info .ct-info-item strong { color: var(--text-muted); font-weight: 500; }
        .ct-comment { font-size: 13px; color: var(--text-secondary); padding: 8px 10px; background: var(--bg-input); border-radius: 8px; margin-top: 6px; border-left: 3px solid var(--accent-blue); white-space: pre-wrap; word-break: break-word; }
        .ct-comment.merch { border-left-color: var(--accent-green); }
        .ct-comment.merch::before { content: "💬 Мерч: "; color: var(--text-muted); font-weight: 600; }
        .ct-comment.admin { border-left-color: #f59e0b; }
        .ct-comment.admin::before { content: "📝 Админ: "; color: var(--text-muted); font-weight: 600; }

        @media (max-width: 640px) {
            body { padding: 8px; }
            #greeting { font-size: 14px; padding: 6px 10px; }
            .icon-btn { width: 38px; height: 38px; font-size: 16px; }
            .icon-btn svg { width: 18px; height: 18px; }
            .modal-content { padding: 12px 16px; }
            .floating-actions .fab { width: 48px; height: 48px; font-size: 20px; }
            .floating-actions { right: 8px; }
            .store-card { padding: 10px; }
            .day-status { padding: 14px 16px; font-size: 14px; }
            .ct-photos { grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); }
            .app-brand-text { display: none; }
            .app-brand { padding: 3px; border-radius: 12px; }
            .app-brand-icon { width: 28px; height: 28px; }
        }
           .store-deadline-badge {
            display: inline-block;
            margin-top: 6px;
            padding: 5px 10px;
            border-radius: 10px;
            background: rgba(245,158,11,0.15);
            border: 1px solid rgba(245,158,11,0.45);
            color: #f59e0b;
            font-size: 12px;
            font-weight: 600;
            cursor: pointer;
        }
        .store-deadline-badge.overdue {
            background: rgba(248,113,113,0.18);
            border-color: rgba(248,113,113,0.5);
            color: #f87171;
        }
        [data-theme="light"] .store-deadline-badge {
            background: #fef3c7;
            color: #92400e;
            border-color: #fbbf24;
        }
        [data-theme="light"] .store-deadline-badge.overdue {
            background: #fee2e2;
            color: #991b1b;
            border-color: #f87171;
        }
        [data-theme="light"] .store-deadline-badge.overdue { background: #fee2e2; color: #b91c1c; border-color: #fca5a5; }

        .deadline-card {
            padding: 10px 12px;
            border-radius: 10px;
            background: var(--bg-input);
            margin-bottom: 6px;
            border-left: 3px solid #f59e0b;
        }
        .deadline-card.overdue { border-left-color: var(--accent-red); background: rgba(248,113,113,0.10); }
        .deadline-card.closed  { border-left-color: var(--accent-green); opacity: 0.65; }
        .deadline-product { font-weight: 700; font-size: 14px; color: var(--text-primary); margin-bottom: 3px; word-break: break-word; }
        .deadline-meta { font-size: 12px; color: var(--text-secondary); margin-bottom: 2px; }
        .deadline-comment { font-size: 12px; color: var(--text-muted); font-style: italic; margin-top: 3px; }
        .deadline-author { font-size: 11px; color: var(--text-muted); margin-top: 4px; }
        .deadline-close-btn {
            flex: 0 0 auto;
            background: var(--accent-green);
            color: #0f172a;
            border: none;
            padding: 8px 12px;
            border-radius: 20px;
            font-size: 12px;
            font-weight: 700;
            cursor: pointer;
            white-space: nowrap;
        }
        .deadline-close-btn:disabled { opacity: 0.5; pointer-events: none; }
        .        .floating-actions .fab.deadlines { background: #f59e0b; color: #0f172a; }

        .deadline-geo-status {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 8px 12px;
            border-radius: 10px;
            font-size: 12.5px;
            font-weight: 600;
            margin-bottom: 10px;
        }
        .deadline-geo-status.ok      { background: rgba(52,211,153,0.14); color: #34d399; border: 1px solid rgba(52,211,153,0.4); }
        .deadline-geo-status.far     { background: rgba(248,113,113,0.14); color: #f87171; border: 1px solid rgba(248,113,113,0.4); }
        .deadline-geo-status.nogeo   { background: rgba(245,158,11,0.14); color: #f59e0b; border: 1px solid rgba(245,158,11,0.4); }
        .deadline-geo-status.loading { background: var(--bg-input); color: var(--text-muted); border: 1px solid var(--border-color); }
        .deadline-geo-status .dgs-edit {
            margin-left: auto;
            background: transparent;
            border: 1px solid currentColor;
            color: inherit;
            border-radius: 12px;
            padding: 3px 9px;
            font-size: 11px;
            font-weight: 700;
            cursor: pointer;
        }

        /* Индикатор группы визита в модалке фото */
        .visit-group-indicator {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            padding: 8px 12px;
            margin-bottom: 8px;
            background: rgba(96,165,250,0.14);
            border: 1px solid rgba(96,165,250,0.4);
            border-left: 3px solid var(--accent-blue);
            border-radius: 10px;
            font-size: 13px;
            flex-shrink: 0;
        }
        .visit-group-indicator.hidden { display: none; }
        .visit-group-indicator .vgi-supplier {
            font-weight: 600;
            color: var(--text-primary);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }
        .visit-group-indicator .vgi-position {
            font-weight: 700;
            color: var(--accent-blue);
            flex-shrink: 0;
            white-space: nowrap;
        }
        [data-theme="light"] .visit-group-indicator {
            background: #eff6ff;
            border-color: #bfdbfe;
            border-left-color: var(--accent-blue);
        }

        /* Пометка «▶ следующий» в списке continueVisitModal */
        #continueVisitModal .cv-supplier-item .cv-tag--next {
            background: rgba(52,211,153,0.22);
            color: var(--accent-green);
        }
        [data-theme="light"] #continueVisitModal .cv-supplier-item .cv-tag--next {
            background: #d1fae5;
            color: #047857;
        }

        /* ============================================================
           CARD UNIFICATION — единый тон карточек заданий мерча.
           Все темы. Без «карточки в карточке».
           ============================================================ */
        .store-card { padding: 12px 14px 14px; }
        .store-card__header,
        .store-card__header.disabled {
            background: transparent !important;
            border: none !important;
            border-radius: 10px !important;
            padding: 4px 6px !important;
            margin: 0 0 4px !important;
            transition: background 0.15s ease;
        }
        .store-card__header:not(.disabled):hover  { background: rgba(139,92,246,0.08) !important; }
        .store-card__header:not(.disabled):active {
            background: rgba(139,92,246,0.14) !important;
            transform: none !important;
        }
        .store-card__suppliers {
            display: flex !important;
            flex-direction: column !important;
            gap: 0 !important;
            margin: 4px 0 0 !important;
            border-top: 1px solid var(--border-color);
        }
        .store-card .store-sup-row,
        [data-theme="light"] .store-card .store-sup-row {
            display: flex; align-items: center; gap: 8px;
            padding: 10px 6px 10px 10px;
            background: transparent; border: none;
            border-left: 3px solid transparent;
            border-bottom: 1px solid var(--border-color);
            border-radius: 0; min-width: 0;
        }
        .store-card .store-sup-row:last-child { border-bottom: none; }
        .store-card .store-sup-row.is-active,
        [data-theme="light"] .store-card .store-sup-row.is-active {
            background: rgba(96,165,250,0.10); border-left-color: var(--accent-blue);
        }
        .store-card .store-sup-row.is-redo,
        [data-theme="light"] .store-card .store-sup-row.is-redo {
            background: rgba(245,158,11,0.12); border-left-color: #f59e0b;
        }
        .store-card .store-sup-row.is-public,
        [data-theme="light"] .store-card .store-sup-row.is-public {
            background: rgba(245,158,11,0.08); border-left-color:#f59e0b;
        }
        .store-card__summary {
            background: transparent !important;
            border: none !important;
            border-radius: 0 !important;
            padding: 6px 2px 4px !important;
            margin: 0 !important;
            color: var(--text-muted) !important;
            font-size: 11.5px !important;
            font-weight: 700 !important;
            letter-spacing: 0.04em !important;
            text-transform: uppercase !important;
        }
        .store-card .store-comment {
            background: transparent; border: none;
            border-left: 3px solid var(--accent-blue);
            border-radius: 0;
            padding: 4px 2px 4px 10px;
            margin: 8px 0 0;
            font-size: 12.5px;
            color: var(--text-secondary);
        }
        .store-card .store-ann {
            background: transparent !important;
            border: none !important;
            border-left: 3px solid var(--accent-blue) !important;
            border-radius: 0 !important;
            margin-top: 8px !important;
        }
        .store-card .store-ann-expanded { border-top: 1px dashed var(--border-color); }
    

/* ============================================================
   §91. ADULT THEME — fase 2 (мерч).
   ============================================================ */

  /* ============================================================
     §91. ADULT THEME — fase 2: плотность и типографика (мерч).
     ============================================================ */

  body {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
  }

  /* Заголовки модалок */
  .modal-content h2 {
    font-size: 17px;
    font-weight: 600;
    letter-spacing: -0.01em;
  }

  /* Табличные цифры: цены, даты, тайминги */
  .store-pill,
  .store-sup-metric,
  .wp-sup__price,
  .wp-sup__timing,
  .battery__label,
  .day-summary .battery__label,
  .plans-totals,
  .plans-totals__day,
  .plans-totals__week,
  .completed-card .cc-time,
  .store-card__route-dist,
  .salary-month-row .s-month-total,
  .salary-month-row .s-month-count {
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum";
  }

  /* Кнопки: тот же вес, что и в админке */
  button,
  .btn-login,
  .btn-submit,
  .btn-finish,
  .btn-close,
  .btn-add-photo,
  .btn-start-task,
  .btn-redo-task,
  .btn-claim-task,
  .btn-start-supplier,
  .store-sup-btn {
    font-weight: 500;
    letter-spacing: 0.01em;
  }

  .btn-login,
  .btn-submit,
  .btn-finish {
    font-weight: 600;
  }

  /* Сглаживание инпутов */
  input:not([type="checkbox"]):not([type="radio"]),
  textarea {
    -webkit-font-smoothing: antialiased;
  }


/* §119.4-PATCH-START — 2026-10-02
   1. Кнопка 📝 в модалке визита (taskModal).
   2. Кнопка 📝 в карточке завершённого задания (.completed-card).
   3. Модалка заметок поверх остальных.
*/

#taskModal .modal-content {
    position: relative;
}
#taskModal .task-notes-btn {
    position: absolute;
    top: 10px;
    right: 12px;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    color: var(--text-primary);
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    z-index: 5;
    padding: 0;
    font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Android Emoji", "EmojiOne Color", sans-serif;
    transition: background 0.15s ease, transform 0.15s ease;
}
#taskModal .task-notes-btn:active {
    transform: scale(0.9);
    background: var(--bg-btn);
}
[data-theme="light"] #taskModal .task-notes-btn {
    background: #ffffff;
    border-color: #cbd5e1;
}

/* Кнопка заметки в карточке завершённого задания */
.completed-card .cc-notes-btn {
    background: var(--bg-input);
    color: var(--text-primary);
    border: 1px solid var(--border-color);
    border-radius: 20px;
    padding: 6px 14px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    transition: transform 0.15s ease, background 0.15s ease;
    margin-left: 6px;
}
.completed-card .cc-notes-btn:active {
    transform: scale(0.96);
}
[data-theme="light"] .completed-card .cc-notes-btn {
    background: #f1f5f9;
    border-color: #cbd5e1;
    color: #334155;
}

/* Модалка заметок — всегда выше модалки визита */
#storeNotesModal {
    z-index: 1300;
}

/* §119.4-PATCH-END */

/* §M1-PATCH-START — 2026-10-02 — Merch Maturity v1
   Токены + карточка магазина/визита.

   Проблемы, которые чиним:
     • .store-card__header — фиолетовый градиент rgba(139,92,246,…)
       делал шапку похожей на «карточку из детского приложения»;
     • .store-card__addr — голубая наклейка rgba(96,165,250,0.18)
       (в админке §123 уже убрали — тут ещё нет);
     • .store-card.done — #1a3a2a зелёный «лесной»;
     • badges (#f59e0b / #60a5fa) — неоновые;
     • .store-card__route — фиолетовый акцент из прежнего мира.

   Решение: добавляем в merch.css токены §94.1 + §100 (фон / границы /
   текст / accent-subtle / success-subtle / warning-subtle). Существующие
   переменные --bg-card, --bg-input, --accent-blue и т.п. НЕ трогаем —
   они остаются для обратной совместимости со §M2–§M5.
*/

/* ─── A. Расширение токенов (§94.1 + §100) ─── */

:root {
    /* Поверхности */
    --bg-surface:    #1e293b;
    --bg-elevated:   #1e293b;
    --bg-hover:      #2d3748;

    /* Границы */
    --border-subtle: rgba(148, 163, 184, 0.08);
    --border:        rgba(148, 163, 184, 0.14);
    --border-strong: rgba(148, 163, 184, 0.24);

    /* Текст */
    --text-primary:   #f8fafc;
    --text-secondary: #cbd5e1;
    --text-muted:     #94a3b8;

    /* Приглушённые акценты (§100) — новые, рядом со старыми --accent-* */
    --accent:         #5b8def;
    --accent-hover:   #4879dd;
    --accent-subtle:  rgba(91, 141, 239, 0.12);
    --success:        #3dae7f;
    --success-subtle: rgba(61, 174, 127, 0.12);
    --warning:        #d4a04a;
    --warning-subtle: rgba(212, 160, 74, 0.12);
    --danger:         #dd6462;
    --danger-subtle:  rgba(221, 100, 98, 0.12);

    /* Тень — только для модалок и popover, как §103 */
    --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.20);
}

[data-theme="light"] {
    --bg-surface:    #ffffff;
    --bg-elevated:   #ffffff;
    --bg-hover:      #f1f5f9;

    --border-subtle: rgba(15, 23, 42, 0.05);
    --border:        rgba(15, 23, 42, 0.10);
    --border-strong: rgba(15, 23, 42, 0.20);

    --text-primary:   #0b1120;
    --text-secondary: #334155;
    --text-muted:     #64748b;

    --accent:         #2563eb;
    --accent-hover:   #1d4ed8;
    --accent-subtle:  rgba(37, 99, 235, 0.10);
    --success:        #047857;
    --success-subtle: rgba(4, 120, 87, 0.10);
    --warning:        #b45309;
    --warning-subtle: rgba(180, 83, 9, 0.10);
    --danger:         #b91c1c;
    --danger-subtle:  rgba(185, 28, 28, 0.10);

    --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.06);
}


/* ─── B. Карточка магазина/визита ─── */

.store-card {
    background: var(--bg-surface) !important;
    border: 1px solid var(--border) !important;
    box-shadow: none !important;
}

[data-theme="light"] .store-card {
    background: var(--bg-surface) !important;
    border-color: var(--border) !important;
    box-shadow: none !important;
}

/* Завершённая — success-subtle, без «лесной зелени» */
.store-card.done {
    background: var(--success-subtle) !important;
    border-color: rgba(61, 174, 127, 0.35) !important;
}
[data-theme="light"] .store-card.done {
    background: var(--success-subtle) !important;
    border-color: rgba(4, 120, 87, 0.30) !important;
}


/* ─── C. Шапка: фиолетовый градиент → нейтральный hover ─── */

.store-card__header,
.store-card__header.disabled {
    background: transparent !important;
    border: none !important;
    border-radius: 10px !important;
    padding: 4px 6px !important;
    transition: background .15s ease !important;
}
.store-card__header:not(.disabled):hover {
    background: var(--bg-hover) !important;
}
.store-card__header:not(.disabled):active {
    background: var(--bg-hover) !important;
    transform: none !important;
}

[data-theme="light"] .store-card__header,
[data-theme="light"] .store-card__header.disabled {
    background: transparent !important;
}
[data-theme="light"] .store-card__header:not(.disabled):hover,
[data-theme="light"] .store-card__header:not(.disabled):active {
    background: var(--bg-hover) !important;
}


/* ─── D. Адрес: наклейка → плоский текст ─── */

.store-card__addr {
    background: transparent !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    color: var(--text-primary) !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
}
[data-theme="light"] .store-card__addr {
    background: transparent !important;
    border: none !important;
    color: var(--text-primary) !important;
}

/* Родительская строка .store-card__top — чуть больше отступ */
.store-card__top {
    margin-bottom: 6px !important;
}


/* ─── E. Badges: неоновые пилюли → приглушённые ─── */

.store-card__badges .badge {
    padding: 2px 9px !important;
    border-radius: 999px !important;
    font-size: 10.5px !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em !important;
    line-height: 1.5 !important;
    border: 1px solid transparent !important;
}

/* 📅 План — accent (info) */
.store-card__badges .badge.plan {
    background: var(--accent-subtle) !important;
    color: var(--accent) !important;
    border-color: rgba(91, 141, 239, 0.32) !important;
}
[data-theme="light"] .store-card__badges .badge.plan {
    background: rgba(37, 99, 235, 0.08) !important;
    color: #2563eb !important;
    border-color: rgba(37, 99, 235, 0.22) !important;
}

/* 🌍 Всем / 🔄 Ручное / 🔄 Доделать — warning */
.store-card__badges .badge.public,
.store-card__badges .badge.manual,
.store-card__badges .badge.redo {
    background: var(--warning-subtle) !important;
    color: var(--warning) !important;
    border-color: rgba(212, 160, 74, 0.34) !important;
}
[data-theme="light"] .store-card__badges .badge.public,
[data-theme="light"] .store-card__badges .badge.manual,
[data-theme="light"] .store-card__badges .badge.redo {
    background: rgba(180, 83, 9, 0.08) !important;
    color: #b45309 !important;
    border-color: rgba(180, 83, 9, 0.22) !important;
}


/* ─── F. Кнопка 📜 (история) — нейтральный --bg-hover ─── */

.store-card__history-btn {
    width: 32px !important;
    height: 32px !important;
    font-size: 16px !important;
    background: var(--bg-hover) !important;
    border: 1px solid var(--border-subtle) !important;
    color: var(--text-secondary) !important;
    border-radius: 50% !important;
}
.store-card__history-btn:active {
    background: var(--bg-surface) !important;
    transform: scale(0.95) !important;
}
[data-theme="light"] .store-card__history-btn {
    background: var(--bg-hover) !important;
    border-color: var(--border) !important;
    color: var(--text-secondary) !important;
}


/* ─── G. Кнопка маршрута → — фиолетовый → --accent ─── */

.store-card__route {
    background: var(--accent-subtle) !important;
    border: 1px solid rgba(91, 141, 239, 0.32) !important;
    color: var(--accent) !important;
    border-radius: 10px !important;
    padding: 5px 9px !important;
}
[data-theme="light"] .store-card__route {
    background: rgba(37, 99, 235, 0.08) !important;
    border-color: rgba(37, 99, 235, 0.22) !important;
    color: #2563eb !important;
}


/* §M1-PATCH-END */

/* §M2-PATCH-START — 2026-10-02 — Merch Maturity v2
   Приглушение палитры мерча + CTA-кнопки → прямые углы.

   Мерч был «неоново-зелёно-синий» мир: --accent-green #34d399,
   --accent-blue #60a5fa, --accent-red #f87171, --accent-purple #8b5cf6.
   На тёмной теме это светящиеся кнопки, на светлой — детские ярлыки.
   Через §M1 в :root уже добавлены приглушённые токены (--accent,
   --success, --warning, --danger). Теперь пишем алиасы — так все
   старые правила, тянущие цвет через var(--accent-*), приглушаются
   без правки каждого.

   Плюс — CTA 40/60px pills (iOS-2013) → 10-12px. Прямые углы.

   Правило §102 (один язык скруглений): 6px кнопки-инпуты,
   10-12px крупные, 999px чипы. Мерч — теперь тоже.
*/

/* ─── A. Legacy-переменные → алиасы новых ─── */

:root {
    --accent-blue:   var(--accent);    /* #60a5fa → #5b8def */
    --accent-green:  var(--success);   /* #34d399 → #3dae7f */
    --accent-red:    var(--danger);    /* #f87171 → #dd6462 */
    --accent-purple: var(--accent);    /* #8b5cf6 → #5b8def */
}
[data-theme="light"] {
    --accent-blue:   var(--accent);    /* #3b82f6 → #2563eb */
    --accent-green:  var(--success);   /* #10b981 → #047857 */
    --accent-red:    var(--danger);    /* #ef4444 → #b91c1c */
    --accent-purple: var(--accent);    /* #7c3aed → #2563eb */
}


/* ─── B. CTA-кнопки в карточках — прямые углы ─── */

.btn-start-task,
.btn-redo-task,
.btn-claim-task,
.btn-start-supplier,
.out-of-zone {
    border-radius: 10px !important;
}


/* ─── C. «Доделать» / «Забрать» — жёлтый неон → warning ─── */

.btn-redo-task,
.btn-claim-task {
    background: var(--warning) !important;
    color: #0b1120 !important;
}
[data-theme="light"] .btn-redo-task,
[data-theme="light"] .btn-claim-task {
    background: var(--warning) !important;
    color: #ffffff !important;
}

/* «Начать» / «Старт поставщика» — на приглушённый success (через
   --accent-green-алиас уже приглушены, но фиксируем цвет текста —
   на светлом зелёном белый не читается). */
.btn-start-task,
.btn-start-supplier {
    background: var(--success) !important;
    color: #0b1120 !important;
}
[data-theme="light"] .btn-start-task,
[data-theme="light"] .btn-start-supplier {
    background: var(--success) !important;
    color: #ffffff !important;
}


/* ─── D. Мелкие кнопки — радиусы по §102 ─── */

.store-sup-btn,
.store-history-btn,
.voice-btn,
.deadline-close-btn,
.back-to-grid,
.completed-card .cc-redo-btn,
.completed-card .cc-notes-btn {
    border-radius: 8px !important;
}

.btn-close,
.btn-submit,
.btn-finish,
.btn-add-photo,
.btn-delete-photo,
.day-route-btn {
    border-radius: 10px !important;
}

.btn-login {
    border-radius: 12px !important;
}

.completed-card .cc-photo-badge,
#completedSection h3 .count-badge,
#completedSection h3 .completed-sum {
    border-radius: 6px !important;
}


/* ─── E. Плашка поставщика внутри карточки ─── */
/* В CARD UNIFICATION (§64) она «плоская» — фон transparent, бордер
   снизу. Здесь только приглушаем левые цветные полоски и фон для
   активных/публичных состояний. */

.store-sup-row {
    background: var(--bg-hover) !important;
    border-left-color: transparent !important;
    border-radius: 8px !important;
}

.store-sup-row.is-active {
    background: var(--accent-subtle) !important;
    border-left-color: var(--accent) !important;
}

.store-sup-row.is-public {
    background: var(--warning-subtle) !important;
    border-left-color: var(--warning) !important;
}

[data-theme="light"] .store-sup-row {
    background: var(--bg-hover) !important;
    border-left-color: transparent !important;
}

[data-theme="light"] .store-sup-row.is-active {
    background: var(--accent-subtle) !important;
    border-left-color: var(--accent) !important;
}

[data-theme="light"] .store-sup-row.is-public {
    background: var(--warning-subtle) !important;
    border-left-color: var(--warning) !important;
}

/* Внутри .store-card — карточка уже даёт разделитель,
   фон не нужен. Но активная / публичная — оставляем подсветку. */

.store-card .store-sup-row {
    background: transparent !important;
    border-radius: 0 !important;
    border-left-color: transparent !important;
}

.store-card .store-sup-row.is-active {
    background: var(--accent-subtle) !important;
    border-left-color: var(--accent) !important;
}

.store-card .store-sup-row.is-public {
    background: var(--warning-subtle) !important;
    border-left-color: var(--warning) !important;
}

[data-theme="light"] .store-card .store-sup-row {
    background: transparent !important;
    border-left-color: transparent !important;
}

[data-theme="light"] .store-card .store-sup-row.is-active {
    background: var(--accent-subtle) !important;
    border-left-color: var(--accent) !important;
}

[data-theme="light"] .store-card .store-sup-row.is-public {
    background: var(--warning-subtle) !important;
    border-left-color: var(--warning) !important;
}


/* ─── F. Кнопка «Маршрут на день» — фиолетовый неон → --accent ─── */

.day-route-btn {
    background: var(--accent) !important;
    color: #ffffff !important;
}
.day-route-btn:active {
    background: var(--accent-hover) !important;
}
[data-theme="light"] .day-route-btn {
    background: var(--accent) !important;
    color: #ffffff !important;
}


/* §M2-PATCH-END */

/* §M3-PATCH-START — 2026-10-02 — Merch Maturity v3
   Батарейка .day-summary → тонкая полоса.

   Было: 32px высота, border 2px #94a3b8, скругление 6px, числа
   внутри заливки с text-shadow. Читалось как игрушечный индикатор.

   Стало: полоса 6px, radius 3px, трек --border-strong, заливка
   --accent; при 80%+ — --success (JS ставит data-level="high").
   Числа вынесены СЛЕВА от полосы.

   ⚠️ Разметка #daySummary перестроена в index.html: .battery__label
   стал прямым ребёнком .day-summary (был внутри .battery__body).
   JS не тронут — id #dayBatteryFill и #dayBatteryCount на месте.
*/

.day-summary {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: nowrap !important;
    align-items: center !important;
    gap: 10px !important;
    padding: 10px 14px !important;
}

.day-summary .battery__label {
    flex: 0 0 auto !important;
    display: inline-flex !important;
    align-items: baseline !important;
    font-size: 12px !important;
    font-weight: 700 !important;
    font-variant-numeric: tabular-nums !important;
    color: var(--text-primary) !important;
    white-space: nowrap !important;
    text-shadow: none !important;
    order: 0 !important;
}

.day-summary .battery__label-word { display: none !important; }

.day-summary .battery {
    flex: 1 1 auto !important;
    display: flex !important;
    align-items: center !important;
    min-width: 0 !important;
}

.day-summary .battery__body {
    position: relative !important;
    flex: 1 1 auto !important;
    width: auto !important;
    max-width: none !important;
    height: 6px !important;
    border: none !important;
    border-radius: 3px !important;
    padding: 0 !important;
    background: var(--border-strong) !important;
    overflow: hidden !important;
}

.day-summary .battery__fill {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    width: 0;
    height: 100% !important;
    background: var(--accent) !important;
    border-radius: 3px !important;
    transition: width .4s ease, background .3s ease !important;
}

.day-summary .battery__fill[data-level="high"] {
    background: var(--success) !important;
}

.day-summary .battery__fill[data-level="mid"],
.day-summary .battery__fill[data-level="low"] {
    background: var(--accent) !important;
}

[data-theme="light"] .day-summary .battery__body {
    background: rgba(15, 23, 42, 0.12) !important;
    border: none !important;
}

@media (max-width: 640px) {
    .day-summary {
        padding: 6px 10px !important;
        gap: 8px !important;
        flex-wrap: nowrap !important;
    }
    .day-summary .battery__label { font-size: 11px !important; }
    .day-summary .battery__body  { height: 6px !important; }
}

/* §M3-PATCH-END */


/* §M4-PATCH-START — 2026-10-02 — Merch Maturity v4
   Модалки: приглушение градиентов/неона + единый радиус.

   Затронуты:
     • .modal-content     — bg --bg-surface, radius 14px.
     • .modal-content h2  — интервалы/вес.
     • .btn-close         — radius 10px (было 40px pill).
     • .photo-thumb-wrap / .ct-photos .ct-photo / .eep-item — бордеры.
     • .ct-section-title .ct-badge (start/end) — приглушение.
     • .pv-type-badge.start/.end — приглушение.
     • .ct-comment(.merch/.admin) — фон/бордер.
     • .visit-group-indicator      — accent-subtle.
     • .deadline-card(.overdue/.closed) — токены.
     • .salary-month-row(.current) — токены.
     • .day-status.all-done        — синий градиент → accent-subtle.
     • .store-ann / .task-ann-banner — градиент → accent-subtle.
*/

/* Модалка */
.modal-content {
    background: var(--bg-surface) !important;
    border-radius: 14px !important;
}
[data-theme="light"] .modal-content {
    background: var(--bg-surface) !important;
}

.modal-content h2 {
    font-size: 17px !important;
    font-weight: 600 !important;
    letter-spacing: -0.01em !important;
}

.modal-content .btn-close {
    border-radius: 10px !important;
    padding: 10px 20px !important;
    font-weight: 500 !important;
}

/* Фото-плитки */
.photo-thumb-wrap { border-color: var(--border) !important; }
.ct-photos .ct-photo {
    border-color: var(--border) !important;
    background: var(--bg-hover) !important;
}
.ct-photos .ct-photo:hover { border-color: var(--accent) !important; }

.eep-item {
    border-color: var(--border) !important;
    background: var(--bg-hover) !important;
}
[data-theme="light"] .eep-item {
    border-color: var(--border) !important;
    background: var(--bg-hover) !important;
}

/* ct-section-title badges */
.ct-section-title.start .ct-badge {
    background: var(--accent-subtle) !important;
    color: var(--accent) !important;
}
.ct-section-title.end .ct-badge {
    background: var(--success-subtle) !important;
    color: var(--success) !important;
}

/* pv-type-badge (модалка фото визита) */
.pv-type-badge.start {
    background: var(--accent-subtle) !important;
    color: var(--accent) !important;
}
.pv-type-badge.end {
    background: var(--success-subtle) !important;
    color: var(--success) !important;
}

/* ct-comment */
.ct-comment {
    background: var(--bg-hover) !important;
    border-left-color: var(--accent) !important;
}
.ct-comment.merch { border-left-color: var(--success) !important; }
.ct-comment.admin { border-left-color: var(--warning) !important; }

/* visit-group-indicator */
.visit-group-indicator {
    background: var(--accent-subtle) !important;
    border-color: rgba(91, 141, 239, 0.32) !important;
    border-left-color: var(--accent) !important;
}
[data-theme="light"] .visit-group-indicator {
    background: var(--accent-subtle) !important;
    border-color: rgba(37, 99, 235, 0.20) !important;
    border-left-color: var(--accent) !important;
}

/* deadline-card (в модалке сроков) */
.deadline-card {
    background: var(--bg-hover) !important;
    border-left-color: var(--warning) !important;
}
.deadline-card.overdue {
    background: var(--danger-subtle) !important;
    border-left-color: var(--danger) !important;
}
.deadline-card.closed {
    background: transparent !important;
    border-left-color: var(--success) !important;
}

/* salary-month-row (модалка зарплаты) */
.salary-month-row {
    background: var(--bg-hover) !important;
}
.salary-month-row.current {
    border: 1px solid var(--success) !important;
}

/* day-status.all-done — «Всё выполнено» */
.day-status.all-done {
    background: var(--accent-subtle) !important;
    color: var(--text-primary) !important;
    border: 1px solid rgba(91, 141, 239, 0.32) !important;
    box-shadow: none !important;
}
[data-theme="light"] .day-status.all-done {
    background: var(--accent-subtle) !important;
    color: var(--text-primary) !important;
    border-color: rgba(37, 99, 235, 0.20) !important;
    box-shadow: none !important;
}

/* Объявления в карточке (store-ann) и баннер (task-ann-banner) */
.store-ann {
    background: var(--accent-subtle) !important;
    border-color: rgba(91, 141, 239, 0.32) !important;
    border-left-color: var(--accent) !important;
}
.store-ann .store-ann-toggle-icon { color: var(--accent) !important; }

.task-ann-banner {
    background: var(--accent-subtle) !important;
    border-color: rgba(91, 141, 239, 0.32) !important;
    border-left-color: var(--accent) !important;
}
.task-ann-banner .task-ann-toggle-icon { color: var(--accent) !important; }

[data-theme="light"] .store-ann,
[data-theme="light"] .task-ann-banner {
    background: var(--accent-subtle) !important;
    border-color: rgba(37, 99, 235, 0.20) !important;
    border-left-color: var(--accent) !important;
}

/* §M4-PATCH-END */

/* ============================================================
   §F1. Блок комментариев в модалке визита (админ + прошлый мерч).
   Показывается при открытии задания «начать» или «доделать».
   Сессия 2026-10-02 F.
   ============================================================ */
.task-comments-info {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 10px;
    flex-shrink: 0;
}
.task-comments-info.hidden { display: none !important; }

.task-comments-info .tci-item {
    padding: 8px 12px;
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.4;
    word-break: break-word;
}
.task-comments-info .tci-item strong {
    display: block;
    margin-bottom: 3px;
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    opacity: 0.85;
    font-weight: 700;
}
.task-comments-info .tci-admin {
    background: rgba(245,158,11,0.12);
    border-left: 3px solid #f59e0b;
    color: var(--text-primary);
}
.task-comments-info .tci-merch {
    background: rgba(52,211,153,0.12);
    border-left: 3px solid var(--accent-green);
    color: var(--text-primary);
}
[data-theme="light"] .task-comments-info .tci-admin {
    background: #fff7ed;
    color: #7c2d12;
}
[data-theme="light"] .task-comments-info .tci-merch {
    background: #ecfdf5;
    color: #064e3b;
}




/* ============================================================
   STORE_HOURS_V1 (2026-10-06): предупреждения о закрытии.
   ============================================================ */

/* Мягкое напоминание: закрывается через <60 мин. */
.store-hours-warning {
    transition: background 0.2s ease, border-color 0.2s ease;
}
.store-hours-warning.is-urgent {
    background: rgba(248,113,113,0.14);
    border-color: rgba(248,113,113,0.42);
    border-left-color: #f87171;
}
[data-theme="light"] .store-hours-warning.is-urgent {
    background: #fee2e2;
    border-color: #fca5a5;
    border-left-color: #dc2626;
}

/* Модалка-предупреждение перед построением маршрута. */
.rcm-modal {
    max-width: 480px;
    width: 92%;
}
.rcm-hint {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.45;
    margin: 6px 0 10px;
}
.rcm-hint--muted {
    font-size: 12px;
    color: var(--text-muted);
    margin-top: 12px;
}
.rcm-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 45vh;
    overflow-y: auto;
    padding-right: 2px;
}
.rcm-item {
    padding: 10px 12px;
    background: var(--bg-input);
    border-radius: 10px;
    border-left: 3px solid var(--border-color);
    min-width: 0;
}
.rcm-item__name {
    font-size: 13px;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: 4px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.rcm-item__status {
    font-size: 12px;
    font-weight: 600;
    line-height: 1.3;
}
.rcm-item__status.is-soon   { color: #f87171; }
.rcm-item__status.is-closed { color: var(--text-muted); }
.rcm-item:has(.is-soon)   { border-left-color: #f87171; }
.rcm-item:has(.is-closed) { border-left-color: #94a3b8; }
[data-theme="light"] .rcm-item {
    background: #f1f5f9;
}
[data-theme="light"] .rcm-item__name {
    color: #0f172a;
}
[data-theme="light"] .rcm-item__status.is-soon { color: #b91c1c; }
[data-theme="light"] .rcm-item__status.is-closed { color: #64748b; }

/* ============================================================
   STANDARDS_PHOTOS_V1 (2026-10-06): фото-стандарты.
   ============================================================ */

#taskModal .task-standards-btn { right: 56px; }

.stdm-modal { max-width: 560px; width: 94vw; }
.stdm-subtitle {
    font-size: 12.5px; color: var(--text-muted);
    margin: 4px 0 12px; line-height: 1.35;
}
.stdm-body { max-height: 60vh; overflow-y: auto; padding-right: 2px; }
.stdm-pdf {
    display: flex; align-items: center; gap: 10px;
    padding: 12px 14px; margin-bottom: 12px;
    background: rgba(96,165,250,0.12);
    border: 1px solid rgba(96,165,250,0.4);
    border-left: 4px solid var(--accent-blue);
    border-radius: 10px; color: var(--accent-blue);
    text-decoration: none; font-weight: 600; font-size: 14px;
    transition: background 0.15s ease;
}
.stdm-pdf:active { background: rgba(96,165,250,0.2); }
.stdm-pdf__icon { font-size: 20px; }
[data-theme="light"] .stdm-pdf {
    background: #eff6ff; border-color: #bfdbfe;
    border-left-color: #3b82f6; color: #1e40af;
}
.stdm-group { margin-bottom: 14px; }
.stdm-group:last-child { margin-bottom: 0; }
.stdm-group__title {
    display: flex; align-items: center; gap: 6px;
    font-size: 12.5px; font-weight: 700;
    color: var(--text-secondary);
    text-transform: uppercase; letter-spacing: 0.04em;
    margin-bottom: 8px;
}
.stdm-group__count {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 18px; padding: 0 6px;
    border-radius: 9px; background: var(--bg-input);
    color: var(--text-muted); font-size: 11px; font-weight: 700;
}
.stdm-grid {
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px;
}
@media (min-width: 480px) {
    .stdm-grid { grid-template-columns: repeat(4, 1fr); }
}
.stdm-card {
    position: relative; aspect-ratio: 1 / 1;
    border-radius: 10px; overflow: hidden;
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    cursor: pointer;
    transition: transform 0.15s ease, border-color 0.15s ease;
}
.stdm-card:active { transform: scale(0.97); }
.stdm-card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.stdm-card--pdf {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    background: rgba(96,165,250,0.10);
    border-color: rgba(96,165,250,0.35);
}
.stdm-card--pdf .stdm-card__icon { font-size: 32px; }
.stdm-card--pdf .stdm-card__label {
    font-size: 11px; font-weight: 700; color: var(--accent-blue);
    margin-top: 4px; letter-spacing: 0.05em;
}
.stdm-card__caption {
    position: absolute; bottom: 0; left: 0; right: 0;
    padding: 4px 6px;
    background: linear-gradient(0deg, rgba(0,0,0,0.75), transparent);
    color: #ffffff; font-size: 10.5px; font-weight: 600;
    line-height: 1.2; text-overflow: ellipsis;
    white-space: nowrap; overflow: hidden;
}
.stdm-empty {
    text-align: center; padding: 32px 12px;
    color: var(--text-muted); font-size: 13px; line-height: 1.4;
}

/* --- Секция фото-стандартов в админке --- */
.std-photos-title { font-size: 15px; font-weight: 700; color: var(--text-primary); }
.std-scope-radios { display: inline-flex; gap: 12px; font-size: 12.5px; color: var(--text-secondary); }
.std-scope-radio { display: inline-flex; align-items: center; gap: 5px; cursor: pointer; }
.std-scope-radio input { margin: 0; accent-color: var(--accent); }
.std-photos-hint {
    font-size: 12.5px; color: var(--text-muted);
    line-height: 1.45; margin: 4px 0 12px;
}
.std-photos-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 10px; margin: 12px 0; min-height: 80px;
}
.std-photos-empty {
    grid-column: 1 / -1; text-align: center;
    padding: 20px 12px; color: var(--text-muted);
    font-size: 13px; font-style: italic;
}
.std-photo-card {
    position: relative; aspect-ratio: 1 / 1;
    border-radius: 10px; overflow: hidden;
    background: var(--bg-hover); border: 1px solid var(--border);
}
.std-photo-card img { width: 100%; height: 100%; object-fit: cover; display: block; }
.std-photo-card.is-pdf {
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    background: rgba(96,165,250,0.08);
}
.std-photo-card.is-pdf .std-photo-card__icon { font-size: 38px; }
.std-photo-card.is-pdf .std-photo-card__label {
    font-size: 11px; font-weight: 700; color: var(--accent);
    margin-top: 4px; letter-spacing: 0.05em;
}
.std-photo-card__caption {
    position: absolute; bottom: 0; left: 0; right: 0;
    padding: 4px 6px;
    background: linear-gradient(0deg, rgba(0,0,0,0.75), transparent);
    color: #fff; font-size: 11px; font-weight: 600;
    text-overflow: ellipsis; white-space: nowrap; overflow: hidden;
}
.std-photo-card__scope {
    position: absolute; top: 6px; left: 6px;
    padding: 1px 6px; border-radius: 8px;
    background: rgba(0,0,0,0.65); color: #fff;
    font-size: 10px; font-weight: 600;
}
.std-photo-card__scope--network { background: rgba(96,165,250,0.75); }
.std-photo-card__del {
    position: absolute; top: 6px; right: 6px;
    width: 22px; height: 22px; border-radius: 50%;
    background: rgba(248,113,113,0.95);
    color: #fff; border: none;
    font-size: 14px; line-height: 1;
    padding: 0; cursor: pointer;
    display: inline-flex; align-items: center; justify-content: center;
    font-family: inherit;
}
.std-photo-card__del:active { transform: scale(0.9); }
.std-photos-upload { display: flex; align-items: center; gap: 12px; margin-top: 8px; }
.std-photo-status { font-size: 12.5px; color: var(--text-secondary); }

/* ============================================================
   STANDARDS_PHOTOS_FRONTEND_V2 (2026-10-06): «Все мои магазины».
   ============================================================ */
.ms-modal { max-width: 560px; width: 94vw; }
.ms-hint {
    font-size: 12.5px; color: var(--text-muted);
    margin: 4px 0 12px; line-height: 1.4;
}
.ms-body {
    max-height: 62vh;
    overflow-y: auto;
    padding-right: 2px;
}
.ms-loading,
.ms-empty {
    text-align: center; padding: 32px 12px;
    color: var(--text-muted); font-size: 13px;
}
.ms-store {
    padding: 10px 12px;
    background: var(--bg-card);
    border: 1px solid var(--border-color);
    border-radius: 10px;
    margin-bottom: 8px;
}
.ms-store:last-child { margin-bottom: 0; }
.ms-store__head { margin-bottom: 8px; }
.ms-store__name {
    font-size: 13.5px;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ms-store__sub {
    font-size: 11.5px;
    color: var(--text-muted);
    margin-top: 2px;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ms-store__sups {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.ms-sup {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    width: 100%;
    padding: 8px 10px;
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    border-radius: 8px;
    font-family: inherit;
    font-size: 13px;
    text-align: left;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}
.ms-sup:active { background: var(--bg-btn); }
.ms-sup__name {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ms-sup__badge {
    flex: 0 0 auto;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 700;
    background: rgba(148,163,184,0.15);
    color: var(--text-muted);
    white-space: nowrap;
}
.ms-sup__badge--has {
    background: rgba(96,165,250,0.15);
    color: var(--accent-blue);
    border: 1px solid rgba(96,165,250,0.4);
}
[data-theme="light"] .ms-store {
    background: #ffffff;
    border-color: #e2e8f0;
}
[data-theme="light"] .ms-sup {
    background: #f8fafc;
    border-color: #e2e8f0;
}
[data-theme="light"] .ms-sup__name { color: #0f172a; }

/* ============================================================
   STANDARDS_PHOTOS_UX_FIX_V1 (2026-10-06): стандарты поверх
   «Все мои магазины» (z-index 1300). При закрытии мерч
   возвращается к списку магазинов, а не к списку заданий.
   ============================================================ */
#standardsModal { z-index: 1350; }

/* ============================================================
   WORKER_UPLOAD_STANDARDS_FRONTEND_V1 (2026-10-06):
   кнопка загрузки у мерча + бейдж «от мерча» в админке.
   ============================================================ */
.stdm-upload {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px dashed var(--border-color);
}
.stdm-upload__btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 14px;
    background: var(--accent-blue);
    color: #ffffff;
    border: none;
    border-radius: 10px;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.1s ease;
}
.stdm-upload__btn:active { transform: scale(0.97); background: var(--accent-blue-hover, #4879dd); }
.stdm-upload__btn:disabled { opacity: 0.55; pointer-events: none; }
.stdm-upload__status {
    font-size: 12.5px;
    color: var(--text-secondary);
}

/* Бейдж «от мерча» в плитке админки. */
.std-photo-card__uploader {
    position: absolute;
    bottom: 6px;
    left: 6px;
    padding: 2px 8px;
    border-radius: 8px;
    background: rgba(245,158,11,0.85);
    color: #0f172a;
    font-size: 10px;
    font-weight: 700;
    max-width: calc(100% - 12px);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    pointer-events: none;
}
[data-theme="light"] .std-photo-card__uploader {
    background: #fcd34d;
    color: #78350f;
}

/* ============================================================
   STORE_TYPE_VISIBILITY_V1 (2026-10-07): тип торговой точки.
   ============================================================ */
.store-card__type {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 9px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    color: var(--text-secondary);
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    margin-top: 4px;
    margin-bottom: 4px;
    white-space: nowrap;
}
[data-theme="light"] .store-card__type {
    background: #f1f5f9;
    color: #475569;
    border-color: #cbd5e1;
}


/* §MERCH_STORE_TYPE_V1 (2026-10-07) */
/* Чип типа ТТ у поставщика в карточке магазина мерча. */
.store-sup-row .std-tt-chip,
.store-sup-row .store-sup-tt {
    flex: 0 0 auto;
    display: inline-flex; align-items: center; justify-content: center;
    padding: 2px 8px; border-radius: 8px;
    background: var(--bg-hover, #2d3748);
    border: 1px solid var(--border-subtle, rgba(148,163,184,0.08));
    font-size: 10.5px; font-weight: 700;
    color: var(--text-secondary, #cbd5e1);
    white-space: nowrap; line-height: 1.35;
    font-variant-numeric: tabular-nums;
    margin-left: 2px;
    letter-spacing: 0.01em;
}
[data-theme="light"] .store-sup-row .std-tt-chip {
    background: #f1f5f9; color: #334155; border-color: #cbd5e1;
}
.store-card .store-sup-row.is-active .std-tt-chip {
    background: rgba(91, 141, 239, 0.18);
    border-color: rgba(91, 141, 239, 0.35);
    color: var(--accent, #5b8def);
}
.store-card .store-sup-row.is-public .std-tt-chip {
    background: rgba(212, 160, 74, 0.18);
    border-color: rgba(212, 160, 74, 0.35);
    color: var(--warning, #d4a04a);
}


/* §STORE_TYPE_FILTER_V8_SUP_BTN (2026-10-07) */
.store-sup-standards-btn {
    flex: 0 0 auto;
    width: 28px;
    height: 28px;
    padding: 0;
    border-radius: 50%;
    background: var(--bg-input);
    border: 1px solid var(--border-color);
    color: var(--text-secondary);
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
    font-family: inherit;
}
.store-sup-standards-btn svg { display: block; width: 14px; height: 14px; }
.store-sup-standards-btn:hover {
    background: rgba(91, 141, 239, 0.14);
    color: var(--accent-blue);
    border-color: rgba(91, 141, 239, 0.4);
}
.store-sup-standards-btn:active { transform: scale(0.9); }

.store-info-line .store-supplier-wrap {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 1 1 auto;
    min-width: 0;
}
.store-info-line .store-supplier-wrap .store-supplier {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .store-sup-standards-btn { width: 26px; height: 26px; }
    .store-sup-standards-btn svg { width: 13px; height: 13px; }
}


/* §STORE_TYPE_FILTER_V9_PV_ON_TOP (2026-10-07) */
/* Страховка: #photoViewerModal всегда поверх #standardsModal (1350)
   и #myStoresModal (1300). JS дополнительно ставит inline z-index
   при открытии — этот блок нужен только для случая, когда JS-патч
   не догрузился (кэш SW). */
#photoViewerModal { z-index: 1500 !important; }
#localPhotoViewer { z-index: 1500 !important; }
#notePhotoViewer  { z-index: 1500 !important; }


/* ============================================================
   SWIPE_MORE_MENU_V1 (2026-10-13). Мерч: свайп слева-направо
   открывает #moreMenuModal. Кнопка #moreMenuBtn скрывается на
   mobile — жест заменяет её. На desktop (>=1024px) кнопка
   остаётся: там touch-устройств нет.

   Порт с admin/modules/sidebar.js (§122):
     * Зона старта: x < min(40% ширины окна, 200px).
     * Порог открытия: dx > 60px ИЛИ флик (dx > 30, vx > 0.25).
     * Порог закрытия: dx < -60px ИЛИ флик (dx < -30, vx < -0.25).
     * Отсечение вертикального свайпа: |dy| > |dx| * 1.2 и > 12px.
   ============================================================ */

@media (max-width: 1023px) {
    #moreMenuBtn { display: none !important; }
}

.more-menu-swipe-hint { display: none; }

@media (max-width: 1023px) {
    .more-menu-swipe-hint {
        display: flex;
        align-items: center;
        justify-content: center;
        position: fixed;
        left: 0;
        top: 50%;
        transform: translateY(-50%);
        width: 22px;
        height: 56px;
        background: var(--bg-surface, #1e293b);
        border: 1px solid var(--border, rgba(148,163,184,0.14));
        border-left: none;
        border-radius: 0 28px 28px 0;
        color: var(--text-muted, #94a3b8);
        opacity: 0.55;
        z-index: 100;
        pointer-events: none;
        transition: opacity 200ms ease;
        box-shadow: 2px 0 8px rgba(0, 0, 0, 0.15);
    }
    .more-menu-swipe-hint > svg {
        width: 14px;
        height: 14px;
        margin-left: -2px;
    }
    [data-theme="light"] .more-menu-swipe-hint {
        background: #ffffff;
        border-color: #cbd5e1;
        color: #94a3b8;
    }
}

/* §MERCH_STORE_BADGE */
.task-store-name span,
.store-name span {
    max-width: 100%;
    box-sizing: border-box;
    display: inline-block;
    vertical-align: middle;
}


/* ============================================================
   §BRAND_COLORS_FIX_V10 (2026-10-20)
   ============================================================ */
.store-card__title span,
.wp-store__name span,
.tmc-name span {
    max-width: 100%;
    box-sizing: border-box;
    pointer-events: none; /* Чтобы клики проходили на родительский элемент */
}


/* ============================================================
   §BRAND_COLORS_FIX_V11 (2026-10-20)
   ============================================================ */
.store-card__title span,
.wp-store__name span,
.tmc-name span {
    max-width: 100%;
    box-sizing: border-box;
    pointer-events: none; /* Чтобы клики проходили на родительский элемент */
}
