/* ============================================================
   MediConsult design system
   Display: Plus Jakarta Sans · Body: Inter
   ============================================================ */
:root{
  --bg:#eef2f0; --admin-bg:#f4f7f5; --surface:#fff; --card:#fff;
  --ink:#0f1e1b; --ink-soft:#33463f; --muted:#5f746c;
  --brand:#0d7d6a; --brand-dark:#0a5f51; --brand-tint:#e6f6f1; --accent:#17c495;
  --line:#e4ebe8; --line-soft:#eef3f1;
  --ok:#16965f; --ok-tint:#e4f6ec;
  --busy:#d9822b; --busy-tint:#fdf0df;
  --off:#8ea19b; --off-tint:#eef2f0;
  --amber:#e0a020; --danger:#e0574a; --danger-tint:#fbeae8;
  --sb:#0b201b; --sb2:#0e2a23; --sb-ink:#a9c9c1;
  --radius:18px; --radius-sm:12px;
  --shadow:0 1px 2px rgba(15,30,27,.04),0 6px 20px rgba(15,30,27,.06);
  --shadow-lift:0 10px 34px rgba(13,125,106,.16);
  --ff-display:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --ff-body:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:var(--ff-body);background:var(--bg);color:var(--ink);line-height:1.55;
  -webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased}
a{color:var(--brand);text-decoration:none}
h1,h2,h3,.brand{font-family:var(--ff-display);letter-spacing:-.02em}
.wrap{width:100%;max-width:1060px;margin:0 auto;padding:0 18px}

/* ---------- Public top bar ---------- */
.topbar{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:50}
.topbar .wrap{display:flex;align-items:center;justify-content:space-between;min-height:64px;gap:10px}
.brand{color:var(--ink);font-weight:800;font-size:1.2rem;display:flex;align-items:center;gap:9px}
.brand .logo{background:linear-gradient(135deg,var(--brand),var(--accent));color:#fff;width:33px;height:33px;
  border-radius:11px;display:inline-flex;align-items:center;justify-content:center;font-weight:900;font-size:1.15rem;
  box-shadow:0 5px 14px rgba(13,125,106,.32)}
.brand-logo{height:34px;width:auto;max-width:150px;border-radius:7px}
.topbar nav{display:flex;align-items:center;gap:15px;flex-wrap:wrap;justify-content:flex-end}
.topbar nav a{color:var(--ink-soft);font-size:.93rem;font-weight:600}
.topbar nav a:hover{color:var(--brand)}
.topbar .who{color:var(--muted);font-size:.86rem;font-weight:600;display:flex;align-items:center;gap:7px}

.page{padding-top:26px;padding-bottom:76px}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;background:var(--brand);color:#fff;
  border:none;border-radius:12px;padding:13px 20px;font-size:.98rem;font-weight:700;font-family:var(--ff-body);
  cursor:pointer;transition:transform .12s ease,box-shadow .2s ease,background .15s ease}
