<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://www.pandoraburo.ru/" xml:lang="ru">
  <id>https://www.pandoraburo.ru/medilav-assistent</id>
  <link href="https://www.pandoraburo.ru/medilav-assistent.xml" rel="self"/>
  <title/>
  <subtitle type="html">
&lt;html lang="ru"&gt;
&lt;head&gt;
    &lt;meta charset="UTF-8"&gt;
    &lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"&gt;
    &lt;meta name="theme-color" content="#0066FF"&gt;
    &lt;title&gt;Medilav — Ваш медицинский ассистент&lt;/title&gt;
    &lt;link rel="preconnect" href="https://fonts.googleapis.com" /&gt;
    &lt;link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="crossorigin" /&gt;
    &lt;link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&amp;amp;display=swap" rel="stylesheet" /&gt;
    &lt;link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" /&gt;
    
    &lt;style&gt;
        /* ============================================
           1. ПЕРЕМЕННЫЕ И БАЗОВЫЕ СТИЛИ
           ============================================ */
        :root {
            --primary: #0066FF; --primary-dark: #0052CC; --primary-light: #E6F0FF;
            --success: #10B981; --success-light: #D1FAE5;
            --warning: #F59E0B; --warning-light: #FEF3C7;
            --danger: #EF4444; --danger-light: #FEE2E2;
            --info: #3B82F6; --info-light: #DBEAFE;
            --gray-50: #F9FAFB; --gray-100: #F3F4F6; --gray-200: #E5E7EB;
            --gray-300: #D1D5DB; --gray-400: #9CA3AF; --gray-500: #6B7280;
            --gray-600: #4B5563; --gray-700: #374151; --gray-800: #1F2937; --gray-900: #111827;
            --bg-primary: #FFFFFF; --bg-secondary: #F9FAFB; --bg-tertiary: #F3F4F6;
            --shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
            --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
            --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
            --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-full: 9999px;
            --spacing-xs: 4px; --spacing-sm: 8px; --spacing-md: 16px; --spacing-lg: 24px;
            --font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
            --font-size-xs: 12px; --font-size-sm: 14px; --font-size-base: 16px;
            --font-size-lg: 18px; --font-size-xl: 20px; --font-size-2xl: 24px;
            --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1);
            --z-sticky: 200;
        }
        *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
        body { font-family: var(--font-family); font-size: var(--font-size-base); line-height: 1.5; color: var(--gray-900); background: var(--bg-secondary); min-height: 100vh; }
        button { font-family: inherit; cursor: pointer; border: none; background: none; font-size: inherit; }
        input, textarea, select { font-family: inherit; font-size: inherit; }
        .container { max-width: 1280px; margin: 0 auto; padding: 0 var(--spacing-md); }
        .app-shell { display: flex; flex-direction: column; min-height: 100vh; }
        .app-content { flex: 1; padding: var(--spacing-md); padding-bottom: 80px; }
        @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        @keyframes bounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } }
        @keyframes sos-pulse { 0% { transform: translate(-50%, -50%) scale(1); opacity: 0.6; } 100% { transform: translate(-50%, -50%) scale(1.5); opacity: 0; } }
        .animate-fade-in { animation: fadeIn 0.4s ease-out; }

        /* ============================================
           2. HEADER
           ============================================ */
        .header { background: rgba(255, 255, 255, 0.95); backdrop-filter: blur(12px); border-bottom: 1px solid var(--gray-200); padding: var(--spacing-sm) 0; position: sticky; top: 0; z-index: var(--z-sticky); box-shadow: var(--shadow-sm); }
        .header__inner { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-sm); }
        .header__brand { display: flex; align-items: center; gap: var(--spacing-sm); }
        .header__logo { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; background: var(--primary-light); border-radius: var(--radius-md); }
        .header__brand-name { font-weight: 700; font-size: var(--font-size-xl); color: var(--gray-900); }
        .header__status { display: flex; align-items: center; gap: var(--spacing-sm); background: var(--bg-tertiary); padding: 4px 12px 4px 8px; border-radius: var(--radius-full); border: 1px solid var(--gray-200); }
        .status-indicator { display: flex; align-items: center; gap: 4px; font-size: var(--font-size-xs); font-weight: 600; color: var(--gray-700); }
        .status-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
        .status-green .status-dot { background: var(--success); }
        .status-yellow .status-dot { background: var(--warning); }
        .status-red .status-dot { background: var(--danger); }
        .status-detail { display: flex; align-items: baseline; gap: 2px; font-size: var(--font-size-xs); color: var(--gray-500); border-left: 1px solid var(--gray-300); padding-left: 8px; }
        .status-score { font-weight: 700; font-size: var(--font-size-base); color: var(--gray-900); }
        .header__actions { display: flex; align-items: center; gap: var(--spacing-sm); }
        .header__btn { position: relative; display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: var(--radius-full); color: var(--gray-600); transition: background var(--transition-fast); }
        .header__btn:hover { background: var(--gray-100); color: var(--gray-900); }
        .avatar-img { width: 40px; height: 40px; border-radius: 50%; object-fit: cover; }
        .notification-badge { position: absolute; top: 2px; right: 2px; background: var(--danger); color: white; font-size: 10px; font-weight: 700; width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 2px solid white; }

        /* ============================================
           3. DASHBOARD &amp; WIDGETS
           ============================================ */
        .dashboard { margin-top: var(--spacing-lg); }
        .dashboard__title { font-size: var(--font-size-2xl); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .dashboard__grid { display: grid; grid-template-columns: 1fr; gap: var(--spacing-md); }
        .widget { background: var(--bg-primary); border-radius: var(--radius-lg); padding: var(--spacing-md); box-shadow: var(--shadow-sm); border: 1px solid var(--gray-200); transition: transform var(--transition-fast), box-shadow var(--transition-fast); }
        .widget:hover { transform: translateY(-2px); box-shadow: var(--shadow-md); }
        .widget__header { display: flex; align-items: center; gap: var(--spacing-sm); margin-bottom: var(--spacing-md); }
        .widget__icon { font-size: var(--font-size-xl); width: 32px; text-align: center; }
        .widget__title { font-weight: 600; font-size: var(--font-size-base); color: var(--gray-800); flex: 1; }
        .vitals__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--spacing-sm); text-align: center; }
        .vital-value { font-size: var(--font-size-2xl); font-weight: 800; color: var(--gray-900); line-height: 1; }
        .vital-unit { font-size: var(--font-size-xs); color: var(--gray-500); }
        .vital-label { font-size: var(--font-size-sm); font-weight: 500; color: var(--gray-700); }
        .medication__card { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-md); background: var(--primary-light); padding: var(--spacing-md); border-radius: var(--radius-md); border-left: 4px solid var(--primary); }
        .medication__name { font-weight: 700; font-size: var(--font-size-lg); color: var(--gray-900); }
        .medication__time { font-size: var(--font-size-sm); color: var(--primary-dark); font-weight: 600; }
        .actions__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--spacing-sm); }
        .action-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--spacing-xs); padding: var(--spacing-md); background: var(--bg-secondary); border: 1px solid var(--gray-200); border-radius: var(--radius-md); color: var(--gray-700); font-weight: 600; font-size: var(--font-size-sm); transition: all var(--transition-fast); }
        .action-btn i { font-size: var(--font-size-xl); color: var(--primary); margin-bottom: 4px; }
        .action-btn:hover { background: var(--primary-light); border-color: var(--primary); color: var(--primary-dark); }
        .action-btn--danger i { color: var(--danger); }
        .action-btn--danger:hover { background: var(--danger-light); border-color: var(--danger); color: var(--danger); }
        .progress-bar { height: 12px; background: var(--gray-200); border-radius: var(--radius-full); overflow: hidden; margin-bottom: var(--spacing-sm); }
        .progress-fill { height: 100%; background: linear-gradient(90deg, var(--success), #34D399); border-radius: var(--radius-full); transition: width 1s ease-out; }
        .activity__stats { display: flex; justify-content: space-between; font-size: var(--font-size-sm); font-weight: 600; color: var(--gray-700); }
        .btn { display: inline-flex; align-items: center; justify-content: center; gap: var(--spacing-xs); font-weight: 600; border-radius: var(--radius-md); transition: all var(--transition-fast); }
        .btn--primary { background: var(--primary); color: white; padding: 8px 16px; font-size: var(--font-size-sm); }
        .btn--primary:hover { background: var(--primary-dark); }

        /* ============================================
           4. AI CHAT
           ============================================ */
        .chat-section { margin-top: var(--spacing-lg); }
        .chat-container { background: var(--bg-primary); border-radius: var(--radius-lg); border: 1px solid var(--gray-200); box-shadow: var(--shadow-sm); overflow: hidden; display: flex; flex-direction: column; max-height: 650px; }
        .chat-header { display: flex; align-items: center; justify-content: space-between; padding: var(--spacing-md); border-bottom: 1px solid var(--gray-200); background: var(--bg-secondary); }
        .chat-header__info { display: flex; align-items: center; gap: var(--spacing-sm); }
        .chat-header__icon { font-size: var(--font-size-2xl); color: var(--primary); }
        .chat-header__name { font-weight: 700; color: var(--gray-900); display: block; }
        .chat-header__status { font-size: var(--font-size-xs); color: var(--gray-500); display: flex; align-items: center; gap: 4px; }
        .chat-header__status .status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--success); }
        .chat-header__clear { color: var(--gray-400); padding: 4px 8px; border-radius: var(--radius-sm); transition: color var(--transition-fast); }
        .chat-header__clear:hover { color: var(--danger); background: var(--danger-light); }
        .chat-messages { flex: 1; overflow-y: auto; padding: var(--spacing-md); display: flex; flex-direction: column; gap: var(--spacing-sm); max-height: 350px; background: var(--bg-secondary); scroll-behavior: smooth; }
        .message { max-width: 85%; padding: 10px 14px; border-radius: var(--radius-md); font-size: var(--font-size-sm); line-height: 1.5; word-wrap: break-word; animation: fadeIn 0.3s ease-out; }
        .message--user { align-self: flex-end; background: var(--primary); color: white; border-bottom-right-radius: 4px; }
        .message--bot { align-self: flex-start; background: var(--gray-100); color: var(--gray-800); border-bottom-left-radius: 4px; }
        .message-time { font-size: 10px; opacity: 0.7; margin-top: 4px; display: block; }
        .typing-indicator { display: flex; gap: 4px; padding: 4px 0; }
        .typing-indicator span { width: 8px; height: 8px; background: var(--gray-400); border-radius: 50%; animation: bounce 1.4s infinite ease-in-out both; }
        .typing-indicator span:nth-child(1) { animation-delay: -0.32s; }
        .typing-indicator span:nth-child(2) { animation-delay: -0.16s; }
        .chat-upload { padding: var(--spacing-sm) var(--spacing-md); border-top: 1px solid var(--gray-200); background: var(--bg-secondary); display: none; flex-direction: column; gap: var(--spacing-sm); }
        .upload-preview { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-sm); color: var(--gray-700); }
        .upload-preview img { max-height: 60px; border-radius: var(--radius-sm); object-fit: cover; }
        .upload-actions { display: flex; gap: var(--spacing-sm); justify-content: flex-end; }
        .chat-input-area { display: flex; align-items: center; gap: var(--spacing-sm); padding: var(--spacing-sm) var(--spacing-md); border-top: 1px solid var(--gray-200); background: var(--bg-primary); }
        .chat-input__actions { display: flex; gap: 2px; }
        .chat-input__btn { width: 36px; height: 36px; border-radius: var(--radius-full); color: var(--gray-500); transition: all var(--transition-fast); display: flex; align-items: center; justify-content: center; }
        .chat-input__btn:hover { background: var(--gray-100); color: var(--gray-700); }
        .chat-input__field { flex: 1; padding: 10px 14px; border: 1px solid var(--gray-200); border-radius: var(--radius-full); outline: none; font-size: var(--font-size-sm); transition: border-color var(--transition-fast); }
        .chat-input__field:focus { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(0,102,255,0.1); }
        .chat-input__send { width: 40px; height: 40px; border-radius: var(--radius-full); background: var(--primary); color: white; transition: background var(--transition-fast); display: flex; align-items: center; justify-content: center; }
        .chat-input__send:hover { background: var(--primary-dark); }
        .chat-disclaimer { font-size: 11px; color: var(--gray-500); text-align: center; padding: 6px var(--spacing-md); background: var(--bg-secondary); border-top: 1px solid var(--gray-200); display: flex; align-items: center; justify-content: center; gap: 6px; }
        .chat-quick-questions { display: flex; flex-wrap: wrap; gap: var(--spacing-xs); padding: var(--spacing-sm) var(--spacing-md) var(--spacing-md); background: var(--bg-secondary); }
        .chip { padding: 6px 14px; border-radius: var(--radius-full); border: 1px solid var(--gray-200); background: white; font-size: var(--font-size-sm); font-weight: 500; color: var(--gray-700); transition: all var(--transition-fast); cursor: pointer; }
        .chip:hover { border-color: var(--primary); background: var(--primary-light); color: var(--primary-dark); }
        .btn--outline { background: transparent; border: 1px solid var(--gray-300); color: var(--gray-700); padding: 8px 16px; font-size: var(--font-size-sm); border-radius: var(--radius-md); }
        .btn--outline:hover { background: var(--gray-100); }

        /* ============================================
           5. MEDICAL ID
           ============================================ */
        .medical-id-section { margin-top: var(--spacing-lg); }
        .medical-id-card { background: var(--bg-primary); border-radius: var(--radius-lg); border: 1px solid var(--gray-200); box-shadow: var(--shadow-md); padding: var(--spacing-lg); max-width: 800px; margin: 0 auto; }
        .medical-id-header { display: flex; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 1px solid var(--gray-200); }
        .medical-id-icon { width: 48px; height: 48px; background: var(--danger-light); color: var(--danger); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-2xl); }
        .medical-id-title { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); line-height: 1.2; }
        .medical-id-subtitle { font-size: var(--font-size-sm); color: var(--gray-500); }
        .medical-id-user { display: flex; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); background: var(--bg-secondary); padding: var(--spacing-md); border-radius: var(--radius-md); }
        .user-avatar-large img { width: 80px; height: 80px; border-radius: 50%; border: 3px solid white; box-shadow: var(--shadow-sm); }
        .user-name { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); margin-bottom: 4px; }
        .user-dob { font-size: var(--font-size-sm); color: var(--gray-600); margin-bottom: 8px; }
        .user-blood { font-size: var(--font-size-base); font-weight: 600; color: var(--gray-800); }
        .blood-highlight { background: var(--danger); color: white; padding: 2px 8px; border-radius: var(--radius-sm); font-size: var(--font-size-sm); margin-left: 4px; }
        .medical-info-grid { display: grid; grid-template-columns: 1fr; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); }
        .info-block { padding: var(--spacing-md); border-radius: var(--radius-md); border-left: 4px solid transparent; }
        .info-block--danger { background: var(--danger-light); border-left-color: var(--danger); }
        .info-block--warning { background: var(--warning-light); border-left-color: var(--warning); }
        .info-block--info { background: var(--info-light); border-left-color: var(--info); }
        .info-block--neutral { background: var(--gray-100); border-left-color: var(--gray-400); }
        .info-block-header { display: flex; align-items: center; gap: 8px; font-weight: 700; font-size: var(--font-size-sm); margin-bottom: var(--spacing-sm); color: var(--gray-800); }
        .info-block--danger .info-block-header { color: var(--danger); }
        .info-block--warning .info-block-header { color: #B45309; }
        .info-block--info .info-block-header { color: var(--info); }
        .info-list { list-style: none; padding: 0; margin: 0; }
        .info-list li { font-size: var(--font-size-sm); color: var(--gray-700); padding: 4px 0; padding-left: 16px; position: relative; }
        .info-list li::before { content: "•"; position: absolute; left: 0; color: var(--gray-400); font-weight: bold; }
        .emergency-contacts { margin-bottom: var(--spacing-lg); padding-top: var(--spacing-md); border-top: 1px solid var(--gray-200); }
        .contacts-title { font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); display: flex; align-items: center; gap: 8px; }
        .contacts-list { display: flex; flex-direction: column; gap: var(--spacing-sm); }
        .contact-item { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-sm) var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); border: 1px solid var(--gray-200); }
        .contact-name { font-weight: 600; color: var(--gray-900); display: block; }
        .contact-relation { font-size: var(--font-size-xs); color: var(--gray-500); }
        .contact-phone { font-weight: 700; color: var(--primary); text-decoration: none; font-size: var(--font-size-base); }
        .contact-phone:hover { text-decoration: underline; }
        .lock-screen-access { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-md); background: var(--primary-light); border-radius: var(--radius-md); border: 1px solid rgba(0, 102, 255, 0.2); }
        .toggle-label { display: flex; align-items: center; gap: 8px; font-weight: 600; color: var(--primary-dark); font-size: var(--font-size-sm); }
        .lock-screen-hint { font-size: var(--font-size-xs); color: var(--gray-500); margin-top: 8px; text-align: center; }
        .switch { position: relative; display: inline-block; width: 50px; height: 28px; }
        .switch input { opacity: 0; width: 0; height: 0; }
        .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: var(--gray-300); transition: .4s; }
        .slider:before { position: absolute; content: ""; height: 20px; width: 20px; left: 4px; bottom: 4px; background-color: white; transition: .4s; border-radius: 50%; box-shadow: var(--shadow-sm); }
        input:checked + .slider { background-color: var(--primary); }
        input:checked + .slider:before { transform: translateX(22px); }
        .slider.round { border-radius: 34px; }
        .slider.round:before { border-radius: 50%; }

        /* ============================================
           6. MEDICATION TRACKER
           ============================================ */
        .medication-tracker { margin-top: var(--spacing-lg); }
        .tracker-card { background: var(--bg-primary); border-radius: var(--radius-lg); border: 1px solid var(--gray-200); box-shadow: var(--shadow-sm); padding: var(--spacing-lg); }
        .tracker-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 1px solid var(--gray-200); }
        .tracker-header__info { display: flex; align-items: center; gap: var(--spacing-md); }
        .tracker-header__icon { width: 48px; height: 48px; background: var(--success-light); color: var(--success); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-2xl); }
        .tracker-header__title { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); margin: 0; }
        .tracker-header__subtitle { font-size: var(--font-size-sm); color: var(--gray-500); margin-top: 2px; }
        .progress-circle { width: 64px; height: 64px; position: relative; display: flex; align-items: center; justify-content: center; }
        .progress-circle svg { transform: rotate(-90deg); width: 100%; height: 100%; }
        .progress-circle-bg { fill: none; stroke: var(--gray-200); stroke-width: 3; }
        .progress-circle-fill { fill: none; stroke: var(--success); stroke-width: 3; stroke-linecap: round; transition: stroke-dasharray 1s ease-out; }
        .progress-text { position: absolute; font-size: var(--font-size-sm); font-weight: 700; color: var(--gray-900); }
        .drug-interaction-alert { display: flex; align-items: flex-start; gap: var(--spacing-sm); padding: var(--spacing-md); background: var(--warning-light); border: 1px solid var(--warning); border-radius: var(--radius-md); margin-bottom: var(--spacing-lg); color: #92400E; font-size: var(--font-size-sm); }
        .drug-interaction-alert &gt; i { color: var(--warning); font-size: var(--font-size-lg); margin-top: 2px; flex-shrink: 0; }
        .alert-content { flex: 1; }
        .alert-close { color: #92400E; padding: 4px; border-radius: var(--radius-sm); transition: background var(--transition-fast); }
        .alert-close:hover { background: rgba(146, 64, 14, 0.1); }
        .time-slots { display: flex; flex-direction: column; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); }
        .time-slot { background: var(--bg-secondary); border-radius: var(--radius-md); padding: var(--spacing-md); border: 1px solid var(--gray-200); }
        .time-slot__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-sm); }
        .time-slot__label { display: flex; align-items: center; gap: var(--spacing-sm); font-weight: 700; color: var(--gray-900); font-size: var(--font-size-base); }
        .time-slot__time { font-size: var(--font-size-xs); color: var(--gray-500); }
        .medication-items { display: flex; flex-direction: column; gap: var(--spacing-sm); }
        .med-item { display: flex; align-items: center; gap: var(--spacing-md); padding: var(--spacing-md); background: var(--bg-primary); border-radius: var(--radius-md); border: 1px solid var(--gray-200); transition: all var(--transition-fast); }
        .med-item:hover { box-shadow: var(--shadow-sm); }
        .med-item__time { font-weight: 700; color: var(--gray-900); font-size: var(--font-size-sm); min-width: 50px; }
        .med-item__info { flex: 1; display: flex; flex-direction: column; gap: 2px; }
        .med-item__name { font-weight: 700; color: var(--gray-900); font-size: var(--font-size-base); }
        .med-item__dosage { font-size: var(--font-size-sm); color: var(--gray-700); }
        .med-item__note { font-size: var(--font-size-xs); color: var(--gray-500); font-style: italic; }
        .med-item__check { width: 44px; height: 44px; border-radius: 50%; background: var(--bg-secondary); color: var(--gray-400); border: 2px solid var(--gray-300); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-lg); transition: all var(--transition-fast); flex-shrink: 0; }
        .med-item__check:hover:not(:disabled) { background: var(--success-light); color: var(--success); border-color: var(--success); transform: scale(1.05); }
        .med-item--taken { opacity: 0.65; }
        .med-item--taken .med-item__check { background: var(--success); color: white; border-color: var(--success); }
        .med-item--taken .med-item__name { text-decoration: line-through; }
        .med-item--current { border-color: var(--primary); background: var(--primary-light); box-shadow: 0 0 0 3px rgba(0, 102, 255, 0.1); }
        .med-item--current .med-item__check { background: var(--primary); color: white; border-color: var(--primary); animation: pulse 2s infinite; }
        .adherence-week { background: var(--bg-secondary); border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-md); }
        .adherence-title { font-size: var(--font-size-sm); font-weight: 700; color: var(--gray-800); margin-bottom: var(--spacing-md); display: flex; align-items: center; gap: var(--spacing-sm); }
        .adherence-bars { display: grid; grid-template-columns: repeat(7, 1fr); gap: var(--spacing-sm); height: 80px; align-items: flex-end; margin-bottom: var(--spacing-sm); }
        .adherence-day { display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; justify-content: flex-end; }
        .adherence-bar { width: 100%; background: var(--success); border-radius: var(--radius-sm) var(--radius-sm) 0 0; min-height: 4px; position: relative; transition: height 0.5s ease-out; }
        .adherence-bar--current { background: var(--primary); }
        .adherence-value { position: absolute; top: -20px; left: 50%; transform: translateX(-50%); font-size: 10px; font-weight: 700; color: var(--gray-700); white-space: nowrap; }
        .adherence-label { font-size: 11px; color: var(--gray-600); font-weight: 600; }
        .adherence-day--today .adherence-label { color: var(--primary); font-weight: 700; }
        .adherence-summary { display: flex; justify-content: space-between; padding-top: var(--spacing-sm); border-top: 1px solid var(--gray-200); font-size: var(--font-size-xs); color: var(--gray-600); }
        .btn-add-medication { width: 100%; padding: var(--spacing-md); background: var(--bg-secondary); border: 2px dashed var(--gray-300); border-radius: var(--radius-md); color: var(--gray-600); font-weight: 600; font-size: var(--font-size-sm); display: flex; align-items: center; justify-content: center; gap: var(--spacing-sm); transition: all var(--transition-fast); }
        .btn-add-medication:hover { background: var(--primary-light); border-color: var(--primary); color: var(--primary-dark); }

        /* ============================================
           7. EMERGENCY (SOS)
           ============================================ */
        .emergency-section { margin-top: var(--spacing-lg); }
        .emergency-card { background: var(--bg-primary); border-radius: var(--radius-lg); border: 2px solid var(--danger); box-shadow: var(--shadow-lg); padding: var(--spacing-lg); }
        .emergency-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 2px solid var(--danger-light); }
        .emergency-header__info { display: flex; align-items: center; gap: var(--spacing-md); }
        .emergency-header__icon { width: 56px; height: 56px; background: var(--danger); color: white; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 28px; }
        .emergency-header__title { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); margin: 0; }
        .emergency-header__subtitle { font-size: var(--font-size-sm); color: var(--gray-500); margin-top: 2px; }
        .emergency-status { display: flex; align-items: center; gap: var(--spacing-xs); font-size: var(--font-size-sm); color: var(--success); font-weight: 600; }
        .status-dot--green { width: 10px; height: 10px; background: var(--success); border-radius: 50%; animation: pulse 2s infinite; }
        .sos-button-container { display: flex; justify-content: center; margin: var(--spacing-xl) 0; }
        .sos-button { position: relative; width: 200px; height: 200px; border-radius: 50%; background: var(--danger); color: white; border: none; cursor: pointer; transition: transform var(--transition-fast); }
        .sos-button:hover { transform: scale(1.05); }
        .sos-button:active { transform: scale(0.95); }
        .sos-button__pulse { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 100%; height: 100%; border-radius: 50%; background: var(--danger); opacity: 0.6; animation: sos-pulse 2s infinite; }
        .sos-button__inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; width: 100%; height: 100%; border-radius: 50%; background: var(--danger); }
        .sos-button__inner i { font-size: 48px; }
        .sos-button__text { font-size: 32px; font-weight: 800; letter-spacing: 2px; }
        .sos-button__subtext { font-size: var(--font-size-xs); opacity: 0.9; }
        .emergency-quick-actions { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--spacing-sm); margin-bottom: var(--spacing-lg); }
        .quick-action { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--spacing-xs); padding: var(--spacing-md); background: var(--bg-secondary); border: 1px solid var(--gray-200); border-radius: var(--radius-md); color: var(--gray-700); font-weight: 600; font-size: var(--font-size-xs); transition: all var(--transition-fast); }
        .quick-action i { font-size: var(--font-size-xl); color: var(--primary); }
        .quick-action:hover { background: var(--primary-light); border-color: var(--primary); color: var(--primary-dark); }
        .location-info { background: var(--bg-secondary); border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); border: 1px solid var(--gray-200); }
        .location-info__header { display: flex; align-items: center; gap: var(--spacing-sm); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-sm); }
        .location-info__header i { color: var(--primary); }
        .location-info__content { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--spacing-sm); font-size: var(--font-size-sm); }
        .location-coordinates { display: flex; flex-direction: column; gap: 2px; }
        .coord-label { color: var(--gray-500); font-size: var(--font-size-xs); }
        .coord-value { font-weight: 700; color: var(--gray-900); font-family: monospace; }
        .emergency-contacts-section { margin-bottom: var(--spacing-lg); }
        .contacts-section-title { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .emergency-contact-list { display: flex; flex-direction: column; gap: var(--spacing-sm); }
        .emergency-contact-item { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); border: 1px solid var(--gray-200); }
        .emergency-contact-info { display: flex; align-items: center; gap: var(--spacing-md); }
        .emergency-contact-avatar img { width: 48px; height: 48px; border-radius: 50%; }
        .emergency-contact-name { font-weight: 700; color: var(--gray-900); display: block; }
        .emergency-contact-relation { font-size: var(--font-size-xs); color: var(--gray-500); }
        .emergency-contact-call { width: 48px; height: 48px; background: var(--success); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: var(--font-size-lg); transition: all var(--transition-fast); }
        .emergency-contact-call:hover { background: #059669; transform: scale(1.1); }
        .nearby-facilities { }
        .facilities-title { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .facility-list { display: flex; flex-direction: column; gap: var(--spacing-sm); }
        .facility-item { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); border: 1px solid var(--gray-200); }
        .facility-info { display: flex; flex-direction: column; gap: 2px; }
        .facility-name { font-weight: 700; color: var(--gray-900); }
        .facility-address { font-size: var(--font-size-xs); color: var(--gray-500); }
        .facility-distance { display: flex; align-items: center; gap: var(--spacing-sm); }
        .facility-distance span { font-weight: 700; color: var(--primary); }
        .facility-map-link { width: 36px; height: 36px; background: var(--primary-light); color: var(--primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: all var(--transition-fast); }
        .facility-map-link:hover { background: var(--primary); color: white; }
        .modal { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000; align-items: center; justify-content: center; }
        .modal.active { display: flex; }
        .modal__overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); backdrop-filter: blur(4px); }
        .modal__content { position: relative; background: var(--bg-primary); border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); max-width: 500px; width: 90%; max-height: 90vh; overflow-y: auto; animation: modalSlideIn 0.3s ease-out; }
        @keyframes modalSlideIn { from { transform: translateY(-50px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
        .modal__header { display: flex; flex-direction: column; align-items: center; gap: var(--spacing-md); padding: var(--spacing-lg); border-bottom: 1px solid var(--gray-200); }
        .modal__icon { width: 64px; height: 64px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 32px; }
        .modal__icon--danger { background: var(--danger); color: white; }
        .modal__title { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); }
        .modal__body { padding: var(--spacing-lg); }
        .modal__footer { display: flex; gap: var(--spacing-sm); padding: var(--spacing-md) var(--spacing-lg); border-top: 1px solid var(--gray-200); background: var(--bg-secondary); }
        .countdown-container { display: flex; flex-direction: column; align-items: center; gap: var(--spacing-md); margin-bottom: var(--spacing-lg); }
        .countdown-circle { position: relative; width: 120px; height: 120px; }
        .countdown-circle svg { transform: rotate(-90deg); width: 100%; height: 100%; }
        .countdown-bg { fill: none; stroke: var(--gray-200); stroke-width: 8; }
        .countdown-progress { fill: none; stroke: var(--danger); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 283; stroke-dashoffset: 0; transition: stroke-dashoffset 1s linear; }
        .countdown-number { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 48px; font-weight: 800; color: var(--danger); }
        .countdown-text { font-size: var(--font-size-base); color: var(--gray-700); }
        .emergency-summary { display: flex; flex-direction: column; gap: var(--spacing-sm); padding: var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); }
        .summary-item { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-sm); color: var(--gray-700); }
        .summary-item i { color: var(--success); }
        .btn--lg { padding: 12px 24px; font-size: var(--font-size-base); flex: 1; }
        .btn--danger { background: var(--danger); color: white; }
        .btn--danger:hover { background: #DC2626; }

        /* ============================================
           8. LAB RESULTS (OCR)
           ============================================ */
        .lab-results-section { margin-top: var(--spacing-lg); }
        .lab-card { background: var(--bg-primary); border-radius: var(--radius-lg); border: 1px solid var(--gray-200); box-shadow: var(--shadow-sm); padding: var(--spacing-lg); }
        .lab-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 1px solid var(--gray-200); }
        .lab-header__info { display: flex; align-items: center; gap: var(--spacing-md); }
        .lab-header__icon { width: 48px; height: 48px; background: linear-gradient(135deg, #8B5CF6, #6366F1); color: white; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-2xl); }
        .lab-header__title { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); margin: 0; }
        .lab-header__subtitle { font-size: var(--font-size-sm); color: var(--gray-500); margin-top: 2px; }
        .lab-stats { display: flex; gap: var(--spacing-md); }
        .lab-stat { text-align: center; padding: 8px 16px; background: var(--bg-secondary); border-radius: var(--radius-md); }
        .lab-stat__value { display: block; font-size: var(--font-size-xl); font-weight: 800; color: var(--gray-900); line-height: 1; }
        .lab-stat__label { font-size: var(--font-size-xs); color: var(--gray-500); margin-top: 4px; }
        .upload-zone { border: 2px dashed var(--gray-300); border-radius: var(--radius-lg); padding: var(--spacing-xl); text-align: center; cursor: pointer; transition: all var(--transition-fast); background: var(--bg-secondary); margin-bottom: var(--spacing-lg); }
        .upload-zone:hover, .upload-zone.dragover { border-color: var(--primary); background: var(--primary-light); }
        .upload-zone__icon { width: 72px; height: 72px; background: var(--primary-light); color: var(--primary); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 32px; margin: 0 auto var(--spacing-md); }
        .upload-zone__title { font-size: var(--font-size-lg); font-weight: 700; color: var(--gray-900); margin-bottom: 4px; }
        .upload-zone__subtitle { font-size: var(--font-size-sm); color: var(--gray-500); margin-bottom: var(--spacing-md); }
        .upload-zone__formats { display: flex; justify-content: center; gap: var(--spacing-xs); margin-bottom: var(--spacing-md); }
        .format-badge { padding: 4px 10px; background: var(--bg-primary); border: 1px solid var(--gray-200); border-radius: var(--radius-full); font-size: 11px; font-weight: 700; color: var(--gray-600); }
        .upload-zone__hint { font-size: var(--font-size-xs); color: var(--gray-500); display: flex; align-items: center; justify-content: center; gap: 4px; }
        .upload-zone__hint i { color: var(--success); }
        .ocr-progress { background: var(--bg-secondary); border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); border: 1px solid var(--gray-200); }
        .ocr-progress__header { display: flex; align-items: center; gap: var(--spacing-sm); font-weight: 600; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .ocr-progress__header i { color: var(--primary); }
        .ocr-progress__bar { height: 8px; background: var(--gray-200); border-radius: var(--radius-full); overflow: hidden; margin-bottom: var(--spacing-md); }
        .ocr-progress__fill { height: 100%; background: linear-gradient(90deg, var(--primary), #8B5CF6); border-radius: var(--radius-full); width: 0%; transition: width 0.3s ease-out; }
        .ocr-progress__stages { display: grid; grid-template-columns: repeat(4, 1fr); gap: var(--spacing-xs); }
        .ocr-stage { display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 11px; color: var(--gray-400); text-align: center; }
        .ocr-stage i { font-size: 14px; }
        .ocr-stage--done { color: var(--success); }
        .ocr-stage--active { color: var(--primary); font-weight: 600; }
        .analysis-result { background: var(--bg-primary); border-radius: var(--radius-md); border: 1px solid var(--gray-200); overflow: hidden; margin-bottom: var(--spacing-lg); }
        .analysis-header { display: flex; justify-content: space-between; align-items: center; padding: var(--spacing-md); background: var(--bg-secondary); border-bottom: 1px solid var(--gray-200); }
        .analysis-header__info { display: flex; align-items: center; gap: var(--spacing-md); }
        .analysis-header__info i { font-size: var(--font-size-xl); color: var(--primary); }
        .analysis-title { font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin: 0; }
        .analysis-meta { font-size: var(--font-size-xs); color: var(--gray-500); margin-top: 2px; }
        .analysis-actions { display: flex; gap: var(--spacing-xs); }
        .btn-icon { width: 36px; height: 36px; border-radius: var(--radius-md); background: var(--bg-primary); color: var(--gray-600); display: flex; align-items: center; justify-content: center; transition: all var(--transition-fast); }
        .btn-icon:hover { background: var(--primary-light); color: var(--primary); }
        .ai-interpretation { padding: var(--spacing-md); background: linear-gradient(135deg, #E6F0FF, #F3E8FF); border-bottom: 1px solid var(--gray-200); }
        .ai-interpretation__header { display: flex; align-items: center; gap: var(--spacing-sm); font-weight: 700; color: var(--primary-dark); font-size: var(--font-size-sm); margin-bottom: var(--spacing-sm); }
        .ai-interpretation__header i { color: var(--primary); }
        .ai-interpretation__text { font-size: var(--font-size-sm); color: var(--gray-800); line-height: 1.6; margin-bottom: var(--spacing-sm); }
        .ai-interpretation__disclaimer { font-size: 11px; color: var(--gray-500); display: flex; align-items: center; gap: 4px; padding-top: var(--spacing-sm); border-top: 1px dashed rgba(0, 102, 255, 0.2); }
        .indicators-table { padding: var(--spacing-sm) 0; }
        .indicator-row { display: grid; grid-template-columns: 2fr 1.5fr 1.5fr 80px auto; align-items: center; gap: var(--spacing-md); padding: 12px var(--spacing-md); border-bottom: 1px solid var(--gray-100); transition: background var(--transition-fast); }
        .indicator-row:hover { background: var(--bg-secondary); }
        .indicator-row:last-child { border-bottom: none; }
        .indicator-row--warning { background: rgba(245, 158, 11, 0.05); }
        .indicator-row--danger { background: rgba(239, 68, 68, 0.05); }
        .indicator-name { display: flex; flex-direction: column; }
        .indicator-label { font-weight: 700; color: var(--gray-900); font-size: var(--font-size-sm); }
        .indicator-code { font-size: 11px; color: var(--gray-400); font-family: monospace; }
        .indicator-value { display: flex; align-items: baseline; gap: 4px; }
        .value-current { font-size: var(--font-size-lg); font-weight: 800; color: var(--gray-900); }
        .value-current--warning { color: var(--warning); }
        .value-current--danger { color: var(--danger); }
        .value-unit { font-size: var(--font-size-xs); color: var(--gray-500); }
        .indicator-ref { display: flex; flex-direction: column; }
        .ref-label { font-size: 11px; color: var(--gray-500); }
        .ref-range { font-size: var(--font-size-sm); color: var(--gray-700); font-weight: 600; }
        .indicator-trend { display: flex; align-items: center; }
        .trend-chart { width: 100%; height: 30px; }
        .indicator-status { display: flex; justify-content: flex-end; }
        .status-badge { padding: 4px 10px; border-radius: var(--radius-full); font-size: 11px; font-weight: 700; white-space: nowrap; }
        .status-badge--normal { background: var(--success-light); color: var(--success); }
        .status-badge--warning { background: var(--warning-light); color: #B45309; }
        .status-badge--danger { background: var(--danger-light); color: var(--danger); }
        .recommendations { padding: var(--spacing-md); background: var(--bg-secondary); border-top: 1px solid var(--gray-200); }
        .recommendations-title { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .recommendations-title i { color: var(--warning); }
        .recommendations-list { list-style: none; display: flex; flex-direction: column; gap: var(--spacing-sm); }
        .recommendations-list li { display: flex; align-items: flex-start; gap: var(--spacing-md); padding: var(--spacing-sm); background: var(--bg-primary); border-radius: var(--radius-md); border: 1px solid var(--gray-200); }
        .recommendations-list li i { width: 32px; height: 32px; background: var(--primary-light); color: var(--primary); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
        .recommendations-list li strong { display: block; color: var(--gray-900); font-size: var(--font-size-sm); margin-bottom: 2px; }
        .recommendations-list li span { font-size: var(--font-size-xs); color: var(--gray-600); }
        .history-section { }
        .history-title { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .history-list { display: flex; flex-direction: column; gap: var(--spacing-xs); }
        .history-item { display: flex; align-items: center; gap: var(--spacing-md); padding: var(--spacing-sm) var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); cursor: pointer; transition: all var(--transition-fast); }
        .history-item:hover { background: var(--primary-light); }
        .history-date { width: 48px; text-align: center; padding: 6px; background: var(--bg-primary); border-radius: var(--radius-sm); border: 1px solid var(--gray-200); }
        .history-day { display: block; font-size: var(--font-size-lg); font-weight: 800; color: var(--gray-900); line-height: 1; }
        .history-month { display: block; font-size: 10px; color: var(--gray-500); text-transform: uppercase; margin-top: 2px; }
        .history-info { flex: 1; display: flex; flex-direction: column; }
        .history-name { font-weight: 600; color: var(--gray-900); font-size: var(--font-size-sm); }
        .history-lab { font-size: var(--font-size-xs); color: var(--gray-500); }
        .history-status { display: flex; align-items: center; gap: 6px; font-size: var(--font-size-xs); color: var(--gray-600); }
        .status-dot-mini { width: 8px; height: 8px; border-radius: 50%; }
        .status-dot-mini--success { background: var(--success); }
        .status-dot-mini--warning { background: var(--warning); }
        .status-dot-mini--danger { background: var(--danger); }

        /* ============================================
           9. ANALYTICS
           ============================================ */
        .analytics-section { margin-top: var(--spacing-lg); }
        .analytics-card { background: var(--bg-primary); border-radius: var(--radius-lg); border: 1px solid var(--gray-200); box-shadow: var(--shadow-sm); padding: var(--spacing-lg); }
        .analytics-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-lg); padding-bottom: var(--spacing-md); border-bottom: 1px solid var(--gray-200); }
        .analytics-header__info { display: flex; align-items: center; gap: var(--spacing-md); }
        .analytics-header__icon { width: 48px; height: 48px; background: linear-gradient(135deg, #3B82F6, #1D4ED8); color: white; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-2xl); }
        .analytics-header__title { font-size: var(--font-size-xl); font-weight: 700; color: var(--gray-900); margin: 0; }
        .analytics-header__subtitle { font-size: var(--font-size-sm); color: var(--gray-500); margin-top: 2px; }
        .period-selector { display: flex; gap: 4px; background: var(--bg-secondary); padding: 4px; border-radius: var(--radius-md); }
        .period-btn { padding: 6px 12px; background: transparent; border: none; border-radius: var(--radius-sm); font-size: var(--font-size-xs); font-weight: 600; color: var(--gray-600); cursor: pointer; transition: all var(--transition-fast); }
        .period-btn:hover { color: var(--gray-900); }
        .period-btn.active { background: var(--bg-primary); color: var(--primary); box-shadow: var(--shadow-sm); }
        .metrics-switcher { display: flex; gap: var(--spacing-xs); margin-bottom: var(--spacing-lg); overflow-x: auto; padding-bottom: 4px; }
        .metric-tab { display: flex; align-items: center; gap: var(--spacing-xs); padding: 10px 16px; background: var(--bg-secondary); border: 1px solid var(--gray-200); border-radius: var(--radius-md); font-size: var(--font-size-sm); font-weight: 600; color: var(--gray-700); cursor: pointer; transition: all var(--transition-fast); white-space: nowrap; }
        .metric-tab:hover { background: var(--bg-tertiary); }
        .metric-tab.active { background: var(--primary-light); border-color: var(--primary); color: var(--primary-dark); }
        .metric-tab i { font-size: var(--font-size-base); }
        .main-chart-container { background: var(--bg-secondary); border-radius: var(--radius-md); padding: var(--spacing-md); margin-bottom: var(--spacing-lg); }
        .chart-header { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: var(--spacing-md); }
        .chart-title h3 { font-size: var(--font-size-lg); font-weight: 700; color: var(--gray-900); margin: 0; }
        .chart-period { font-size: var(--font-size-xs); color: var(--gray-500); margin-top: 2px; }
        .chart-stats { display: flex; gap: var(--spacing-lg); }
        .chart-stat { display: flex; flex-direction: column; gap: 2px; }
        .stat-label { font-size: 11px; color: var(--gray-500); text-transform: uppercase; letter-spacing: 0.5px; }
        .stat-value { font-size: var(--font-size-xl); font-weight: 800; color: var(--gray-900); }
        .stat-trend { font-size: var(--font-size-xs); font-weight: 600; display: flex; align-items: center; gap: 2px; }
        .trend-down { color: var(--success); }
        .trend-up { color: var(--danger); }
        .chart-wrapper { position: relative; }
        .chart-svg { width: 100%; height: auto; }
        .chart-point { transition: r 0.2s ease; cursor: pointer; }
        .chart-point:hover { r: 6; }
        .chart-point--current { animation: pulse 2s infinite; }
        .ai-insights { margin-bottom: var(--spacing-lg); }
        .insights-header { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .insights-header i { color: var(--warning); }
        .insights-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--spacing-md); }
        .insight-card { display: flex; gap: var(--spacing-md); padding: var(--spacing-md); background: var(--bg-secondary); border-radius: var(--radius-md); border-left: 4px solid var(--gray-300); }
        .insight-card--success { border-left-color: var(--success); }
        .insight-card--info { border-left-color: var(--info); }
        .insight-card--warning { border-left-color: var(--warning); }
        .insight-card--primary { border-left-color: var(--primary); }
        .insight-icon { width: 40px; height: 40px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-lg); flex-shrink: 0; }
        .insight-card--success .insight-icon { background: var(--success-light); color: var(--success); }
        .insight-card--info .insight-icon { background: var(--info-light); color: var(--info); }
        .insight-card--warning .insight-icon { background: var(--warning-light); color: var(--warning); }
        .insight-card--primary .insight-icon { background: var(--primary-light); color: var(--primary); }
        .insight-content { flex: 1; }
        .insight-title { font-size: var(--font-size-sm); font-weight: 700; color: var(--gray-900); margin: 0 0 4px 0; }
        .insight-text { font-size: var(--font-size-xs); color: var(--gray-700); line-height: 1.5; margin: 0; }
        .mini-charts { margin-bottom: var(--spacing-lg); }
        .mini-charts-title { font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .mini-charts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--spacing-md); }
        .mini-chart-card { background: var(--bg-secondary); border-radius: var(--radius-md); padding: var(--spacing-md); border: 1px solid var(--gray-200); }
        .mini-chart-header { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-sm); font-weight: 600; color: var(--gray-700); margin-bottom: var(--spacing-sm); }
        .mini-chart-value { display: flex; align-items: baseline; gap: 4px; margin-bottom: var(--spacing-sm); }
        .mini-chart-value .value { font-size: var(--font-size-2xl); font-weight: 800; color: var(--gray-900); }
        .mini-chart-value .unit { font-size: var(--font-size-xs); color: var(--gray-500); }
        .mini-chart-svg { width: 100%; height: 60px; margin-bottom: var(--spacing-sm); }
        .mini-chart-trend { font-size: var(--font-size-xs); font-weight: 600; display: flex; align-items: center; gap: 2px; }
        .norm-comparison { }
        .comparison-title { display: flex; align-items: center; gap: var(--spacing-sm); font-size: var(--font-size-base); font-weight: 700; color: var(--gray-900); margin-bottom: var(--spacing-md); }
        .comparison-bars { display: flex; flex-direction: column; gap: var(--spacing-md); }
        .comparison-item { }
        .comparison-label { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--spacing-xs); }
        .comparison-label span:first-child { font-size: var(--font-size-sm); font-weight: 600; color: var(--gray-700); }
        .comparison-value { font-size: var(--font-size-sm); font-weight: 700; color: var(--gray-900); }
        .comparison-bar-container { position: relative; }
        .comparison-bar { height: 12px; background: var(--gray-200); border-radius: var(--radius-full); overflow: visible; position: relative; }
        .comparison-bar-fill { height: 100%; border-radius: var(--radius-full); transition: width 1s ease-out; }
        .comparison-bar-target { position: absolute; top: -4px; width: 2px; height: 20px; background: var(--gray-900); transform: translateX(-50%); }
        .comparison-scale { display: flex; justify-content: space-between; margin-top: 4px; font-size: 10px; color: var(--gray-500); }

        /* ============================================
           10. NAVIGATION (SIDEBAR &amp; TAB BAR)
           ============================================ */
        .sidebar {
            position: fixed; top: 0; left: 0; width: 260px; height: 100vh;
            background: var(--bg-primary); border-right: 1px solid var(--gray-200);
            display: none; flex-direction: column; z-index: 1000;
            box-shadow: 2px 0 8px rgba(0, 0, 0, 0.05); overflow-y: auto;
        }
        .sidebar__header { padding: 24px 16px; border-bottom: 1px solid var(--gray-200); flex-shrink: 0; }
        .sidebar__logo { display: flex; align-items: center; gap: 12px; font-size: 24px; font-weight: 800; color: var(--gray-900); }
        .sidebar__logo i { color: var(--primary); font-size: 28px; }
        .sidebar__nav { flex: 1; padding: 16px 8px; display: flex; flex-direction: column; gap: 4px; overflow-y: auto; }
        .nav-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: transparent; border: none; border-radius: 12px; color: var(--gray-700); font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.2s ease; position: relative; text-align: left; width: 100%; }
        .nav-item i { font-size: 18px; width: 24px; text-align: center; flex-shrink: 0; }
        .nav-item:hover { background: var(--bg-secondary); color: var(--gray-900); }
        .nav-item--active { background: var(--primary-light); color: var(--primary-dark); }
        .nav-item--active::before { content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%); width: 3px; height: 24px; background: var(--primary); border-radius: 0 9999px 9999px 0; }
        .nav-item--sos { background: var(--danger); color: white; justify-content: center; margin-bottom: 8px; }
        .nav-item--sos:hover { background: #DC2626; color: white; }
        .nav-badge { margin-left: auto; background: var(--danger); color: white; font-size: 10px; font-weight: 700; padding: 2px 6px; border-radius: 9999px; min-width: 20px; text-align: center; }
        .sidebar__footer { padding: 16px; border-top: 1px solid var(--gray-200); flex-shrink: 0; }
        .sidebar__user { display: flex; align-items: center; gap: 12px; padding: 8px; background: var(--bg-secondary); border-radius: 12px; }
        .sidebar__user img { width: 40px; height: 40px; border-radius: 50%; }
        .sidebar__user-info { display: flex; flex-direction: column; }
        .sidebar__user-name { font-size: 14px; font-weight: 700; color: var(--gray-900); }
        .sidebar__user-status { font-size: 11px; color: var(--success); display: flex; align-items: center; gap: 4px; }
        .sidebar__user-status::before { content: ''; width: 6px; height: 6px; background: var(--success); border-radius: 50%; }

        .tab-bar {
            display: flex; position: fixed; bottom: 0; left: 0; right: 0;
            background: var(--bg-primary); border-top: 1px solid var(--gray-200);
            box-shadow: 0 -4px 12px rgba(0, 0, 0, 0.05); z-index: 1000;
            padding: 8px 0 calc(8px + env(safe-area-inset-bottom));
        }
        .tab-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 8px 4px; background: transparent; border: none; color: var(--gray-500); font-size: 11px; font-weight: 600; cursor: pointer; transition: color 0.2s ease; position: relative; }
        .tab-item i { font-size: 18px; transition: transform 0.2s ease; }
        .tab-item:hover { color: var(--gray-700); }
        .tab-item--active { color: var(--primary); }
        .tab-item--active i { transform: scale(1.1); }
        .tab-item--active::after { content: ''; position: absolute; top: 0; left: 50%; transform: translateX(-50%); width: 24px; height: 3px; background: var(--primary); border-radius: 0 0 9999px 9999px; }
        .tab-badge { position: absolute; top: 4px; right: calc(50% - 20px); background: var(--danger); color: white; font-size: 9px; font-weight: 700; padding: 1px 5px; border-radius: 9999px; min-width: 16px; text-align: center; }
        .tab-item--sos { padding: 4px; }
        .tab-sos-button { width: 48px; height: 48px; background: var(--danger); color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 18px; margin-top: -20px; box-shadow: 0 4px 12px rgba(239, 68, 68, 0.4); transition: all 0.2s ease; position: relative; }
        .tab-sos-button::before { content: ''; position: absolute; inset: -4px; border-radius: 50%; background: var(--danger); opacity: 0.3; animation: sos-pulse 2s infinite; z-index: -1; }
        .tab-item--sos:hover .tab-sos-button { transform: scale(1.05); box-shadow: 0 6px 16px rgba(239, 68, 68, 0.5); }
        .tab-item--sos span { color: var(--danger); margin-top: 4px; }

        /* АДАПТИВНОСТЬ (ИСПРАВЛЕНА ДЛЯ УСТРАНЕНИЯ МЕРЦАНИЯ) */
        @media (min-width: 1000px) {
            .sidebar { display: flex !important; }
            .tab-bar { display: none !important; }
            .app-shell { margin-left: 260px; }
            .header { position: sticky; left: 0; right: 0; width: 100%; }
            .app-content { padding-bottom: 24px; }
        }
        @media (max-width: 999px) {
            .sidebar { display: none !important; }
            .tab-bar { display: flex !important; }
            .app-shell { margin-left: 0; }
            .dashboard__grid { grid-template-columns: repeat(2, 1fr); }
            .widget--vitals, .widget--medication { grid-column: span 2; }
            .chat-messages { max-height: 250px; }
            .chip { font-size: var(--font-size-xs); padding: 4px 10px; }
            .status-detail { display: none; }
            .medical-info-grid { grid-template-columns: 1fr; }
            .tracker-header { flex-direction: column; align-items: flex-start; gap: var(--spacing-md); }
            .med-item { flex-wrap: wrap; }
            .med-item__time { min-width: auto; }
            .adherence-value { font-size: 9px; }
            .sos-button { width: 160px; height: 160px; }
            .sos-button__inner i { font-size: 36px; }
            .sos-button__text { font-size: 24px; }
            .emergency-quick-actions { grid-template-columns: 1fr; }
            .location-info__content { grid-template-columns: 1fr; }
            .modal__footer { flex-direction: column; }
            .lab-header { flex-direction: column; align-items: flex-start; gap: var(--spacing-md); }
            .indicator-row { grid-template-columns: 1fr 1fr; grid-template-areas: "name status" "value ref" "trend trend"; gap: var(--spacing-sm); }
            .indicator-name { grid-area: name; }
            .indicator-value { grid-area: value; }
            .indicator-ref { grid-area: ref; }
            .indicator-trend { grid-area: trend; }
            .indicator-status { grid-area: status; justify-content: flex-end; }
            .ocr-progress__stages { grid-template-columns: repeat(2, 1fr); }
            .analytics-header { flex-direction: column; align-items: flex-start; gap: var(--spacing-md); }
            .chart-header { flex-direction: column; gap: var(--spacing-md); }
            .chart-stats { width: 100%; justify-content: space-between; }
            .insights-grid { grid-template-columns: 1fr; }
            .mini-charts-grid { grid-template-columns: repeat(2, 1fr); }
        }
        @media (max-width: 480px) {
            .mini-charts-grid { grid-template-columns: 1fr; }
            .period-selector { width: 100%; justify-content: space-between; }
            .period-btn { flex: 1; text-align: center; }
        }

        /* ============================================
           11. UTILS &amp; TOAST
           ============================================ */
        .section-hidden { display: none !important; }
        .section-visible { display: block !important; animation: sectionFadeIn 0.3s ease-out !important; }
        @keyframes sectionFadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }
        
        .toast-container { position: fixed; top: 80px; right: 20px; z-index: 1200; display: flex; flex-direction: column; gap: var(--spacing-sm); max-width: 400px; }
        .toast { display: flex; align-items: flex-start; gap: var(--spacing-md); padding: var(--spacing-md); background: var(--bg-primary); border-radius: var(--radius-md); box-shadow: var(--shadow-lg); border-left: 4px solid var(--gray-300); animation: toastSlideIn 0.3s ease-out; min-width: 300px; }
        .toast--success { border-left-color: var(--success); }
        .toast--warning { border-left-color: var(--warning); }
        .toast--danger { border-left-color: var(--danger); }
        .toast--info { border-left-color: var(--info); }
        .toast__icon { width: 32px; height: 32px; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: var(--font-size-lg); flex-shrink: 0; }
        .toast--success .toast__icon { background: var(--success-light); color: var(--success); }
        .toast--warning .toast__icon { background: var(--warning-light); color: var(--warning); }
        .toast--danger .toast__icon { background: var(--danger-light); color: var(--danger); }
        .toast--info .toast__icon { background: var(--info-light); color: var(--info); }
        .toast__content { flex: 1; }
        .toast__title { font-weight: 700; font-size: var(--font-size-sm); color: var(--gray-900); margin-bottom: 2px; }
        .toast__message { font-size: var(--font-size-xs); color: var(--gray-600); line-height: 1.4; }
        .toast__close { color: var(--gray-400); padding: 4px; border-radius: var(--radius-sm); transition: all var(--transition-fast); }
        .toast__close:hover { background: var(--gray-100); color: var(--gray-700); }
        @keyframes toastSlideIn { from { transform: translateX(400px); opacity: 0; } to { transform: translateX(0); opacity: 1; } }
        @keyframes toastSlideOut { from { transform: translateX(0); opacity: 1; } to { transform: translateX(400px); opacity: 0; } }
        .toast--hiding { animation: toastSlideOut 0.3s ease-in forwards; }
        @media (max-width: 640px) {
            .toast-container { top: auto; bottom: 100px; right: 10px; left: 10px; max-width: none; }
            .toast { min-width: auto; }
        }
    &lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;div class="app-shell"&gt;
        
        &lt;aside class="sidebar" id="sidebar"&gt;
            &lt;div class="sidebar__header"&gt;
                &lt;div class="sidebar__logo"&gt;&lt;i class="fas fa-heartbeat"&gt;&lt;/i&gt;&lt;span&gt;Medilav&lt;/span&gt;&lt;/div&gt;
            &lt;/div&gt;
            &lt;nav class="sidebar__nav"&gt;
                &lt;button class="nav-item nav-item--active" data-section="dashboard" onclick="switchSection('dashboard')"&gt;&lt;i class="fas fa-house"&gt;&lt;/i&gt;&lt;span&gt;Главная&lt;/span&gt;&lt;/button&gt;
                &lt;button class="nav-item" data-section="ai-chat" onclick="switchSection('ai-chat')"&gt;&lt;i class="fas fa-robot"&gt;&lt;/i&gt;&lt;span&gt;AI-ассистент&lt;/span&gt;&lt;span class="nav-badge"&gt;3&lt;/span&gt;&lt;/button&gt;
                &lt;button class="nav-item" data-section="lab-results" onclick="switchSection('lab-results')"&gt;&lt;i class="fas fa-flask-vial"&gt;&lt;/i&gt;&lt;span&gt;Анализы&lt;/span&gt;&lt;/button&gt;
                &lt;button class="nav-item" data-section="analytics" onclick="switchSection('analytics')"&gt;&lt;i class="fas fa-chart-line"&gt;&lt;/i&gt;&lt;span&gt;Аналитика&lt;/span&gt;&lt;/button&gt;
                &lt;button class="nav-item" data-section="medical-id" onclick="switchSection('medical-id')"&gt;&lt;i class="fas fa-id-card"&gt;&lt;/i&gt;&lt;span&gt;Medical ID&lt;/span&gt;&lt;/button&gt;
            &lt;/nav&gt;
            &lt;div class="sidebar__footer"&gt;
                &lt;button class="nav-item nav-item--sos" onclick="initiateEmergencyCall()"&gt;&lt;i class="fas fa-phone-alt"&gt;&lt;/i&gt;&lt;span&gt;SOS&lt;/span&gt;&lt;/button&gt;
                &lt;div class="sidebar__user"&gt;
                    &lt;img src="https://ui-avatars.com/api/?name=Alex+P&amp;amp;background=0066FF&amp;amp;color=fff&amp;amp;size=40" alt="Аватар" /&gt;
                    &lt;div class="sidebar__user-info"&gt;
                        &lt;span class="sidebar__user-name"&gt;Алексей П.&lt;/span&gt;
                        &lt;span class="sidebar__user-status"&gt;В сети&lt;/span&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
        &lt;/aside&gt;

        
        &lt;main class="app-content"&gt;
            
            &lt;header class="header animate-fade-in"&gt;
                &lt;div class="container header__inner"&gt;
                    &lt;div class="header__brand"&gt;
                        &lt;div class="header__logo"&gt;&lt;i class="fas fa-heartbeat" style="color: var(--primary); font-size: 24px;"&gt;&lt;/i&gt;&lt;/div&gt;
                        &lt;span class="header__brand-name"&gt;Medilav&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;div class="header__status" id="health-status"&gt;
                        &lt;div class="status-indicator status-green" id="status-indicator"&gt;
                            &lt;span class="status-dot"&gt;&lt;/span&gt;
                            &lt;span class="status-label"&gt;Здоров&lt;/span&gt;
                        &lt;/div&gt;
                        &lt;div class="status-detail"&gt;
                            &lt;span class="status-score" id="status-score"&gt;98&lt;/span&gt;
                            &lt;span&gt;/100&lt;/span&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                    &lt;div class="header__actions"&gt;
                        &lt;button class="header__btn" aria-label="Уведомления"&gt;&lt;i class="fas fa-bell"&gt;&lt;/i&gt;&lt;span class="notification-badge"&gt;3&lt;/span&gt;&lt;/button&gt;
                        &lt;button class="header__btn" aria-label="Профиль"&gt;&lt;img src="https://ui-avatars.com/api/?name=Alex+P&amp;amp;background=0066FF&amp;amp;color=fff&amp;amp;size=40" alt="Аватар" class="avatar-img" /&gt;&lt;/button&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/header&gt;

            
            &lt;section class="dashboard animate-fade-in section-visible" id="dashboard"&gt;
                &lt;div class="container"&gt;
                    &lt;h2 class="dashboard__title"&gt;Обзор здоровья&lt;/h2&gt;
                    &lt;div class="dashboard__grid"&gt;
                        &lt;div class="widget widget--vitals"&gt;
                            &lt;div class="widget__header"&gt;&lt;i class="fas fa-heart-pulse widget__icon" style="color: var(--danger);"&gt;&lt;/i&gt;&lt;span class="widget__title"&gt;Витальные показатели&lt;/span&gt;&lt;span class="widget__time"&gt;Сегодня, 08:30&lt;/span&gt;&lt;/div&gt;
                            &lt;div class="vitals__grid"&gt;
                                &lt;div class="vital-item"&gt;&lt;span class="vital-value"&gt;72&lt;/span&gt;&lt;span class="vital-unit"&gt;уд/мин&lt;/span&gt;&lt;span class="vital-label"&gt;Пульс&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="vital-item"&gt;&lt;span class="vital-value"&gt;120/80&lt;/span&gt;&lt;span class="vital-unit"&gt;мм рт.ст.&lt;/span&gt;&lt;span class="vital-label"&gt;Давление&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="vital-item"&gt;&lt;span class="vital-value"&gt;98&lt;/span&gt;&lt;span class="vital-unit"&gt;%&lt;/span&gt;&lt;span class="vital-label"&gt;SpO2&lt;/span&gt;&lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="widget widget--medication"&gt;
                            &lt;div class="widget__header"&gt;&lt;i class="fas fa-pills widget__icon" style="color: var(--primary);"&gt;&lt;/i&gt;&lt;span class="widget__title"&gt;Следующий приём&lt;/span&gt;&lt;/div&gt;
                            &lt;div class="medication__card"&gt;
                                &lt;div class="medication__info"&gt;
                                    &lt;span class="medication__name"&gt;Амлодипин 5 мг&lt;/span&gt;
                                    &lt;span class="medication__time"&gt;&lt;i class="far fa-clock"&gt;&lt;/i&gt; 09:00 (через 30 мин)&lt;/span&gt;
                                    &lt;span class="medication__condition"&gt;После еды&lt;/span&gt;
                                &lt;/div&gt;
                                &lt;button class="btn btn--primary" onclick="markMedicationTaken(this)"&gt;&lt;i class="fas fa-check"&gt;&lt;/i&gt; Принято&lt;/button&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="widget widget--actions"&gt;
                            &lt;div class="widget__header"&gt;&lt;i class="fas fa-bolt widget__icon" style="color: var(--warning);"&gt;&lt;/i&gt;&lt;span class="widget__title"&gt;Быстрые действия&lt;/span&gt;&lt;/div&gt;
                            &lt;div class="actions__grid"&gt;
                                &lt;button class="action-btn" onclick="switchSection('ai-chat')"&gt;&lt;i class="fas fa-robot"&gt;&lt;/i&gt;&lt;span&gt;AI-Чат&lt;/span&gt;&lt;/button&gt;
                                &lt;button class="action-btn action-btn--danger" onclick="initiateEmergencyCall()"&gt;&lt;i class="fas fa-phone-alt"&gt;&lt;/i&gt;&lt;span&gt;SOS&lt;/span&gt;&lt;/button&gt;
                                &lt;button class="action-btn" onclick="switchSection('lab-results')"&gt;&lt;i class="fas fa-camera"&gt;&lt;/i&gt;&lt;span&gt;Фото/Анализ&lt;/span&gt;&lt;/button&gt;
                                &lt;button class="action-btn" onclick="switchSection('medical-id')"&gt;&lt;i class="fas fa-users"&gt;&lt;/i&gt;&lt;span&gt;Семья&lt;/span&gt;&lt;/button&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="widget widget--activity"&gt;
                            &lt;div class="widget__header"&gt;&lt;i class="fas fa-shoe-prints widget__icon" style="color: var(--success);"&gt;&lt;/i&gt;&lt;span class="widget__title"&gt;Активность&lt;/span&gt;&lt;/div&gt;
                            &lt;div class="progress-bar"&gt;&lt;div class="progress-fill" style="width: 65%;"&gt;&lt;/div&gt;&lt;/div&gt;
                            &lt;div class="activity__stats"&gt;&lt;span&gt;6 500 / 10 000 шагов&lt;/span&gt;&lt;span style="color: var(--success);"&gt;320 ккал&lt;/span&gt;&lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;

            &lt;section class="medication-tracker animate-fade-in section-hidden" id="medication-tracker"&gt;
                &lt;div class="container"&gt;
                    &lt;div class="tracker-card"&gt;
                        &lt;div class="tracker-header"&gt;
                            &lt;div class="tracker-header__info"&gt;&lt;i class="fas fa-calendar-check tracker-header__icon"&gt;&lt;/i&gt;&lt;div&gt;&lt;h2 class="tracker-header__title"&gt;Приём лекарств&lt;/h2&gt;&lt;p class="tracker-header__subtitle"&gt;Понедельник, 24 августа 2026&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
                            &lt;div class="tracker-progress"&gt;
                                &lt;div class="progress-circle" data-progress="60"&gt;
                                    &lt;svg viewbox="0 0 36 36"&gt;&lt;path class="progress-circle-bg" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"&gt;&lt;/path&gt;&lt;path class="progress-circle-fill" stroke-dasharray="60, 100" d="M18 2.0845 a 15.9155 15.9155 0 0 1 0 31.831 a 15.9155 15.9155 0 0 1 0 -31.831"&gt;&lt;/path&gt;&lt;/svg&gt;
                                    &lt;span class="progress-text"&gt;3/5&lt;/span&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="drug-interaction-alert"&gt;&lt;i class="fas fa-exclamation-triangle"&gt;&lt;/i&gt;&lt;div class="alert-content"&gt;&lt;strong&gt;Внимание:&lt;/strong&gt; Ибупрофен снижает эффективность Амлодипина. Разделите приём на 4+ часа.&lt;/div&gt;&lt;button class="alert-close" onclick="this.parentElement.style.display='none'"&gt;&lt;i class="fas fa-times"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/div&gt;
                        &lt;div class="time-slots"&gt;
                            &lt;div class="time-slot"&gt;
                                &lt;div class="time-slot__header"&gt;&lt;div class="time-slot__label"&gt;&lt;i class="fas fa-sun" style="color: #F59E0B;"&gt;&lt;/i&gt;&lt;span&gt;Утро&lt;/span&gt;&lt;/div&gt;&lt;span class="time-slot__time"&gt;07:00 – 10:00&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="medication-items"&gt;
                                    &lt;div class="med-item med-item--taken"&gt;&lt;div class="med-item__time"&gt;08:00&lt;/div&gt;&lt;div class="med-item__info"&gt;&lt;span class="med-item__name"&gt;Амлодипин&lt;/span&gt;&lt;span class="med-item__dosage"&gt;5 мг • 1 таблетка&lt;/span&gt;&lt;span class="med-item__note"&gt;После еды, запить водой&lt;/span&gt;&lt;/div&gt;&lt;button class="med-item__check" disabled="disabled"&gt;&lt;i class="fas fa-check"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/div&gt;
                                    &lt;div class="med-item med-item--taken"&gt;&lt;div class="med-item__time"&gt;08:30&lt;/div&gt;&lt;div class="med-item__info"&gt;&lt;span class="med-item__name"&gt;Метформин&lt;/span&gt;&lt;span class="med-item__dosage"&gt;500 мг • 1 таблетка&lt;/span&gt;&lt;span class="med-item__note"&gt;Во время завтрака&lt;/span&gt;&lt;/div&gt;&lt;button class="med-item__check" disabled="disabled"&gt;&lt;i class="fas fa-check"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class="time-slot"&gt;
                                &lt;div class="time-slot__header"&gt;&lt;div class="time-slot__label"&gt;&lt;i class="fas fa-cloud-sun" style="color: #3B82F6;"&gt;&lt;/i&gt;&lt;span&gt;День&lt;/span&gt;&lt;/div&gt;&lt;span class="time-slot__time"&gt;12:00 – 15:00&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="medication-items"&gt;
                                    &lt;div class="med-item med-item--current"&gt;&lt;div class="med-item__time"&gt;13:00&lt;/div&gt;&lt;div class="med-item__info"&gt;&lt;span class="med-item__name"&gt;Метформин&lt;/span&gt;&lt;span class="med-item__dosage"&gt;500 мг • 1 таблетка&lt;/span&gt;&lt;span class="med-item__note"&gt;Во время обеда&lt;/span&gt;&lt;/div&gt;&lt;button class="med-item__check" onclick="markTaken(this)"&gt;&lt;i class="fas fa-check"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="adherence-week"&gt;
                            &lt;h4 class="adherence-title"&gt;&lt;i class="fas fa-chart-line"&gt;&lt;/i&gt; Соблюдение режима за неделю&lt;/h4&gt;
                            &lt;div class="adherence-bars"&gt;
                                &lt;div class="adherence-day"&gt;&lt;div class="adherence-bar" style="height: 100%;"&gt;&lt;span class="adherence-value"&gt;100%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Пн&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="adherence-day"&gt;&lt;div class="adherence-bar" style="height: 100%;"&gt;&lt;span class="adherence-value"&gt;100%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Вт&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="adherence-day"&gt;&lt;div class="adherence-bar" style="height: 80%;"&gt;&lt;span class="adherence-value"&gt;80%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Ср&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="adherence-day"&gt;&lt;div class="adherence-bar" style="height: 100%;"&gt;&lt;span class="adherence-value"&gt;100%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Чт&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="adherence-day"&gt;&lt;div class="adherence-bar" style="height: 100%;"&gt;&lt;span class="adherence-value"&gt;100%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Пт&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="adherence-day"&gt;&lt;div class="adherence-bar" style="height: 60%;"&gt;&lt;span class="adherence-value"&gt;60%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Сб&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="adherence-day adherence-day--today"&gt;&lt;div class="adherence-bar adherence-bar--current" style="height: 60%;"&gt;&lt;span class="adherence-value"&gt;60%&lt;/span&gt;&lt;/div&gt;&lt;span class="adherence-label"&gt;Вс&lt;/span&gt;&lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class="adherence-summary"&gt;&lt;span&gt;Средний показатель: &lt;strong style="color: var(--success);"&gt;91%&lt;/strong&gt;&lt;/span&gt;&lt;span&gt;Пропусков за месяц: &lt;strong style="color: var(--warning);"&gt;2&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;
                        &lt;/div&gt;
                        &lt;button class="btn-add-medication" onclick="alert('Открытие формы добавления препарата')"&gt;&lt;i class="fas fa-plus"&gt;&lt;/i&gt;&lt;span&gt;Добавить препарат&lt;/span&gt;&lt;/button&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;

            &lt;section class="chat-section animate-fade-in section-hidden" id="ai-chat"&gt;
                &lt;div class="container"&gt;
                    &lt;div class="chat-container"&gt;
                        &lt;div class="chat-header"&gt;
                            &lt;div class="chat-header__info"&gt;&lt;i class="fas fa-robot chat-header__icon"&gt;&lt;/i&gt;&lt;div&gt;&lt;span class="chat-header__name"&gt;Medilav AI&lt;/span&gt;&lt;span class="chat-header__status"&gt;&lt;span class="status-dot"&gt;&lt;/span&gt; Онлайн&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
                            &lt;button class="chat-header__clear" onclick="clearChat()" title="Очистить историю"&gt;&lt;i class="fas fa-trash-alt"&gt;&lt;/i&gt;&lt;/button&gt;
                        &lt;/div&gt;
                        &lt;div class="chat-messages" id="chat-messages"&gt;&lt;/div&gt;
                        &lt;div class="chat-upload" id="chat-upload"&gt;
                            &lt;div class="upload-preview" id="upload-preview"&gt;&lt;/div&gt;
                            &lt;div class="upload-actions"&gt;&lt;button class="btn btn--outline" onclick="cancelUpload()"&gt;Отмена&lt;/button&gt;&lt;button class="btn btn--primary" onclick="sendFile()"&gt;Отправить&lt;/button&gt;&lt;/div&gt;
                        &lt;/div&gt;
                        &lt;input type="file" id="hidden-file-input" style="display: none;" onchange="handleFileSelect(this)" /&gt;
                        &lt;div class="chat-input-area"&gt;
                            &lt;div class="chat-input__actions"&gt;
                                &lt;button class="chat-input__btn" onclick="triggerFileUpload('image/*')" title="Фото"&gt;&lt;i class="fas fa-camera"&gt;&lt;/i&gt;&lt;/button&gt;
                                &lt;button class="chat-input__btn" onclick="triggerFileUpload('audio/*')" title="Аудио"&gt;&lt;i class="fas fa-microphone"&gt;&lt;/i&gt;&lt;/button&gt;
                            &lt;/div&gt;
                            &lt;input type="text" class="chat-input__field" id="chat-input" placeholder="Опишите симптомы..." onkeydown="if(event.key==='Enter') sendMessage()" /&gt;
                            &lt;button class="chat-input__send" onclick="sendMessage()"&gt;&lt;i class="fas fa-paper-plane"&gt;&lt;/i&gt;&lt;/button&gt;
                        &lt;/div&gt;
                        &lt;div class="chat-disclaimer"&gt;&lt;i class="fas fa-exclamation-triangle"&gt;&lt;/i&gt; ИИ не ставит диагнозы. При острых состояниях вызывайте 112.&lt;/div&gt;
                        &lt;div class="chat-quick-questions"&gt;
                            &lt;button class="chip" onclick="quickQuestion('Головная боль')"&gt;? Головная боль&lt;/button&gt;
                            &lt;button class="chip" onclick="quickQuestion('Температура')"&gt;?️ Температура&lt;/button&gt;
                            &lt;button class="chip" onclick="quickQuestion('Кашель')"&gt;? Кашель&lt;/button&gt;
                            &lt;button class="chip" onclick="quickQuestion('Давление')"&gt;? Давление&lt;/button&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;

            &lt;section class="lab-results-section animate-fade-in section-hidden" id="lab-results"&gt;
                &lt;div class="container"&gt;
                    &lt;div class="lab-card"&gt;
                        &lt;div class="lab-header"&gt;
                            &lt;div class="lab-header__info"&gt;&lt;div class="lab-header__icon"&gt;&lt;i class="fas fa-flask-vial"&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 class="lab-header__title"&gt;Анализы и исследования&lt;/h2&gt;&lt;p class="lab-header__subtitle"&gt;Загрузите PDF или фото — Medilav расшифрует&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
                            &lt;div class="lab-stats"&gt;&lt;div class="lab-stat"&gt;&lt;span class="lab-stat__value"&gt;24&lt;/span&gt;&lt;span class="lab-stat__label"&gt;Анализа&lt;/span&gt;&lt;/div&gt;&lt;div class="lab-stat"&gt;&lt;span class="lab-stat__value"&gt;3&lt;/span&gt;&lt;span class="lab-stat__label"&gt;Отклонения&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="upload-zone" id="uploadZone"&gt;
                            &lt;input type="file" id="labFileInput" multiple="multiple" accept=".pdf,image/*" style="display:none" onchange="handleLabFiles(this.files)" /&gt;
                            &lt;div class="upload-zone__content"&gt;
                                &lt;div class="upload-zone__icon"&gt;&lt;i class="fas fa-cloud-arrow-up"&gt;&lt;/i&gt;&lt;/div&gt;
                                &lt;h3 class="upload-zone__title"&gt;Перетащите файлы сюда&lt;/h3&gt;
                                &lt;p class="upload-zone__subtitle"&gt;или нажмите для выбора&lt;/p&gt;
                                &lt;div class="upload-zone__formats"&gt;&lt;span class="format-badge"&gt;PDF&lt;/span&gt;&lt;span class="format-badge"&gt;JPG&lt;/span&gt;&lt;span class="format-badge"&gt;PNG&lt;/span&gt;&lt;span class="format-badge"&gt;HEIC&lt;/span&gt;&lt;/div&gt;
                                &lt;p class="upload-zone__hint"&gt;&lt;i class="fas fa-shield-halved"&gt;&lt;/i&gt; Данные защищены шифрованием и не передаются третьим лицам&lt;/p&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="ocr-progress" id="ocrProgress" style="display:none"&gt;
                            &lt;div class="ocr-progress__header"&gt;&lt;i class="fas fa-spinner fa-spin"&gt;&lt;/i&gt;&lt;span&gt;Распознавание анализа...&lt;/span&gt;&lt;/div&gt;
                            &lt;div class="ocr-progress__bar"&gt;&lt;div class="ocr-progress__fill" id="ocrProgressFill"&gt;&lt;/div&gt;&lt;/div&gt;
                            &lt;div class="ocr-progress__stages"&gt;
                                &lt;div class="ocr-stage ocr-stage--done"&gt;&lt;i class="fas fa-check"&gt;&lt;/i&gt;&lt;span&gt;Загрузка файла&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="ocr-stage ocr-stage--active"&gt;&lt;i class="fas fa-spinner fa-spin"&gt;&lt;/i&gt;&lt;span&gt;OCR-распознавание&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="ocr-stage"&gt;&lt;i class="fas fa-circle"&gt;&lt;/i&gt;&lt;span&gt;Нормализация данных&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="ocr-stage"&gt;&lt;i class="fas fa-circle"&gt;&lt;/i&gt;&lt;span&gt;AI-анализ&lt;/span&gt;&lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="analysis-result"&gt;
                            &lt;div class="analysis-header"&gt;
                                &lt;div class="analysis-header__info"&gt;&lt;i class="fas fa-file-medical"&gt;&lt;/i&gt;&lt;div&gt;&lt;h3 class="analysis-title"&gt;Общий анализ крови&lt;/h3&gt;&lt;p class="analysis-meta"&gt;Лаборатория «Инвитро» • 20 августа 2026&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
                                &lt;div class="analysis-actions"&gt;&lt;button class="btn-icon" title="Скачать PDF" onclick="alert('Скачивание PDF...')"&gt;&lt;i class="fas fa-download"&gt;&lt;/i&gt;&lt;/button&gt;&lt;button class="btn-icon" title="Поделиться с врачом" onclick="alert('Отправка врачу...')"&gt;&lt;i class="fas fa-share-nodes"&gt;&lt;/i&gt;&lt;/button&gt;&lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class="ai-interpretation"&gt;
                                &lt;div class="ai-interpretation__header"&gt;&lt;i class="fas fa-robot"&gt;&lt;/i&gt;&lt;span&gt;AI-интерпретация Medilav&lt;/span&gt;&lt;/div&gt;
                                &lt;p class="ai-interpretation__text"&gt;В целом показатели в норме. Обращает внимание &lt;strong style="color: var(--warning);"&gt;сниженный ферритин (18 нг/мл)&lt;/strong&gt; — это может указывать на скрытый железодефицит. Рекомендуем повторить анализ через 2 недели и проконсультироваться с терапевтом.&lt;/p&gt;
                                &lt;div class="ai-interpretation__disclaimer"&gt;&lt;i class="fas fa-info-circle"&gt;&lt;/i&gt; Это справочная информация, не медицинский диагноз.&lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class="indicators-table"&gt;
                                &lt;div class="indicator-row indicator-row--normal"&gt;
                                    &lt;div class="indicator-name"&gt;&lt;span class="indicator-label"&gt;Гемоглобин&lt;/span&gt;&lt;span class="indicator-code"&gt;HGB&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="indicator-value"&gt;&lt;span class="value-current"&gt;142&lt;/span&gt;&lt;span class="value-unit"&gt;г/л&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="indicator-ref"&gt;&lt;span class="ref-label"&gt;Норма:&lt;/span&gt;&lt;span class="ref-range"&gt;130–160&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="indicator-trend"&gt;&lt;svg viewbox="0 0 100 30" class="trend-chart"&gt;&lt;polyline points="0,20 20,18 40,15 60,17 80,14 100,12" fill="none" stroke="var(--success)" stroke-width="2"&gt;&lt;/polyline&gt;&lt;/svg&gt;&lt;/div&gt;
                                    &lt;div class="indicator-status"&gt;&lt;span class="status-badge status-badge--normal"&gt;Норма&lt;/span&gt;&lt;/div&gt;
                                &lt;/div&gt;
                                &lt;div class="indicator-row indicator-row--warning"&gt;
                                    &lt;div class="indicator-name"&gt;&lt;span class="indicator-label"&gt;Ферритин&lt;/span&gt;&lt;span class="indicator-code"&gt;FER&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="indicator-value"&gt;&lt;span class="value-current value-current--warning"&gt;18&lt;/span&gt;&lt;span class="value-unit"&gt;нг/мл&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="indicator-ref"&gt;&lt;span class="ref-label"&gt;Норма:&lt;/span&gt;&lt;span class="ref-range"&gt;30–150&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="indicator-trend"&gt;&lt;svg viewbox="0 0 100 30" class="trend-chart"&gt;&lt;polyline points="0,10 20,12 40,15 60,18 80,22 100,25" fill="none" stroke="var(--warning)" stroke-width="2"&gt;&lt;/polyline&gt;&lt;/svg&gt;&lt;/div&gt;
                                    &lt;div class="indicator-status"&gt;&lt;span class="status-badge status-badge--warning"&gt;Понижен&lt;/span&gt;&lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;

            &lt;section class="analytics-section animate-fade-in section-hidden" id="analytics"&gt;
                &lt;div class="container"&gt;
                    &lt;div class="analytics-card"&gt;
                        &lt;div class="analytics-header"&gt;
                            &lt;div class="analytics-header__info"&gt;&lt;div class="analytics-header__icon"&gt;&lt;i class="fas fa-chart-line"&gt;&lt;/i&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 class="analytics-header__title"&gt;Аналитика здоровья&lt;/h2&gt;&lt;p class="analytics-header__subtitle"&gt;Тренды и инсайты на основе ваших данных&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;
                            &lt;div class="period-selector"&gt;
                                &lt;button class="period-btn" data-period="7" onclick="changePeriod(7)"&gt;7 дней&lt;/button&gt;
                                &lt;button class="period-btn active" data-period="30" onclick="changePeriod(30)"&gt;30 дней&lt;/button&gt;
                                &lt;button class="period-btn" data-period="90" onclick="changePeriod(90)"&gt;3 мес&lt;/button&gt;
                                &lt;button class="period-btn" data-period="365" onclick="changePeriod(365)"&gt;Год&lt;/button&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="metrics-switcher"&gt;
                            &lt;button class="metric-tab active" data-metric="pressure" onclick="switchMetric('pressure')"&gt;&lt;i class="fas fa-heart-pulse"&gt;&lt;/i&gt;&lt;span&gt;Давление&lt;/span&gt;&lt;/button&gt;
                            &lt;button class="metric-tab" data-metric="pulse" onclick="switchMetric('pulse')"&gt;&lt;i class="fas fa-wave-square"&gt;&lt;/i&gt;&lt;span&gt;Пульс&lt;/span&gt;&lt;/button&gt;
                            &lt;button class="metric-tab" data-metric="sleep" onclick="switchMetric('sleep')"&gt;&lt;i class="fas fa-moon"&gt;&lt;/i&gt;&lt;span&gt;Сон&lt;/span&gt;&lt;/button&gt;
                            &lt;button class="metric-tab" data-metric="weight" onclick="switchMetric('weight')"&gt;&lt;i class="fas fa-weight-scale"&gt;&lt;/i&gt;&lt;span&gt;Вес&lt;/span&gt;&lt;/button&gt;
                            &lt;button class="metric-tab" data-metric="activity" onclick="switchMetric('activity')"&gt;&lt;i class="fas fa-person-walking"&gt;&lt;/i&gt;&lt;span&gt;Активность&lt;/span&gt;&lt;/button&gt;
                        &lt;/div&gt;
                        &lt;div class="main-chart-container"&gt;
                            &lt;div class="chart-header"&gt;
                                &lt;div class="chart-title"&gt;&lt;h3 id="chartTitle"&gt;Артериальное давление&lt;/h3&gt;&lt;span class="chart-period" id="chartPeriod"&gt;За последние 30 дней&lt;/span&gt;&lt;/div&gt;
                                &lt;div class="chart-stats"&gt;
                                    &lt;div class="chart-stat"&gt;&lt;span class="stat-label"&gt;Среднее&lt;/span&gt;&lt;span class="stat-value" id="avgValue"&gt;128/82&lt;/span&gt;&lt;span class="stat-trend trend-down" id="avgTrend"&gt;&lt;i class="fas fa-arrow-down"&gt;&lt;/i&gt; 5%&lt;/span&gt;&lt;/div&gt;
                                    &lt;div class="chart-stat"&gt;&lt;span class="stat-label"&gt;Мин/Макс&lt;/span&gt;&lt;span class="stat-value" id="minMaxValue"&gt;115/75 – 145/92&lt;/span&gt;&lt;/div&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class="chart-wrapper"&gt;
                                &lt;svg id="mainChart" viewbox="0 0 800 300" class="chart-svg"&gt;
                                    &lt;defs&gt;&lt;lineargradient id="chartGradient" x1="0%" y1="0%" x2="0%" y2="100%"&gt;&lt;stop offset="0%" style="stop-color:var(--primary);stop-opacity:0.3"&gt;&lt;/stop&gt;&lt;stop offset="100%" style="stop-color:var(--primary);stop-opacity:0"&gt;&lt;/stop&gt;&lt;/lineargradient&gt;&lt;/defs&gt;
                                    &lt;line x1="50" y1="50" x2="750" y2="50" stroke="var(--gray-200)" stroke-width="1" stroke-dasharray="4,4"&gt;&lt;/line&gt;
                                    &lt;line x1="50" y1="100" x2="750" y2="100" stroke="var(--gray-200)" stroke-width="1" stroke-dasharray="4,4"&gt;&lt;/line&gt;
                                    &lt;line x1="50" y1="150" x2="750" y2="150" stroke="var(--gray-200)" stroke-width="1" stroke-dasharray="4,4"&gt;&lt;/line&gt;
                                    &lt;line x1="50" y1="200" x2="750" y2="200" stroke="var(--gray-200)" stroke-width="1" stroke-dasharray="4,4"&gt;&lt;/line&gt;
                                    &lt;line x1="50" y1="250" x2="750" y2="250" stroke="var(--gray-200)" stroke-width="1"&gt;&lt;/line&gt;
                                    &lt;rect x="50" y="120" width="700" height="60" fill="var(--success-light)" opacity="0.3"&gt;&lt;/rect&gt;
                                    &lt;text x="760" y="155" font-size="10" fill="var(--success)" text-anchor="start"&gt;Норма&lt;/text&gt;
                                    &lt;path id="chartArea" d="M50,250 L50,180 L100,170 L150,160 L200,165 L250,155 L300,150 L350,145 L400,140 L450,135 L500,130 L550,125 L600,120 L650,115 L700,110 L750,105 L750,250 Z" fill="url(#chartGradient)"&gt;&lt;/path&gt;
                                    &lt;path id="chartLine" d="M50,180 L100,170 L150,160 L200,165 L250,155 L300,150 L350,145 L400,140 L450,135 L500,130 L550,125 L600,120 L650,115 L700,110 L750,105" fill="none" stroke="var(--primary)" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"&gt;&lt;/path&gt;
                                    &lt;circle cx="50" cy="180" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="150" cy="160" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="250" cy="155" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="350" cy="145" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="450" cy="135" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="550" cy="125" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="650" cy="115" r="4" fill="var(--primary)" class="chart-point"&gt;&lt;/circle&gt;
                                    &lt;circle cx="750" cy="105" r="5" fill="var(--primary)" stroke="white" stroke-width="2" class="chart-point chart-point--current"&gt;&lt;/circle&gt;
                                    &lt;text x="40" y="55" font-size="11" fill="var(--gray-500)" text-anchor="end"&gt;160&lt;/text&gt;
                                    &lt;text x="40" y="105" font-size="11" fill="var(--gray-500)" text-anchor="end"&gt;140&lt;/text&gt;
                                    &lt;text x="40" y="155" font-size="11" fill="var(--gray-500)" text-anchor="end"&gt;120&lt;/text&gt;
                                    &lt;text x="40" y="205" font-size="11" fill="var(--gray-500)" text-anchor="end"&gt;100&lt;/text&gt;
                                    &lt;text x="40" y="255" font-size="11" fill="var(--gray-500)" text-anchor="end"&gt;80&lt;/text&gt;
                                    &lt;text x="50" y="275" font-size="11" fill="var(--gray-500)" text-anchor="middle"&gt;25 июл&lt;/text&gt;
                                    &lt;text x="200" y="275" font-size="11" fill="var(--gray-500)" text-anchor="middle"&gt;1 авг&lt;/text&gt;
                                    &lt;text x="350" y="275" font-size="11" fill="var(--gray-500)" text-anchor="middle"&gt;8 авг&lt;/text&gt;
                                    &lt;text x="500" y="275" font-size="11" fill="var(--gray-500)" text-anchor="middle"&gt;15 авг&lt;/text&gt;
                                    &lt;text x="650" y="275" font-size="11" fill="var(--gray-500)" text-anchor="middle"&gt;22 авг&lt;/text&gt;
                                &lt;/svg&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;

            &lt;section class="medical-id-section animate-fade-in section-hidden" id="medical-id"&gt;
                &lt;div class="container"&gt;
                    &lt;div class="medical-id-card"&gt;
                        &lt;div class="medical-id-header"&gt;
                            &lt;div class="medical-id-icon"&gt;&lt;i class="fas fa-id-card-alt"&gt;&lt;/i&gt;&lt;/div&gt;
                            &lt;div class="medical-id-title-block"&gt;&lt;h2 class="medical-id-title"&gt;Medical ID&lt;/h2&gt;&lt;p class="medical-id-subtitle"&gt;Экстренная медицинская информация Medilav&lt;/p&gt;&lt;/div&gt;
                            &lt;button class="btn btn--outline btn--sm" onclick="alert('Открытие редактора профиля')"&gt;&lt;i class="fas fa-pen"&gt;&lt;/i&gt; Изменить&lt;/button&gt;
                        &lt;/div&gt;
                        &lt;div class="medical-id-user"&gt;
                            &lt;div class="user-avatar-large"&gt;&lt;img src="https://ui-avatars.com/api/?name=Alex+P&amp;amp;background=0066FF&amp;amp;color=fff&amp;amp;size=80&amp;amp;bold=true" alt="Аватар" /&gt;&lt;/div&gt;
                            &lt;div class="user-details"&gt;
                                &lt;h3 class="user-name"&gt;Петров Алексей Игоревич&lt;/h3&gt;
                                &lt;p class="user-dob"&gt;Дата рождения: 15.03.1985 (39 лет)&lt;/p&gt;
                                &lt;p class="user-blood"&gt;Группа крови: &lt;span class="blood-highlight"&gt;A(II) Rh+&lt;/span&gt;&lt;/p&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="medical-info-grid"&gt;
                            &lt;div class="info-block info-block--danger"&gt;
                                &lt;div class="info-block-header"&gt;&lt;i class="fas fa-exclamation-circle"&gt;&lt;/i&gt;&lt;span&gt;Аллергии&lt;/span&gt;&lt;/div&gt;
                                &lt;ul class="info-list"&gt;&lt;li&gt;Пенициллин (анафилактический шок)&lt;/li&gt;&lt;li&gt;Ибупрофен (крапивница)&lt;/li&gt;&lt;li&gt;Цитрусовые&lt;/li&gt;&lt;/ul&gt;
                            &lt;/div&gt;
                            &lt;div class="info-block info-block--warning"&gt;
                                &lt;div class="info-block-header"&gt;&lt;i class="fas fa-notes-medical"&gt;&lt;/i&gt;&lt;span&gt;Хронические заболевания&lt;/span&gt;&lt;/div&gt;
                                &lt;ul class="info-list"&gt;&lt;li&gt;Артериальная гипертензия (I ст.)&lt;/li&gt;&lt;li&gt;Сахарный диабет 2 типа (компенсирован)&lt;/li&gt;&lt;/ul&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="emergency-contacts"&gt;
                            &lt;h4 class="contacts-title"&gt;&lt;i class="fas fa-phone-alt"&gt;&lt;/i&gt; Экстренные контакты&lt;/h4&gt;
                            &lt;div class="contacts-list"&gt;
                                &lt;div class="contact-item"&gt;
                                    &lt;div class="contact-info"&gt;&lt;span class="contact-name"&gt;Петрова Мария&lt;/span&gt;&lt;span class="contact-relation"&gt;Супруга (Основной контакт)&lt;/span&gt;&lt;/div&gt;
                                    &lt;a href="tel:+79991234567" class="contact-phone"&gt;+7 (999) 123-45-67&lt;/a&gt;
                                &lt;/div&gt;
                            &lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="lock-screen-access"&gt;
                            &lt;div class="toggle-label"&gt;&lt;i class="fas fa-lock-open"&gt;&lt;/i&gt;&lt;span&gt;Показывать на экране блокировки&lt;/span&gt;&lt;/div&gt;
                            &lt;label class="switch"&gt;&lt;input type="checkbox" id="lockScreenToggle" checked="checked" onchange="toggleLockScreen(this)" /&gt;&lt;span class="slider round"&gt;&lt;/span&gt;&lt;/label&gt;
                        &lt;/div&gt;
                        &lt;p class="lock-screen-hint"&gt;Эта информация будет доступна без разблокировки телефона через виджет Medilav SOS.&lt;/p&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;

            &lt;section class="emergency-section animate-fade-in section-hidden" id="emergency"&gt;
                &lt;div class="container"&gt;
                    &lt;div class="emergency-card"&gt;
                        &lt;div class="emergency-header"&gt;
                            &lt;div class="emergency-header__info"&gt;
                                &lt;div class="emergency-header__icon"&gt;&lt;i class="fas fa-kit-medical"&gt;&lt;/i&gt;&lt;/div&gt;
                                &lt;div&gt;&lt;h2 class="emergency-header__title"&gt;Экстренная помощь&lt;/h2&gt;&lt;p class="emergency-header__subtitle"&gt;Быстрый доступ к спасению&lt;/p&gt;&lt;/div&gt;
                            &lt;/div&gt;
                            &lt;div class="emergency-status"&gt;&lt;span class="status-dot status-dot--green"&gt;&lt;/span&gt;&lt;span&gt;Готово к вызову&lt;/span&gt;&lt;/div&gt;
                        &lt;/div&gt;
                        &lt;div class="sos-button-container"&gt;
                            &lt;button class="sos-button" onclick="initiateEmergencyCall()"&gt;
                                &lt;div class="sos-button__pulse"&gt;&lt;/div&gt;
                                &lt;div class="sos-button__inner"&gt;&lt;i class="fas fa-phone-alt"&gt;&lt;/i&gt;&lt;span class="sos-button__text"&gt;SOS&lt;/span&gt;&lt;span class="sos-button__subtext"&gt;Вызвать скорую&lt;/span&gt;&lt;/div&gt;
                            &lt;/button&gt;
                        &lt;/div&gt;
                        &lt;div class="emergency-quick-actions"&gt;
                            &lt;button class="quick-action" onclick="switchSection('medical-id')"&gt;&lt;i class="fas fa-id-card"&gt;&lt;/i&gt;&lt;span&gt;Medical ID&lt;/span&gt;&lt;/button&gt;
                            &lt;button class="quick-action" onclick="shareLocation()"&gt;&lt;i class="fas fa-location-dot"&gt;&lt;/i&gt;&lt;span&gt;Мои координаты&lt;/span&gt;&lt;/button&gt;
                            &lt;button class="quick-action" onclick="callEmergencyContact()"&gt;&lt;i class="fas fa-user-group"&gt;&lt;/i&gt;&lt;span&gt;Связаться с близкими&lt;/span&gt;&lt;/button&gt;
                        &lt;/div&gt;
                    &lt;/div&gt;
                &lt;/div&gt;
            &lt;/section&gt;
        &lt;/main&gt;

        
        &lt;nav class="tab-bar" id="tabBar"&gt;
            &lt;button class="tab-item tab-item--active" data-section="dashboard" onclick="switchSection('dashboard')"&gt;&lt;i class="fas fa-house"&gt;&lt;/i&gt;&lt;span&gt;Главная&lt;/span&gt;&lt;/button&gt;
            &lt;button class="tab-item" data-section="ai-chat" onclick="switchSection('ai-chat')"&gt;&lt;i class="fas fa-robot"&gt;&lt;/i&gt;&lt;span&gt;AI-чат&lt;/span&gt;&lt;span class="tab-badge"&gt;3&lt;/span&gt;&lt;/button&gt;
            &lt;button class="tab-item tab-item--sos" onclick="initiateEmergencyCall()"&gt;&lt;div class="tab-sos-button"&gt;&lt;i class="fas fa-phone-alt"&gt;&lt;/i&gt;&lt;/div&gt;&lt;span&gt;SOS&lt;/span&gt;&lt;/button&gt;
            &lt;button class="tab-item" data-section="analytics" onclick="switchSection('analytics')"&gt;&lt;i class="fas fa-chart-line"&gt;&lt;/i&gt;&lt;span&gt;Аналитика&lt;/span&gt;&lt;/button&gt;
            &lt;button class="tab-item" data-section="medical-id" onclick="switchSection('medical-id')"&gt;&lt;i class="fas fa-user"&gt;&lt;/i&gt;&lt;span&gt;Профиль&lt;/span&gt;&lt;/button&gt;
        &lt;/nav&gt;
    &lt;/div&gt;

    
    &lt;div class="modal" id="emergencyModal"&gt;
        &lt;div class="modal__overlay" onclick="cancelEmergencyCall()"&gt;&lt;/div&gt;
        &lt;div class="modal__content"&gt;
            &lt;div class="modal__header"&gt;
                &lt;div class="modal__icon modal__icon--danger"&gt;&lt;i class="fas fa-ambulance"&gt;&lt;/i&gt;&lt;/div&gt;
                &lt;h3 class="modal__title"&gt;Вызов скорой помощи&lt;/h3&gt;
            &lt;/div&gt;
            &lt;div class="modal__body"&gt;
                &lt;div class="countdown-container"&gt;
                    &lt;div class="countdown-circle"&gt;
                        &lt;svg viewbox="0 0 100 100"&gt;&lt;circle class="countdown-bg" cx="50" cy="50" r="45"&gt;&lt;/circle&gt;&lt;circle class="countdown-progress" cx="50" cy="50" r="45" id="countdownCircle"&gt;&lt;/circle&gt;&lt;/svg&gt;
                        &lt;span class="countdown-number" id="countdownNumber"&gt;10&lt;/span&gt;
                    &lt;/div&gt;
                    &lt;p class="countdown-text"&gt;Вызов скорой через &lt;span id="countdownSeconds"&gt;10&lt;/span&gt; сек&lt;/p&gt;
                &lt;/div&gt;
                &lt;div class="emergency-summary"&gt;
                    &lt;div class="summary-item"&gt;&lt;i class="fas fa-location-dot"&gt;&lt;/i&gt;&lt;span&gt;Координаты будут переданы&lt;/span&gt;&lt;/div&gt;
                    &lt;div class="summary-item"&gt;&lt;i class="fas fa-id-card"&gt;&lt;/i&gt;&lt;span&gt;Medical ID будет доступен&lt;/span&gt;&lt;/div&gt;
                    &lt;div class="summary-item"&gt;&lt;i class="fas fa-bell"&gt;&lt;/i&gt;&lt;span&gt;Близкие получат уведомление&lt;/span&gt;&lt;/div&gt;
                &lt;/div&gt;
            &lt;/div&gt;
            &lt;div class="modal__footer"&gt;
                &lt;button class="btn btn--outline btn--lg" onclick="cancelEmergencyCall()"&gt;&lt;i class="fas fa-times"&gt;&lt;/i&gt; Отмена&lt;/button&gt;
                &lt;button class="btn btn--danger btn--lg" onclick="confirmEmergencyCall()"&gt;&lt;i class="fas fa-phone"&gt;&lt;/i&gt; Вызвать сейчас&lt;/button&gt;
            &lt;/div&gt;
        &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="toast-container" id="toastContainer"&gt;&lt;/div&gt;

    
    &lt;script&gt;
        // --- 1. STATE &amp; UTILS ---
        const MedilavApp = {
            state: { health: { score: 98 }, medications: { today: { total: 5, taken: 2, pending: 3 } } },
            setState(updates) {
                this.state = { ...this.state, ...updates };
                if (updates.health &amp;&amp; window.updateHealthStatus) window.updateHealthStatus(this.state.health.score);
            }
        };
        const Toast = {
            show(title, message, type = 'info', duration = 4000) {
                const container = document.getElementById('toastContainer');
                const toast = document.createElement('div');
                toast.className = `toast toast--${type}`;
                const icons = { success: 'fa-check-circle', warning: 'fa-exclamation-triangle', danger: 'fa-times-circle', info: 'fa-info-circle' };
                toast.innerHTML = `&lt;div class="toast__icon"&gt;&lt;i class="fas ${icons[type]}"&gt;&lt;/i&gt;&lt;/div&gt;&lt;div class="toast__content"&gt;&lt;div class="toast__title"&gt;${title}&lt;/div&gt;&lt;div class="toast__message"&gt;${message}&lt;/div&gt;&lt;/div&gt;&lt;button class="toast__close" onclick="Toast.hide(this.parentElement)"&gt;&lt;i class="fas fa-times"&gt;&lt;/i&gt;&lt;/button&gt;`;
                container.appendChild(toast);
                if (duration &gt; 0) setTimeout(() =&gt; this.hide(toast), duration);
                return toast;
            },
            hide(toast) {
                if (!toast || toast.classList.contains('toast--hiding')) return;
                toast.classList.add('toast--hiding');
                setTimeout(() =&gt; { if (toast.parentElement) toast.parentElement.removeChild(toast); }, 300);
            }
        };

        // --- 2. NAVIGATION ---
        const allSections = ['dashboard', 'medication-tracker', 'ai-chat', 'lab-results', 'analytics', 'medical-id', 'emergency'];
        const sectionGroups = {
            'dashboard': ['dashboard', 'medication-tracker'],
            'ai-chat': ['ai-chat'],
            'lab-results': ['lab-results'],
            'analytics': ['analytics'],
            'medical-id': ['medical-id', 'emergency']
        };
        let currentSection = 'dashboard';

        function switchSection(sectionId) {
            if (currentSection === sectionId) return;
            allSections.forEach(id =&gt; {
                const el = document.getElementById(id);
                if (el) { el.classList.add('section-hidden'); el.classList.remove('section-visible'); }
            });
            const group = sectionGroups[sectionId] || [sectionId];
            group.forEach(id =&gt; {
                const el = document.getElementById(id);
                if (el) { el.classList.remove('section-hidden'); el.classList.add('section-visible'); }
            });
            document.querySelectorAll('.nav-item, .tab-item').forEach(item =&gt; {
                item.classList.remove('nav-item--active', 'tab-item--active');
                if (item.dataset.section === sectionId) {
                    if (item.classList.contains('nav-item')) item.classList.add('nav-item--active');
                    if (item.classList.contains('tab-item')) item.classList.add('tab-item--active');
                }
            });
            currentSection = sectionId;
            window.scrollTo({ top: 0, behavior: 'smooth' });
        }

        // --- 3. MODULE LOGIC ---
        function updateHealthStatus(score) {
            const indicator = document.getElementById('status-indicator');
            const label = indicator.querySelector('.status-label');
            const scoreEl = document.getElementById('status-score');
            indicator.classList.remove('status-green', 'status-yellow', 'status-red');
            let statusClass = score &gt;= 80 ? 'status-green' : (score &gt;= 50 ? 'status-yellow' : 'status-red');
            let statusText = score &gt;= 80 ? 'Здоров' : (score &gt;= 50 ? 'Внимание' : 'Срочно');
            indicator.classList.add(statusClass);
            label.textContent = statusText;
            scoreEl.textContent = score;
        }

        function markMedicationTaken(btn) {
            const card = btn.closest('.medication__card');
            card.style.background = 'var(--success-light)';
            card.style.borderLeftColor = 'var(--success)';
            btn.innerHTML = '&lt;i class="fas fa-check-double"&gt;&lt;/i&gt; Принято';
            btn.style.background = 'var(--success)';
            btn.disabled = true;
            updateHealthStatus(100);
        }

        function markTaken(btn) {
            const item = btn.closest('.med-item');
            btn.style.transform = 'scale(0.9)';
            setTimeout(() =&gt; { btn.style.transform = 'scale(1)'; }, 150);
            item.classList.remove('med-item--current', 'med-item--pending');
            item.classList.add('med-item--taken');
            btn.disabled = true;
            const total = document.querySelectorAll('.med-item').length;
            const taken = document.querySelectorAll('.med-item--taken').length;
            const percentage = Math.round((taken / total) * 100);
            const circle = document.querySelector('.progress-circle');
            if(circle) {
                circle.querySelector('.progress-circle-fill').setAttribute('stroke-dasharray', `${percentage}, 100`);
                circle.querySelector('.progress-text').textContent = `${taken}/${total}`;
            }
            MedilavApp.setState({ health: { score: Math.min(100, 90 + Math.round(percentage / 10)) } });
            Toast.success('Препарат отмечен', 'Приём успешно зафиксирован');
        }

        // Chat Logic
        let pendingFile = null;
        document.addEventListener('DOMContentLoaded', () =&gt; {
            addBotMessage('Здравствуйте! Я ваш медицинский ассистент Medilav. Опишите симптомы или задайте вопрос.');
            try {
                const lastSection = localStorage.getItem('medilav_last_section');
                if (lastSection &amp;&amp; sectionGroups[lastSection]) setTimeout(() =&gt; switchSection(lastSection), 100);
            } catch (e) {}
        });

        function addUserMessage(text) {
            const messages = document.getElementById('chat-messages');
            const div = document.createElement('div');
            div.className = 'message message--user';
            div.innerHTML = `${text}&lt;span class="message-time"&gt;${new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'})}&lt;/span&gt;`;
            messages.appendChild(div);
            scrollToBottom();
        }
        function addBotMessage(text) {
            const messages = document.getElementById('chat-messages');
            const div = document.createElement('div');
            div.className = 'message message--bot';
            div.innerHTML = `${text}&lt;span class="message-time"&gt;${new Date().toLocaleTimeString([], {hour: '2-digit', minute:'2-digit'})}&lt;/span&gt;`;
            messages.appendChild(div);
            scrollToBottom();
        }
        function showTypingIndicator() {
            const messages = document.getElementById('chat-messages');
            const div = document.createElement('div');
            div.className = 'message message--bot';
            div.id = 'typing-indicator-msg';
            div.innerHTML = `&lt;div class="typing-indicator"&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;`;
            messages.appendChild(div);
            scrollToBottom();
        }
        function removeTypingIndicator() {
            const el = document.getElementById('typing-indicator-msg');
            if (el) el.remove();
        }
        function scrollToBottom() {
            const container = document.getElementById('chat-messages');
            container.scrollTop = container.scrollHeight;
        }
        function sendMessage() {
            const input = document.getElementById('chat-input');
            const text = input.value.trim();
            if (!text) return;
            addUserMessage(text);
            input.value = '';
            simulateBotResponse(text);
        }
        function quickQuestion(text) {
            addUserMessage(text);
            simulateBotResponse(text);
        }
        function simulateBotResponse(userText) {
            showTypingIndicator();
            setTimeout(() =&gt; {
                removeTypingIndicator();
                let reply = 'Спасибо за информацию. ';
                const lower = userText.toLowerCase();
                if (lower.includes('головн')) reply += 'Измерьте давление и обеспечьте приток свежего воздуха. Если боль резкая или с тошнотой — обратитесь к врачу.';
                else if (lower.includes('температур')) reply += 'При температуре выше 38.5°C рекомендуется обильное питьё и жаропонижающее. Если держится более 3 дней — нужен терапевт.';
                else if (lower.includes('каш')) reply += 'Обратите внимание: кашель сухой или с мокротой? При одышке или боли в груди требуется срочная консультация.';
                else if (lower.includes('давлен')) reply += 'Измерьте давление в покое. Если выше 140/90, перемерьте через 15 минут. При значениях выше 180/110 вызывайте скорую.';
                else reply += 'Уточните, пожалуйста: как давно это началось и есть ли хронические заболевания?';
                addBotMessage(reply);
            }, 1200);
        }
        function clearChat() {
            document.getElementById('chat-messages').innerHTML = '';
            addBotMessage('История очищена. Чем я могу помочь?');
        }
        function triggerFileUpload(acceptType) {
            const input = document.getElementById('hidden-file-input');
            input.accept = acceptType;
            input.value = '';
            input.click();
        }
        function handleFileSelect(inputElement) {
            const file = inputElement.files[0];
            if (!file) return;
            pendingFile = file;
            const preview = document.getElementById('upload-preview');
            if (file.type.startsWith('image/')) {
                const reader = new FileReader();
                reader.onload = (ev) =&gt; { preview.innerHTML = `&lt;img src="${ev.target.result}" alt="preview"&gt; &lt;span&gt;${file.name}&lt;/span&gt;`; };
                reader.readAsDataURL(file);
            } else {
                preview.innerHTML = `&lt;i class="fas fa-file" style="font-size: 24px; color: var(--primary);"&gt;&lt;/i&gt; &lt;span&gt;${file.name}&lt;/span&gt;`;
            }
            document.getElementById('chat-upload').style.display = 'flex';
        }
        function cancelUpload() {
            pendingFile = null;
            document.getElementById('chat-upload').style.display = 'none';
            document.getElementById('upload-preview').innerHTML = '';
            document.getElementById('hidden-file-input').value = '';
        }
        function sendFile() {
            if (!pendingFile) return;
            addUserMessage(`? Отправлен файл: ${pendingFile.name}`);
            showTypingIndicator();
            setTimeout(() =&gt; {
                removeTypingIndicator();
                addBotMessage(`Файл "${pendingFile.name}" получен. Запускаю анализ...`);
                cancelUpload();
            }, 1500);
        }

        // Lab Logic
        const uploadZone = document.getElementById('uploadZone');
        const fileInput = document.getElementById('labFileInput');
        if(uploadZone) {
            uploadZone.addEventListener('click', () =&gt; fileInput.click());
            uploadZone.addEventListener('dragover', (e) =&gt; { e.preventDefault(); uploadZone.classList.add('dragover'); });
            uploadZone.addEventListener('dragleave', () =&gt; { uploadZone.classList.remove('dragover'); });
            uploadZone.addEventListener('drop', (e) =&gt; { e.preventDefault(); uploadZone.classList.remove('dragover'); handleLabFiles(e.dataTransfer.files); });
        }
        function handleLabFiles(files) {
            if (!files || files.length === 0) return;
            simulateOCRProcessing(files[0].name);
        }
        function simulateOCRProcessing(fileName) {
            const progressEl = document.getElementById('ocrProgress');
            const fillEl = document.getElementById('ocrProgressFill');
            const stages = document.querySelectorAll('.ocr-stage');
            progressEl.style.display = 'block';
            let progress = 0;
            let currentStage = 0;
            const interval = setInterval(() =&gt; {
                progress += 2;
                fillEl.style.width = progress + '%';
                const stageProgress = Math.floor(progress / 25);
                if (stageProgress &gt; currentStage &amp;&amp; currentStage &lt; 4) {
                    stages[currentStage].classList.remove('ocr-stage--active');
                    stages[currentStage].classList.add('ocr-stage--done');
                    stages[currentStage].querySelector('i').className = 'fas fa-check';
                    currentStage++;
                    if (currentStage &lt; 4) {
                        stages[currentStage].classList.add('ocr-stage--active');
                        stages[currentStage].querySelector('i').className = 'fas fa-spinner fa-spin';
                    }
                }
                if (progress &gt;= 100) {
                    clearInterval(interval);
                    setTimeout(() =&gt; {
                        progressEl.style.display = 'none';
                        fillEl.style.width = '0%';
                        stages.forEach((s, i) =&gt; { s.classList.remove('ocr-stage--done', 'ocr-stage--active'); s.querySelector('i').className = 'fas fa-circle'; });
                        stages[0].classList.add('ocr-stage--done');
                        stages[0].querySelector('i').className = 'fas fa-check';
                        document.querySelector('.analysis-result').scrollIntoView({ behavior: 'smooth' });
                        Toast.success('Анализ обработан', `Результаты "${fileName}" успешно расшифрованы`);
                    }, 500);
                }
            }, 30);
        }

        // Analytics Logic
        let currentMetric = 'pressure';
        let currentPeriod = 30;
        function switchMetric(metric) {
            currentMetric = metric;
            document.querySelectorAll('.metric-tab').forEach(tab =&gt; {
                tab.classList.remove('active');
                if (tab.dataset.metric === metric) tab.classList.add('active');
            });
            const titles = { pressure: 'Артериальное давление', pulse: 'Пульс', sleep: 'Сон', weight: 'Вес', activity: 'Активность' };
            document.getElementById('chartTitle').textContent = titles[metric];
        }
        function changePeriod(days) {
            currentPeriod = days;
            document.querySelectorAll('.period-btn').forEach(btn =&gt; {
                btn.classList.remove('active');
                if (parseInt(btn.dataset.period) === days) btn.classList.add('active');
            });
            const periodTexts = { 7: 'За последние 7 дней', 30: 'За последние 30 дней', 90: 'За последние 3 месяца', 365: 'За последний год' };
            document.getElementById('chartPeriod').textContent = periodTexts[days];
        }

        // Emergency Logic
        let countdownInterval;
        let countdownSeconds = 10;
        function initiateEmergencyCall() {
            const modal = document.getElementById('emergencyModal');
            modal.classList.add('active');
            startCountdown();
        }
        function startCountdown() {
            countdownSeconds = 10;
            updateCountdown();
            countdownInterval = setInterval(() =&gt; {
                countdownSeconds--;
                updateCountdown();
                if (countdownSeconds &lt;= 0) { clearInterval(countdownInterval); confirmEmergencyCall(); }
            }, 1000);
        }
        function updateCountdown() {
            document.getElementById('countdownNumber').textContent = countdownSeconds;
            document.getElementById('countdownSeconds').textContent = countdownSeconds;
            const progress = (countdownSeconds / 10) * 283;
            document.getElementById('countdownCircle').style.strokeDashoffset = 283 - progress;
        }
        function cancelEmergencyCall() {
            clearInterval(countdownInterval);
            document.getElementById('emergencyModal').classList.remove('active');
        }
        function confirmEmergencyCall() {
            clearInterval(countdownInterval);
            document.getElementById('emergencyModal').classList.remove('active');
            Toast.danger('Экстренный вызов', 'Скорая помощь уведомлена. Координаты переданы.', 10000);
        }
        function shareLocation() {
            const lat = document.getElementById('latitude')?.textContent || '55.7558';
            const lon = document.getElementById('longitude')?.textContent || '37.6173';
            const locationText = `Мои координаты: ${lat}, ${lon}\nhttps://maps.google.com/?q=${lat},${lon}`;
            if (navigator.share) {
                navigator.share({ title: 'Medilav SOS', text: locationText });
            } else {
                navigator.clipboard.writeText(locationText).then(() =&gt; Toast.success('Успех', 'Координаты скопированы в буфер обмена'));
            }
        }
        function callEmergencyContact() { window.location.href = 'tel:+79991234567'; }
        function toggleLockScreen(checkbox) {
            if (checkbox.checked) Toast.info('Medilav', 'Данные Medical ID теперь доступны с экрана блокировки.');
            else Toast.warning('Medilav', 'Доступ с экрана блокировки отключен.');
        }

        // Init Toast
        setTimeout(() =&gt; Toast.info('Добро пожаловать в Medilav!', 'Ваш медицинский ассистент готов к работе', 4000), 1000);
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</subtitle>
  <updated>2026-08-24T07:37:38Z</updated>
  <logo>https://pandoraburo.ru/ssl/layouts/a9/8c8/4b7781a4db8477265eb51f31892.png</logo>
  <author>
    <name>1592962</name>
    <uri>https://www.pandoraburo.ru/</uri>
  </author>
</feed>
