/* ============================================================ PEDIATRIC AI SCRIBE - STYLES ============================================================ */ :root { --blue: #2563eb; --blue-dark: #1d4ed8; --blue-light: #dbeafe; --purple: #7c3aed; --purple-light: #ede9fe; --teal: #0891b2; --teal-light: #cffafe; --green: #10b981; --green-light: #d1fae5; --red: #ef4444; --red-light: #fee2e2; --amber: #f59e0b; --amber-light: #fef3c7; --g50: #f9fafb; --g100: #f3f4f6; --g200: #e5e7eb; --g300: #d1d5db; --g400: #9ca3af; --g500: #6b7280; --g600: #4b5563; --g700: #374151; --g800: #1f2937; --g900: #111827; --radius: 12px; --shadow: 0 1px 3px rgba(0,0,0,0.08); --shadow-md: 0 4px 12px rgba(0,0,0,0.08); } * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', system-ui, sans-serif; background: var(--g50); color: var(--g800); line-height: 1.6; } /* HEADER */ .app-header { background: linear-gradient(135deg, var(--blue) 0%, var(--purple) 100%); color: white; padding: 16px 24px; } .header-content { max-width: 1200px; margin: 0 auto; } .header-top { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 16px; } .logo { display: flex; align-items: center; gap: 12px; } .logo i { font-size: 28px; } .logo h1 { font-size: 22px; font-weight: 700; } .tagline { font-size: 13px; opacity: 0.8; } .model-selector { display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.15); padding: 8px 14px; border-radius: 8px; } .model-selector label { font-size: 13px; white-space: nowrap; } .model-selector select { padding: 5px 10px; border: 1px solid rgba(255,255,255,0.3); border-radius: 6px; background: rgba(255,255,255,0.2); color: white; font-size: 13px; font-family: inherit; } .model-selector select option { background: var(--g800); color: white; } .cost-badge { font-size: 11px; padding: 2px 8px; background: rgba(16,185,129,0.3); border: 1px solid rgba(16,185,129,0.5); border-radius: 10px; color: #6ee7b7; font-weight: 600; white-space: nowrap; } /* TABS */ .tab-nav { display: flex; background: white; border-bottom: 2px solid var(--g200); max-width: 1200px; margin: 0 auto; overflow-x: auto; } .tab-btn { display: flex; align-items: center; gap: 8px; padding: 14px 24px; border: none; border-bottom: 3px solid transparent; background: none; color: var(--g500); font-size: 14px; font-weight: 500; cursor: pointer; white-space: nowrap; font-family: inherit; transition: all 0.2s; } .tab-btn:hover { color: var(--g700); background: var(--g50); } .tab-btn.active { color: var(--blue); border-bottom-color: var(--blue); } .tab-btn i { font-size: 16px; } /* MAIN */ .main-content { max-width: 1200px; margin: 0 auto; padding: 24px 16px; } .tab-content { display: none; } .tab-content.active { display: block; animation: fadeIn 0.25s ease; } @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* MODULE HEADER */ .module-header { margin-bottom: 20px; } .module-header h2 { font-size: 20px; font-weight: 700; display: flex; align-items: center; gap: 10px; } .module-header p { color: var(--g500); font-size: 14px; margin-top: 4px; } /* DEMOGRAPHICS */ .demographics-bar { display: flex; gap: 16px; flex-wrap: wrap; background: white; padding: 14px 18px; border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 16px; } .demo-field { display: flex; flex-direction: column; gap: 4px; } .demo-field label { font-size: 11px; font-weight: 600; color: var(--g500); text-transform: uppercase; letter-spacing: 0.5px; } .demo-field input, .demo-field select { padding: 8px 12px; border: 1.5px solid var(--g300); border-radius: 8px; font-size: 14px; font-family: inherit; min-width: 150px; } .demo-field input:focus, .demo-field select:focus { outline: none; border-color: var(--blue); box-shadow: 0 0 0 3px var(--blue-light); } /* CARDS */ .card { background: white; border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 16px; overflow: hidden; } .card-header { display: flex; justify-content: space-between; align-items: center; padding: 10px 18px; background: var(--g50); border-bottom: 1px solid var(--g200); } .card-header h3 { font-size: 14px; font-weight: 600; color: var(--g700); display: flex; align-items: center; gap: 8px; } /* EDITABLE BOX */ .editable-box { min-height: 120px; max-height: 300px; overflow-y: auto; padding: 14px 18px; font-size: 14px; line-height: 1.8; outline: none; } .editable-box:empty::before { content: attr(data-placeholder); color: var(--g400); } /* RECORDING */ .record-controls { display: flex; align-items: center; gap: 16px; padding: 16px 18px; } .record-btn { display: flex; align-items: center; gap: 10px; padding: 12px 24px; background: var(--red); color: white; border: none; border-radius: 50px; font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; transition: all 0.2s; box-shadow: 0 4px 12px rgba(239,68,68,0.3); } .record-btn:hover { transform: translateY(-1px); } .record-btn.recording { background: var(--g700); box-shadow: 0 4px 12px rgba(0,0,0,0.2); } .btn-purple { background: var(--purple); box-shadow: 0 4px 12px rgba(124,58,237,0.3); } .recording-indicator { display: flex; align-items: center; gap: 8px; color: var(--red); font-weight: 500; } .recording-indicator.hidden { display: none; } .pulse-dot { width: 12px; height: 12px; background: var(--red); border-radius: 50%; animation: pulse 1.5s infinite; } .pulse-purple { background: var(--purple); } @keyframes pulse { 0%,100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.4; transform: scale(1.3); } } /* BUTTONS */ .btn-generate { display: flex; align-items: center; justify-content: center; gap: 10px; width: 100%; padding: 14px; background: var(--blue); color: white; border: none; border-radius: var(--radius); font-size: 15px; font-weight: 600; cursor: pointer; font-family: inherit; margin-bottom: 16px; transition: all 0.2s; box-shadow: 0 4px 12px rgba(37,99,235,0.25); } .btn-generate:hover { transform: translateY(-1px); } .btn-generate:disabled { background: var(--g300); cursor: not-allowed; transform: none; box-shadow: none; } .btn-generate-purple { background: var(--purple); box-shadow: 0 4px 12px rgba(124,58,237,0.25); } .btn-generate-teal { background: var(--teal); box-shadow: 0 4px 12px rgba(8,145,178,0.25); } .btn-sm { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px; border: none; border-radius: 6px; font-size: 12px; font-weight: 500; cursor: pointer; font-family: inherit; transition: all 0.15s; } .btn-primary { background: var(--blue); color: white; } .btn-primary:hover { background: var(--blue-dark); } .btn-ghost { background: var(--g200); color: var(--g700); } .btn-ghost:hover { background: var(--g300); } .btn-success { background: var(--green); color: white; } .btn-success:hover { background: #059669; } /* OUTPUT */ .output-card { border: 2px solid var(--green); } .output-card.hidden { display: none; } .output-header { background: var(--green-light); border-bottom-color: var(--green); } .output-actions { display: flex; align-items: center; gap: 8px; } .output-text { padding: 18px; font-size: 14px; line-height: 1.8; outline: none; min-height: 80px; white-space: pre-wrap; } .model-tag { font-size: 10px; padding: 2px 8px; background: var(--g200); border-radius: 4px; color: var(--g600); } /* ============================================================ MILESTONES ============================================================ */ .legend { display: flex; gap: 20px; flex-wrap: wrap; padding: 10px 16px; background: var(--teal-light); border-radius: var(--radius); margin-bottom: 16px; font-size: 13px; } .legend-item { display: flex; align-items: center; gap: 6px; } .legend-icon { width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border-radius: 6px; font-size: 13px; font-weight: 700; } .legend-yes { background: var(--green-light); color: var(--green); border: 2px solid var(--green); } .legend-no { background: var(--red-light); color: var(--red); border: 2px solid var(--red); } .legend-blank { background: var(--g100); color: var(--g400); border: 2px solid var(--g300); } .domain-section { background: white; border-radius: var(--radius); box-shadow: var(--shadow); margin-bottom: 12px; overflow: hidden; } .domain-header { padding: 12px 18px; font-weight: 700; font-size: 14px; display: flex; align-items: center; gap: 8px; } .domain-header .badge { margin-left: auto; font-size: 11px; font-weight: 500; padding: 2px 10px; border-radius: 10px; background: rgba(255,255,255,0.6); } .domain-gross-motor .domain-header { background: var(--amber-light); color: #92400e; } .domain-fine-motor .domain-header { background: var(--blue-light); color: #1e40af; } .domain-language .domain-header { background: var(--purple-light); color: #5b21b6; } .domain-social .domain-header { background: #fce7f3; color: #9d174d; } .domain-cognitive .domain-header { background: var(--green-light); color: #065f46; } .ms-items { padding: 6px 8px; } .ms-item { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 8px; transition: background 0.15s; } .ms-item:hover { background: var(--g50); } .ms-toggle { display: flex; gap: 4px; flex-shrink: 0; } .toggle-btn { width: 34px; height: 34px; display: flex; align-items: center; justify-content: center; border: 2px solid var(--g300); border-radius: 8px; background: white; cursor: pointer; font-size: 15px; font-weight: 700; color: var(--g400); transition: all 0.15s; } .toggle-btn:hover { border-color: var(--g400); } .toggle-btn.yes-on { background: var(--green-light); border-color: var(--green); color: var(--green); } .toggle-btn.no-on { background: var(--red-light); border-color: var(--red); color: var(--red); } .ms-text { font-size: 14px; color: var(--g700); } .ms-item.is-yes .ms-text { color: var(--g900); font-weight: 500; } .ms-item.is-no .ms-text { color: var(--red); } .milestone-actions { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin: 16px 0; } .summary-bar { display: flex; gap: 16px; padding: 10px 18px; background: var(--g50); border-bottom: 1px solid var(--g200); font-size: 13px; } .summary-bar.hidden { display: none; } .stat { display: flex; align-items: center; gap: 6px; font-weight: 500; } .dot { width: 8px; height: 8px; border-radius: 50%; } .dot-green { background: var(--green); } .dot-red { background: var(--red); } .dot-gray { background: var(--g400); } /* LOADING */ .loading-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: center; justify-content: center; z-index: 9999; backdrop-filter: blur(3px); } .loading-overlay.hidden { display: none; } .loading-box { background: white; padding: 32px 48px; border-radius: var(--radius); text-align: center; box-shadow: var(--shadow-md); } .spinner { width: 36px; height: 36px; border: 4px solid var(--g200); border-top-color: var(--blue); border-radius: 50%; animation: spin 0.7s linear infinite; margin: 0 auto 14px; } @keyframes spin { to { transform: rotate(360deg); } } .loading-box p { color: var(--g600); font-weight: 500; font-size: 14px; } /* TOAST */ .toast-container { position: fixed; bottom: 20px; right: 20px; display: flex; flex-direction: column; gap: 8px; z-index: 10000; } .toast { padding: 10px 18px; border-radius: 8px; color: white; font-size: 13px; font-weight: 500; box-shadow: var(--shadow-md); animation: slideIn 0.3s ease; display: flex; align-items: center; gap: 8px; } .toast-success { background: var(--green); } .toast-error { background: var(--red); } .toast-info { background: var(--blue); } @keyframes slideIn { from { transform: translateX(100%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } .hidden { display: none !important; } /* RESPONSIVE */ @media (max-width: 768px) { .header-top { flex-direction: column; align-items: flex-start; } .model-selector { width: 100%; } .model-selector select { flex: 1; } .tab-btn span { display: none; } .tab-btn { flex: 1; justify-content: center; padding: 12px; } .tab-btn i { font-size: 18px; } .demographics-bar { flex-direction: column; } .demo-field input, .demo-field select { min-width: 100%; } .milestone-actions { flex-direction: column; } .btn-generate-teal { width: 100%; } .legend { flex-direction: column; gap: 8px; } } /* Scrollbar */ .editable-box::-webkit-scrollbar, .output-text::-webkit-scrollbar { width: 5px; } .editable-box::-webkit-scrollbar-thumb, .output-text::-webkit-scrollbar-thumb { background: var(--g300); border-radius: 3px; } /* Reading Active State */ .btn-reading { background: var(--red) !important; color: white !important; animation: btn-pulse 1.5s infinite; } .btn-reading:hover { background: #dc2626 !important; } @keyframes btn-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } } /* ============================================================ 3-SENTENCE SUMMARY ============================================================ */ .summary-section { border-top: 2px dashed var(--g200); } .summary-section-header { padding: 14px 18px; display: flex; align-items: center; } .btn-generate-summary { display: inline-flex; align-items: center; gap: 8px; padding: 10px 22px; background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); color: white; border: none; border-radius: 8px; font-size: 14px; font-weight: 600; cursor: pointer; font-family: inherit; transition: all 0.2s; box-shadow: 0 3px 10px rgba(245, 158, 11, 0.25); } .btn-generate-summary:hover { transform: translateY(-1px); box-shadow: 0 5px 14px rgba(245, 158, 11, 0.35); } .btn-generate-summary:disabled { background: var(--g300); cursor: not-allowed; transform: none; box-shadow: none; } .btn-generate-summary.loading { pointer-events: none; opacity: 0.7; } .summary-output-header { background: var(--amber-light); border-bottom: 1px solid #fbbf24; border-top: 1px solid var(--g200); } .summary-output-text { padding: 16px 18px; font-size: 14px; line-height: 1.9; outline: none; min-height: 60px; white-space: pre-wrap; color: var(--g800); background: #fffbeb; font-weight: 500; } .summary-output-text::-webkit-scrollbar { width: 5px; } .summary-output-text::-webkit-scrollbar-thumb { background: var(--g300); border-radius: 3px; }