.btn:hover{background:var(--brand-dark);box-shadow:0 6px 18px rgba(13,125,106,.3)}
.btn:active{transform:translateY(1px)}
.btn.block{width:100%}
.btn.sm{padding:9px 15px;font-size:.87rem;border-radius:10px}
.btn.ghost{background:var(--brand-tint);color:var(--brand)}
.btn.ghost:hover{background:#d6efe7;box-shadow:none}
.btn.outline{background:#fff;color:var(--brand);border:1.5px solid #cbe6de}
.btn.outline:hover{background:var(--brand-tint);box-shadow:none}
.btn.danger{background:var(--danger)}.btn.danger:hover{background:#cf4a3e}
.btn.gray{background:#eaf0ed;color:var(--ink-soft)}.btn.gray:hover{background:#dfe8e4;box-shadow:none}
.btn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}

/* ---------- Cards ---------- */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:20px;margin-bottom:18px}
.grid{display:grid;grid-template-columns:1fr;gap:18px}
@media(min-width:680px){.grid{grid-template-columns:1fr 1fr}}

/* ---------- Hero ---------- */
.hero{background:radial-gradient(120% 140% at 100% 0,#17c495 0,#0d7d6a 42%,#0a5f51 100%);
  color:#fff;border-radius:24px;padding:34px 26px;margin-bottom:22px;position:relative;overflow:hidden}
.hero::after{content:"✚";position:absolute;right:14px;top:-34px;font-size:180px;opacity:.1;font-weight:900}
.hero .eyebrow{font-size:.78rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#bff0e3;margin-bottom:10px}
.hero h1{color:#fff;font-size:2rem;margin:0 0 8px;line-height:1.1;max-width:18ch}
.hero p{color:#e6fbf4;margin:0;max-width:48ch;font-size:1.02rem}
.hero-stats{display:flex;gap:24px;margin-top:22px;flex-wrap:wrap}
.hero-stats .hs b{font-family:var(--ff-display);font-size:1.6rem;line-height:1;display:block}
.hero-stats .hs span{font-size:.74rem;color:#cdeee6;text-transform:uppercase;letter-spacing:.06em;margin-top:4px;display:block}
@media(min-width:680px){.hero{padding:46px 44px}.hero h1{font-size:2.6rem}}

/* ---------- Filter chips ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.chips button{border:1px solid var(--line);background:#fff;padding:9px 16px;border-radius:22px;font-weight:700;
  font-size:.88rem;color:var(--ink-soft);cursor:pointer;font-family:var(--ff-body);transition:.15s;box-shadow:var(--shadow)}
.chips button:hover{border-color:var(--brand);color:var(--brand)}
.chips button.on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ---------- Avatar ---------- */
.avatar{width:60px;height:60px;border-radius:16px;background:var(--brand-tint);color:var(--brand);display:flex;
  align-items:center;justify-content:center;font-size:1.4rem;font-weight:800;flex:0 0 auto;overflow:hidden;font-family:var(--ff-display)}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar.ring-online{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--ok)}
.avatar.ring-busy{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--busy)}
.avatar.ring-offline{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--off)}
.avatar-sm{width:34px;height:34px;border-radius:10px;font-size:.85rem}
.avatar-xl{width:88px;height:88px;border-radius:22px;font-size:2rem}

/* ---------- Doctor card ---------- */
.doc{display:flex;flex-direction:column;gap:14px;transition:transform .15s ease,box-shadow .2s ease,border-color .2s}
.doc:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);border-color:#cbe6de}
.doc-head{display:flex;gap:14px;align-items:flex-start}
.doc-name{font-family:var(--ff-display);font-weight:700;font-size:1.12rem;display:flex;align-items:center;gap:7px;flex-wrap:wrap;line-height:1.2}
.doc-spec{color:var(--muted);font-size:.9rem;margin-top:2px}
.verify{display:inline-flex;align-items:center;gap:3px;font-size:.7rem;font-weight:700;background:var(--ok-tint);
  color:#0d8b57;padding:3px 8px;border-radius:20px}
.verify.pmdc{background:#eaf1fb;color:#2563c9}
.doc-bio{color:var(--ink-soft);font-size:.9rem;line-height:1.5}
.doc-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  border-top:1px solid var(--line-soft);padding-top:14px}
.fee{font-family:var(--ff-display);font-weight:800;font-size:1.3rem;color:var(--ink)}
.fee small{color:var(--muted);font-weight:500;font-size:.72rem;display:block;font-family:var(--ff-body)}
.stars{color:var(--amber);font-size:.9rem;letter-spacing:1px}
.stars .muted{letter-spacing:0}

/* ---------- Status badge ---------- */
.badge{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:700;padding:4px 11px;border-radius:20px}
.badge .dot{width:8px;height:8px;border-radius:50%;display:inline-block;position:relative}
.badge.ok{background:var(--ok-tint);color:var(--ok)}.badge.ok .dot{background:var(--ok)}
.badge.ok .dot::after{content:"";position:absolute;inset:-3px;border-radius:50%;background:var(--ok);opacity:.35;animation:pulse 1.8s ease-out infinite}
.badge.busy{background:var(--busy-tint);color:var(--busy)}.badge.busy .dot{background:var(--busy)}
.badge.off{background:var(--off-tint);color:var(--off)}.badge.off .dot{background:var(--off)}
@keyframes pulse{0%{transform:scale(1);opacity:.35}70%{transform:scale(2.4);opacity:0}100%{opacity:0}}

/* ---------- Forms ---------- */
label{display:block;font-size:.84rem;font-weight:600;margin:12px 0 5px;color:var(--ink-soft)}
input,select,textarea{width:100%;padding:12px 13px;border:1.5px solid var(--line);border-radius:11px;font-size:1rem;
  font-family:inherit;background:#fff;color:var(--ink);transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}
textarea{resize:vertical;min-height:92px}

/* ---------- Alerts ---------- */
.alert{padding:13px 15px;border-radius:12px;margin-bottom:15px;font-size:.92rem;border:1px solid transparent}
.alert.info{background:#eaf4fb;color:#1a5c8f;border-color:#d3e7f6}
.alert.warn{background:var(--busy-tint);color:#8a5a10;border-color:#f4e2c4}
.alert.err{background:var(--danger-tint);color:#a2352c;border-color:#f4d3cf}
.alert.ok{background:var(--ok-tint);color:#1a7a45;border-color:#cdeddb}

h1{font-size:1.55rem;margin:.1em 0 .5em}
h2{font-size:1.15rem;margin:1.1em 0 .5em}
.muted{color:var(--muted)}.center{text-align:center}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.spacer{flex:1}

/* ---------- Table ---------- */
.table{width:100%;border-collapse:collapse;font-size:.9rem;background:#fff;border:1px solid var(--line);
  border-radius:14px;overflow:hidden}
.table th,.table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--line-soft)}
.table th{background:#f4f8f6;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:#5a6c74;font-weight:700}
.table tr:last-child td{border-bottom:none}
.table tbody tr:hover{background:#fafcfb}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:14px}

/* ---------- Stat tiles ---------- */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px}
@media(min-width:680px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:var(--shadow);position:relative}
.stat .ic{width:38px;height:38px;border-radius:11px;background:var(--brand-tint);display:flex;align-items:center;
  justify-content:center;margin-bottom:12px}
.stat .ic svg{width:19px;height:19px;stroke:var(--brand);fill:none;stroke-width:2}
.stat .n{font-family:var(--ff-display);font-size:1.55rem;font-weight:800;line-height:1.1}
.stat .l{font-size:.76rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:3px}

/* ---------- Dashboard chart ---------- */
.chart{display:flex;align-items:flex-end;gap:10px;height:170px;padding:10px 4px 0}
.chart .bar{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:8px;height:100%}
.chart .bar i{width:100%;max-width:40px;min-height:4px;background:linear-gradient(180deg,var(--accent),var(--brand));
  border-radius:8px 8px 0 0;display:block;transition:height .4s ease}
.chart .bar span{font-size:.7rem;color:var(--muted);font-weight:600}
.chart .bar b{font-size:.72rem;color:var(--ink-soft);font-family:var(--ff-display)}

/* ---------- Chat ---------- */
.chat{display:flex;flex-direction:column;gap:9px;max-height:54vh;overflow-y:auto;padding:8px 4px}
.msg{max-width:80%;padding:10px 13px;border-radius:16px;font-size:.94rem;word-wrap:break-word;line-height:1.45}
.msg.them{background:#f0f4f2;align-self:flex-start;border-bottom-left-radius:5px}
.msg.me{background:var(--brand);color:#fff;align-self:flex-end;border-bottom-right-radius:5px}
.msg .file{display:inline-flex;align-items:center;gap:6px;font-size:.86rem;text-decoration:underline}
.msg.me .file{color:#eafffb}
.msg .t{display:block;font-size:.67rem;opacity:.7;margin-top:4px}

.pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:.74rem;font-weight:700}
.pill.paid{background:var(--ok-tint);color:var(--ok)}
.pill.pending{background:var(--busy-tint);color:var(--busy)}
.pill.refunded,.pill.failed{background:var(--danger-tint);color:var(--danger)}

.toggle-status{display:flex;gap:10px;flex-wrap:wrap}
.toggle-status button{flex:1;min-width:120px}
.toggle-status button.active{outline:3px solid var(--brand-tint)}

hr{border:none;border-top:1px solid var(--line);margin:18px 0}
.link{cursor:pointer;color:var(--brand);font-weight:600}
.thumb{width:44px;height:44px;border-radius:11px;background:var(--brand-tint);flex:0 0 auto;display:inline-flex;
  align-items:center;justify-content:center;font-weight:800;font-family:var(--ff-display);color:var(--brand);overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover}
.filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}
.filters a{padding:7px 14px;border-radius:20px;background:#fff;border:1px solid var(--line);font-size:.85rem;font-weight:700;color:var(--ink-soft)}
.filters a.on{background:var(--brand);color:#fff;border-color:var(--brand)}

/* ---------- Public footer ---------- */
.foot{border-top:1px solid var(--line);background:var(--surface);padding:22px 0;margin-top:20px}
.foot .wrap{color:var(--muted);font-size:.85rem}

/* ============================================================
   ADMIN SHELL (sidebar layout)
   ============================================================ */
.admin-shell{display:flex;min-height:100vh;background:var(--admin-bg)}
.sidebar{width:250px;flex:0 0 250px;background:linear-gradient(180deg,var(--sb),var(--sb2));color:var(--sb-ink);
  position:fixed;inset:0 auto 0 0;height:100vh;height:100dvh;display:flex;flex-direction:column;z-index:60;transition:transform .25s ease}
.sidebar .s-brand{display:flex;align-items:center;gap:10px;padding:22px 20px 18px;color:#fff;font-family:var(--ff-display);
  font-weight:800;font-size:1.16rem}
.sidebar .s-brand .logo{background:linear-gradient(135deg,var(--brand),var(--accent));width:34px;height:34px;border-radius:11px;
  display:inline-flex;align-items:center;justify-content:center;font-weight:900;color:#fff;font-size:1.1rem}
.sidebar .s-brand img{height:32px;max-width:130px;border-radius:7px;background:#fff;padding:3px}
.s-nav{display:flex;flex-direction:column;gap:3px;padding:8px 12px;flex:1;overflow-y:auto}
.s-lbl{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:#5f7d75;padding:14px 13px 6px;font-weight:700}
.s-nav a{display:flex;align-items:center;gap:12px;padding:11px 13px;border-radius:11px;color:#9dbdb5;font-weight:600;font-size:.93rem}
.s-nav a svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:2;flex:0 0 auto}
.s-nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.s-nav a.active{background:linear-gradient(135deg,var(--brand),#12a883);color:#fff;box-shadow:0 6px 16px rgba(13,125,106,.4)}
.s-foot{padding:14px 14px calc(14px + env(safe-area-inset-bottom));border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:8px}
.s-foot a{color:#9dbdb5;font-size:.88rem;font-weight:600;display:flex;align-items:center;gap:9px;padding:9px 11px;border-radius:10px}
.s-foot a:hover{background:rgba(255,255,255,.06);color:#fff}
.s-foot a svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:2}

.admin-main{margin-left:250px;flex:1;min-width:0;display:flex;flex-direction:column}
.admin-topbar{min-height:66px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;
  gap:14px;padding:0 22px;position:sticky;top:0;z-index:40}
.admin-topbar h1{font-size:1.18rem;margin:0}
.admin-chip{display:flex;align-items:center;gap:9px;font-weight:600;font-size:.9rem;color:var(--ink-soft)}
.admin-content{padding:26px 22px 70px;max-width:1120px;width:100%}
.hamburger{display:none;width:40px;height:40px;border:1px solid var(--line);background:#fff;border-radius:10px;
  align-items:center;justify-content:center;cursor:pointer}
.hamburger svg{width:20px;height:20px;stroke:var(--ink);fill:none;stroke-width:2}
.sb-overlay{display:none;position:fixed;inset:0;background:rgba(6,20,16,.45);z-index:55}

@media(max-width:900px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:none}
  .admin-main{margin-left:0}
  .hamburger{display:inline-flex}
  .sb-overlay.show{display:block}
}

@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ============================================================
   Responsive header + side menu
   ============================================================ */
.nav-right{display:flex;align-items:center;gap:14px}
.nav-desktop{display:flex;align-items:center;gap:15px}
.nav-desktop a{color:var(--ink-soft);font-weight:600;font-size:.93rem}
.nav-desktop a:hover{color:var(--brand)}
.nav-trigger{display:none;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);
  border-radius:24px;padding:4px 10px 4px 4px;cursor:pointer}
.nav-trigger .burger-ic{width:18px;height:18px;stroke:var(--ink-soft)}
.topbar .wrap{gap:10px}
.brand{flex:1 1 auto;min-width:0}
.brand span{line-height:1.15}
.nav-right{flex:0 0 auto}
@media(max-width:760px){
  .topbar .nav-desktop{display:none!important}
  .nav-right .nav-trigger{display:flex!important}
  .brand{font-size:1rem}
  .brand .logo{width:30px;height:30px}
  .topbar .wrap{min-height:56px}
}

.nav-overlay{display:none;position:fixed;inset:0;background:rgba(6,20,16,.45);z-index:70}
.nav-overlay.show{display:block}
.nav-panel{position:fixed;top:0;right:0;height:100vh;width:290px;max-width:85vw;background:#fff;z-index:71;
  transform:translateX(100%);transition:transform .25s ease;box-shadow:-12px 0 40px rgba(0,0,0,.16);
  display:flex;flex-direction:column}
.nav-panel.open{transform:none}
.np-head{display:flex;align-items:center;gap:12px;padding:22px 18px;border-bottom:1px solid var(--line);position:relative}
.np-close{position:absolute;top:10px;right:12px;background:none;border:none;font-size:1.7rem;line-height:1;color:var(--muted);cursor:pointer}
.np-links{display:flex;flex-direction:column;padding:12px;gap:2px}
.np-links a{padding:14px;border-radius:12px;font-weight:600;color:var(--ink);font-size:1rem}
.np-links a:hover{background:var(--brand-tint);color:var(--brand)}
.np-logout{margin-top:8px;color:var(--danger)!important}

/* Favourite heart */
.heart{background:none;border:none;font-size:1.5rem;line-height:1;color:#d4dbd8;cursor:pointer;padding:0 2px;
  flex:0 0 auto;transition:transform .12s,color .15s}
.heart:hover{transform:scale(1.15);color:#f0a6b1}
.heart.on{color:#e0574a}
.heart:disabled{opacity:.5}

/* File preview modal (chat attachments) */
.modal{display:none;position:fixed;inset:0;background:rgba(6,20,16,.72);z-index:80;
  align-items:center;justify-content:center;padding:18px}
.modal.show{display:flex}
.modal-box{background:#fff;border-radius:16px;max-width:920px;width:100%;max-height:92vh;overflow:auto;position:relative;padding:16px}
.modal-box img{max-width:100%;height:auto;border-radius:10px;display:block;margin:0 auto}
.modal-box iframe{width:100%;height:80vh;border:0;border-radius:10px;display:block}
.modal-close{position:absolute;top:8px;right:12px;font-size:1.9rem;line-height:1;background:none;border:none;color:#333;cursor:pointer;z-index:2}
.modal-dl{display:inline-block;margin-top:10px}

/* Incoming call banner */
.call-banner{display:none;align-items:center;gap:12px;background:var(--brand-tint);border:1px solid #bfe6db;
  border-radius:14px;padding:14px 16px;margin-top:12px}
.call-banner.show{display:flex}
.call-banner .pulse-dot{width:14px;height:14px;border-radius:50%;background:var(--ok);position:relative;flex:0 0 auto}
.call-banner .pulse-dot::after{content:"";position:absolute;inset:-4px;border-radius:50%;background:var(--ok);opacity:.35;animation:pulse 1.4s ease-out infinite}
.call-banner .cb-text{flex:1;font-weight:600;font-size:.95rem}

/* ============================================================
   Mobile polish
   ============================================================ */
html,body{overflow-x:hidden}          /* off-canvas panel must not create side-scroll */
@media(max-width:760px){
  .wrap{padding:0 14px}
  .hero h1{font-size:1.65rem}
  .hero p{font-size:.97rem}
  .doc-meta{gap:8px}
  .chips{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:6px;margin-bottom:16px}
  .chips button{flex:0 0 auto}
  .chips::-webkit-scrollbar{display:none}
  .table{font-size:.9rem}
  .modal-box iframe{height:70vh}
}

/* ============================================================
   Design refresh — depth, motion, focus states
   ============================================================ */
.btn{background:linear-gradient(135deg,var(--accent),var(--brand) 55%,var(--brand-dark));
  box-shadow:0 2px 6px rgba(13,125,106,.22);transition:transform .12s,box-shadow .18s,filter .18s}
.btn:hover{filter:brightness(1.04);box-shadow:0 9px 24px rgba(13,125,106,.32);transform:translateY(-1px)}
.btn:active{transform:translateY(0)}
.btn.ghost,.btn.outline,.btn.gray{background-image:none;box-shadow:none}
.btn.ghost:hover,.btn.outline:hover,.btn.gray:hover{transform:none}
.btn.danger{background:linear-gradient(135deg,#f2705f,var(--danger))}

.card{transition:box-shadow .2s,transform .2s}
.card.doc:hover{box-shadow:var(--shadow-lift);transform:translateY(-3px)}

input,select,textarea{transition:border-color .15s,box-shadow .15s}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}

.chips button{transition:all .15s}
.chips button.on{box-shadow:0 5px 14px rgba(13,125,106,.28)}

.hero{box-shadow:0 22px 50px -22px rgba(10,95,81,.55)}
.avatar{box-shadow:0 2px 8px rgba(15,30,27,.12)}
#callCard{border:1px solid var(--brand-tint)}
.heart{transition:transform .12s,color .15s}

/* section headings get a subtle brand tick */
.card>h2:first-child{position:relative}

/* voice notes + search polish */
.chat audio{height:40px;vertical-align:middle}
#docSearch:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint);outline:none}
#recBtn.danger{color:#fff}

/* ============================================================
   Design refresh v2 — motion, depth, chat, presence
   ============================================================ */
/* doctor cards: fade-in + accent on hover */
@keyframes cardIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
.card.doc{animation:cardIn .35s ease both;position:relative;overflow:hidden}
.card.doc::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;
  background:linear-gradient(90deg,var(--accent),var(--brand));transform:scaleX(0);transform-origin:left;transition:transform .25s}
.card.doc:hover::before{transform:scaleX(1)}

/* stronger "online" presence — pulsing avatar ring */
.avatar.ring-online{box-shadow:0 0 0 3px #fff,0 0 0 5px var(--ok);position:relative}
.avatar.ring-online::after{content:"";position:absolute;inset:-5px;border-radius:50%;border:2px solid var(--ok);
  opacity:.5;animation:pulse 2s ease-out infinite}

/* chat: message pop-in, gradient for my bubbles, empty state */
@keyframes msgIn{from{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:none}}
.msg{animation:msgIn .2s ease both}
.msg.me{background:linear-gradient(135deg,var(--accent),var(--brand))}
.chat-empty{margin:auto;color:var(--muted);font-size:.92rem;text-align:center;padding:34px 12px}

/* section headings with a subtle brand tick */
.card>h2{display:flex;align-items:center;gap:9px}
.card>h2::before{content:"";width:4px;height:1.05em;border-radius:3px;
  background:linear-gradient(180deg,var(--accent),var(--brand));flex:0 0 auto}
.card>h2.no-tick::before{display:none}

/* hero eyebrow chip */
.hero .eyebrow{display:inline-block;background:rgba(255,255,255,.16);padding:5px 12px;border-radius:20px;
  font-weight:700;letter-spacing:.08em;font-size:.72rem;text-transform:uppercase}

/* buttons: tiny shine */
.btn:not(.ghost):not(.outline):not(.gray){position:relative;overflow:hidden}

/* nicer scrollbars in chat */
.chat::-webkit-scrollbar{width:7px}
.chat::-webkit-scrollbar-thumb{background:#cdd8d4;border-radius:8px}

/* ============================================================
   Notification bell (fix: was unstyled & overlapping brand)
   ============================================================ */
.noti-wrap{position:relative}
.noti-btn{background:#fff;border:1px solid var(--line);width:40px;height:40px;border-radius:50%;font-size:1.05rem;
  cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:1;position:relative;padding:0}
.noti-btn:hover{background:var(--brand-tint)}
.noti-badge{position:absolute;top:-4px;right:-4px;background:var(--danger);color:#fff;font-size:.6rem;font-weight:700;
  min-width:17px;height:17px;border-radius:9px;display:flex;align-items:center;justify-content:center;padding:0 4px}
.noti-drop{display:none;position:fixed;top:62px;right:12px;left:auto;width:320px;max-width:calc(100vw - 24px);
  max-height:72vh;overflow-y:auto;background:#fff;border:1px solid var(--line);border-radius:14px;
  box-shadow:var(--shadow-lift);z-index:200}
.noti-drop.show{display:block}
.noti-head{padding:12px 15px;font-weight:700;font-family:var(--ff-display);border-bottom:1px solid var(--line)}
.noti-empty{padding:24px 15px;color:var(--muted);text-align:center;font-size:.9rem}
.noti-item{padding:11px 15px;border-bottom:1px solid var(--line-soft);font-size:.88rem;line-height:1.4}
.noti-item:last-child{border-bottom:none}

/* ============================================================
   Brand — keep tidy across devices
   ============================================================ */
.brand{display:flex;align-items:center;gap:9px;font-family:var(--ff-display);font-weight:800;color:var(--ink);
  font-size:1.12rem;min-width:0}
.brand span{line-height:1.12}
.brand .logo,.brand .brand-logo{width:34px;height:34px;flex:0 0 auto}
.brand-logo{object-fit:contain;border-radius:8px}
.topbar .wrap{display:flex;align-items:center;justify-content:space-between;gap:10px}
@media(max-width:760px){
  .brand{font-size:.98rem;gap:7px;max-width:58vw}
  .brand span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  .noti-btn{width:38px;height:38px;font-size:1rem}
  .nav-right{gap:8px}
}
@media(max-width:400px){ .brand span{font-size:.88rem} .brand .logo,.brand .brand-logo{width:30px;height:30px} }

/* ============================================================
   Print → PDF (reports)
   ============================================================ */
@media print{
  .sidebar,.sb-overlay,.admin-topbar,.topbar,.nav-panel,.nav-overlay,.noprint,.btn,.foot{display:none!important}
  .admin-main{margin:0!important;padding:0!important}
  .admin-shell{display:block!important}
  body{background:#fff!important}
  .card{box-shadow:none!important;border:1px solid #ddd!important;break-inside:avoid;page-break-inside:avoid}
  a{color:#000!important;text-decoration:none}
  .print-title{display:block!important}
}
.print-title{display:none}

/* footer credit */
.foot .dev-credit{display:block;margin-top:5px;opacity:.85}
.foot .dev-credit a{color:var(--accent);font-weight:600}
.admin-credit{padding:18px 24px;text-align:center;color:var(--muted);font-size:.82rem}
.admin-credit a{color:var(--brand);font-weight:600}

/* theme picker */
.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:6px}
.theme-opt{display:flex;align-items:center;gap:9px;padding:9px 11px;border:1.5px solid var(--line);border-radius:12px;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.theme-opt:hover{border-color:var(--brand)}
.theme-opt.sel{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-tint)}
.theme-opt .sw{width:26px;height:26px;border-radius:8px;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}
.theme-opt .tn{font-size:.86rem;font-weight:600}

/* Fix: notification dropdown must stay inside the screen on mobile */
@media(max-width:760px){
  .noti-drop{position:fixed;top:60px;left:10px;right:10px;width:auto;max-width:none}
}

/* How it works */
.how{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0 6px}
.how-step{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px 18px;box-shadow:var(--shadow)}
.how-ic{font-size:1.8rem;width:52px;height:52px;display:flex;align-items:center;justify-content:center;
  background:var(--brand-tint);border-radius:14px;margin-bottom:10px}
.how-t{font-family:var(--ff-display);font-weight:700;font-size:1.02rem;margin-bottom:4px}
.how-step p{color:var(--muted);font-size:.88rem;margin:0;line-height:1.5}
@media(max-width:760px){ .how{grid-template-columns:1fr;gap:10px} }

/* announcement bar */
.announce{background:linear-gradient(90deg,var(--brand),var(--brand-dark));color:#fff;padding:10px 16px;
  display:flex;align-items:center;justify-content:center;gap:12px;font-size:.9rem;font-weight:600;position:relative;text-align:center}
.announce button{position:absolute;right:12px;background:rgba(255,255,255,.2);border:none;color:#fff;
  width:24px;height:24px;border-radius:50%;font-size:1.1rem;line-height:1;cursor:pointer}
.announce button:hover{background:rgba(255,255,255,.35)}

/* floating WhatsApp support */
.wa-float{position:fixed;right:18px;bottom:18px;width:56px;height:56px;border-radius:50%;background:#25D366;
  display:flex;align-items:center;justify-content:center;box-shadow:0 6px 20px rgba(37,211,102,.5);z-index:90;
  transition:transform .15s,box-shadow .2s}
.wa-float:hover{transform:scale(1.08);box-shadow:0 10px 28px rgba(37,211,102,.6)}
@media(max-width:760px){ .wa-float{width:52px;height:52px;right:14px;bottom:14px} }
@media print{ .wa-float,.announce{display:none!important} }

/* settings tabs */
.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px;overflow-x:auto}
.settings-tabs .stab{background:#fff;border:1px solid var(--line);border-radius:24px;padding:9px 16px;font-weight:600;
  font-size:.9rem;cursor:pointer;white-space:nowrap;color:var(--ink-soft);transition:all .15s}
.settings-tabs .stab:hover{border-color:var(--brand);color:var(--brand)}
.settings-tabs .stab.on{background:var(--brand);border-color:var(--brand);color:#fff;box-shadow:0 4px 12px rgba(13,125,106,.25)}
.tab-pane{display:none}
.tab-pane.on{display:block;animation:cardIn .25s ease both}

/* colour wheels */
.wheel-row{display:flex;gap:26px;flex-wrap:wrap;align-items:flex-start}
.wheel-box{text-align:center}
.wheel-box .wheel{margin-bottom:8px}
.wheel-box input[type=color]{width:80px;height:40px;padding:3px;border-radius:8px}
.wheel-preview{padding:14px;border:1px dashed var(--line);border-radius:14px;min-width:150px}
.wheel-preview .pv-title{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:10px}
.pv-btn{color:#fff;border:none;border-radius:10px;padding:10px 16px;font-weight:700;cursor:default;display:block;width:100%;margin-bottom:10px}
.pv-badge{display:inline-block;color:#fff;padding:5px 12px;border-radius:20px;font-size:.8rem;font-weight:700}

/* footer nav */
.foot-nav{display:flex;gap:16px;justify-content:center;margin-bottom:8px}
.foot-nav a{color:var(--ink-soft);font-weight:600;font-size:.85rem}
.foot-nav a:hover{color:var(--brand)}

/* notification read/unread */
.noti-item.unread{background:var(--brand-tint)}
.noti-item .nt{display:block;font-size:.72rem;color:var(--muted);margin-top:3px}

/* site info popup (admin-managed) */
.site-popup{display:none;position:fixed;inset:0;background:rgba(6,20,16,.6);z-index:120;align-items:center;justify-content:center;padding:20px}
.sp-box{background:#fff;border-radius:18px;max-width:440px;width:100%;padding:28px 24px;position:relative;box-shadow:0 25px 60px rgba(0,0,0,.3);animation:cardIn .3s ease both}
.sp-close{position:absolute;top:12px;right:14px;background:none;border:none;font-size:1.8rem;line-height:1;color:var(--muted);cursor:pointer}
.sp-title{margin:0 0 12px;font-family:var(--ff-display)}
.sp-body{color:var(--ink-soft);line-height:1.7;font-size:.96rem;margin-bottom:18px}
.sp-ok{margin-top:4px}

/* ---- in-call overlay: names, timer, controls ---- */
.call-stage{position:relative;border-radius:14px;overflow:hidden;background:#0b201b}
.call-stage:fullscreen{border-radius:0}
.call-stage:fullscreen #jitsi{height:100vh!important}
.call-topbar{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;align-items:center;
  padding:10px 14px;background:linear-gradient(to bottom,rgba(0,0,0,.55),transparent);color:#fff;z-index:3;pointer-events:none}
.call-parties{font-weight:700;font-size:.92rem;text-shadow:0 1px 3px rgba(0,0,0,.6)}
.call-parties .sep{opacity:.6;margin:0 4px}
.call-timer{font-variant-numeric:tabular-nums;font-weight:700;background:rgba(0,0,0,.4);padding:3px 10px;border-radius:20px;font-size:.9rem}
.call-controls{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:10px;z-index:4;
  background:rgba(10,20,17,.72);backdrop-filter:blur(6px);padding:8px 12px;border-radius:40px}
.cc-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  width:56px;height:56px;border:none;border-radius:50%;background:rgba(255,255,255,.14);color:#fff;
  font-size:1.2rem;cursor:pointer;transition:background .15s}
.cc-btn span{font-size:.6rem;font-weight:600;opacity:.9}
.cc-btn:hover{background:rgba(255,255,255,.26)}
.cc-btn.off{background:#c0392b}
.cc-btn.hang{background:#c0392b}
.cc-btn.hang:hover{background:#e74c3c}
@media(max-width:520px){ .cc-btn{width:48px;height:48px;font-size:1rem} .call-parties{font-size:.8rem} }

/* clickable notification items */
a.noti-item{display:block;text-decoration:none;color:inherit}
a.noti-item:hover{background:var(--brand-tint)}

/* admin live toasts + nav badges */
.admin-toasts{position:fixed;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:300}
.admin-toast{display:flex;align-items:center;gap:10px;background:#0d7d6a;color:#fff;text-decoration:none;
  padding:13px 16px;border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.25);font-weight:600;font-size:.9rem;
  max-width:300px;animation:cardIn .25s ease both}
.admin-toast:hover{background:#0b6a5a}
.admin-toast .at-x{margin-left:auto;font-size:1.2rem;opacity:.8;cursor:pointer;line-height:1}
.nav-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;
  margin-left:auto;background:#f0a500;color:#111;border-radius:20px;font-size:.72rem;font-weight:800}

/* admin online-now panel */
.online-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}
.online-item{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:600}
.online-item .dot{width:9px;height:9px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2);flex:0 0 auto}
.online-item .muted{font-weight:400}
.pill{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 7px;
  background:var(--brand);color:#fff;border-radius:20px;font-size:.75rem;font-weight:800}

/* online/offline badge in admin lists */
.online-badge{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:.82rem}
.online-badge.on{color:#15803d}
.online-badge.on .dot{width:8px;height:8px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.2)}
.online-badge.off{color:#94a3b8}
