:root {
  /* Clinical teal — calm dental lab feel, high readability */
  --primary:#0f766e;--primary-dark:#0d5f59;--primary-light:#ccfbf1;
  --secondary:#0e7490;--accent:#ea580c;--accent2:#0d9488;
  --success:#16a34a;--success-light:#dcfce7;--success-dark:#15803d;
  --warning:#ea580c;--warning-light:#fff7ed;--warning-dark:#c2410c;--warning-darker:#9a3412;
  --warning-soft:#ffedd5;--warning-border:#fdba74;--warning-ring:rgba(234,88,12,.16);--warning-glow:rgba(234,88,12,.24);
  --danger:#dc2626;--danger-light:#fee2e2;--danger-dark:#b91c1c;
  --info:#0284c7;--info-light:#e0f2fe;--info-dark:#0369a1;
  --bg:#f0f7f6;--bg-top:#f7fcfb;--bg-bottom:#e4f1ef;
  --surface:#ffffff;--surface2:#f5faf9;--surface3:#e8f3f1;
  --surface-glass:rgba(255,255,255,.82);--surface-glass-strong:rgba(255,255,255,.94);--surface-highlight:rgba(255,255,255,.78);
  --border:#d5e5e2;--text:#134e4a;--text2:#3f6864;--text3:#7a9a95;
  --sidebar-w:276px;--header-h:64px;
  --radius:16px;--radius-sm:10px;--radius-lg:22px;
  --shadow:0 8px 24px rgba(15,70,64,.06),0 2px 8px rgba(15,70,64,.04);
  --shadow-md:0 16px 40px rgba(15,70,64,.09),0 6px 16px rgba(15,70,64,.05);
  --shadow-lg:0 24px 64px rgba(15,70,64,.12),0 12px 28px rgba(15,70,64,.07);
  --backdrop-blur:20px;--page-glow:rgba(15,118,110,.14);--page-glow-2:rgba(14,116,144,.10);--page-warm:rgba(234,88,12,.08);
  --t:.2s cubic-bezier(.4,0,.2,1);
  --focus-ring:0 0 0 4px rgba(15,118,110,.16);
  --tooth1:#0f766e;--tooth2:#0e7490;--tooth3:#14b8a6;
  --field-h:48px;
}
[data-theme="dark"]{
  --primary:#2dd4bf;--primary-dark:#14b8a6;--primary-light:#0f2f2c;
  --success-light:#0a3d24;--success-dark:#4ade80;
  --warning-light:#3d1f0a;--warning-dark:#fdba74;--warning-darker:#fed7aa;
  --warning-soft:#2a1608;--warning-border:#9a3412;--warning-ring:rgba(234,88,12,.22);--warning-glow:rgba(234,88,12,.28);
  --danger-light:#3f0a0a;--danger-dark:#f87171;
  --info-light:#0c2a3d;--info-dark:#38bdf8;
  --bg:#071412;--bg-top:#050f0e;--bg-bottom:#0c1c1a;
  --surface:#0d1f1c;--surface2:#132824;--surface3:#1a332e;
  --surface-glass:rgba(13,31,28,.82);--surface-glass-strong:rgba(13,31,28,.94);--surface-highlight:rgba(255,255,255,.04);
  --border:#1e3d38;--text:#e6f7f4;--text2:#9cb8b3;--text3:#5a7a74;
  --shadow:0 10px 30px rgba(0,0,0,.36),0 2px 10px rgba(0,0,0,.28);
  --shadow-md:0 18px 44px rgba(0,0,0,.44),0 8px 20px rgba(0,0,0,.32);
  --shadow-lg:0 28px 72px rgba(0,0,0,.52),0 14px 36px rgba(0,0,0,.38);
  --page-glow:rgba(45,212,191,.12);--page-glow-2:rgba(56,189,248,.08);--page-warm:rgba(234,88,12,.06);
  --focus-ring:0 0 0 4px rgba(45,212,191,.22);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:'Noto Kufi Arabic',sans-serif;
  background:var(--bg);
  color:var(--text);
  min-height:100vh;direction:rtl;
  font-size:14px;line-height:1.7;overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
  position:relative;
  isolation:isolate;
}
/* fixed gradient layer — background-attachment:fixed is unreliable on iOS/Android */
body::before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(circle at 100% 0,var(--page-glow),transparent 32%),
    radial-gradient(circle at 0 12%,var(--page-glow-2),transparent 26%),
    radial-gradient(circle at 15% 100%,var(--page-warm),transparent 30%),
    linear-gradient(180deg,var(--bg-top) 0%,var(--bg) 50%,var(--bg-bottom) 100%);
}
input,select,textarea,button{font-family:inherit}
input[type="date"],input[type="number"],input[type="text"],input[type="password"],input[type="tel"]{font-size:16px}

