/* ============================================================ Medibot — Futuristic Healthcare Dashboard Dark navy + medical teal/cyan, soft shadows, no glass/gradients ============================================================ */ :root{ --bg:#0a0f14; --panel:#0d141b; --surface:#101922; --surface-2:#141f29; --border:#1c2933; --teal:#17b8b0; --teal-soft:#0e3a3a; --cyan:#3fd6cf; --text:#e7eef0; --text-dim:#8a9aa3; --text-faint:#5b6b73; --danger:#e0734f; --radius-lg:22px; --radius-md:16px; --radius-sm:12px; --shadow:0 18px 40px -20px rgba(0,0,0,0.65); } *{ box-sizing:border-box; } html,body{ height:100%; margin:0; font-family:'Inter', -apple-system, BlinkMacSystemFont, sans-serif; background:var(--bg); color:var(--text); -webkit-font-smoothing:antialiased; } /* ---------------- Dashboard shell: 2-column layout ---------------- */ .dashboard{ display:grid; grid-template-columns:320px 1fr; height:100vh; height:100dvh; max-width:1280px; margin:0 auto; } /* ---------------- LEFT PANEL ---------------- */ .panel{ background:var(--panel); border-right:1px solid var(--border); padding:28px 26px; display:flex; flex-direction:column; overflow-y:auto; } .panel_top{ margin-bottom:36px; } .brand{ display:flex; align-items:center; gap:10px; } .brand_mark{ width:36px; height:36px; border-radius:10px; background:var(--teal-soft); color:var(--teal); display:flex; align-items:center; justify-content:center; font-size:1rem; border:1px solid rgba(23,184,176,0.3); } .brand_name{ font-family:'Plus Jakarta Sans', sans-serif; font-weight:700; font-size:1.05rem; letter-spacing:-0.01em; color:var(--text); } .brand_name span{ color:var(--teal); } .panel_avatar{ text-align:center; padding:8px 0 28px; border-bottom:1px solid var(--border); margin-bottom:24px; } .avatar_ring{ position:relative; width:84px; height:84px; margin:0 auto 16px; border-radius:50%; background:var(--surface); border:1px solid var(--border); display:flex; align-items:center; justify-content:center; overflow:hidden; box-shadow:0 0 0 6px rgba(23,184,176,0.06); } .avatar_img{ font-size:1.5rem; line-height:1; color:var(--teal); } .avatar_status{ position:absolute; bottom:2px; right:2px; width:14px; height:14px; border-radius:50%; background:var(--teal); border:3px solid var(--panel); box-shadow:0 0 0 0 rgba(23,184,176,0.5); animation:pulse 2.2s infinite; } @keyframes pulse{ 0%{ box-shadow:0 0 0 0 rgba(23,184,176,0.45); } 70%{ box-shadow:0 0 0 7px rgba(23,184,176,0); } 100%{ box-shadow:0 0 0 0 rgba(23,184,176,0); } } .panel_avatar h2{ font-family:'Plus Jakarta Sans', sans-serif; font-size:1.05rem; font-weight:700; margin:0 0 2px; color:var(--text); } .panel_avatar .role{ font-size:0.8rem; color:var(--text-dim); margin:0 0 14px; } .status_chip{ display:inline-flex; align-items:center; gap:7px; font-size:0.74rem; font-weight:500; color:var(--teal); background:var(--teal-soft); border:1px solid rgba(23,184,176,0.25); padding:6px 14px; border-radius:999px; } .status_chip .dot{ width:6px; height:6px; border-radius:50%; background:var(--teal); } .panel_desc{ font-size:0.84rem; line-height:1.65; color:var(--text-dim); margin:0 0 26px; } .panel_stats{ display:flex; flex-direction:column; gap:10px; margin-bottom:auto; } .stat{ display:flex; align-items:center; gap:12px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 14px; transition:border-color 0.2s ease, transform 0.2s ease; } .stat:hover{ border-color:rgba(23,184,176,0.35); transform:translateY(-1px); } .stat i{ color:var(--teal); font-size:0.95rem; width:18px; text-align:center; } .stat span{ display:block; font-size:0.85rem; font-weight:600; color:var(--text); } .stat small{ display:block; font-size:0.72rem; color:var(--text-faint); margin-top:1px; } .panel_footer{ display:flex; gap:10px; align-items:flex-start; font-size:0.72rem; line-height:1.5; color:var(--text-faint); padding-top:22px; margin-top:22px; border-top:1px solid var(--border); } .panel_footer i{ color:var(--danger); font-size:0.8rem; margin-top:1px; } /* ---------------- RIGHT: chat ---------------- */ .chat{ display:flex; flex-direction:column; background:var(--bg); height:100vh; min-width:0; } .chat_head{ flex:0 0 auto; display:flex; align-items:center; justify-content:space-between; padding:22px 32px; border-bottom:1px solid var(--border); } .chat_head_left span{ font-family:'Plus Jakarta Sans', sans-serif; font-weight:700; font-size:1rem; color:var(--text); } .chat_head_left p{ margin:3px 0 0; font-size:0.78rem; color:var(--text-faint); } .chat_head_right{ color:var(--text-faint); width:32px; height:32px; border-radius:8px; display:flex; align-items:center; justify-content:center; cursor:pointer; transition:background 0.2s ease, color 0.2s ease; } .chat_head_right:hover{ background:var(--surface); color:var(--teal); } .msg_card_body{ flex:1 1 auto; overflow-y:auto; padding:28px 32px; display:flex; flex-direction:column; } .msg_card_body::-webkit-scrollbar{ width:6px; } .msg_card_body::-webkit-scrollbar-track{ background:transparent; } .msg_card_body::-webkit-scrollbar-thumb{ background:#1e2c35; border-radius:10px; } .welcome_block{ text-align:center; margin:auto 0; padding:20px 14px 32px; } .welcome_icon{ width:56px; height:56px; margin:0 auto 16px; border-radius:var(--radius-sm); background:var(--surface); border:1px solid var(--border); color:var(--teal); display:flex; align-items:center; justify-content:center; font-size:1.3rem; } .welcome_block h3{ font-family:'Plus Jakarta Sans', sans-serif; font-size:1.1rem; font-weight:700; color:var(--text); margin:0 0 8px; } .welcome_block p{ font-size:0.85rem; color:var(--text-dim); max-width:320px; margin:0 auto; line-height:1.6; } /* utility classes used in JS-injected markup */ .d-flex{ display:flex; } .justify-content-end{ justify-content:flex-end; } .justify-content-start{ justify-content:flex-start; } .mb-4{ margin-bottom:20px; } .img_cont_msg{ width:32px; height:32px; flex:0 0 auto; align-self:flex-end; } .user_img_msg{ width:32px; height:32px; border-radius:50%; object-fit:cover; background:var(--surface); border:1px solid var(--border); padding:3px; } .user_avatar, .bot_avatar{ width:32px; height:32px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:0.8rem; background:var(--surface); border:1px solid var(--border); } .user_avatar{ color:var(--text-dim); } .bot_avatar{ color:var(--teal); } .msg_cotainer, .msg_cotainer_send{ max-width:68%; padding:13px 17px; font-size:0.9rem; line-height:1.55; position:relative; word-wrap:break-word; animation:rise 0.22s ease; } @keyframes rise{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:translateY(0); } } .msg_cotainer{ margin-left:10px; background:var(--surface); color:var(--text); border:1px solid var(--border); border-radius:4px var(--radius-md) var(--radius-md) var(--radius-md); } .msg_cotainer_send{ margin-right:10px; background:var(--teal-soft); color:#eafffd; border:1px solid rgba(23,184,176,0.3); border-radius:var(--radius-md) 4px var(--radius-md) var(--radius-md); } .msg_time, .msg_time_send{ display:block; font-size:0.65rem; margin-top:7px; opacity:0.6; } .msg_time_send{ text-align:right; color:#9fe8e2; } .msg_time{ color:var(--text-faint); } /* typing indicator */ .typing_dots{ display:flex; align-items:center; gap:4px; padding:15px 17px; } .typing_dots span{ width:6px; height:6px; border-radius:50%; background:var(--teal); opacity:0.5; animation:typingBlink 1.1s infinite ease-in-out; } .typing_dots span:nth-child(2){ animation-delay:0.15s; } .typing_dots span:nth-child(3){ animation-delay:0.3s; } @keyframes typingBlink{ 0%, 80%, 100%{ transform:scale(0.8); opacity:0.35; } 40%{ transform:scale(1.15); opacity:1; } } /* ---------------- Input footer ---------------- */ .card-footer{ flex:0 0 auto; padding:18px 32px 24px; border-top:1px solid var(--border); background:var(--bg); } .input-group{ display:flex; align-items:center; gap:10px; background:var(--surface); border:1px solid var(--border); border-radius:var(--radius-md); padding:6px 6px 6px 18px; transition:border-color 0.2s ease, box-shadow 0.2s ease; } .input-group:focus-within{ border-color:rgba(23,184,176,0.5); box-shadow:0 0 0 3px rgba(23,184,176,0.12); } .type_msg{ flex:1 1 auto; min-width:0; border:none; outline:none; background:transparent; font-size:0.92rem; font-family:'Inter', sans-serif; color:var(--text); padding:12px 0; text-overflow:ellipsis; } .type_msg::placeholder{ color:var(--text-faint); } .send_btn{ flex:0 0 auto; width:42px; height:42px; border:none; border-radius:var(--radius-sm); background:var(--teal); color:#06201f; display:flex; align-items:center; justify-content:center; font-size:0.9rem; cursor:pointer; transition:transform 0.16s ease, background 0.16s ease; } .send_btn i{ transform:translateX(-1px); } .send_btn:hover{ background:var(--cyan); transform:translateY(-1px); } .send_btn:active{ transform:translateY(0) scale(0.95); } /* ---------------- Responsive ---------------- */ @media (max-width: 900px){ html, body{ height:100%; overflow:hidden; } .dashboard{ display:flex; flex-direction:column; height:100vh; height:100dvh; } .panel{ flex:0 0 auto; flex-direction:row; align-items:center; overflow-x:auto; padding:14px 16px; border-right:none; border-bottom:1px solid var(--border); gap:14px; -webkit-overflow-scrolling:touch; } .panel_top, .panel_desc, .panel_stats, .panel_footer{ display:none; } .panel_avatar{ border-bottom:none; margin:0; padding:0; display:flex; align-items:center; gap:12px; text-align:left; white-space:nowrap; } .avatar_ring{ width:42px; height:42px; margin:0; flex:0 0 auto; } .avatar_img{ font-size:1.1rem; } .avatar_status{ width:10px; height:10px; } .panel_avatar h2{ font-size:0.9rem; margin:0; } .panel_avatar .role{ display:none; } .status_chip{ font-size:0.7rem; padding:5px 11px; white-space:nowrap; } .chat{ flex:1 1 auto; min-height:0; height:auto; } .chat_head{ padding:14px 16px; flex-wrap:wrap; gap:6px; } .chat_head_left p{ font-size:0.72rem; } .msg_card_body{ padding:16px; } .card-footer{ padding:12px 12px max(12px, env(safe-area-inset-bottom)); } .msg_cotainer, .msg_cotainer_send{ max-width:84%; font-size:0.88rem; } /* prevent iOS auto-zoom on input focus */ .type_msg{ font-size:16px; } } @media (max-width: 480px){ .panel{ padding:12px 14px; gap:10px; } .brand_name{ font-size:0.95rem; } .panel_avatar h2{ font-size:0.85rem; } .status_chip{ display:none; } .chat_head{ padding:12px 14px; } .chat_head_left span{ font-size:0.92rem; } .msg_card_body{ padding:12px; } .welcome_icon{ width:46px; height:46px; font-size:1.1rem; } .welcome_block h3{ font-size:1rem; } .welcome_block p{ font-size:0.8rem; } .msg_cotainer, .msg_cotainer_send{ max-width:88%; padding:11px 14px; font-size:0.86rem; } .img_cont_msg, .user_img_msg, .user_avatar, .bot_avatar{ width:28px; height:28px; } .card-footer{ padding:10px 10px max(10px, env(safe-area-inset-bottom)); } .input-group{ padding:4px 4px 4px 14px; } .send_btn{ width:38px; height:38px; } } @media (prefers-reduced-motion: reduce){ .avatar_status, .typing_dots span, .msg_cotainer, .msg_cotainer_send{ animation:none !important; } }