/* ===== ANIMATIONS ===== */
@keyframes fadeIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideIn{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}
@keyframes pop{0%{transform:scale(0.9);opacity:0}60%{transform:scale(1.04)}100%{transform:scale(1);opacity:1}}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}
@keyframes toastIn{from{opacity:0;transform:translateY(20px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes toastOut{to{opacity:0;transform:translateY(-10px) scale(.9)}}
@keyframes dotPulse{0%,80%,100%{opacity:0;transform:scale(0)}40%{opacity:1;transform:scale(1)}}
@keyframes gradAnim{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}

/* ===== LOGIN ===== */
#loginScreen{
  display:flex;align-items:center;justify-content:center;
  min-height:100vh;position:fixed;inset:0;z-index:9999;padding:20px;
  background:
    radial-gradient(ellipse 80% 60% at 12% 18%,rgba(234,88,12,.18),transparent 42%),
    radial-gradient(ellipse 70% 50% at 88% 82%,rgba(14,116,144,.22),transparent 45%),
    linear-gradient(145deg,#042f2e 0%,#0f766e 48%,#0e7490 100%);
  background-size:200% 200%;animation:gradAnim 12s ease infinite;
}
.login-shell{width:100%;max-width:460px}
.login-card{
  background:var(--surface-glass-strong);border-radius:28px;padding:40px 36px 32px;
  width:100%;box-shadow:0 32px 80px rgba(2,24,22,.32);
  border:1px solid rgba(255,255,255,.28);backdrop-filter:blur(var(--backdrop-blur));
  animation:pop .45s ease;
}
.login-brand{text-align:center;margin-bottom:28px}
.login-logo{
  width:84px;height:84px;background:linear-gradient(145deg,#0f766e,#0e7490);
  border-radius:22px;display:flex;align-items:center;justify-content:center;
  margin:0 auto 14px;font-size:38px;color:#fff;
  box-shadow:0 14px 36px rgba(15,118,110,.42);
}
.login-name{font-size:30px;font-weight:900;color:var(--primary);letter-spacing:-.02em}
.login-sub{font-size:13px;color:var(--text3);margin-top:6px;line-height:1.6}
.login-form{margin-top:4px}
.login-remember{margin:4px 0 18px}
.login-hint{
  text-align:center;margin-top:16px;font-size:12px;color:var(--text3);line-height:1.6
}
.login-demo{
  margin-top:20px;padding-top:16px;border-top:1px dashed var(--border);
}
.login-demo-title{
  font-size:11px;font-weight:800;color:var(--text3);text-align:center;margin-bottom:10px;
  letter-spacing:.3px;
}
.login-demo-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.login-demo-btn{
  display:flex;flex-direction:column;align-items:center;gap:4px;padding:12px 6px;
  border-radius:14px;border:2px solid var(--border);background:var(--surface2);
  cursor:pointer;transition:var(--t);font-family:inherit;text-align:center;
}
.login-demo-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow)}
.login-demo-btn.admin{border-color:rgba(15,118,110,.35);background:linear-gradient(135deg,rgba(15,118,110,.08),rgba(14,116,144,.05))}
.login-demo-btn.admin:hover{border-color:var(--primary);background:var(--primary-light)}
.login-demo-btn.doctor{border-color:rgba(22,163,74,.25);background:linear-gradient(135deg,rgba(22,163,74,.06),transparent)}
.login-demo-btn.doctor:hover{border-color:var(--success);background:var(--success-light)}
.login-demo-btn i{font-size:18px;color:var(--primary)}
.login-demo-btn.doctor i{color:var(--success-dark)}
.login-demo-btn span{font-size:11px;font-weight:900;color:var(--text)}
.login-demo-btn small{font-size:9px;color:var(--text3);font-weight:700;direction:ltr}
@media(max-width:420px){.login-demo-grid{grid-template-columns:1fr}}
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:700;color:var(--text2);margin-bottom:7px}
.form-label .req,.form-label.required::after{content:' *';color:var(--danger);font-weight:900}
.fc,.form-control,.form-select,.form-textarea{
  width:100%;min-height:var(--field-h);padding:12px 14px;border:1.5px solid var(--border);border-radius:12px;
  background:var(--surface);color:var(--text);font-family:inherit;
  font-size:15px;transition:var(--t);outline:none;
}
.fc:focus,.form-control:focus,.form-select:focus,.form-textarea:focus{
  border-color:var(--primary);box-shadow:var(--focus-ring)
}
.fc.is-invalid,.form-control.is-invalid,.form-select.is-invalid,.form-textarea.is-invalid{
  border-color:var(--danger);box-shadow:0 0 0 4px rgba(220,38,38,.12)
}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;
  border-radius:12px;border:none;cursor:pointer;font-family:inherit;
  font-size:14px;font-weight:700;transition:var(--t);text-decoration:none;
  white-space:nowrap;line-height:1.4;min-height:44px;
}
.btn-lg{padding:14px 24px;font-size:15px;border-radius:14px;min-height:52px}
.btn-primary{background:linear-gradient(135deg,var(--primary),var(--primary-dark));color:#fff;box-shadow:0 6px 18px rgba(15,118,110,.28)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(15,118,110,.36)}
.btn-success{background:var(--success);color:#fff;box-shadow:0 4px 12px rgba(34,197,86,.25)}
.btn-success:hover{background:var(--success-dark);transform:translateY(-1px);box-shadow:0 6px 16px rgba(34,197,86,.35)}
.btn-danger{background:var(--danger);color:#fff;box-shadow:0 4px 12px rgba(239,68,68,.25)}
.btn-danger:hover{background:var(--danger-dark);transform:translateY(-1px);box-shadow:0 6px 16px rgba(239,68,68,.35)}
.btn-warning{
  background:linear-gradient(135deg,var(--warning),var(--warning-dark));color:#fff;
  box-shadow:0 12px 24px var(--warning-glow);font-weight:700;border:1px solid rgba(255,255,255,.18)
}
.btn-warning:hover{transform:translateY(-2px);box-shadow:0 18px 32px var(--warning-glow);background:linear-gradient(135deg,var(--warning),var(--warning-darker))}
.btn-warning:active{transform:translateY(-1px);box-shadow:0 8px 18px var(--warning-ring)}
.btn-secondary{background:var(--surface2);color:var(--text);border:1.5px solid var(--border);box-shadow:0 2px 4px rgba(0,0,0,.04)}
.btn-secondary:hover{background:var(--surface3);border-color:var(--primary);box-shadow:0 4px 12px rgba(0,0,0,.08)}
.btn-outline{background:transparent;color:var(--primary);border:2px solid var(--primary);transition:var(--t)}
.btn-outline:hover{background:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(15,118,110,.25)}
.btn-outline.warning{color:var(--warning-dark);border-color:var(--warning-border);background:rgba(251,146,60,.05)}
.btn-outline.warning:hover{background:linear-gradient(135deg,var(--warning),var(--warning-dark));color:#fff;box-shadow:0 10px 20px var(--warning-glow);border-color:transparent}
.btn-icon{padding:9px;border-radius:10px;background:var(--surface2);color:var(--text2);border:1px solid var(--border);flex-shrink:0;transition:var(--t)}
.btn-icon:hover{color:var(--primary);border-color:var(--primary);background:var(--primary-light);transform:translateY(-1px)}
.btn-icon.warning{color:var(--warning-dark)}
.btn-icon.warning:hover{color:#fff;background:linear-gradient(135deg,var(--warning),var(--warning-dark));border-color:transparent;box-shadow:0 10px 18px var(--warning-glow)}
.btn-icon.danger{color:var(--danger)}
.btn-icon.danger:hover{color:#fff;background:var(--danger);border-color:var(--danger);box-shadow:0 4px 12px rgba(239,68,68,.3)}
.btn-icon.success{color:var(--success)}
.btn-icon.success:hover{color:#fff;background:var(--success);border-color:var(--success);box-shadow:0 4px 12px rgba(34,197,86,.3)}
.btn-sm{padding:7px 14px;font-size:12px;border-radius:8px}
.btn-xs{padding:5px 10px;font-size:11px;border-radius:6px}
.btn-full{width:100%;justify-content:center}

/* ===== LAYOUT ===== */
#app{display:none;min-height:100vh;flex-direction:column}
#app.is-open{display:flex}
.sidebar{
  position:fixed;top:0;right:0;width:var(--sidebar-w);height:100vh;
  background:var(--surface-glass);border-left:1px solid var(--border);
  display:flex;flex-direction:column;z-index:100;
  transition:transform var(--t),opacity var(--t),box-shadow var(--t);
  box-shadow:var(--shadow-md);backdrop-filter:blur(var(--backdrop-blur));
  overflow-y:auto;
  transform:translateX(0);
  opacity:1;
  pointer-events:auto;
}
.sidebar.closed{
  transform:translateX(100%);
  opacity:0;
  pointer-events:none;
}
.header{
  position:fixed;top:0;left:0;right:var(--sidebar-w);height:var(--header-h);
  background:var(--surface-glass);border-bottom:1px solid var(--border);
  display:flex;align-items:center;padding:0 20px;gap:14px;z-index:99;
  box-shadow:0 8px 24px rgba(15,23,42,.05);backdrop-filter:blur(var(--backdrop-blur));
}
.header-title{font-size:18px;font-weight:800;color:var(--text);flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.header-actions{display:flex;align-items:center;gap:8px}
.main{
  margin-right:var(--sidebar-w);margin-top:var(--header-h);
  margin-bottom:0;
  padding:28px 26px 36px;
  min-height:calc(100vh - var(--header-h));
  flex:1;
}
.footer{
  margin-right:var(--sidebar-w);
  margin-top:auto;
}

/* Sidebar components */
.sidebar-logo{
  padding:20px 18px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;gap:12px;
}
.logo-icon{
  width:46px;height:46px;border-radius:14px;flex-shrink:0;
  background:linear-gradient(145deg,#0f766e,#0e7490);
  display:flex;align-items:center;justify-content:center;
  font-size:22px;color:#fff;box-shadow:0 4px 16px rgba(15,118,110,.32);
}
.logo-text{font-size:18px;font-weight:900;color:var(--primary)}
.logo-sub{font-size:11px;color:var(--text3)}
.sidebar-nav{flex:1;overflow-y:auto;padding:10px 8px;scrollbar-width:thin}
.nav-section{
  font-size:10.5px;font-weight:800;color:var(--text3);
  padding:10px 12px 4px;letter-spacing:.08em;text-transform:uppercase;
}
.nav-item{
  display:flex;align-items:center;gap:11px;padding:11px 13px;
  border-radius:11px;cursor:pointer;color:var(--text2);
  font-weight:600;font-size:14px;transition:var(--t);
  margin-bottom:4px;border:1px solid transparent;background:none;
  width:100%;text-align:right;position:relative;
}
.nav-item:hover{
  background:linear-gradient(135deg,rgba(15,118,110,.12),rgba(14,116,144,.08));
  color:var(--primary);border-color:rgba(15,118,110,.12);transform:translateX(-2px)
}
.nav-item.active{
  background:linear-gradient(135deg,rgba(15,118,110,.18),rgba(14,116,144,.12));
  color:var(--primary);font-weight:700;
  border-right:3px solid var(--primary);border-color:rgba(15,118,110,.12);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 12px 26px rgba(15,118,110,.08);
}
.nav-icon{width:22px;text-align:center;font-size:15px;flex-shrink:0}
.nav-badge{
  margin-right:auto;background:var(--primary);color:#fff;
  font-size:10px;padding:2px 7px;border-radius:20px;font-weight:800;
  min-width:20px;text-align:center;
}
.sidebar-footer{padding:12px 8px;border-top:1px solid var(--border)}
.clinic-selector{
  background:linear-gradient(135deg,var(--surface-highlight),rgba(15,118,110,.06),rgba(14,116,144,.04));
  border:1px solid var(--border);border-radius:12px;padding:10px 12px;
  margin:8px;cursor:pointer;transition:var(--t);box-shadow:inset 0 1px 0 rgba(255,255,255,.28);
}
.clinic-selector:hover{border-color:var(--primary);background:var(--primary-light);transform:translateY(-2px);box-shadow:var(--shadow)}
.clinic-name{font-size:13px;font-weight:700;color:var(--text)}
.clinic-hint{font-size:11px;color:var(--text3)}

/* ===== CARDS ===== */
.card{
  background:linear-gradient(180deg,var(--surface-glass-strong),var(--surface));border-radius:var(--radius);
  border:1px solid var(--border);box-shadow:var(--shadow);overflow:hidden;
}
.card-header{
  padding:16px 20px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  background:linear-gradient(180deg,var(--surface-highlight),transparent);
}
.card-title{font-size:15px;font-weight:800;color:var(--text)}
.card-body{padding:20px}
.section-title{font-size:22px;font-weight:900;color:var(--text);margin-bottom:20px}

/* ===== STATS ===== */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}
.stat-card{
  background:linear-gradient(180deg,var(--surface-glass-strong),var(--surface));border-radius:var(--radius);padding:20px;
  border:1px solid var(--border);box-shadow:var(--shadow);
  display:flex;align-items:center;gap:16px;
  transition:var(--t);cursor:default;
  animation:fadeIn .4s ease both;position:relative;overflow:hidden;
}
.stat-card::before{content:'';position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,255,255,.36),transparent 55%);opacity:0;transition:var(--t)}
.stat-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:rgba(15,118,110,.22);background:linear-gradient(135deg,rgba(15,118,110,.03),transparent)}
.stat-card:hover::before{opacity:1}
.stat-card.warning{border-color:var(--warning-border);box-shadow:0 12px 28px var(--warning-ring)}
.stat-card.warning:hover{background:linear-gradient(135deg,var(--warning-light),transparent 72%);box-shadow:0 18px 32px var(--warning-ring)}
.stat-icon{
  width:56px;height:56px;border-radius:16px;
  display:flex;align-items:center;justify-content:center;
  font-size:24px;flex-shrink:0;
  background:linear-gradient(135deg,rgba(15,118,110,.1),rgba(14,116,144,.05));
  box-shadow:0 2px 8px rgba(15,118,110,.1);
}
.stat-icon.warning{
  background:linear-gradient(135deg,var(--warning-soft),rgba(251,146,60,.12));
  box-shadow:0 10px 20px var(--warning-ring);
  color:var(--warning-dark);
}
.stat-icon.danger{
  background:linear-gradient(135deg,rgba(239,68,68,.1),rgba(239,68,68,.05));
  box-shadow:0 2px 8px rgba(239,68,68,.1);
  color:var(--danger);
}
.stat-icon.success{
  background:linear-gradient(135deg,rgba(34,197,86,.1),rgba(34,197,86,.05));
  box-shadow:0 2px 8px rgba(34,197,86,.1);
  color:var(--success);
}
.stat-value{font-size:26px;font-weight:900;color:var(--text);line-height:1}
.stat-label{font-size:12px;color:var(--text2);margin-top:4px;font-weight:600}
.stat-sub{font-size:11px;color:var(--text3);margin-top:2px}

/* ===== TABLE ===== */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table{width:100%;border-collapse:collapse}
th{
  padding:11px 14px;background:var(--surface2);color:var(--text2);
  font-size:12px;font-weight:800;text-align:right;
  border-bottom:1px solid var(--border);white-space:nowrap;
}
td{
  padding:13px 14px;border-bottom:1px solid var(--border);
  color:var(--text);font-size:13.5px;vertical-align:middle;
}
tr:last-child td{border-bottom:none}
tr:hover td{background:var(--surface2)}
.table-wrap table{min-width:700px}

/* ===== BADGE ===== */
.badge{
  display:inline-flex;align-items:center;gap:4px;
  padding:3px 10px;border-radius:20px;
  font-size:11.5px;font-weight:700;white-space:nowrap;
  transition:var(--t);
}
.badge-success{background:var(--success-light);color:var(--success-dark);border:1px solid var(--success);box-shadow:0 2px 4px rgba(34,197,86,.1)}
.badge-success:hover{transform:translateY(-1px);box-shadow:0 4px 8px rgba(34,197,86,.15)}
.badge-danger{background:var(--danger-light);color:var(--danger-dark);border:1px solid var(--danger);box-shadow:0 2px 4px rgba(239,68,68,.1)}
.badge-danger:hover{transform:translateY(-1px);box-shadow:0 4px 8px rgba(239,68,68,.15)}
.badge-warning{background:linear-gradient(135deg,var(--warning-light),var(--warning-soft));color:var(--warning-dark);border:1px solid var(--warning-border);box-shadow:0 8px 16px rgba(251,146,60,.12);font-weight:800}
.badge-warning:hover{transform:translateY(-1px);box-shadow:0 12px 20px rgba(251,146,60,.18)}
.badge-info{background:var(--info-light);color:var(--info-dark);border:1px solid var(--info);box-shadow:0 2px 4px rgba(59,130,246,.1)}
.badge-info:hover{transform:translateY(-1px);box-shadow:0 4px 8px rgba(59,130,246,.15)}
.badge-primary{background:var(--primary-light);color:var(--primary);border:1px solid var(--primary);box-shadow:0 2px 4px rgba(15,118,110,.1)}
.badge-primary:hover{transform:translateY(-1px);box-shadow:0 4px 8px rgba(15,118,110,.15)}
.badge-gray{background:var(--surface2);color:var(--text2);border:1px solid var(--border)}
.badge-purple{background:#ccfbf1;color:#0e7490;border:1px solid #99f6e4;box-shadow:0 2px 4px rgba(14,116,144,.1)}
.badge-purple:hover{transform:translateY(-1px);box-shadow:0 4px 8px rgba(14,116,144,.15)}
[data-theme="dark"] .badge-success{background:var(--success-light);color:var(--success-dark);border-color:#047857}
[data-theme="dark"] .badge-danger{background:var(--danger-light);color:var(--danger-dark);border-color:#991b1b}
[data-theme="dark"] .badge-warning{background:linear-gradient(135deg,var(--warning-light),var(--warning-soft));color:var(--warning-dark);border-color:rgba(251,146,60,.35)}
[data-theme="dark"] .badge-info{background:var(--info-light);color:var(--info-dark);border-color:#1e40af}
[data-theme="dark"] .badge-purple{background:#0f2f2c;color:#5eead4;border-color:#134e4a}

/* ===== MODAL ===== */
.modal-overlay{
  position:fixed;inset:0;background:rgba(0,0,0,.55);
  display:none;align-items:center;justify-content:center;
  z-index:1000;padding:16px;backdrop-filter:blur(4px);
}
.modal-overlay.open{display:flex;animation:fadeIn .2s ease}
.modal{
  background:var(--surface);border-radius:20px;
  width:100%;max-width:660px;max-height:92vh;
  overflow-y:auto;box-shadow:var(--shadow-lg);
  animation:pop .25s ease;
}
.modal-lg{max-width:960px}
.modal-xl{max-width:1140px}
.modal-sm{max-width:440px}
.modal-header{
  padding:20px 24px;border-bottom:1px solid var(--border);
  display:flex;align-items:center;justify-content:space-between;
  position:sticky;top:0;background:var(--surface);z-index:1;
}
.modal-title{font-size:17px;font-weight:800;color:var(--text)}
.modal-body{padding:24px}
.modal-footer{
  padding:16px 24px;border-top:1px solid var(--border);
  display:flex;gap:10px;justify-content:flex-end;
  position:sticky;bottom:0;background:var(--surface);
}

/* ===== FORMS ===== */
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.form-row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.form-row-4{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.form-group{margin-bottom:16px}
.form-label{display:block;font-size:13px;font-weight:700;color:var(--text2);margin-bottom:6px}
.form-control,.form-select,.form-textarea{
  width:100%;padding:11px 14px;border:2px solid var(--border);border-radius:11px;
  background:var(--surface);color:var(--text);font-family:inherit;
  font-size:14px;transition:var(--t);outline:none;
}
.form-control:focus,.form-select:focus,.form-textarea:focus{
  border-color:var(--primary);box-shadow:0 0 0 3px rgba(15,118,110,.12)
}
.form-textarea{resize:vertical;min-height:90px}
.form-hint{font-size:11.5px;color:var(--text3);margin-top:4px}
select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%2364748b'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left 10px center;background-size:20px;padding-left:36px}

/* ===== SEARCH BAR ===== */
.search-bar{
  display:flex;align-items:center;gap:8px;
  background:var(--surface-glass-strong);border:1.5px solid var(--border);
  border-radius:12px;padding:8px 14px;transition:var(--t);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.32);
}
.search-bar:focus-within{border-color:var(--primary);background:var(--surface);box-shadow:0 0 0 4px rgba(15,118,110,.08),var(--shadow)}
.search-bar input{background:none;border:none;outline:none;color:var(--text);font-family:inherit;font-size:14px;flex:1;min-width:0}
.search-bar input::placeholder{color:var(--text3)}

/* ===== FILTER BAR ===== */
.filter-bar{
  display:flex;flex-wrap:wrap;gap:10px;
  background:var(--surface);border:1px solid var(--border);
  border-radius:var(--radius);padding:14px 16px;margin-bottom:16px;
}

/* ===== DENTAL CHART (unified 1-8 system) ===== */
.dental-chart{
  --dc-accent:var(--primary);
  --dc-accent-bg:rgba(15,118,110,.14);
  --dc-accent-border:var(--primary);
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow:var(--shadow);
  overflow:hidden;
}
.dental-chart-head{
  display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:14px 16px;border-bottom:1px solid var(--border);
  background:linear-gradient(180deg,var(--surface2),var(--surface));
  flex-wrap:wrap;
}
.dental-chart-title{font-size:15px;font-weight:900;color:var(--text);letter-spacing:-.2px}
.dental-chart-sub{font-size:11px;color:var(--text3);font-weight:700;margin-top:2px}
.dental-chart-actions{display:flex;gap:6px;flex-wrap:wrap}
.dental-chart-body{padding:16px 12px 12px}
.dental-mouth-frame{
  border-radius:28px;
  background:
    radial-gradient(ellipse 65% 55% at 50% 4%,rgba(15,118,110,.10),transparent 72%),
    radial-gradient(ellipse 65% 55% at 50% 96%,rgba(15,118,110,.10),transparent 72%);
  padding:14px 4px;
}
.dental-chart-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.dental-chart-scroll-inner{width:max-content;min-width:100%;margin:0 auto}
.dental-arch-label{
  text-align:center;font-size:13px;font-weight:800;color:var(--dc-accent-border,#0f766e);
  margin:0 0 8px;letter-spacing:.2px;
}
.dental-arch-row{
  display:flex;justify-content:center;align-items:flex-end;gap:4px;
  direction:ltr;flex-wrap:nowrap;
}
.dental-arch-row.lower{align-items:flex-start;margin-top:4px}
/* Compact full-arch layout (embedded charts) — all 16 teeth of one arch in a single
   responsive row, columns shrink to fit so it never needs horizontal scrolling. */
.dental-full-row{
  position:relative;z-index:0;
  display:grid;grid-template-columns:repeat(16,minmax(0,1fr));gap:3px;
  direction:ltr;padding:18px 10px 14px;margin:0 auto 4px;
  max-width:680px;
}
.dental-full-row::before{
  content:'';position:absolute;inset:0;z-index:-1;
  border-radius:999px;
  background:linear-gradient(180deg,rgba(15,118,110,.07),rgba(15,118,110,.02) 60%);
  border:1px solid rgba(15,118,110,.14);
  box-shadow:inset 0 1px 3px rgba(15,118,110,.06);
}
.dental-full-row .dental-tooth-wrap{min-width:0;position:relative;transition:transform .22s cubic-bezier(.34,1.4,.64,1)}
.dental-full-row .dental-tooth-wrap.mid-gap{margin-inline-end:8px}
.dental-full-row .dental-tooth{
  width:100%;max-width:44px;min-width:16px;margin:0 auto;
  border-radius:12px 12px 10px 10px;height:52px;
}
.dental-full-row .dental-tooth.lower{border-radius:10px 10px 12px 12px;height:50px}
.dental-full-row .dental-tooth.selected::before{width:15px;height:15px;font-size:8px;top:-7px;left:50%;transform:translateX(-50%);right:auto}
.dental-full-row .dental-tooth-icon{
  width:42%;height:42%;max-width:16px;max-height:20px;opacity:.55;
  position:relative;top:-4px;
}
/* Edge landmarks only (UR-1 … UL-8) — matches reference; every tooth shows its 1–8 number on the body */
.dental-full-row .dental-tooth-label{display:none}
.dental-full-row .dental-tooth-wrap.edge-label .dental-tooth-label{
  display:block;position:absolute;left:50%;transform:translateX(-50%);
  font-size:9px;font-weight:900;letter-spacing:-.1px;white-space:nowrap;
  color:#64748b;background:rgba(255,255,255,.96);
  padding:1px 5px;border-radius:5px;z-index:2;line-height:1.2;
  border:1px solid rgba(15,118,110,.18);box-shadow:0 1px 2px rgba(0,0,0,.06);pointer-events:none;
}
.dental-full-row .dental-tooth-wrap.upper.edge-label .dental-tooth-label{top:-15px}
.dental-full-row .dental-tooth-wrap.lower.edge-label .dental-tooth-label{bottom:-15px}
/* Big clear number ON each tooth for instant detection */
.dental-tooth-num{
  position:absolute;left:50%;bottom:4px;transform:translateX(-50%);
  font-size:11px;font-weight:900;line-height:1;color:#5c5346;
  background:rgba(255,255,255,.9);border-radius:5px;padding:1px 4px;
  min-width:14px;text-align:center;pointer-events:none;z-index:2;
  box-shadow:0 1px 2px rgba(0,0,0,.05);
}
.dental-tooth.lower .dental-tooth-num{bottom:auto;top:4px}
.dental-tooth.selected .dental-tooth-num,
.dental-tooth.treated .dental-tooth-num{
  color:#0f766e;background:rgba(255,255,255,.98)
}
.dental-num-ruler{
  display:grid;grid-template-columns:repeat(8,1fr) 10px repeat(8,1fr);
  gap:2px;direction:ltr;max-width:680px;margin:0 auto 4px;padding:0 10px;
  font-size:10px;font-weight:900;color:#7a9a95;text-align:center;line-height:1;
}
.dental-num-ruler .mid{display:flex;align-items:center;justify-content:center;color:#9fc9c4}
.dental-num-ruler.lower{margin:4px auto 0}
@media(max-width:480px){
  .dental-full-row{padding:16px 4px 12px;gap:2px}
  .dental-full-row .dental-tooth-wrap.edge-label .dental-tooth-label{font-size:8px}
  .dental-tooth-num{font-size:9px;padding:0 3px;min-width:12px}
  .dental-num-ruler{font-size:8px;padding:0 4px}
}
.dental-arch-mid{
  text-align:center;border-bottom:2px dashed var(--border);
  margin:16px 24px 18px;position:relative;
}
.dental-arch-mid span{
  position:absolute;top:-9px;left:50%;transform:translateX(-50%);
  background:var(--surface);padding:0 12px;font-size:11px;font-weight:800;color:var(--text3);
}
.dental-tooth-wrap{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  min-width:38px;flex-shrink:0;
}
.dental-tooth-wrap.upper .dental-tooth-label{order:-1}
.dental-tooth-label{
  font-size:10px;font-weight:800;color:var(--text3);line-height:1;
  white-space:nowrap;letter-spacing:.1px;
}
.dental-tooth{
  width:42px;height:54px;border-radius:14px 14px 11px 11px;
  border:2px solid #e0d5c4;
  background:linear-gradient(180deg,#fffefb 0%,#f8f1e4 55%,#efe4d2 100%);
  cursor:pointer;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease,background .2s ease,color .2s ease;
  display:flex;align-items:center;justify-content:center;
  color:#94a3b8;position:relative;user-select:none;
  box-shadow:0 2px 4px rgba(90,70,40,.07),inset 0 1px 0 rgba(255,255,255,.9);
}
[data-theme="dark"] .dental-tooth{box-shadow:0 1px 2px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);border-color:#3d4f4b}
.dental-tooth.lower{border-radius:11px 11px 14px 14px;height:52px}
.dental-tooth:hover:not(.readonly){
  border-color:var(--dc-accent-border);background:linear-gradient(180deg,#f0faf8,#e4f4f0);
  color:var(--dc-accent-border);
  transform:translateY(-2px) scale(1.05);
  box-shadow:0 8px 18px rgba(15,118,110,.16);
}
.dental-tooth.selected{
  background:linear-gradient(180deg,#e8f8f5,#d0f0ea);
  border-color:var(--dc-accent-border);
  border-width:2.5px;
  color:var(--dc-accent-border);
  transform:scale(1.06);
  box-shadow:0 0 0 3px rgba(15,118,110,.14),0 6px 14px rgba(15,118,110,.18);
}
.dental-tooth.selected::before{
  content:'✓';font-weight:900;
  position:absolute;top:-7px;left:50%;transform:translateX(-50%);width:16px;height:16px;border-radius:50%;
  background:var(--dc-accent-border);color:#fff;font-size:9px;line-height:1;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 6px rgba(0,0,0,.22);z-index:3;
}
.dental-tooth.treated{
  background:var(--dc-accent-bg);border-color:var(--dc-accent-border);color:var(--dc-accent-border);
  box-shadow:0 0 0 3px rgba(15,118,110,.12),0 6px 14px rgba(15,118,110,.16);
}
.dental-tooth.readonly{cursor:default}
/* Previously-treated marker (interactive picker only) — a small amber history dot that
   layers underneath the active teal "selected" state, so both facts stay visible at once. */
.dental-tooth.was-treated:not(.selected){
  border-color:#f0b429;background:rgba(240,180,41,.14);
}
.dental-tooth.was-treated:not(.selected):hover{
  border-color:var(--dc-accent-border);background:var(--dc-accent-bg);color:var(--dc-accent-border);
}
.dental-tooth.was-treated::after{
  content:'';position:absolute;bottom:4px;right:3px;left:auto;transform:none;
  width:7px;height:7px;border-radius:50%;background:#f0b429;
  box-shadow:0 0 0 2px var(--surface);z-index:2;
}
.dental-tooth.lower.was-treated::after{bottom:auto;top:4px}
.dental-legend-swatch.history{background:rgba(240,180,41,.18);border-color:#f0b429}
.dental-tooth-icon{width:22px;height:28px;display:block;object-fit:contain;pointer-events:none}
.dental-tooth-count{
  position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;
  border-radius:999px;background:var(--dc-accent-border);color:#fff;
  font-size:9px;font-weight:900;display:flex;align-items:center;justify-content:center;
}
.dental-arch-gap{width:14px;flex-shrink:0}
.dental-chart-legend{
  display:flex;flex-wrap:wrap;gap:14px;justify-content:center;
  margin-top:14px;padding-top:12px;border-top:1px dashed var(--border);
}
.dental-legend-item{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:700;color:var(--text2)}
.dental-legend-swatch{
  width:18px;height:18px;border-radius:5px;border:2px solid var(--border);background:var(--surface2);
}
.dental-legend-swatch.active{background:var(--dc-accent-bg);border-color:var(--dc-accent-border)}
.dental-picked-bar{
  padding:10px 14px;border-top:1px dashed var(--border);
  display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;align-content:flex-start;background:var(--surface2);
  min-height:44px;max-height:130px;overflow-y:auto;
}
.dental-picked-empty{font-size:12px;color:var(--text3);font-weight:700}
.dental-pill{
  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;
  background:var(--surface);border:1px solid var(--border);
  font-size:12px;font-weight:800;color:var(--text);direction:ltr;unicode-bidi:isolate;
}
.dental-pill .dot{width:8px;height:8px;border-radius:50%;background:var(--dc-accent-border)}
/* Readable tooth chips — always LTR so UR-٨ never flips to ٨-UR */
.teeth-chip-wrap{display:inline-flex;flex-wrap:wrap;gap:4px;align-items:center;max-width:100%}
.tooth-chip{
  display:inline-flex;align-items:stretch;border-radius:8px;overflow:hidden;
  border:1.5px solid rgba(15,118,110,.28);background:var(--surface);
  font-weight:900;line-height:1;box-shadow:0 1px 2px rgba(15,118,110,.06);
  direction:ltr;unicode-bidi:isolate;
}
.tooth-chip-q{
  padding:4px 6px;font-size:9px;letter-spacing:.3px;
  background:linear-gradient(180deg,var(--primary),var(--accent2));color:#fff;
  display:flex;align-items:center;
}
.tooth-chip-n{
  padding:4px 7px;font-size:12px;color:var(--primary);background:var(--primary-light);
  min-width:18px;text-align:center;display:flex;align-items:center;justify-content:center;
}
.tooth-chip[style*="--tp-accent"] .tooth-chip-q{background:var(--tp-accent)}
.tooth-chip[style*="--tp-accent"]{border-color:var(--tp-accent)}
.tooth-chip[style*="--tp-accent"] .tooth-chip-n{color:var(--tp-accent)}
/* Compact mini teeth map for tables / all tabs */
.teeth-mini{
  display:flex;flex-direction:column;gap:5px;min-width:0;max-width:240px;
}
.teeth-mini.compact{max-width:210px}
.teeth-mini-head{display:flex;align-items:center;gap:6px}
.teeth-mini-count{
  font-size:10px;font-weight:800;color:var(--primary);
  background:var(--primary-light);padding:2px 8px;border-radius:999px;
}
.teeth-mini-arch{
  display:grid;grid-template-columns:14px 1fr;gap:2px 4px;align-items:center;
  padding:6px 7px;border-radius:10px;
  background:var(--surface2);
  border:1px solid var(--border);
}
.teeth-mini-label{
  font-size:9px;font-weight:900;color:#7a9a95;text-align:center;line-height:1;
}
.teeth-mini-row{
  display:grid;grid-template-columns:repeat(8,1fr) 8px repeat(8,1fr);
  gap:1px;direction:ltr;
}
.teeth-mini-mid{
  display:flex;align-items:center;justify-content:center;
  font-size:8px;font-weight:900;color:#9fc9c4;
}
.teeth-mini-cell{
  aspect-ratio:1;min-width:0;min-height:14px;
  border-radius:3px;border:1px solid transparent;
  background:rgba(15,118,110,.06);
  font-size:8px;font-weight:900;color:transparent;
  display:flex;align-items:center;justify-content:center;
  line-height:1;
}
.teeth-mini-cell.on{
  background:linear-gradient(180deg,var(--primary),var(--accent2));color:#fff;
  border-color:var(--primary);box-shadow:0 1px 2px rgba(15,118,110,.25);
}
.dental-chart.embedded .dental-chart-head{background:var(--surface2);border-color:var(--border);padding:10px 12px}
.teeth-mini-chips{margin-top:1px}
.teeth-mini.compact .teeth-mini-chips{display:none}
.teeth-mini.compact .teeth-mini-cell{min-height:12px;font-size:7.5px;border-radius:2.5px}
.case-teeth-cell{min-width:160px;max-width:240px;vertical-align:middle}
.case-teeth-cell .teeth-mini{max-width:100%}
.mobile-data-card-row .teeth-mini{max-width:100%}
.info-item-value .teeth-mini{max-width:280px}
@media(max-width:640px){
  .teeth-mini-cell{min-height:11px;font-size:7px}
  .tooth-chip-q{padding:3px 5px;font-size:8px}
  .tooth-chip-n{padding:3px 5px;font-size:11px}
}
.dental-chart-hint{
  padding:10px 14px;font-size:11.5px;color:var(--text3);font-weight:600;
  background:var(--surface);border-top:1px solid var(--border);text-align:center;
}
.dental-bridge-row{
  display:flex;justify-content:center;gap:16px;margin:8px 0 10px;flex-wrap:wrap;
}
.dental-bridge-item{
  display:flex;align-items:center;gap:6px;font-size:11px;font-weight:800;
  color:var(--text2);cursor:pointer;
}
.dental-bridge-item input{position:absolute;opacity:0;width:0;height:0}
.dental-bridge-item input:checked+.dental-bridge-box{background:var(--dc-accent-border);border-color:var(--dc-accent-border)}
.dental-bridge-item input:checked+.dental-bridge-box::after{content:'✓';color:#fff;font-size:9px;font-weight:900}
.dental-bridge-box{
  width:15px;height:15px;border:2px solid var(--border);border-radius:4px;
  background:var(--surface);display:flex;align-items:center;justify-content:center;
}
.dental-chart.embedded{border:none;box-shadow:none;background:transparent}
.dental-chart.embedded .dental-chart-head{background:var(--surface2);border-color:var(--border);padding:10px 12px}
.dental-chart.embedded .dental-chart-body{padding:10px 6px}
.dental-chart.embedded .dental-chart-title{font-size:13px}
@media(max-width:640px){
  .dental-tooth{width:36px;height:48px}
  .dental-tooth.lower{height:46px}
  .dental-tooth-wrap{min-width:34px}
  .dental-tooth-icon{width:18px;height:24px}
  .dental-chart-title{font-size:14px}
  .dental-tooth-label{font-size:9px}
  .dental-mouth-frame{padding:10px 2px;border-radius:22px}
}
.teeth-chart-wrap{padding:12px;overflow-x:auto}
.teeth-display-section{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:16px 0}
@media(max-width:768px){.teeth-display-section{grid-template-columns:1fr}}

/* ===== TOAST ===== */
#toast{position:fixed;bottom:24px;left:24px;z-index:9998;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast-item{
  background:var(--surface);border:1px solid var(--border);
  border-radius:14px;padding:14px 18px;
  box-shadow:var(--shadow-lg);font-size:13.5px;font-weight:600;
  display:flex;align-items:center;gap:10px;min-width:260px;max-width:360px;
  animation:toastIn .3s ease;pointer-events:all;
  border-left:5px solid var(--primary);position:relative;overflow:hidden;
}
.toast-item::before{
  content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.05),transparent);pointer-events:none;
}
.toast-item > *{position:relative;z-index:1}
.toast-item.success{border-left-color:var(--success)}
.toast-item.danger{border-left-color:var(--danger)}
.toast-item.warning{
  border-left-color:var(--warning);background:linear-gradient(135deg,var(--warning-light),rgba(255,255,255,.92));
  box-shadow:0 12px 28px var(--warning-ring);font-weight:700;
}
.toast-item.info{border-left-color:var(--info)}
.toast-item.out{animation:toastOut .3s ease forwards}

/* ===== EMPTY STATE ===== */
.empty-state{
  text-align:center;padding:48px 24px;color:var(--text3);
}
.empty-state i{font-size:48px;margin-bottom:16px;opacity:.4;display:block}
.empty-state h3{font-size:17px;font-weight:700;color:var(--text2);margin-bottom:6px}
.empty-state p{font-size:13px}

/* ===== AVATAR ===== */
.avatar{
  width:40px;height:40px;border-radius:50%;
  background:linear-gradient(145deg,var(--primary),var(--secondary));
  display:flex;align-items:center;justify-content:center;
  color:#fff;font-weight:800;font-size:16px;flex-shrink:0;overflow:hidden;
}
.avatar img{width:100%;height:100%;object-fit:cover}
.avatar-sm{width:32px;height:32px;font-size:13px}
.avatar-lg{width:56px;height:56px;font-size:22px}

/* ===== TABS ===== */
.tabs{display:flex;gap:4px;background:rgba(255,255,255,.58);border:1px solid var(--border);border-radius:12px;padding:4px;margin-bottom:16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.34)}
.tab-btn{
  flex:1;padding:9px 14px;border:none;border-radius:9px;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:600;
  background:transparent;color:var(--text2);transition:var(--t);
}
.tab-btn.active{background:linear-gradient(180deg,var(--surface-glass-strong),var(--surface));color:var(--primary);box-shadow:var(--shadow);font-weight:700}

/* ===== BOTTOM NAV (MOBILE) ===== */
.bottom-nav{
  display:none;position:fixed;bottom:0;left:0;right:0;
  background:var(--surface-glass);border-top:1px solid var(--border);
  padding:8px 0 env(safe-area-inset-bottom,0);
  z-index:98;
  box-shadow:0 -10px 30px rgba(15,23,42,.08);backdrop-filter:blur(var(--backdrop-blur));
}
.bnav-items{display:flex;justify-content:space-around}
.bnav-item{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:8px 12px;border:none;background:none;cursor:pointer;
  color:var(--text3);font-family:inherit;font-size:10px;font-weight:600;
  border-radius:10px;transition:var(--t);position:relative;
}
.bnav-item:active{
  background:var(--primary-light);
}
.bnav-item.active{
  color:var(--primary);
}
.bnav-item i{font-size:20px}
.bnav-dot{
  position:absolute;top:4px;right:6px;
  width:8px;height:8px;background:var(--danger);border-radius:50%;
  border:2px solid var(--surface);
}

/* ===== OVERLAY MOBILE ===== */
.sidebar-overlay{
  display:none;position:fixed;inset:0;
  background:rgba(0,0,0,.5);z-index:99;backdrop-filter:blur(2px);
}

/* ===== FAB ===== */
.fab{
  position:fixed;bottom:80px;left:20px;
  width:52px;height:52px;border-radius:50%;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  color:#fff;font-size:22px;border:none;cursor:pointer;
  box-shadow:0 6px 24px rgba(15,118,110,.45);
  display:none;align-items:center;justify-content:center;
  z-index:97;transition:var(--t);
}
.fab:hover{transform:scale(1.1);box-shadow:0 8px 32px rgba(15,118,110,.55)}
.fab:active{transform:scale(.96)}

/* ===== PROGRESS BAR ===== */
.progress-bar{height:8px;background:var(--surface3);border-radius:10px;overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.1)}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));border-radius:10px;transition:width .6s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px rgba(15,118,110,.3)}
.progress-fill.warning{background:linear-gradient(90deg,var(--warning),var(--warning-dark));box-shadow:0 4px 12px var(--warning-glow)}
.progress-fill.success{background:linear-gradient(90deg,var(--success),#16a34a);box-shadow:0 2px 8px rgba(34,197,86,.3)}
.progress-fill.danger{background:linear-gradient(90deg,var(--danger),var(--danger-dark));box-shadow:0 2px 8px rgba(239,68,68,.3)}

/* ===== REPORT PRINT ===== */
@media print{
  .no-print,.sidebar,.header,.bottom-nav,.fab,.modal-footer,.toast-item,.footer{display:none!important}
  body::before{display:none!important}
  .main{margin:0!important;padding:16px!important}
  body{background:#fff!important;color:#000!important}
  .card{box-shadow:none!important;border:1px solid #ccc!important}
  .print-header{display:block!important}
}
.print-header{display:none}

/* ===== FOOTER ===== */
.footer{
  background:var(--surface);
  border-top:1px solid var(--border);
  padding:24px;
  margin-top:auto;
  margin-right:var(--sidebar-w);
  transition:margin-right var(--t);
}
.footer.sidebar-hidden{
  margin-right:0;
}
.footer-content{
  max-width:900px;
  margin:0 auto;
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:20px;
}
.footer-section{
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:10px;
}
.footer-title{
  font-size:16px;
  font-weight:900;
  background:linear-gradient(135deg,var(--primary),var(--primary-dark));
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
}
.footer-text{
  font-size:13px;
  color:var(--text2);
}
.footer-phone{
  display:flex;
  align-items:center;
  gap:8px;
  font-size:14px;
  font-weight:700;
  color:var(--primary);
}
.footer-qr{
  width:100px;
  height:100px;
  border:2px solid var(--border);
  border-radius:12px;
  display:flex;
  align-items:center;
  justify-content:center;
  background:var(--surface2);
}
.footer-qr img{
  width:96px;
  height:96px;
  border-radius:8px;
}
.footer-bottom{
  text-align:center;
  margin-top:20px;
  padding-top:20px;
  border-top:1px solid var(--border);
  font-size:12px;
  color:var(--text3);
}

/* ===== RESPONSIVE ===== */
@media(max-width:1024px){
  :root{--bnav-h:64px}
  .sidebar{transform:translateX(100%);opacity:0}
  .sidebar:not(.closed){transform:translateX(0);opacity:1}
  .sidebar-overlay{display:none}
  .sidebar-overlay.open{display:block}
  .header{right:0}
  .main{
    margin-right:0;
    padding-bottom:calc(var(--bnav-h) + 28px + env(safe-area-inset-bottom,0px));
  }
  .footer{margin-right:0;margin-bottom:calc(var(--bnav-h) + env(safe-area-inset-bottom,0px))}
  .bottom-nav{display:block;min-height:var(--bnav-h)}
  .fab{display:flex;bottom:calc(var(--bnav-h) + 16px)}
  #toast{bottom:calc(var(--bnav-h) + 16px + env(safe-area-inset-bottom,0px))}
  .desktop-only{display:none}
  .stats-grid{grid-template-columns:repeat(2,1fr)}
  .footer-content{grid-template-columns:1fr;gap:16px}
}
/* Desktop sidebar always visible */
@media(min-width:1025px){
  .sidebar{transform:translateX(0) !important;opacity:1 !important;pointer-events:auto !important}
  .sidebar.closed{transform:translateX(0) !important;opacity:1 !important;width:0;overflow:hidden;pointer-events:none}
  .sidebar-overlay{display:none !important}
  .header{right:0}
  .main{margin-right:var(--sidebar-w);transition:margin-right var(--t)}
  .main.sidebar-hidden{margin-right:0}
}
@media(max-width:768px){
  :root{--sidebar-w:0px;--header-h:56px}
  .main{padding:16px;margin-top:56px}
  .footer{padding:16px;margin-bottom:60px}
  .footer-content{gap:12px}
  .footer-section{gap:8px}
  .footer-qr{width:80px;height:80px}
  .footer-qr img{width:76px;height:76px}
  .form-row,.form-row-3,.form-row-4{grid-template-columns:1fr}
  .stats-grid{grid-template-columns:1fr}
  .summary-grid{grid-template-columns:1fr 1fr}
  .dashboard-grid-2,.dashboard-grid-2b,.report-grid-2,.settings-grid{grid-template-columns:1fr !important}
  .finance-bar{flex-direction:column}
  .finance-chip{min-width:0}
  .modal-body{padding:14px}
  .modal-header{padding:14px}
  .modal-footer{padding:10px 14px}
  .filter-bar{gap:8px;flex-wrap:wrap}
  /* let filter controls share rows evenly instead of wrapping raggedly */
  .filter-bar>.search-bar{flex:2 1 240px;min-width:200px}
  .filter-bar>select,.filter-bar>input,.filter-bar>.form-select,.filter-bar>.form-control,.filter-bar>.fc{
    flex:1 1 150px;width:auto!important;min-width:140px
  }
  .header{padding:0 12px;gap:10px}
  .header-title{font-size:16px}
  .table-wrap table{font-size:13px}
  th, td{padding:8px 10px}
  .card{border-radius:12px}
  .table-wrap.hide-mobile table{display:none}
  .mobile-card-list.show-mobile{display:flex}
}
@media(max-width:640px){
  :root{--sidebar-w:0px;--header-h:52px}
  .main{padding:12px;margin-top:52px}
  .footer{padding:12px;margin-bottom:60px}
  .footer-bottom{font-size:10px}
  .footer-phone{font-size:13px}
  .footer-text{font-size:12px}
  .footer-title{font-size:14px}
  .section-title{font-size:18px}
  .stat-card{flex-direction:column;text-align:center}
  .stat-icon{width:44px;height:44px}
  .stat-value{font-size:20px}
  .stat-label{font-size:11px}
  .filter-bar{gap:6px}
  /* tidy filter bars: search on its own row, controls in a 2-up grid */
  .filter-bar>.search-bar{flex:1 1 100%;min-width:0}
  .filter-bar>select,.filter-bar>input,.filter-bar>.form-select,.filter-bar>.form-control,.filter-bar>.fc{
    flex:1 1 calc(50% - 3px);width:calc(50% - 3px)!important;min-width:0
  }
  .filter-bar>.btn{flex:1 1 calc(50% - 3px);justify-content:center}
  .btn-sm{padding:6px 12px;font-size:11px}
  .badge{font-size:10px;padding:2px 8px}
  .bnav-item{padding:6px 8px;font-size:9px}
  .bnav-item i{font-size:18px}
  .login-card{width:100%;max-width:100%;padding:32px 24px;border-radius:0}
  .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .summary-grid{grid-template-columns:1fr}
  .lab-cost-row{flex-direction:column;align-items:stretch}
  .lab-cost-input{width:100%}
}

/* ===== PAGE TRANSITIONS ===== */
.page-content{animation:fadeIn .3s ease}

/* ===== SCROLLBAR ===== */
::-webkit-scrollbar{width:5px;height:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:10px}
::-webkit-scrollbar-thumb:hover{background:var(--text3)}

/* ===== CLINIC CARD ===== */
.clinic-card{
  background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);
  box-shadow:var(--shadow);padding:20px;cursor:pointer;transition:var(--t);
  position:relative;overflow:hidden;
}
.clinic-card::before{
  content:'';position:absolute;top:0;right:0;width:4px;height:100%;
  background:linear-gradient(180deg,var(--primary),var(--secondary));
}
.clinic-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--primary)}
.clinic-card.active-clinic{border-color:var(--primary);background:var(--primary-light)}

/* ===== PROFILE PATIENT ===== */
.patient-hero{
  display:flex;align-items:flex-start;gap:20px;
  background:linear-gradient(135deg,rgba(15,118,110,.08),rgba(14,116,144,.05),rgba(255,255,255,.62));
  border-radius:16px;padding:20px;margin-bottom:20px;border:1px solid var(--border);box-shadow:var(--shadow);
}
.patient-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(160px,100%),1fr));gap:12px;margin-top:16px}
.info-item{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px}
.info-item-label{font-size:11px;font-weight:700;color:var(--text3);margin-bottom:3px}
.info-item-value{font-size:14px;font-weight:700;color:var(--text)}

/* ===== CASE CARD ===== */
.case-card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px;margin-bottom:12px;transition:var(--t);
  border-right:4px solid var(--primary);
  animation:fadeIn .3s ease both;
}
.case-card:hover{box-shadow:var(--shadow-md);transform:translateX(-2px)}

/* ===== KEY TYPE CARD ===== */
.key-type-card{
  background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:16px;display:flex;align-items:center;gap:14px;transition:var(--t);
}
.key-type-card:hover{border-color:var(--primary);box-shadow:var(--shadow)}
.key-color-dot{width:16px;height:16px;border-radius:50%;flex-shrink:0}

/* ===== WARNING STATE STYLES ===== */
.status-warning{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 12px;border-radius:8px;
  background:linear-gradient(135deg,var(--warning-light),rgba(255,255,255,.9));
  border:1px solid var(--warning-border);
  color:var(--warning-dark);font-weight:700;font-size:12px;
  box-shadow:0 10px 22px rgba(251,146,60,.1);
}
.status-warning::before{
  content:'';display:inline-block;width:8px;height:8px;
  border-radius:50%;background:var(--warning);
  animation:pulse 2s ease-in-out infinite;
}
.warning-indicator{
  display:inline-flex;align-items:center;justify-content:center;
  width:24px;height:24px;border-radius:50%;
  background:linear-gradient(135deg,var(--warning),var(--warning-dark));
  color:#fff;font-size:12px;font-weight:800;
  box-shadow:0 10px 20px var(--warning-glow);
}
.warning-card{
  background:linear-gradient(135deg,var(--warning-light),rgba(255,255,255,.88));
  border:1px solid var(--warning-border);border-radius:var(--radius);
  padding:16px;position:relative;overflow:hidden;
  box-shadow:0 16px 30px rgba(251,146,60,.12);
}
.warning-card::before{
  content:'';position:absolute;top:0;right:0;
  width:100%;height:3px;background:linear-gradient(90deg,var(--warning),var(--warning-dark));
}
.warning-card::after{
  content:'';position:absolute;bottom:0;right:0;
  width:100px;height:100px;background:radial-gradient(circle,rgba(251,146,60,.16),transparent);
  border-radius:50%;z-index:0;
}
.warning-card > *{position:relative;z-index:1}
.warning-accent{color:var(--warning-dark);font-weight:800}
.warning-border{border-color:var(--warning-border)!important;border-left-width:4px}

/* ===== REPORT ===== */
.report-header{
  text-align:center;padding:24px;
  background:linear-gradient(135deg,rgba(15,118,110,.1),rgba(14,116,144,.05),rgba(255,255,255,.68));
  border-radius:var(--radius);margin-bottom:20px;box-shadow:var(--shadow);
}
.report-title{font-size:22px;font-weight:900;color:var(--text)}
.report-clinic{font-size:15px;font-weight:700;color:var(--primary);margin-top:4px}
.report-period{font-size:13px;color:var(--text3);margin-top:2px}

/* ===== PAYMENT HISTORY ===== */
.payment-item{
  display:flex;align-items:center;gap:12px;
  padding:12px 14px;border-radius:12px;
  background:var(--surface2);margin-bottom:8px;
  border:1px solid var(--border);transition:var(--t);
}
.payment-item:hover{border-color:var(--primary)}

/* ===== LOADING ===== */
.loading{display:flex;justify-content:center;align-items:center;gap:6px;padding:32px}
.loading span{width:8px;height:8px;background:var(--primary);border-radius:50%;animation:dotPulse 1.4s ease infinite}
.loading span:nth-child(2){animation-delay:.2s}
.loading span:nth-child(3){animation-delay:.4s}

/* ===== INPUT WITH ICON ===== */
.input-icon-wrap{position:relative}
.input-icon-wrap i{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--text3);pointer-events:none}
.input-icon-wrap .form-control{padding-right:38px}

/* ===== SWITCH TOGGLE ===== */
.toggle-wrap{display:flex;align-items:center;gap:10px}
.toggle{position:relative;width:44px;height:24px;flex-shrink:0}
.toggle input{opacity:0;width:0;height:0;position:absolute}
.toggle-slider{
  position:absolute;inset:0;background:var(--border);border-radius:20px;
  cursor:pointer;transition:var(--t);
}
.toggle-slider::before{
  content:'';position:absolute;width:18px;height:18px;border-radius:50%;
  background:#fff;bottom:3px;right:3px;transition:var(--t);
}
.toggle input:checked+.toggle-slider{background:var(--primary)}
.toggle input:checked+.toggle-slider::before{right:23px}

/* ===== NOTES ===== */
.note-block{
  background:var(--surface2);border:1px solid var(--border);border-radius:12px;
  padding:14px;margin-bottom:10px;
}
.note-date{font-size:11px;color:var(--text3);margin-bottom:4px}
.note-text{font-size:13.5px;color:var(--text)}

/* ===== GRADIENT TEXT ===== */
.grad-text{color:var(--primary);font-weight:900}

/* ===== STICKY HEADER ===== */
.sticky-header{position:sticky;top:0;background:var(--surface);z-index:3;padding:12px 0;margin-bottom:0}

/* ===== ALERT ===== */
.alert{
  padding:14px 16px;border-radius:12px;font-size:13px;font-weight:600;
  margin-bottom:12px;display:flex;align-items:flex-start;gap:12px;
  border-left:4px solid;transition:var(--t);position:relative;
  overflow:hidden;
}
.alert::before{
  content:'';position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.05),transparent);pointer-events:none;
}
.alert-danger{
  background:linear-gradient(135deg,rgba(239,68,68,.08),rgba(220,38,38,.04));
  color:var(--danger-dark);border-left-color:var(--danger);
  border:1px solid var(--danger);border-left-width:4px;
  box-shadow:0 4px 12px rgba(239,68,68,.08);
}
.alert-danger:hover{box-shadow:0 6px 16px rgba(239,68,68,.12)}
.alert-warning{
  background:linear-gradient(135deg,var(--warning-light),rgba(255,255,255,.92));
  color:var(--warning-dark);border-left-color:var(--warning);
  border:1px solid var(--warning-border);border-left-width:4px;
  box-shadow:0 12px 26px rgba(251,146,60,.12);font-weight:700;
}
.alert-warning:hover{box-shadow:0 16px 30px rgba(251,146,60,.18)}
.alert-success{
  background:linear-gradient(135deg,rgba(34,197,86,.08),rgba(22,163,74,.04));
  color:var(--success-dark);border-left-color:var(--success);
  border:1px solid var(--success);border-left-width:4px;
  box-shadow:0 4px 12px rgba(34,197,86,.08);
}
.alert-success:hover{box-shadow:0 6px 16px rgba(34,197,86,.12)}
.alert-info{
  background:linear-gradient(135deg,rgba(59,130,246,.08),rgba(37,99,235,.04));
  color:var(--info-dark);border-left-color:var(--info);
  border:1px solid var(--info);border-left-width:4px;
  box-shadow:0 4px 12px rgba(59,130,246,.08);
}
.alert-info:hover{box-shadow:0 6px 16px rgba(59,130,246,.12)}
[data-theme="dark"] .alert-danger{
  background:linear-gradient(135deg,rgba(127,29,29,.25),rgba(75,10,10,.15));
  color:#f87171;border-color:#991b1b;
  box-shadow:0 4px 12px rgba(239,68,68,.15);
}
[data-theme="dark"] .alert-warning{
  background:linear-gradient(135deg,var(--warning-light),var(--warning-soft));
  color:var(--warning-dark);border-color:rgba(251,146,60,.32);
  box-shadow:0 12px 24px rgba(251,146,60,.2);
}
[data-theme="dark"] .alert-success{
  background:linear-gradient(135deg,rgba(5,46,22,.25),rgba(10,74,42,.15));
  color:#4ade80;border-color:#14532d;
  box-shadow:0 4px 12px rgba(34,197,86,.15);
}
[data-theme="dark"] .alert-info{
  background:linear-gradient(135deg,rgba(12,42,77,.25),rgba(12,74,165,.15));
  color:#60a5fa;border-color:#1e3a5f;
  box-shadow:0 4px 12px rgba(59,130,246,.15);
}
.pill-btn{
  display:inline-flex;align-items:center;gap:8px;padding:10px 12px;border-radius:999px;
  border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;
  transition:var(--t);font-weight:700;font-size:12px;position:relative;
}
.pill-btn:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}
.notif-badge{
  position:absolute;top:-5px;left:-4px;min-width:18px;height:18px;border-radius:999px;
  background:var(--danger);color:#fff;font-size:10px;font-weight:800;display:none;
  align-items:center;justify-content:center;padding:0 5px;box-shadow:0 6px 14px rgba(239,68,68,.24);
}
.summary-grid{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:16px;
}
.summary-card{
  background:var(--surface2);border:1px solid var(--border);border-radius:14px;padding:14px;
}
.summary-card-label{font-size:12px;color:var(--text3);font-weight:700;margin-bottom:6px}
.summary-card-value{font-size:18px;font-weight:900;color:var(--text)}
.finance-bar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px;align-items:stretch}
.finance-chip{
  display:flex;flex-direction:column;gap:4px;padding:12px 16px;border-radius:14px;
  border:1px solid var(--border);background:var(--surface);min-width:140px;flex:1;
  box-shadow:var(--shadow);
}
.finance-chip-label{font-size:11px;font-weight:800;color:var(--text3)}
.finance-chip-value{font-size:17px;font-weight:900}
.finance-chip.success .finance-chip-value{color:var(--success-dark)}
.finance-chip.danger .finance-chip-value{color:var(--danger-dark)}
.finance-chip.warning .finance-chip-value{color:var(--warning-dark)}
.page-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:16px}
.page-toolbar-actions{display:flex;gap:8px;flex-wrap:wrap}
.dashboard-grid-2{display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-bottom:20px}
.dashboard-grid-2b{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.report-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.lab-cost-panel{
  margin:0 16px 16px;padding:16px;border-radius:14px;
  background:linear-gradient(135deg,rgba(47,154,143,.08),rgba(34,197,94,.04));
  border:2px dashed rgba(47,154,143,.3);
}
.lab-cost-panel-title{font-size:14px;font-weight:900;color:var(--lab-teal-dark,#1f6e68);margin-bottom:6px;display:flex;align-items:center;gap:8px}
.lab-cost-hint{font-size:11px;color:#5a7a74;font-weight:600;margin-bottom:12px;line-height:1.5}
.lab-cost-tag{font-style:normal;font-size:10px;font-weight:800;color:#0e7490;background:rgba(14,116,144,.1);padding:1px 6px;border-radius:999px;margin-inline-start:6px}
.lab-check-text{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:1;min-width:0}
.lab-check-text strong{font-size:12px;font-weight:800;line-height:1.3}
.lab-check-price{font-size:10px;font-weight:800;color:#0f766e;background:rgba(15,118,110,.08);padding:1px 6px;border-radius:999px}
.lab-custom-types{margin-top:12px;padding-top:10px;border-top:1px dashed var(--lab-border,#cfe8e4)}
.lab-custom-types-title{font-size:11px;font-weight:900;color:#0e7490;margin-bottom:8px;letter-spacing:.2px}
.lab-cost-rows{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.lab-cost-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;background:#fff;border-radius:10px;border:1px solid var(--lab-border,#cfe8e4)}
.lab-cost-row span{font-size:12px;font-weight:700;color:var(--lab-teal-dark,#1f6e68);flex:1}
.lab-cost-card{
  background:#fff;border:1.5px solid var(--lab-border,#cfe8e4);border-radius:12px;overflow:hidden;
  transition:border-color .15s,box-shadow .15s;
}
.lab-cost-card.is-active{border-color:var(--lab-teal,#2f9a8f);box-shadow:0 0 0 3px rgba(47,154,143,.16)}
.lab-cost-card-head{
  display:flex;flex-direction:column;align-items:stretch;gap:6px;width:100%;
  padding:10px 12px;background:transparent;border:0;cursor:pointer;text-align:start;
  font-family:inherit;
}
.lab-cost-card-title{font-size:13px;font-weight:800;color:var(--lab-teal-dark,#1f6e68);display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.lab-cost-card-teeth{font-size:11px;line-height:1.4}
.lab-cost-card-body{display:flex;align-items:center;gap:8px;padding:0 12px 10px;flex-wrap:wrap}
.lab-discount-box{
  margin-top:4px;padding:12px;border-radius:12px;background:#fff;
  border:1.5px dashed rgba(194,65,12,.35);
}
.lab-discount-title{font-size:12px;font-weight:900;color:#c2410c;margin-bottom:8px;display:flex;align-items:center;gap:6px}
.lab-discount-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.lab-discount-select{
  min-width:120px;padding:8px 10px;border:2px solid var(--lab-border,#cfe8e4);border-radius:8px;
  font-family:inherit;font-size:12px;font-weight:700;background:#fff;
}
.lab-cost-total-box.disc .val{color:#c2410c}
.lab-active-work-hint{
  margin-bottom:8px;padding:8px 10px;border-radius:10px;
  background:rgba(15,118,110,.08);border:1px solid rgba(15,118,110,.18);
  font-size:11px;font-weight:700;color:#0f766e;line-height:1.5;
}
.lab-cost-input{
  width:120px;padding:8px 10px;border:2px solid var(--lab-border,#cfe8e4);border-radius:8px;
  font-family:inherit;font-size:14px;font-weight:800;text-align:center;direction:ltr;
  transition:border-color .15s,box-shadow .15s;
}
.lab-cost-input:focus{outline:none;border-color:var(--lab-teal,#2f9a8f);box-shadow:0 0 0 3px rgba(47,154,143,.14)}
.lab-cost-totals{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(110px,100%),1fr));gap:8px}
.lab-cost-total-box{text-align:center;padding:10px;background:#fff;border-radius:10px;border:1px solid var(--lab-border,#cfe8e4)}
.lab-cost-total-box .lbl{font-size:10px;font-weight:800;color:#64748b}
.lab-cost-total-box .val{font-size:16px;font-weight:900;color:var(--lab-teal-dark,#1f6e68)}
.lab-cost-total-box.paid .val{color:#16a34a}
.lab-cost-total-box.rem .val{color:#dc2626}
.table-actions{display:flex;gap:4px;flex-wrap:nowrap;width:max-content}
.mobile-card-list{display:none;flex-direction:column;gap:10px}
.mobile-data-card{
  background:var(--surface);border:1px solid var(--border);border-radius:14px;
  padding:14px;box-shadow:var(--shadow);
}
.mobile-data-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:10px}
.mobile-data-card-title{font-size:14px;font-weight:800}
.mobile-data-card-meta{font-size:12px;color:var(--text3);margin-top:4px}
.mobile-data-card-row{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-top:1px solid var(--border);font-size:12px}
.mobile-data-card-row span:first-child{color:var(--text3);font-weight:700}
.mobile-data-card-row span:last-child{font-weight:800}
.doctor-card{transition:var(--t)}
.doctor-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}
.doctor-filter-bar{margin-bottom:14px}
.doctor-filter-chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.doctor-chip{
  display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;
  border:2px solid var(--border);background:var(--surface);cursor:pointer;
  font-family:inherit;font-size:12px;font-weight:800;color:var(--text2);transition:var(--t);
}
.doctor-chip:hover{border-color:var(--primary);color:var(--primary);transform:translateY(-1px)}
.doctor-chip.active{border-color:var(--primary);background:var(--primary-light);color:var(--primary);box-shadow:0 4px 12px rgba(15,118,110,.15)}
.doctor-chip .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.doctor-filter-active{
  display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:10px;padding:10px 14px;
  border-radius:12px;background:linear-gradient(135deg,rgba(15,118,110,.08),rgba(14,116,144,.05));
  border:1px solid rgba(15,118,110,.2);font-size:13px;
}
.doctor-filter-active strong{color:var(--primary)}
@media(max-width:640px){
  .doctor-filter-chips{gap:6px}
  .doctor-chip{padding:7px 11px;font-size:11px}
}
.timeline-list{display:flex;flex-direction:column;gap:10px}
.timeline-item{
  border:1px solid var(--border);border-radius:14px;padding:12px 14px;background:var(--surface2);
}
.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:6px}
.timeline-title{font-size:13px;font-weight:800;color:var(--text)}
.timeline-meta{font-size:11px;color:var(--text3)}
.timeline-body{font-size:13px;color:var(--text2);line-height:1.7}
.inline-action-bar{display:flex;gap:8px;flex-wrap:wrap}
.muted-note{font-size:12px;color:var(--text3)}

/* RESPONSIVE DESIGN FOR MOBILE/TABLET */
@media (max-width:768px){
  .form-row{display:flex;flex-direction:column;gap:12px !important}
  .modal{max-width:95vw;max-height:90vh;margin:0 10px}
  .modal-body{max-height:calc(90vh - 120px);overflow-y:auto;padding:14px}
  .form-control,.form-select,.form-textarea{font-size:16px;padding:14px;border-radius:8px}
  #cPatientList,#aPatientList{max-height:200px}
  .btn{padding:12px 16px;font-size:14px;border-radius:8px}
  .btn-primary,.btn-secondary{min-height:44px}
  input[type="date"],input[type="time"]{font-size:16px;padding:12px}
  label.form-label{font-size:14px;margin-bottom:8px}
  .form-group{margin-bottom:12px}
}

@media (max-width:480px){
  .modal{max-width:100%;border-radius:16px 16px 0 0}
  .modal-body{padding:12px;max-height:calc(100vh - 100px)}
  .form-row{gap:10px}
  .form-control,.form-select,.form-textarea{font-size:16px;padding:12px}
  .btn{padding:12px 12px;font-size:13px}
  .btn-primary,.btn-secondary{width:100%;margin-bottom:8px}
  #cPatientList,#aPatientList{max-height:150px}
  .modal-footer{flex-direction:column;gap:8px}
  .page-content{padding:12px}
}

/* IMPROVE INPUT TOUCH TARGETS */
@media (hover:none) and (pointer:coarse){
  .form-control,.form-select,.btn{min-height:44px;padding:14px}
  input,textarea,select{font-size:16px}
  .tab-btn{padding:12px 14px;min-height:44px}
}

/* SMOOTH TRANSITIONS */
.form-control,.form-select,.form-textarea,.btn{transition:all 0.3s ease}
.form-control:focus,.form-select:focus{box-shadow:0 0 0 3px rgba(15,118,110,0.1);border-color:var(--primary)}
.btn:active{transform:scale(0.98)}
input[type="date"]::-webkit-calendar-picker-indicator,input[type="time"]::-webkit-calendar-picker-indicator{cursor:pointer;font-size:18px}

/* ===== LAB ORDER SHEET (Paper Form Replica — Arti Dent brand colors) ===== */
.lab-form-page{background:#e9f4f2;padding:20px 12px;min-height:calc(100vh - var(--header-h))}
.lab-order-sheet{
  --lab-teal:#2f9a8f;--lab-teal-dark:#1f6e68;--lab-ink:#182228;
  --lab-border:#cfe8e4;--lab-tint:#eaf6f4;--lab-text:#1a2530;
  background:#fff;border:2px solid var(--lab-teal-dark);border-radius:16px;
  box-shadow:0 10px 34px rgba(31,110,104,.14);overflow:hidden;
  max-width:980px;margin:0 auto;font-family:'Noto Kufi Arabic',sans-serif;
  color:var(--lab-text);
}
/* Header — fluid diagonal wedge (percentage-based clip-path, scales at any width) */
.lab-hdr{
  position:relative;display:flex;align-items:stretch;min-height:112px;
  background:var(--lab-teal);border-bottom:3px solid var(--lab-teal-dark);overflow:hidden;
}
.lab-hdr::before{
  content:'';position:absolute;inset:0;background:var(--lab-ink);
  clip-path:polygon(0 0,44% 0,30% 100%,0 100%);
}
.lab-hdr-left{
  position:relative;z-index:2;display:flex;align-items:center;gap:10px;
  padding:16px 20px;min-width:180px;flex-shrink:0;
}
.lab-logo-svg{width:50px;height:50px;flex-shrink:0}
.lab-logo-text{display:flex;flex-direction:column}
.lab-logo-name{font-size:15px;font-weight:900;color:#fff;letter-spacing:1.5px;line-height:1.1}
.lab-logo-sub{font-size:9px;font-weight:800;color:var(--lab-teal);letter-spacing:2px;margin-top:2px}
.lab-hdr-mid{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;
  padding:12px 10px;z-index:2;min-width:0;
}
.lab-hdr-phones{
  display:flex;align-items:center;gap:10px;font-size:13px;font-weight:800;color:#fff;
  direction:ltr;margin-bottom:6px;flex-wrap:wrap;justify-content:center;
}
.lab-hdr-phones .wa{color:#eafff5;font-size:18px}
.lab-hdr-phones .sep{color:rgba(255,255,255,.55);font-weight:400}
.lab-hdr-right{
  display:flex;flex-direction:column;align-items:flex-end;justify-content:center;
  padding:16px 24px;min-width:200px;z-index:2;flex-shrink:0;
}
.lab-hdr-title{font-size:26px;font-weight:900;color:#fff;line-height:1.2;text-align:right}
.lab-hdr-subtitle{font-size:11px;font-weight:700;color:rgba(255,255,255,.8);margin-top:4px;text-align:right}
/* Doctor / Patient row */
.lab-info-row{
  display:grid;grid-template-columns:1fr 1fr;gap:0;
  border-bottom:2px solid var(--lab-teal-dark);padding:0;
}
.lab-info-cell{
  display:flex;align-items:center;gap:10px;padding:12px 20px;
  border-left:2px solid var(--lab-teal-dark);
}
.lab-info-cell:first-child{border-left:none}
.lab-info-label{
  font-size:14px;font-weight:900;color:var(--lab-teal-dark);white-space:nowrap;min-width:90px;
}
.lab-info-input{
  flex:1;min-width:0;border:none;border-bottom:2px dotted #9fc9c4;background:transparent;
  font-size:15px;font-weight:700;color:var(--lab-text);padding:4px 0;outline:none;
  font-family:inherit;transition:border-color .15s;
}
.lab-info-input:focus{border-bottom-color:var(--lab-teal-dark);border-bottom-style:solid}
.lab-info-select{
  flex:1;min-width:0;border:none;border-bottom:2px dotted #9fc9c4;background:transparent;
  font-size:14px;font-weight:700;color:var(--lab-text);padding:4px 0;outline:none;
  font-family:inherit;cursor:pointer;transition:border-color .15s;
}
.lab-info-select:focus{border-bottom-color:var(--lab-teal-dark);border-bottom-style:solid}
/* Main 4-column grid */
.lab-grid{
  display:grid;grid-template-columns:1.15fr 1.15fr .65fr 1.35fr;
  border-bottom:2px solid var(--lab-teal-dark);
}
.lab-col{
  border-left:2px solid var(--lab-teal-dark);display:flex;flex-direction:column;min-height:380px;
  min-width:0;
}
.lab-col:first-child{border-left:none}
.lab-col-hdr{
  background:var(--lab-teal-dark);color:#fff;text-align:center;
  padding:9px 8px;font-size:13px;font-weight:900;letter-spacing:.3px;
}
.lab-col-body{flex:1;padding:6px 10px 10px;background:#fff;min-width:0}
.lab-col-body.ltr{direction:ltr;text-align:left}
/* Checkboxes — label left, box right (like paper form) */
.lab-check{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:6px 2px;border-bottom:1px dotted var(--lab-border);cursor:pointer;
  font-size:11.5px;font-weight:700;color:#1e293b;line-height:1.35;
  transition:background .15s;
}
.lab-check:hover{background:var(--lab-tint)}
.lab-check:last-child{border-bottom:none}
.lab-check span{flex:1;text-align:left}
.lab-check-box{
  width:16px;height:16px;border:2px solid var(--lab-teal-dark);border-radius:4px;
  flex-shrink:0;display:flex;align-items:center;justify-content:center;
  background:#fff;transition:all .15s;
}
.lab-check input{position:absolute;opacity:0;width:0;height:0}
.lab-check input:checked+.lab-check-box{background:var(--lab-teal-dark);border-color:var(--lab-teal-dark);transform:scale(1.05)}
.lab-check input:checked+.lab-check-box::after{
  content:'✓';color:#fff;font-size:10px;font-weight:900;line-height:1;
}
.lab-check input:focus-visible+.lab-check-box{box-shadow:0 0 0 3px rgba(47,154,143,.25)}
/* Shade column — real VITA-style shade guide swatches */
.shade-guide{
  display:flex;flex-wrap:wrap;gap:6px;justify-content:center;
  padding:8px 2px;margin:4px 0;
}
.shade-swatch{
  width:34px;height:34px;border-radius:8px;border:2px solid var(--lab-border);
  cursor:pointer;position:relative;display:flex;align-items:flex-end;justify-content:center;
  transition:transform .15s,box-shadow .15s,border-color .15s;padding:0;
  flex-shrink:0;
}
.shade-swatch:hover{transform:translateY(-2px);box-shadow:0 4px 10px rgba(0,0,0,.14)}
.shade-swatch.selected{
  border-color:var(--lab-teal-dark);
  box-shadow:0 0 0 3px rgba(31,110,104,.18),0 4px 10px rgba(0,0,0,.12);
  transform:translateY(-2px);
}
.shade-check{
  position:absolute;top:-7px;right:-7px;width:16px;height:16px;border-radius:50%;
  background:var(--lab-teal-dark);color:#fff;font-size:9px;font-weight:900;
  display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.25);
}
.shade-label{
  font-size:8px;font-weight:900;color:rgba(0,0,0,.55);
  background:rgba(255,255,255,.55);border-radius:3px 3px 0 0;
  width:100%;text-align:center;line-height:1.5;
}
.lab-shade-custom{
  display:block;width:calc(100% - 20px);margin:10px auto 4px;padding:9px 12px;
  border:2px solid var(--lab-border);border-radius:10px;background:#fff;
  font-size:16px;font-weight:900;color:var(--lab-teal-dark);text-align:center;
  outline:none;font-family:inherit;text-transform:uppercase;
  transition:border-color .15s,box-shadow .15s;
}
.lab-shade-custom:focus{border-color:var(--lab-teal-dark);box-shadow:0 0 0 3px rgba(31,110,104,.14)}
/* Picture column */
.lab-pic-section{margin-bottom:8px}
.lab-pic-hdr{
  background:var(--lab-teal-dark);color:#fff;text-align:center;padding:6px;
  font-size:11px;font-weight:900;margin-bottom:6px;border-radius:6px 6px 0 0;
}
.lab-nums-row{
  display:flex;justify-content:center;align-items:center;gap:2px;
  direction:ltr;font-size:9px;font-weight:900;color:#64748b;margin-bottom:3px;
}
.lab-nums-row .n{width:22px;text-align:center}
.lab-nums-row .mid{width:10px;text-align:center;color:#9fc9c4}
.lab-bridge-row{
  display:flex;justify-content:center;gap:16px;margin:6px 0 8px;
}
.lab-bridge-item{
  display:flex;align-items:center;gap:5px;font-size:10px;font-weight:800;
  color:#334155;cursor:pointer;
}
.lab-bridge-item input{position:absolute;opacity:0;width:0;height:0}
.lab-bridge-item input:checked+.lab-check-box{background:var(--lab-teal-dark);border-color:var(--lab-teal-dark)}
.lab-bridge-item input:checked+.lab-check-box::after{content:'●';color:#fff;font-size:8px}
.lab-bridge-item .lab-check-box{width:14px;height:14px}
/* Explanation sub-section */
.lab-explain-section{margin-top:4px}
.lab-explain-hdr{
  background:var(--lab-teal-dark);color:#fff;text-align:center;padding:6px;
  font-size:11px;font-weight:900;border-radius:6px 6px 0 0;
}
.lab-explain-box{
  width:100%;min-height:80px;border:2px solid var(--lab-border);border-top:none;
  border-radius:0 0 8px 8px;padding:8px;font-size:12px;font-family:inherit;
  resize:vertical;outline:none;background:var(--lab-tint);transition:background .15s,border-color .15s;
}
.lab-explain-box:focus{border-color:var(--lab-teal-dark);background:#fff}
/* Footer — 5 boxes + Finish */
.lab-foot{
  padding:14px;background:#fff;
}
.lab-foot-row{
  display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:10px;
}
.lab-foot-box{
  border:2px solid var(--lab-teal-dark);border-radius:10px;overflow:hidden;background:#fff;
  transition:box-shadow .15s;
}
.lab-foot-box:focus-within{box-shadow:0 0 0 3px rgba(47,154,143,.16)}
.lab-foot-box-hdr{
  display:flex;align-items:center;gap:6px;padding:6px 8px;
  background:var(--lab-tint);border-bottom:1px solid var(--lab-border);
}
.lab-foot-box-hdr i{color:var(--lab-teal-dark);font-size:13px;width:16px;text-align:center}
.lab-foot-box-hdr span{font-size:10px;font-weight:900;color:var(--lab-teal-dark);flex:1}
.lab-foot-box-body{padding:6px 8px}
.lab-foot-box-body input[type="date"]{
  width:100%;border:none;background:transparent;font-size:11px;font-weight:700;
  color:#1e293b;outline:none;font-family:inherit;padding:2px 0;
}
.lab-foot-check{
  display:flex;align-items:center;justify-content:center;padding:8px;
}
.lab-foot-check .lab-check-box{width:19px;height:19px}
.lab-finish-box{
  border:2px solid var(--lab-teal-dark);border-radius:10px;overflow:hidden;
}
.lab-finish-hdr{
  display:flex;align-items:center;gap:8px;padding:7px 12px;
  background:var(--lab-teal-dark);color:#fff;
}
.lab-finish-hdr i{font-size:13px}
.lab-finish-hdr span{font-size:12px;font-weight:900}
.lab-finish-body{padding:8px 12px}
.lab-finish-body input{
  width:100%;border:none;border-bottom:2px dotted #9fc9c4;background:transparent;
  font-size:14px;font-weight:700;outline:none;font-family:inherit;padding:4px 0;
  transition:border-color .15s;
}
.lab-finish-body input:focus{border-bottom-color:var(--lab-teal-dark);border-bottom-style:solid}
/* Actions bar */
.lab-order-actions{
  display:flex;gap:10px;flex-wrap:wrap;justify-content:center;
  padding:14px 18px;background:var(--lab-tint);border-top:1px solid var(--lab-border);
}
.lab-admin-row{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;
  padding:12px 16px;background:#f8fafc;border-top:1px dashed var(--lab-border);
}
.lab-admin-field label{font-size:11px;font-weight:800;color:var(--lab-teal-dark);display:block;margin-bottom:4px}
.lab-admin-field select{
  width:100%;padding:8px 10px;border:1.5px solid var(--lab-border);border-radius:8px;
  font-size:13px;font-weight:700;background:#fff;outline:none;font-family:inherit;
  transition:border-color .15s;
}
.lab-admin-field select:focus{border-color:var(--lab-teal-dark)}
/* Embedded tooth picker inside the sheet reads teal, matching the rest of the form */
.lab-order-sheet .dental-chart{border:none;box-shadow:none;background:transparent}
.lab-order-sheet .dental-chart-head{display:none}
.lab-order-sheet .dental-chart-body{padding:4px 0 0}
.lab-order-sheet .dental-mouth-frame{
  padding:8px 0;
  background:
    radial-gradient(ellipse 65% 55% at 50% 4%,rgba(47,154,143,.10),transparent 72%),
    radial-gradient(ellipse 65% 55% at 50% 96%,rgba(47,154,143,.10),transparent 72%);
}
.lab-order-sheet .dental-picked-bar,.lab-order-sheet .dental-chart-hint{background:transparent;border-color:var(--lab-border)}
.lab-order-sheet .dental-arch-label{color:var(--lab-teal-dark)}
/* The sheet always renders as light paper regardless of the app's dark/light toggle —
   force tooth colors to match instead of inheriting the app theme's dark surface tones. */
.lab-order-sheet .dental-tooth{
  background:linear-gradient(180deg,#fffefb,#f8f1e4 55%,#efe4d2)!important;
  border-color:#e0d5c4!important;
}
.lab-order-sheet .dental-tooth.selected{
  background:linear-gradient(180deg,#e8f8f5,#d0f0ea)!important;
  border-color:var(--lab-teal-dark)!important;
}
.lab-order-sheet .dental-tooth-num{color:#6b5c48}
.lab-order-sheet .dental-tooth.selected .dental-tooth-num{color:var(--lab-teal-dark)}
.lab-order-sheet .dental-full-row::before{
  background:linear-gradient(180deg,rgba(47,154,143,.08),rgba(47,154,143,.02) 60%);
  border-color:rgba(47,154,143,.16);
}
.lab-order-sheet .dental-tooth-label{color:var(--lab-teal-dark)}
.lab-order-sheet .dental-num-ruler{color:#7a9a95;max-width:100%}

@media(max-width:900px){
  .lab-grid{grid-template-columns:1fr 1fr}
  .lab-col{min-height:auto;border-bottom:2px solid var(--lab-teal-dark)}
  .lab-col:nth-child(2){border-left:none}
  .lab-foot-row{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:680px){
  .lab-hdr{flex-wrap:wrap;min-height:0}
  .lab-hdr::before{clip-path:none;background:var(--lab-teal-dark)}
  .lab-hdr-left,.lab-hdr-right{min-width:0;width:100%;justify-content:center;padding:14px 16px}
  .lab-hdr-right{align-items:center;text-align:center}
  .lab-hdr-title{text-align:center;font-size:22px}
  .lab-hdr-subtitle{text-align:center}
  .lab-hdr-mid{width:100%;order:3;padding-bottom:14px}
}
@media(max-width:600px){
  .lab-grid{grid-template-columns:1fr}
  .lab-col{border-left:none}
  .lab-info-row{grid-template-columns:1fr}
  .lab-info-cell{border-left:none;border-bottom:1px solid var(--lab-border)}
  .lab-foot-row{grid-template-columns:1fr 1fr}
}
@media(max-width:420px){
  .lab-form-page{padding:12px 6px}
  .lab-order-sheet{border-radius:12px}
  .lab-hdr-title{font-size:19px}
  .lab-logo-svg{width:42px;height:42px}
  .lab-logo-name{font-size:13px}
  .lab-info-cell{padding:10px 14px}
  .lab-foot-row{grid-template-columns:1fr 1fr}
  .lab-foot-box-hdr span{font-size:9px}
}
@media print{
  .lab-order-actions,.no-print-lab,.lab-admin-row,.lab-form-toolbar{display:none!important}
  .lab-form-page{background:#fff;padding:0}
  .lab-order-sheet{box-shadow:none;border:2px solid var(--lab-teal-dark);max-width:100%}
  body *{visibility:hidden}
  .lab-order-sheet,.lab-order-sheet *{visibility:visible}
  .lab-order-sheet{position:absolute;left:0;top:0;width:100%}
}

/* ============================================================
   UX REDESIGN — forms, pickers, shell polish (2026)
   ============================================================ */

/* Input with icon + password toggle */
.input-with-icon{position:relative;display:flex;align-items:center}
.input-with-icon .input-leading-icon{
  position:absolute;right:14px;top:50%;transform:translateY(-50%);
  color:var(--text3);font-size:14px;pointer-events:none;z-index:1
}
.input-with-icon .fc,.input-with-icon .form-control{padding-right:42px}
.input-with-icon.has-toggle .fc,.input-with-icon.has-toggle .form-control{padding-left:44px}
.input-toggle-btn{
  position:absolute;left:8px;top:50%;transform:translateY(-50%);
  width:36px;height:36px;border:none;border-radius:10px;background:transparent;
  color:var(--text3);cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:var(--t)
}
.input-toggle-btn:hover{background:var(--surface2);color:var(--primary)}

/* Custom checkbox */
.check-label{
  display:inline-flex;align-items:center;gap:10px;cursor:pointer;
  font-size:13px;font-weight:700;color:var(--text2);user-select:none
}
.check-label input{position:absolute;opacity:0;width:0;height:0}
.check-box{
  width:20px;height:20px;border-radius:6px;border:2px solid var(--border);
  background:var(--surface);display:inline-flex;align-items:center;justify-content:center;
  color:transparent;font-size:10px;transition:var(--t);flex-shrink:0
}
.check-label input:checked+.check-box{
  background:var(--primary);border-color:var(--primary);color:#fff
}
.check-label input:focus-visible+.check-box{box-shadow:var(--focus-ring)}

/* Form sections inside modals */
.form-section{
  background:var(--surface2);border:1px solid var(--border);border-radius:14px;
  padding:16px;margin-bottom:16px
}
.form-section-title{
  display:flex;align-items:center;gap:8px;font-size:13px;font-weight:900;
  color:var(--text);margin-bottom:14px;padding-bottom:10px;border-bottom:1px dashed var(--border)
}
.form-section-title i{color:var(--primary)}
.form-section.dashed{border-style:dashed;background:linear-gradient(180deg,var(--surface),var(--surface2))}
.form-section.accent{
  background:linear-gradient(135deg,rgba(15,118,110,.06),rgba(14,116,144,.04));
  border-color:rgba(15,118,110,.22)
}

/* Patient / entity picker */
.form-tabs{
  display:flex;gap:6px;background:var(--surface2);border:1px solid var(--border);
  border-radius:14px;padding:6px;margin-bottom:16px
}
.form-tab-btn{
  flex:1;padding:11px 12px;border:none;border-radius:10px;cursor:pointer;
  font-family:inherit;font-size:13px;font-weight:800;background:transparent;
  color:var(--text3);transition:var(--t)
}
.form-tab-btn.active{
  background:var(--surface);color:var(--primary);box-shadow:var(--shadow)
}
.form-tab-btn:hover:not(.active){color:var(--text);background:rgba(255,255,255,.4)}

.patient-picker-list{
  margin-top:8px;border:1.5px solid var(--border);border-radius:12px;
  max-height:260px;overflow-y:auto;background:var(--surface);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.4)
}
.patient-picker-item{
  padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;
  display:flex;justify-content:space-between;align-items:center;gap:10px;
  transition:var(--t);background:transparent
}
.patient-picker-item:last-child{border-bottom:none}
.patient-picker-item:hover,.patient-picker-item:focus-visible{
  background:var(--primary-light);outline:none
}
.patient-picker-item .ppi-name{font-weight:800;color:var(--text);font-size:14px}
.patient-picker-item .ppi-meta{font-size:12px;color:var(--text3);margin-top:3px}
.patient-picker-item i{color:var(--primary);opacity:.55;font-size:13px}
.patient-picker-item:hover i{opacity:1}
.patient-picker-new{
  padding:16px;background:var(--surface2);border-radius:12px;border:1px dashed var(--border)
}

/* Clinic checkbox rows */
.clinic-check-list{display:flex;flex-direction:column;gap:8px}
.clinic-check-item{
  display:flex;align-items:center;gap:10px;padding:12px 14px;
  border:1.5px solid var(--border);border-radius:12px;background:var(--surface);
  cursor:pointer;transition:var(--t)
}
.clinic-check-item:hover{border-color:var(--primary);background:var(--primary-light)}
.clinic-check-item input{width:18px;height:18px;accent-color:var(--primary);flex-shrink:0}
.clinic-check-item .cci-name{font-weight:800;color:var(--text)}
.clinic-check-item .cci-meta{margin-right:auto}

/* Color input polish */
.form-control[type="color"]{height:48px;padding:6px 8px;cursor:pointer}

/* Readonly value display */
.form-value{
  min-height:var(--field-h);padding:12px 14px;border:1.5px solid var(--border);
  border-radius:12px;background:var(--surface2);color:var(--text);
  display:flex;align-items:center;font-weight:800;font-size:14px
}

/* Modal polish */
.modal-overlay{background:rgba(4,24,22,.52);backdrop-filter:blur(6px)}
.modal{
  border:1px solid var(--border);
  box-shadow:0 28px 80px rgba(4,24,22,.28)
}
.modal-header{
  background:linear-gradient(180deg,var(--surface-highlight),var(--surface));
  gap:12px
}
.modal-title{display:flex;align-items:center;gap:10px}
.modal-title i{font-size:18px}
.modal-body{padding:20px 22px}
.modal-footer{
  background:linear-gradient(0deg,var(--surface),var(--surface2));
  gap:10px;flex-wrap:wrap
}
.modal-footer .btn{min-width:120px}

/* Sidebar user row */
.sidebar-user{display:flex;align-items:center;gap:10px;padding:8px}
.sidebar-user-meta{flex:1;min-width:0}
.sidebar-user-name{font-size:13px;font-weight:800;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sidebar-user-role{font-size:11px;color:var(--text3)}

/* Page intro / empty polish */
.page-content{animation:fadeIn .28s ease}
.empty-state{
  background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);
  box-shadow:var(--shadow)
}
.empty-state .btn{margin-top:14px}

/* Filter bar polish */
.filter-bar{
  background:linear-gradient(180deg,var(--surface-glass-strong),var(--surface));
  box-shadow:var(--shadow);align-items:center
}

/* Soft purple badge → teal-friendly */
.badge-purple{background:#ccfbf1;color:#0f766e;border:1px solid #99f6e4;box-shadow:0 2px 4px rgba(15,118,110,.08)}
[data-theme="dark"] .badge-purple{background:#0f2f2c;color:#5eead4;border-color:#134e4a}

/* Nav hover without purple */
.nav-item:hover{
  background:linear-gradient(135deg,rgba(15,118,110,.12),rgba(14,116,144,.06));
  color:var(--primary);border-color:rgba(15,118,110,.12);transform:translateX(-2px)
}
.nav-item.active{
  background:linear-gradient(135deg,rgba(15,118,110,.16),rgba(14,116,144,.08));
  color:var(--primary);font-weight:700;
  border-right:3px solid var(--primary);border-color:rgba(15,118,110,.14);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 12px 26px rgba(15,118,110,.08);
}
.clinic-selector{
  background:linear-gradient(135deg,var(--surface-highlight),rgba(15,118,110,.06),rgba(14,116,144,.04));
}
.patient-hero{
  background:linear-gradient(135deg,rgba(15,118,110,.08),rgba(14,116,144,.05),rgba(255,255,255,.62));
}
.report-header{
  background:linear-gradient(135deg,rgba(15,118,110,.1),rgba(14,116,144,.05),rgba(255,255,255,.68));
}
.doctor-filter-active{
  background:linear-gradient(135deg,rgba(15,118,110,.08),rgba(14,116,144,.05));
  border:1px solid rgba(15,118,110,.2)
}

/* Stat icon default tint */
.stat-icon{
  background:linear-gradient(135deg,rgba(15,118,110,.12),rgba(14,116,144,.06));
  box-shadow:0 2px 8px rgba(15,118,110,.1);
}

/* Sticky save bar hint on long modals */
.form-hint-bar{
  display:flex;align-items:center;gap:8px;padding:10px 12px;margin-bottom:14px;
  border-radius:12px;background:rgba(15,118,110,.06);border:1px solid rgba(15,118,110,.16);
  font-size:12px;font-weight:700;color:var(--text2)
}
.form-hint-bar i{color:var(--primary)}

/* Better table action spacing */
.table-actions .btn{min-height:34px}

/* Mobile login */
@media(max-width:640px){
  #loginScreen{padding:0;align-items:stretch}
  .login-shell{max-width:100%;min-height:100vh;display:flex}
  .login-card{
    border-radius:0;max-width:100%;padding:36px 22px 28px;
    box-shadow:none;border:none;display:flex;flex-direction:column;justify-content:center;flex:1
  }
}

/* Login always stays light & readable on the brand gradient */
#loginScreen .login-card{
  --text:#134e4a;--text2:#3f6864;--text3:#4a6b66;
  --surface:#ffffff;--surface2:#f5faf9;--border:#d5e5e2;
  --primary:#0f766e;--primary-light:#ccfbf1;--primary-dark:#0d5f59;
  --success:#16a34a;--success-light:#dcfce7;--success-dark:#15803d;
  background:#fff;color:var(--text);
  box-shadow:0 28px 80px rgba(2,24,22,.35);
}
#loginScreen .login-name{color:#0f766e}
#loginScreen .login-sub,
#loginScreen .login-hint,
#loginScreen .login-demo-title{color:#3f6864}
#loginScreen .login-demo-btn small{color:#4a6b66;font-size:10px}
#loginScreen .fc,#loginScreen .form-control{
  background:#fff;color:#134e4a;border-color:#d5e5e2
}
#loginScreen .form-label{color:#3f6864}
#loginScreen .login-demo-btn{background:#f5faf9;border-color:#d5e5e2;color:#134e4a}
#loginScreen .login-demo-btn span{color:#134e4a}
#loginScreen .login-hint,#loginScreen .login-sub,#loginScreen .login-demo-title{color:#6b8f8a}
#loginScreen .check-label{color:#3f6864}
#loginScreen .alert-danger{background:#fee2e2;color:#b91c1c;border-color:#fca5a5}

/* Extra polish — sticky modal footer actions on mobile */
@media(max-width:480px){
  .modal-footer .btn{min-width:0;flex:1}
  .form-section{padding:14px}
  .form-section-title{font-size:12.5px}
}
/* Soft focus highlight for required labels */
.form-label.required{letter-spacing:.01em}
/* Prevent double-border clash on form-control inside form-value wrappers */
.form-value .badge{margin:0}

/* ============================================================
   Case list + realistic teeth + VITA shade polish
   ============================================================ */

/* Realistic enamel look on tooth PNGs (assets are blue line-art) */
.dental-tooth-icon{
  filter:brightness(1.35) sepia(.55) saturate(.45) hue-rotate(340deg) contrast(1.05);
}
.dental-tooth.selected .dental-tooth-icon,
.dental-tooth.treated .dental-tooth-icon{
  filter:brightness(1.2) sepia(.35) saturate(.7) hue-rotate(120deg) contrast(1.05);
}
.dental-tooth{
  background:linear-gradient(165deg,#fffef9 0%,#f7f1e6 55%,#efe6d6 100%);
  border-color:#e0d5c4;
  box-shadow:0 2px 4px rgba(90,70,40,.08),inset 0 1px 0 rgba(255,255,255,.85);
}
.dental-tooth:hover:not(.readonly){
  border-color:var(--dc-accent-border,#0f766e);
  background:linear-gradient(165deg,#f0faf8,#e6f5f2);
}
.dental-tooth.selected,
.dental-tooth.treated{
  background:linear-gradient(165deg,#e6f7f4,#ccfbf1);
  border-color:var(--dc-accent-border,#0f766e);
}
[data-theme="dark"] .dental-tooth{
  background:linear-gradient(165deg,#1a2e2b,#132421);
  border-color:#3d4f4b;color:var(--text3);
  box-shadow:0 1px 2px rgba(0,0,0,.2),inset 0 1px 0 rgba(255,255,255,.05);
}
[data-theme="dark"] .dental-tooth:hover:not(.readonly){
  background:linear-gradient(165deg,#1f3a36,#17403a);
  border-color:var(--primary);
}
[data-theme="dark"] .dental-tooth.selected,
[data-theme="dark"] .dental-tooth.treated{
  background:linear-gradient(165deg,#0f2f2c,#134e4a);
  border-color:var(--primary);
}
[data-theme="dark"] .dental-tooth-num{
  color:var(--text2);background:rgba(13,31,28,.85);
}
[data-theme="dark"] .dental-tooth.selected .dental-tooth-num{
  color:var(--primary);background:rgba(13,31,28,.95);
}
.lab-order-sheet .dental-tooth{
  background:linear-gradient(165deg,#fffef9,#f7f1e6)!important;
  border-color:#d9cfc0!important;
}
.lab-order-sheet .dental-tooth.selected{
  background:linear-gradient(165deg,#e6f7f4,#d5f5ef)!important;
  border-color:var(--lab-teal-dark)!important;
}
.lab-order-sheet .dental-tooth-icon{
  filter:brightness(1.35) sepia(.55) saturate(.45) hue-rotate(340deg) contrast(1.05);
}
.lab-order-sheet .dental-tooth.selected .dental-tooth-icon{
  filter:brightness(1.15) sepia(.3) saturate(.75) hue-rotate(120deg);
}

/* VITA shade guide — realistic enamel gradients, A/B/C/D rows */
.shade-guide-rows{display:flex;flex-direction:column;gap:6px;padding:4px 2px}
.shade-row{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.shade-row-lab{
  width:16px;font-size:10px;font-weight:900;color:var(--lab-teal-dark,#0f766e);
  flex-shrink:0;text-align:center
}
.shade-swatch{
  width:32px;height:36px;border-radius:8px 8px 12px 12px;
  border:2px solid rgba(0,0,0,.12);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.55),0 1px 2px rgba(0,0,0,.06);
}
.shade-swatch .shade-label{
  background:rgba(255,255,255,.72);color:rgba(0,0,0,.62);font-size:7.5px;font-weight:900
}
.shade-swatch.selected{
  border-color:var(--lab-teal-dark,#0f766e);
  box-shadow:0 0 0 3px rgba(15,118,110,.18),inset 0 1px 0 rgba(255,255,255,.5)
}
.shade-preview{
  display:flex;align-items:center;justify-content:center;gap:10px;
  margin:8px 6px 0;padding:8px;border-radius:10px;
  background:#fff;border:1.5px solid var(--lab-border,#cfe8e4)
}
.shade-preview.empty{color:#94a3b8;font-size:11px;font-weight:700}
.shade-preview-chip{
  width:36px;height:36px;border-radius:10px;border:2px solid var(--lab-teal-dark,#0f766e);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.5)
}
.shade-preview strong{font-size:18px;font-weight:900;color:var(--lab-teal-dark,#0f766e)}

/* Cases table — actions under patient name */
.cases-table{min-width:760px}
.case-patient-cell{min-width:200px;max-width:280px}
.case-patient-block{display:flex;flex-direction:column;gap:8px}
.case-patient-top{display:flex;align-items:center;gap:10px}
.case-patient-meta{min-width:0;flex:1}
.case-patient-name{font-weight:800;font-size:14px;color:var(--text);line-height:1.35}
.case-patient-phone{font-size:11px;color:var(--text3);margin-top:2px}
.case-name-actions{
  display:flex;flex-wrap:wrap;gap:4px;align-items:center;
  padding-top:2px
}
.case-name-actions .btn{min-height:30px}
.case-date-main{font-weight:800;font-size:13px}
.case-date-sub{font-size:11px;color:var(--text3);margin-top:3px;font-weight:600}
.case-teeth-cell .case-teeth-list{margin-top:6px}
.case-teeth-cell .dental-pill{font-size:10px;padding:2px 7px}
.case-teeth-cell .tooth-chip-n{font-size:11px}
.case-status-stack{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.num-cell{font-weight:800;white-space:nowrap}
.paid-cell{color:var(--success-dark)}
.case-row:hover td{background:rgba(15,118,110,.04)}
.case-view-hero{
  display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding:14px 16px;margin-bottom:16px;border-radius:14px;
  background:linear-gradient(135deg,rgba(15,118,110,.08),rgba(14,116,144,.04));
  border:1px solid rgba(15,118,110,.16)
}
.case-mobile-card .case-patient-top{align-items:flex-start}

@media(max-width:900px){
  .cases-table{min-width:0}
  .hide-mobile{display:none!important}
  .mobile-card-list.show-mobile{display:flex!important}
}
@media(max-width:640px){
  .case-name-actions .btn{flex:1 1 calc(50% - 4px);justify-content:center}
  .dental-full-row .dental-tooth{max-width:36px}
  .shade-swatch{width:28px;height:32px}
}
