*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:focus { outline: none; }
:focus-visible { outline: 2px solid rgba(139,92,246,0.7); outline-offset: 2px; border-radius: 4px; }
:root {
  color-scheme: dark;
  --bg: #07070A;
  --c-code: 56, 189, 248;
  --surface: #0E0E13;
  --border: rgba(255,255,255,0.06);
  --border2: rgba(255,255,255,0.1);
  --accent: #8B5CF6;
  --accent-rgb: 139,92,246;
  --accent2: #8B5CF6;
  --accent3: #d161ff;
  --c-link: 34, 211, 117;
  --c-note: 79, 172, 254;
  --c-checklist: 245, 158, 11;
  --c-page: 209, 97, 255;
  --c-server: 251, 146, 60;
  --c-command: 139, 92, 246;
  --c-quicktext: 236, 72, 153;
  --c-countdown: 234, 179, 8;
  --c-status: 20, 184, 166;
  --c-linkgroup: 59, 130, 246;
  --c-markdown: 168, 85, 247;
  --c-reminder: 239, 100, 80;
  --c-subscription: 52, 211, 153;
  --c-document: 251, 146, 60;
  --c-fields: 129, 140, 248;
  --c-tracker: 6, 182, 212;
  --c-wifi: 34, 197, 94;
  --c-counter: 251, 191, 36;
  --c-contact: 244, 114, 182;
  --c-expense: 74, 222, 128;
  --c-routine: 251, 113, 133;
  --text: #ffffff;
  --muted: #8c8c9a;
  --danger: #ef4444;
  --radius: 20px;
  --font-en: 'Inter', 'Syne', sans-serif;
  --font-ar: 'Cairo', sans-serif;
  --font-mono: 'IBM Plex Mono', monospace;
  --accent-light: rgba(139, 92, 246, 0.1);
}

html {
  scroll-behavior: smooth;
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
::selection { background: rgba(139,92,246,0.35); color: #fff; }
::-moz-selection { background: rgba(139,92,246,0.35); color: #fff; }
html,body{min-height:100vh;background-color:var(--bg);background-image:linear-gradient(to right, rgba(255,255,255,0.018) 1px, transparent 1px), linear-gradient(to bottom, rgba(255,255,255,0.018) 1px, transparent 1px);background-size:48px 48px;background-position: center center;color:var(--text);font-family:var(--font-ar);overflow-x:hidden;position:relative;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}
.hidden{display:none!important;}

/* ─── Aurora background glow (animated blobs) ─────────────
 * Three soft radial blobs that float in the page background,
 * creating a subtle depth/ambiance without distracting from cards.
 * Respects prefers-reduced-motion. */
body::before, body::after {
  content: '';
  position: fixed;
  pointer-events: none;
  z-index: -1;
  filter: blur(60px);
  opacity: 0.38;
  will-change: transform;
}
body::before {
  top: -180px; right: -180px;
  width: 620px; height: 620px;
  background: radial-gradient(circle, rgba(139,92,246,0.45) 0%, transparent 62%);
  animation: auroraFloat1 22s ease-in-out infinite;
}
body::after {
  bottom: -200px; left: -200px;
  width: 680px; height: 680px;
  background: radial-gradient(circle, rgba(56,189,248,0.3) 0%, transparent 62%);
  animation: auroraFloat2 28s ease-in-out infinite;
}
@keyframes auroraFloat1 {
  0%,100% { transform: translate(0, 0) scale(1); }
  33%     { transform: translate(-80px, 60px) scale(1.1); }
  66%     { transform: translate(60px, -40px) scale(0.95); }
}
@keyframes auroraFloat2 {
  0%,100% { transform: translate(0, 0) scale(1); }
  40%     { transform: translate(80px, -60px) scale(1.15); }
  75%     { transform: translate(-50px, 30px) scale(0.9); }
}
@media (prefers-reduced-motion: reduce) {
  body::before, body::after { animation: none; }
}

/* Time-based accent tweaks */
body[data-time="morning"] { --accent-rgb: 251, 191, 36; /* warm sun */ }
body[data-time="afternoon"] { --accent-rgb: 139, 92, 246; /* default purple */ }
body[data-time="evening"] { --accent-rgb: 244, 114, 182; /* sunset pink */ }
body[data-time="night"] { --accent-rgb: 56, 189, 248; /* cool blue */ }

/* ─── Today hero strip (greeting + quick chips) ─────────── */
.hero-strip {
  position: relative;
  margin: 8px 22px 14px;
  padding: 18px 22px;
  border-radius: 18px;
  background: linear-gradient(135deg,
    rgba(139,92,246,0.08) 0%,
    rgba(56,189,248,0.05) 50%,
    rgba(244,114,182,0.04) 100%);
  border: 1px solid rgba(255,255,255,0.06);
  overflow: hidden;
  opacity: 0; transform: translateY(-8px);
  animation: heroStripIn .55s cubic-bezier(.2,.8,.25,1) forwards;
}
.hero-strip:empty { display: none; }
@keyframes heroStripIn {
  to { opacity: 1; transform: translateY(0); }
}
.hero-strip-inner {
  display: flex; align-items: center; justify-content: space-between;
  gap: 18px; flex-wrap: wrap;
  position: relative; z-index: 1;
}
.hero-strip-left {
  display: flex; flex-direction: column; gap: 2px;
  min-width: 0;
}
.hero-strip-greet {
  font-size: 1.2rem; font-weight: 800;
  background: linear-gradient(135deg, #fff 0%, #c4b5fd 80%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  letter-spacing: -0.01em;
}
.hero-strip-date {
  font-size: 0.8rem; color: var(--muted);
  font-weight: 500;
}
.hero-strip-chips {
  display: flex; gap: 8px; flex-wrap: wrap;
  align-items: center;
}
.hero-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 0.82rem; font-weight: 600;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.07);
  color: var(--text);
  transition: transform .12s, background .12s;
}
.hero-chip:hover { transform: translateY(-1px); background: rgba(255,255,255,0.08); }
.hero-chip[onclick] { cursor: pointer; }
.hero-chip-icon { font-size: 0.95rem; line-height: 1; }
.hero-chip-warn {
  background: rgba(239,68,68,0.1);
  border-color: rgba(239,68,68,0.2);
  color: #fca5a5;
}
.hero-chip-ok {
  background: rgba(34,197,94,0.1);
  border-color: rgba(34,197,94,0.22);
  color: #86efac;
}
.hero-chip-prog {
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.22);
  color: #c4b5fd;
}
.hero-chip-trip {
  background: rgba(56,189,248,0.12);
  border-color: rgba(56,189,248,0.22);
  color: #7dd3fc;
}
.hero-chip-streak {
  background: linear-gradient(135deg, rgba(251,146,60,0.15), rgba(239,68,68,0.12));
  border-color: rgba(251,146,60,0.25);
  color: #fdba74;
}
.hero-strip-aurora {
  position: absolute; inset: 0;
  background:
    radial-gradient(circle at 15% 20%, rgba(139,92,246,0.15) 0%, transparent 40%),
    radial-gradient(circle at 85% 80%, rgba(56,189,248,0.1) 0%, transparent 40%);
  pointer-events: none;
  z-index: 0;
}
@media (max-width: 640px) {
  .hero-strip { margin: 6px 12px 10px; padding: 14px 16px; }
  .hero-strip-greet { font-size: 1.05rem; }
  .hero-strip-date { font-size: 0.75rem; }
  .hero-strip-inner { gap: 10px; }
  .hero-chip { padding: 5px 10px; font-size: 0.76rem; }
}

/* ─── Stagger entrance animations for dashboard cards ───── */
@keyframes cardStaggerIn {
  from { opacity: 0; transform: translateY(14px) scale(.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.dash-grid > .card-container:not(.card-stagger-done) {
  opacity: 0;
  animation: cardStaggerIn .5s cubic-bezier(.2,.8,.25,1) forwards;
}
.dash-grid > .card-container:nth-child(1) { animation-delay: 0.02s; }
.dash-grid > .card-container:nth-child(2) { animation-delay: 0.06s; }
.dash-grid > .card-container:nth-child(3) { animation-delay: 0.1s; }
.dash-grid > .card-container:nth-child(4) { animation-delay: 0.14s; }
.dash-grid > .card-container:nth-child(5) { animation-delay: 0.18s; }
.dash-grid > .card-container:nth-child(6) { animation-delay: 0.22s; }
.dash-grid > .card-container:nth-child(7) { animation-delay: 0.26s; }
.dash-grid > .card-container:nth-child(8) { animation-delay: 0.3s; }
.dash-grid > .card-container:nth-child(9) { animation-delay: 0.34s; }
.dash-grid > .card-container:nth-child(10) { animation-delay: 0.38s; }
.dash-grid > .card-container:nth-child(n+11) { animation-delay: 0.42s; }
@media (prefers-reduced-motion: reduce) {
  .dash-grid > .card-container { animation: none !important; opacity: 1 !important; }
}

/* Custom scrollbar */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.08); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.15); }
* { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.08) transparent; }

/* CRT scanlines removed */

.login-screen{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at center, rgba(139,92,246,0.06) 0%, var(--bg) 70%);z-index:100;overflow:hidden;}
.login-box{position:relative;display:flex;flex-direction:column;align-items:center;gap:20px;padding:48px 56px;background:var(--surface);border:1px solid rgba(139,92,246,0.15);border-radius:24px;box-shadow:0 24px 60px rgba(0,0,0,0.7), 0 0 0 1px rgba(139,92,246,0.08);animation:fadeUp .6s cubic-bezier(0.16, 1, 0.3, 1);}
@keyframes fadeUp{from{opacity:0;transform:translateY(30px) scale(0.95)}to{opacity:1;transform:translateY(0) scale(1)}}

.login-logo, .dash-logo { font-family: var(--font-en); font-weight: 800; cursor: pointer; display: flex; align-items: baseline; letter-spacing: 2px; }
.login-logo { font-size: 2.8rem; }
.dash-logo { font-size: 1.4rem; letter-spacing: 1px; }
.logo-letter { color: var(--text); background: linear-gradient(135deg, #ffffff 0%, #a1a1aa 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }
.logo-dot { color: var(--accent2); margin: 0 1px; opacity: 0.8; }
.login-sub{color:var(--muted);font-size:1rem;letter-spacing:1px;font-weight:500;}
.pin-inputs{display:flex;gap:12px;direction:ltr;}
.pin-digit{width:56px;height:68px;background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:12px;color:var(--text);font-family:var(--font-mono);font-size:2rem;font-weight:600;text-align:center;outline:none;transition:all .2s;}
.pin-digit:focus{border-color:var(--accent);background:rgba(255,255,255,0.06);}
.pin-error{color:var(--danger);font-size:.9rem;opacity:0;transition:opacity .3s;font-weight:600;}
.pin-error.show{opacity:1;}
.login-box.shake{animation:shake .4s ease;}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}}

.dashboard { min-height: 100vh; display: flex; flex-direction: column; background: radial-gradient(circle at 15% 15%, rgba(139,92,246,0.07), transparent 50%), radial-gradient(circle at 85% 85%, rgba(139,92,246,0.04), transparent 50%); }

/* Desktop: lock the dashboard to viewport height so .main-content (overflow-y:auto)
   becomes the sole scroller. This keeps the header (sticky top:0), the sidebar
   (sticky top:58), and the floating FAB visually pinned during scroll. The mobile
   layout (which uses .dash-body { display: block } + bottom-nav) is intentionally
   excluded because it relies on body-level scrolling. */
@media (min-width: 901px) {
  .dashboard {
    height: 100vh;
    height: 100dvh;
    max-height: 100vh;
    max-height: 100dvh;
    overflow: hidden;
  }
}

/* ─── HEADER ──────────────────────────────────────────────── */
.dash-header {
  height: 74px;
  min-height: 74px;
  width: 100%;
  background: rgba(7,7,10,0.97);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 24px;
  position: sticky;
  top: 0;
  z-index: 60;
  backdrop-filter: blur(24px);
}
.dash-header-right { display: flex; align-items: center; gap: 16px; }
.dash-header-left { display: flex; align-items: center; gap: 14px; }
.dash-header-center {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  display: flex; align-items: center; gap: 8px;
  z-index: 2;
  pointer-events: auto;
}
@media (max-width: 900px) {
  .dash-header-center {
    position: static;
    transform: none;
    margin-inline: 6px;
    gap: 4px;
  }
  .dash-header-center .header-home-lbl,
  .dash-header-center .header-today-lbl { display: none; }
  .dash-header-center .header-today-btn,
  .dash-header-center .header-home-btn { padding: 5px 8px; gap: 3px; }
}

/* Header "الرئيسية" home button */
.header-home-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 12px 5px 10px;
  height: 30px;
  background: linear-gradient(135deg, rgba(45,212,191,0.12), rgba(20,184,166,0.06));
  border: 1px solid rgba(45,212,191,0.22);
  border-radius: 999px;
  color: var(--text, #fff);
  font-family: var(--font-ar);
  font-size: 0.82rem; font-weight: 700;
  cursor: pointer;
  transition: transform .14s, background .14s, border-color .14s, box-shadow .14s;
  flex-shrink: 0;
}
.header-home-btn:hover {
  background: linear-gradient(135deg, rgba(45,212,191,0.22), rgba(20,184,166,0.1));
  border-color: rgba(45,212,191,0.4);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(20,184,166,0.22);
}
.header-home-btn.active {
  background: linear-gradient(135deg, rgba(45,212,191,0.35), rgba(20,184,166,0.2));
  border-color: rgba(45,212,191,0.55);
  box-shadow: 0 0 0 1px rgba(45,212,191,0.3), 0 0 14px rgba(20,184,166,0.25);
}
.header-home-btn svg { color: #5eead4; flex-shrink: 0; }
.header-home-btn.active svg { color: #ccfbf1; }
.header-home-lbl { line-height: 1; }
.header-divider { width: 1px; height: 24px; background: var(--border2); }
.header-section-label { font-size: 0.85rem; color: var(--muted); font-family: var(--font-ar); font-weight: 500; }

/* Header "اليوم" quick-access button */
.header-today-btn {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 12px 5px 10px;
  height: 30px;
  background: linear-gradient(135deg, rgba(167,139,250,0.12), rgba(139,92,246,0.06));
  border: 1px solid rgba(167,139,250,0.22);
  border-radius: 999px;
  color: var(--text, #fff);
  font-family: var(--font-ar);
  font-size: 0.82rem; font-weight: 700;
  cursor: pointer;
  transition: transform .14s, background .14s, border-color .14s, box-shadow .14s;
  flex-shrink: 0;
  position: relative;
}
.header-today-btn:hover {
  background: linear-gradient(135deg, rgba(167,139,250,0.22), rgba(139,92,246,0.1));
  border-color: rgba(167,139,250,0.4);
  transform: translateY(-1px);
  box-shadow: 0 4px 14px rgba(139,92,246,0.2);
}
.header-today-btn.active {
  background: linear-gradient(135deg, rgba(167,139,250,0.35), rgba(139,92,246,0.2));
  border-color: rgba(167,139,250,0.55);
  box-shadow: 0 0 0 1px rgba(167,139,250,0.3), 0 0 14px rgba(139,92,246,0.25);
}
.header-today-btn svg { color: #c4b5fd; flex-shrink: 0; }
.header-today-btn.active svg { color: #e9e4ff; }
.header-today-lbl { line-height: 1; }
.header-today-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 6px;
  border-radius: 999px;
  background: var(--danger); color: #fff;
  font-family: var(--font-mono, monospace);
  font-size: 0.68rem; font-weight: 800;
  margin-inline-start: 2px;
  box-shadow: 0 0 10px rgba(239,68,68,0.45);
}
.header-today-count.hidden { display: none; }

@media (max-width: 640px) {
  .header-today-lbl { display: none; }
  .header-today-btn { padding: 5px 8px; gap: 4px; }
}

/* Smart Feed toggle button */
.smart-feed-btn {
  width: 28px; height: 28px; border-radius: 8px;
  background: none; border: 1px solid transparent;
  color: var(--muted); cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: all .25s; position: relative; flex-shrink: 0;
}
.smart-feed-btn:hover { background: rgba(139,92,246,0.08); color: var(--accent); }
.smart-feed-btn.active {
  color: var(--accent);
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.25);
  box-shadow: 0 0 12px rgba(139,92,246,0.15);
}
.smart-feed-btn.active::after {
  content: '';
  position: absolute;
  top: -2px; right: -2px;
  width: 7px; height: 7px;
  background: var(--accent);
  border-radius: 50%;
  box-shadow: 0 0 6px var(--accent);
}

/* Smart feed empty state */
.smart-empty-state {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 12px; padding: 60px 20px; text-align: center;
}
.smart-empty-icon { font-size: 3rem; opacity: 0.8; }
.smart-empty-title { font-size: 1.1rem; font-weight: 700; color: var(--text); }
.smart-empty-sub { font-size: 0.85rem; color: var(--muted); line-height: 1.6; max-width: 320px; }
.smart-show-all-btn {
  margin-top: 8px; padding: 8px 20px;
  background: rgba(139,92,246,0.1); border: 1px solid rgba(139,92,246,0.25);
  border-radius: 12px; color: var(--accent);
  font-family: var(--font-ar); font-size: 0.85rem; font-weight: 700;
  cursor: pointer; transition: all .2s;
}
.smart-show-all-btn:hover { background: rgba(139,92,246,0.2); }

/* Unified time pill: icon + stacked clock/date */
.header-time-pill {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 16px 8px 14px;
  background: linear-gradient(135deg, rgba(139,92,246,0.06), rgba(255,255,255,0.02));
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 14px;
  transition: all 0.2s ease;
  line-height: 1;
}
.header-time-pill:hover {
  background: linear-gradient(135deg, rgba(139,92,246,0.12), rgba(255,255,255,0.04));
  border-color: rgba(139,92,246,0.22);
}
.header-time-icon {
  color: var(--accent);
  opacity: 0.75;
  flex-shrink: 0;
}
.header-time-stack {
  display: flex;
  flex-direction: column;
  gap: 5px;
  align-items: flex-start;
}
.header-clock {
  font-family: var(--font-mono);
  font-size: 1.02rem;
  color: var(--text);
  font-weight: 700;
  letter-spacing: 0.4px;
  line-height: 1;
  display: inline-flex;
  align-items: baseline;
  gap: 0;
  direction: ltr;
}
.header-clock .hc-hh,
.header-clock .hc-mm {
  font-variant-numeric: tabular-nums;
  min-width: 1.1em;
  text-align: center;
}
.header-clock .hc-sep {
  opacity: 1;
  padding: 0 1px;
  transition: opacity 0.35s ease;
  color: rgba(168, 131, 255, 0.95);
}
.header-clock .hc-mer {
  font-family: var(--font-ar);
  font-size: 0.62rem;
  font-weight: 700;
  padding: 2px 5px;
  margin-inline-start: 6px;
  border-radius: 6px;
  background: linear-gradient(135deg, rgba(139,92,246,0.22), rgba(45,212,191,0.18));
  color: #e9e4ff;
  line-height: 1;
  letter-spacing: 0;
  box-shadow: 0 0 0 1px rgba(139,92,246,0.22) inset;
  transform: translateY(-1px);
}
.header-date {
  font-size: 0.66rem;
  color: rgba(232, 238, 247, 0.5);
  font-family: var(--font-ar);
  font-weight: 500;
  letter-spacing: 0.02em;
  line-height: 1;
  white-space: nowrap;
  transition: color 0.3s ease, opacity 0.3s ease;
}
.header-date.is-hijri {
  color: rgba(45, 212, 191, 0.75);
}

/* Header alert badge */
.header-alert-badge {
  display: flex;
  align-items: center;
  gap: 4px;
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 8px;
  transition: all .2s;
  position: relative;
  font-family: var(--font-mono);
}
.header-alert-badge:hover { background: rgba(255,255,255,0.06); color: var(--text); }
.alert-badge-count {
  font-size: 0.65rem;
  font-weight: 800;
  background: rgba(234,179,8,0.2);
  color: #eab308;
  border-radius: 99px;
  padding: 1px 6px;
  min-width: 16px;
  text-align: center;
  line-height: 1.4;
}
.alert-badge-count.alert-badge-danger {
  background: rgba(239,68,68,0.2);
  color: var(--danger);
  animation: pulseBadge 1.5s ease infinite;
}

/* Header search */
.header-search-wrap { position: relative; display: flex; align-items: center; gap: 8px; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 10px; padding: 0 12px; height: 34px; min-width: 200px; transition: border-color .2s; }
.header-search-wrap:focus-within { border-color: var(--border2); background: rgba(255,255,255,0.06); }
.header-search-icon { color: var(--muted); flex-shrink: 0; }
.header-search-input { background: none; border: none; outline: none; color: var(--text); font-family: var(--font-ar); font-size: 0.85rem; width: 100%; }
.header-search-input::placeholder { color: rgba(255,255,255,0.2); }
.search-clear-btn { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 0.75rem; padding: 0; line-height: 1; transition: color .15s; flex-shrink: 0; }
.search-clear-btn:hover { color: var(--text); }
/* Search history dropdown */
.search-history-drop {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  left: 0;
  background: #0F0F16;
  border: 1px solid var(--border2);
  border-radius: 12px;
  padding: 6px;
  z-index: 999;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.search-hist-item {
  background: none;
  border: none;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
  text-align: right;
  padding: 7px 12px;
  border-radius: 8px;
  cursor: pointer;
  transition: all .15s;
}
.search-hist-item::before { content: '🕐 '; }
.search-hist-item:hover { background: rgba(255,255,255,0.06); color: var(--text); }
.search-hist-header {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  color: var(--muted);
  padding: 4px 12px 2px;
  opacity: 0.6;
}
.search-type-sug {
  display: flex !important;
  align-items: center;
  gap: 8px;
}
.search-type-sug::before { content: none !important; }
.sug-icon { font-size: 0.9rem; flex-shrink: 0; }
.sug-label { font-family: var(--font-mono); font-size: 0.75rem; color: var(--accent); flex-shrink: 0; }
.sug-label-ar { font-size: 0.78rem; color: var(--muted); flex: 1; text-align: right; }
.sug-count { font-size: 0.68rem; font-family: var(--font-mono); color: rgba(255,255,255,0.25); background: rgba(255,255,255,0.05); padding: 0 5px; border-radius: 4px; flex-shrink: 0; }
.search-hist-clear {
  background: none;
  border: none;
  border-top: 1px solid var(--border);
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.75rem;
  padding: 7px 12px;
  margin-top: 2px;
  cursor: pointer;
  text-align: right;
  transition: color .15s;
}
.search-hist-clear:hover { color: var(--danger); }
.header-icon-btn {
  width: 34px; height: 34px; border-radius: 10px;
  background: none; border: none; color: var(--muted);
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: background-color .16s ease, color .16s ease, border-color .16s ease, box-shadow .16s ease;
  position: relative;
}
.header-icon-btn:hover { background: rgba(255,255,255,0.06); color: var(--text); }
.header-icon-btn:active { transform: none !important; background: rgba(255,255,255,0.08); }
.header-icon-btn.active { background: rgba(139,92,246,0.12); color: var(--accent2); }
#settings-btn { margin-inline-start: 8px; }

/* Header button tooltip — appears below */
.header-icon-btn::before {
  content: attr(title);
  position: absolute;
  top: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  background: #0F0F16;
  border: 1px solid var(--border2);
  color: var(--text);
  font-size: 0.72rem;
  font-weight: 700;
  font-family: var(--font-ar);
  padding: 5px 10px;
  border-radius: 8px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s;
  z-index: 200;
}
.header-icon-btn:hover::before { opacity: 1; }

/* ─── BODY ROW ─────────────────────────────────────────────── */
.dash-body { display: flex; flex-direction: row; flex: 1; min-height: 0; }

.main-content { flex: 1; padding: 28px 32px; overflow-y: auto; }

/* ─── SIDEBAR ──────────────────────────────────────────────── */
.sidebar {
  width: 68px;
  height: calc(100vh - 58px);
  background: rgba(7,7,10,0.97);
  border-inline-start: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 16px 0;
  position: sticky;
  top: 58px;
  flex-shrink: 0;
  backdrop-filter: blur(24px);
  z-index: 50;
  gap: 4px;
  transition: width .25s cubic-bezier(0.16,1,0.3,1);
  overflow: hidden;
}

/* Expanded sidebar */
.sidebar.expanded {
  width: 210px;
  align-items: flex-start;
}

/* In expanded mode: let buttons own their padding — containers just center */
.sidebar.expanded .sidebar-top { padding-right: 12px; padding-left: 12px; }

.sidebar.expanded .sidebar-nav-btn,
.sidebar.expanded .sidebar-icon-btn {
  width: calc(100% - 16px);
  margin-right: 8px;
  margin-left: 8px;
  justify-content: flex-start;
  gap: 10px;
  padding: 0 10px;
  border-radius: 10px;
  height: 40px;
}

.sidebar-label {
  display: none;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sidebar.expanded .sidebar-label { display: block; }
/* Hide tooltip when expanded */
.sidebar.expanded .sidebar-icon-btn::before,
.sidebar.expanded .sidebar-nav-btn::before { display: none; }

.sidebar-top { display: flex; flex-direction: column; align-items: center; gap: 8px; padding-bottom: 10px; border-bottom: 1px solid var(--border); width: 100%; }
.sidebar-logo { font-family: var(--font-en); font-weight: 800; font-size: 0.65rem; color: var(--text); letter-spacing: 1px; cursor: pointer; display: flex; align-items: baseline; gap: 1px; padding: 8px 0; }
.sidebar-logo .logo-dot { color: var(--accent2); }

/* Primary navigation — no flex-grow, stays compact */
.sidebar-nav {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 10px 0 8px;
  width: 100%;
}
/* Keep backward-compat alias */
.sidebar-filters { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 10px 0 8px; width: 100%; }

/* Compact status badges below nav */
.sidebar-status-bar {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 4px 0 6px;
  width: 100%;
}
.sidebar.expanded .sidebar-status-bar {
  align-items: flex-start;
  padding-right: 20px;
  padding-left: 20px;
}
.sb-badge {
  display: inline-flex;
  align-items: center;
  font-size: 0.62rem;
  font-family: var(--font-ar);
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 99px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--muted);
  white-space: nowrap;
  max-width: 100%;
}
.sb-badge-danger {
  background: rgba(239,68,68,0.1);
  border-color: rgba(239,68,68,0.25);
  color: #f87171;
}
.sb-badge-success {
  background: rgba(34,197,94,0.1);
  border-color: rgba(34,197,94,0.25);
  color: #4ade80;
}

/* Spacer pushes bottom section to the bottom */
.sidebar-spacer { flex: 1; min-height: 8px; }

/* Bottom tool buttons */
.sidebar-bottom {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 10px 0 8px;
  border-top: 1px solid var(--border);
  width: 100%;
}
.sidebar-bottom-group {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  width: 100%;
}
.sidebar-bottom-divider {
  width: 28px;
  height: 1px;
  background: rgba(255,255,255,0.07);
  margin: 3px auto;
}

.sidebar-clock-wrap { display: flex; flex-direction: column; align-items: center; }
.sidebar-clock { font-family: var(--font-mono); font-size: 0.58rem; color: var(--muted); letter-spacing: 0.5px; font-weight: 700; }

.sidebar-icon-btn {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .2s;
  position: relative;
}
.sidebar-icon-btn:hover { background: rgba(255,255,255,0.07); color: var(--text); }
.sidebar-icon-btn.active {
  background: rgba(139,92,246,0.18);
  color: #c4b5fd;
  box-shadow: inset 0 0 0 1px rgba(139,92,246,0.35), 0 0 12px rgba(139,92,246,0.12);
}
.sidebar-danger { color: rgba(239,68,68,0.6); }
.sidebar-danger:hover { background: rgba(239,68,68,0.1) !important; color: var(--danger) !important; }

/* Tooltip on hover */
.sidebar-icon-btn::before, .sidebar-nav-btn::before {
  content: attr(title);
  position: absolute;
  right: calc(100% + 10px);
  top: 50%;
  transform: translateY(-50%);
  background: #0F0F16;
  border: 1px solid var(--border2);
  color: var(--text);
  font-size: 0.72rem;
  font-weight: 700;
  font-family: var(--font-ar);
  padding: 5px 10px;
  border-radius: 8px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s;
  z-index: 100;
}
.sidebar-icon-btn:hover::before, .sidebar-nav-btn:hover::before { opacity: 1; }

.sidebar-nav-btn {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all .2s;
  position: relative;
}
.sidebar-nav-btn:hover { background: rgba(255,255,255,0.07); color: var(--text); }
.sidebar-nav-btn.active {
  background: rgba(139,92,246,0.18);
  color: #c4b5fd;
  box-shadow: inset 0 0 0 1px rgba(139,92,246,0.35), 0 0 12px rgba(139,92,246,0.12);
}

/* Search bar */
.sidebar-search-bar {
  position: fixed;
  top: 58px;
  right: 68px;
  left: 0;
  height: 52px;
  background: rgba(7,7,10,0.97);
  border-bottom: 1px solid var(--border2);
  backdrop-filter: blur(24px);
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 24px;
  z-index: 49;
  animation: slideDown .2s cubic-bezier(0.16,1,0.3,1);
  color: var(--muted);
}
.sidebar-search-bar.hidden { display: none; }
@keyframes slideDown { from { transform: translateY(-100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
.sidebar-search-input { flex: 1; background: none; border: none; color: var(--text); font-family: var(--font-ar); font-size: 0.95rem; font-weight: 500; outline: none; }
.sidebar-search-input::placeholder { color: rgba(255,255,255,0.2); }
.sidebar-search-close { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 0.9rem; padding: 4px 8px; border-radius: 6px; transition: color .2s; }
.sidebar-search-close:hover { color: var(--danger); }

/* quick-add-trigger in sidebar */
.quick-add-trigger { color: var(--accent2) !important; }
.quick-add-trigger.active { background: rgba(139,92,246,0.12) !important; }
.dash-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  grid-auto-flow: dense;
  grid-auto-rows: min-content;
  align-items: stretch;
  align-content: start;
  gap: 20px;
  width: 100%;
}

/* Card type colors */
.card[data-type="link"]         { --card-color: var(--c-link); }
.card[data-type="note"]         { --card-color: var(--c-note); }
.card[data-type="checklist"]    { --card-color: var(--c-checklist); }
.card[data-type="page"]         { --card-color: var(--c-page); }
.card[data-type="server"]       { --card-color: var(--c-server); }
.card[data-type="command"]      { --card-color: var(--c-command); }
.card[data-type="quicktext"]    { --card-color: var(--c-quicktext); }
.card[data-type="countdown"]    { --card-color: var(--c-countdown); }
.card[data-type="status"]       { --card-color: var(--c-status); }
.card[data-type="linkgroup"]    { --card-color: var(--c-linkgroup); }
.card[data-type="markdown"]     { --card-color: var(--c-markdown); }
.card[data-type="reminder"]     { --card-color: var(--c-reminder); }
.card[data-type="tracker"]      { --card-color: var(--c-tracker); }
.card[data-type="wifi"]         { --card-color: var(--c-wifi); }
.card[data-type="subscription"] { --card-color: var(--c-subscription); }
.card[data-type="document"]     { --card-color: var(--c-document); }
.card[data-type="fields"]       { --card-color: var(--c-fields); }
.card[data-type="routine"]      { --card-color: var(--c-routine); }
.card[data-type="counter"]      { --card-color: var(--c-counter); }
.card[data-type="contact"]      { --card-color: var(--c-contact); }
.card[data-type="expense"]      { --card-color: var(--c-expense); }
.card[data-type="code"]         { --card-color: var(--c-code); }
.card[data-type="quran"]        { --card-color: 34, 197, 94; }
.card[data-type="zakat"]        { --card-color: 251, 191, 36; }
.card[data-type="fasting"]      { --card-color: 139, 92, 246; }
.card[data-type="iou"]          { --card-color: 89, 216, 255; }
.card[data-type="savings_goal"] { --card-color: 45, 212, 191; }
.card[data-type="gold"]         { --card-color: 251, 191, 36; }
.card[data-type="net_worth"]    { --card-color: 94, 234, 212; }
.card[data-type="purchase_decision"] { --card-color: 249, 115, 22; }
.card[data-type="appliance"]    { --card-color: 148, 163, 184; }
.card[data-type="gift"]         { --card-color: 244, 114, 182; }
.card[data-type="chore"]        { --card-color: 6, 182, 212; }
.card[data-type="pomodoro"]     { --card-color: 239, 68, 68; }
.card[data-type="project"]      { --card-color: 139, 92, 246; }
.card[data-type="inbox"]        { --card-color: 100, 116, 139; }
.card[data-type="mood"]         { --card-color: 251, 191, 36; }
.card[data-type="workout"]      { --card-color: 239, 68, 68; }
.card[data-type="meditation"]   { --card-color: 167, 139, 250; }
.card[data-type="vitals"]       { --card-color: 244, 63, 94; }
.card[data-type="course"]       { --card-color: 59, 130, 246; }
.card[data-type="language"]     { --card-color: 20, 184, 166; }
.card[data-type="idea"]         { --card-color: 251, 191, 36; }
.card[data-type="quote"]        { --card-color: 167, 139, 250; }
.card[data-type="recipe"]       { --card-color: 249, 115, 22; }
.card[data-type="goal"]         { --card-color: 34, 197, 94; }
.card[data-type="meeting"]      { --card-color: 59, 130, 246; }
.card[data-type="loan"]         { --card-color: 239, 68, 68; }
.card[data-type="crypto"]       { --card-color: 245, 158, 11; }
.card[data-type="plant"]        { --card-color: 34, 197, 94; }
.card[data-type="journal"]      { --card-color: 236, 72, 153; }
.card[data-type="week_plan"]    { --card-color: 99, 102, 241; }
.card[data-type="review"]       { --card-color: 6, 182, 212; }
.card[data-type="meals"]        { --card-color: 249, 115, 22; }
.card[data-type="podcast"]      { --card-color: 167, 139, 250; }
.card[data-type="playlist"]     { --card-color: 34, 197, 94; }
.card[data-type="trip"]         { --card-color: 6, 182, 212; }

/* ─── BENTO BOX CARD BASE ────────────────────────────────────── */
.card {
  position: relative;
  background: rgba(255, 255, 255, 0.04);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-top: 2px solid rgba(var(--card-color, 255,255,255), 0.3);
  border-radius: 20px;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  cursor: pointer;
  transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.3s cubic-bezier(0.16, 1, 0.3, 1), border-color 0.3s cubic-bezier(0.16, 1, 0.3, 1), background 0.3s ease;
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45), 0 0 30px rgba(var(--card-color, 255,255,255), 0.05);
}

/* ─── NOTIFICATION HUB BENTO CARD ──────────────────────────── */
.notification-hub-card {
  cursor: default !important;
  background: linear-gradient(135deg, rgba(255,255,255,0.05) 0%, rgba(20,10,10,0.4) 100%) !important;
  border-color: rgba(239, 68, 68, 0.2) !important;
}
.hub-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 20px;
}
.hub-icon { font-size: 1.5rem; }
.hub-title { font-size: 1.2rem; font-weight: 800; color: var(--text); flex: 1; }
.hub-badge { background: var(--danger); color: #fff; font-size: 0.75rem; font-weight: 800; padding: 4px 10px; border-radius: 99px; }

.crit-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 12px;
}
.crit-item {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  padding: 12px 14px;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.crit-item:hover {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.12);
  transform: translateY(-2px);
}
.crit-header { display: flex; align-items: center; gap: 8px; }
.crit-icon { font-size: 1.1rem; }
.crit-title { font-size: 0.88rem; font-weight: 700; color: var(--text); flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.crit-badge { font-size: 0.68rem; font-weight: 700; padding: 2px 8px; border-radius: 6px; }

.crit-badge-danger { background: rgba(239,68,68,0.15); color: var(--danger); }
.crit-badge-warn { background: rgba(245,158,11,0.15); color: #f59e0b; }
.crit-badge-info { background: rgba(59,130,246,0.15); color: #3b82f6; }
.crit-badge-success { background: rgba(34,211,117,0.15); color: #22d375; }

.crit-bar-track { width: 100%; height: 4px; background: rgba(255,255,255,0.05); border-radius: 2px; overflow: hidden; }
.crit-bar-fill { height: 100%; transition: width 0.4s ease; }
.card::before {
  content: ''; position: absolute; inset: 0; background: radial-gradient(circle at top left, rgba(var(--card-color,255,255,255), 0.15), transparent 70%); pointer-events: none; opacity: 0.5; transition: opacity 0.3s;
}
.dash-grid { perspective: 1200px; }
.card {
  transform-style: preserve-3d;
}
.card:hover {
  will-change: transform;
  border-color: rgba(var(--card-color,255,255,255), 0.3);
  transform: translateY(-4px) scale(1.01)
    rotateX(var(--tilt-x, 0deg))
    rotateY(var(--tilt-y, 0deg));
  box-shadow:
    calc(var(--tilt-y-px, 0) * -1px) calc(var(--tilt-x-px, 0) * 1px + 20px)
    50px rgba(0, 0, 0, 0.6),
    0 0 60px rgba(var(--card-color, 255,255,255), 0.2);
}
.card:hover::before { opacity: 1; }

/* Shine sweep on hover — disabled per user request */
/* (was: .card::after linear-gradient sliding from -100% to 100% on hover) */

.card-compact { 
  min-height: auto; 
  padding: 16px 20px; 
  display: grid !important; 
  grid-template-columns: auto 1fr auto; 
  grid-template-rows: auto auto; 
  column-gap: 16px;
  row-gap: 4px;
  align-items: center;
}
.card-compact .card-type-badge { display: none; }
.card-compact .card-icon { grid-row: 1 / span 2; grid-column: 1; margin: 0 !important; width: 44px; height: 44px; font-size: 1.5rem; border-radius: 14px; }
.card-compact .card-title { grid-row: 1; grid-column: 2; align-self: end; font-size: 1.1rem; }
.card-compact .card-meta { grid-row: 2; grid-column: 2; align-self: start; font-size: 0.8rem; }
.card-compact .status-meta { display: flex; align-items: center; gap: 8px; font-weight: 600; }
.card-compact .status-dot { width: 10px; height: 10px; box-shadow: 0 0 10px rgba(var(--card-color,255,255,255), 0.4); }
.card-compact .card-actions { position: static; opacity: 1; transform: none; background: none; grid-row: 1 / span 2; grid-column: 3; padding: 0; pointer-events: auto; }
.card-compact .card-actions button { background: none !important; opacity: 0; }
.card-compact:hover .card-actions button { opacity: 1; }

.card-wide { 
  grid-column: span 2; 
  padding: 24px;
}
.card-wide .subs-preview-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
  width: 100%;
}
.sub-item-preview {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 14px;
  padding: 12px 16px;
  display: flex !important;
  align-items: center;
  gap: 12px;
  position: relative;
  overflow: hidden;
}
/* Burn-meter: thin bar at the bottom indicating cycle progress */
.sub-item-preview::after {
  content: '';
  position: absolute;
  left: 0; right: auto;
  bottom: 0;
  height: 2px;
  width: var(--burn-pct, 0%);
  background: linear-gradient(90deg, rgba(34,197,94,0.8), rgba(245,158,11,0.8));
  border-radius: 0 2px 2px 0;
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.sub-item-preview.sub-burn-cool::after { background: linear-gradient(90deg, #22c55e, #22d3ee); }
.sub-item-preview.sub-burn-warm::after { background: linear-gradient(90deg, #f59e0b, #f97316); }
.sub-item-preview.sub-burn-hot::after {
  background: linear-gradient(90deg, #ef4444, #f97316);
  box-shadow: 0 0 8px rgba(239,68,68,0.5);
  animation: burnMeterPulse 1.4s ease-in-out infinite;
}
.sub-item-preview.sub-burn-none::after { display: none; }
@keyframes burnMeterPulse {
  0%, 100% { opacity: 0.85; }
  50% { opacity: 1; filter: brightness(1.15); }
}
@media (prefers-reduced-motion: reduce) {
  .sub-item-preview.sub-burn-hot::after { animation: none; }
}
.sub-preview-icon {
  font-size: 1.4rem;
  background: rgba(255,255,255,0.05);
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
}
.sub-item-preview-content {
  flex: 1;
  display: flex;
  flex-direction: column;
}
.sub-name { font-size: 0.95rem; font-weight: 700; color: var(--text); }
.sub-price { font-size: 0.85rem; color: var(--muted); }

/* Wide Card Checklist/Routine Preview */
.card-wide .card-checklist-preview {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 10px;
  width: 100%;
}
.card-wide .preview-item {
  background: rgba(255,255,255,0.03);
  padding: 10px 14px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.04);
}
.card-wide .card-progress-container {
  height: 8px;
  margin-top: 15px;
}

.card-tall { grid-row: span 2; min-height: 280px; justify-content: space-between; align-items: center; text-align: center; }
.card-tall .card-icon { width: 50px; height: 50px; font-size: 1.8rem; border-radius: 16px; margin: 10px auto 0; }
.card-tall .card-title { font-size: 1.25rem; font-weight: 800; margin-top: 5px; }
.card-tall .card-meta { display: flex; flex-direction: column; justify-content: center; flex: 1; padding: 10px 0; width: 100%; }

/* Tall Card Inside Elements */
.tracker-value-big, .counter-number {
  font-size: 3.5rem;
  font-weight: 900;
  font-family: var(--font-mono);
  color: var(--text);
  line-height: 1;
  text-shadow: 0 0 30px rgba(var(--card-color, 255,255,255), 0.3);
}
.tracker-unit, .counter-max {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--muted);
  margin-right: 4px;
}
.tracker-progress-wrap {
  width: 100%;
  height: 12px;
  background: rgba(255,255,255,0.05);
  border-radius: 99px;
  margin: 15px 0 8px;
  overflow: hidden;
}
.tracker-progress-fill {
  height: 100%;
  background: rgb(var(--card-color));
  box-shadow: 0 0 15px rgba(var(--card-color), 0.5);
  transition: width 0.4s ease;
}
.tracker-target-label {
  font-size: 0.8rem;
  color: var(--muted);
  font-weight: 600;
}

.card-auto-height { height: auto !important; }

/* ─── FEATURED CARD (#31) — Hero/oversized variant for first pinned card ── */
.card.card-featured {
  grid-column: span 2;
  grid-row: span 2;
  min-height: 320px;
  padding: 28px 30px;
  border-top-width: 3px;
  background:
    radial-gradient(circle at 20% 0%, rgba(var(--card-color, 167,139,250), 0.18) 0%, transparent 55%),
    linear-gradient(135deg, rgba(255,255,255,0.05), rgba(255,255,255,0.02));
  border-color: rgba(var(--card-color, 167,139,250), 0.28);
  box-shadow:
    0 18px 50px rgba(0,0,0,0.55),
    0 0 60px rgba(var(--card-color, 167,139,250), 0.18),
    inset 0 1px 0 rgba(255,255,255,0.06);
  position: relative;
}
.card.card-featured.pinned-card { border-color: rgba(var(--card-color, 167,139,250), 0.4); }
.card.card-featured::after,
.card.card-featured.pinned-card::after {
  /* Subtle "FEATURED" ribbon corner */
  content: '✦ مميز';
  position: absolute;
  top: 14px;
  inset-inline-start: 16px;
  padding: 4px 12px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(var(--card-color, 167,139,250), 0.32), rgba(var(--card-color, 167,139,250), 0.12));
  border: 1px solid rgba(var(--card-color, 167,139,250), 0.45);
  color: #fff;
  font-family: var(--font-ar);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  z-index: 5;
  text-shadow: 0 1px 2px rgba(0,0,0,0.4);
  pointer-events: none;
  animation: featRibbonShine 4s ease-in-out infinite;
}
@keyframes featRibbonShine {
  0%, 100% { box-shadow: 0 0 0 0 rgba(var(--card-color, 167,139,250), 0); }
  50%      { box-shadow: 0 0 16px 2px rgba(var(--card-color, 167,139,250), 0.35); }
}
@media (prefers-reduced-motion: reduce) {
  .card-featured { animation: none; }
}
.card-featured .card-icon {
  width: 56px;
  height: 56px;
  font-size: 2rem;
  border-radius: 18px;
  background: rgba(var(--card-color, 167,139,250), 0.15);
  border-color: rgba(var(--card-color, 167,139,250), 0.35);
  box-shadow: 0 0 24px rgba(var(--card-color, 167,139,250), 0.3);
}
.card-featured .card-title {
  font-size: 1.45rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  margin-top: 8px;
}
.card-featured .card-meta {
  font-size: 0.92rem;
  line-height: 1.65;
}
.card-featured .card-type-badge {
  top: 20px;
  inset-inline-end: 20px;
  inset-inline-start: auto;
  font-size: 0.68rem;
}
/* Hover treatment is more pronounced on featured */
.card-featured:hover {
  transform: translateY(-6px) scale(1.005);
  box-shadow:
    0 26px 70px rgba(0,0,0,0.65),
    0 0 80px rgba(var(--card-color, 167,139,250), 0.28);
}
@media (max-width: 700px) {
  .card-featured {
    grid-column: span 1;
    grid-row: auto;
    min-height: 220px;
    padding: 20px 22px;
  }
  .card-featured::after { font-size: 0.62rem; padding: 3px 9px; }
  .card-featured .card-icon { width: 46px; height: 46px; font-size: 1.6rem; }
  .card-featured .card-title { font-size: 1.2rem; }
}

/* ─── BENTO MAGAZINE LAYOUT (#30) — varied rhythm ─────────── */
/* Larger min-height for tall cards; gives more vertical contrast */
.dash-grid .card-tall { min-height: 320px; }
/* Wider gap on desktop for clearer separation between bento blocks */
@media (min-width: 1100px) {
  .dash-grid { gap: 22px; }
}
/* Every 7th non-featured card (when many cards exist) gets a subtle row span
   to create magazine-style visual rhythm — but only on desktop */
@media (min-width: 1200px) {
  .dash-grid .card-auto-height:nth-child(7n+5):not(.card-featured):not(.card-tall):not(.card-wide):not([data-type="link"]):not([data-type="status"]) {
    grid-row: span 2;
    min-height: 280px;
  }
}

.card-icon{width:34px;height:34px;background:rgba(var(--card-color), 0.1);border:1px solid rgba(var(--card-color), 0.15);border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;color:rgb(var(--card-color));line-height:1;}
.card-title{font-size:1.05rem;font-weight:700;color:var(--text);line-height:1.2;letter-spacing:0.2px;overflow-wrap:anywhere;word-break:break-word;}
.card-meta{font-size:0.75rem;color:var(--muted);font-weight:500;font-family:var(--font-ar);display:block;overflow-y:auto;white-space:normal;line-height:1.5;flex:1;scrollbar-width:none;padding-inline-end:2px;}
.card-meta::-webkit-scrollbar{display:none;}

.card-type-badge{position:absolute;top:24px;left:24px;font-size:.62rem;font-weight:600;font-family:var(--font-mono);letter-spacing:0.5px;text-transform:uppercase;color:rgb(var(--card-color));background:transparent;border:none;opacity:0.7;transition:opacity .2s;}
.card-type-badge::after { content: ' /'; opacity: 0.4; }
.card:hover .card-type-badge { opacity: 1; }

.card-actions{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:flex-end;gap:6px;opacity:0;transition:all .2s;background:linear-gradient(transparent, rgba(12,12,18,0.8) 40%);padding:20px 18px 14px;transform:translateY(10px);pointer-events:none;z-index:10;}
.card:hover .card-actions{opacity:1;transform:translateY(0);pointer-events:auto;}
/* Touch/coarse-pointer devices: action buttons reveal on hover/focus only,
   so they never cover the card title. */
@media (hover: none), (pointer: coarse) {
  .card-actions {
    opacity: 0 !important;
    transform: none !important;
    pointer-events: none !important;
    transition: opacity .18s ease !important;
  }
  .card:hover .card-actions,
  .card:focus-within .card-actions,
  .card.card-expanded .card-actions {
    opacity: 1 !important;
    pointer-events: auto !important;
  }
}
/* Buttons inherit their .card-actions row's pointer-events — clickable only while the row is revealed */
.card-actions button { pointer-events: inherit; }
.card-more-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:1rem;padding:4px 8px;border-radius:8px;transition:all .15s;letter-spacing:2px;line-height:1;}
.card-more-btn:hover{color:var(--text);background:rgba(255,255,255,0.08);}
.card-more-btn.active{color:var(--accent);background:rgba(139,92,246,0.12);}
.card-delete, .card-edit, .card-reset, .card-copy{background:rgba(var(--card-color),0.05);border:none;border-radius:6px;color:rgba(var(--card-color), 0.8);font-size:.7rem;cursor:pointer;transition:all .2s;padding:5px 12px;font-family:var(--font-ar);font-weight:600;}
.card-delete{color:var(--danger);background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.15);}
.card-delete:hover{color:#fff;background:rgba(239,68,68,0.7);}
.card-edit:hover, .card-reset:hover, .card-copy:hover{color:rgb(var(--card-color));background:rgba(var(--card-color), 0.15);}
.card-status-check-btn{
  width: 34px;
  min-width: 34px;
  height: 34px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
}
.card-status-check-btn svg { flex-shrink: 0; }

/* Card meta special types */
.card-meta-mono { font-family: var(--font-mono); font-size: 0.72rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; display: block; }
.countdown-live { color: rgb(var(--c-countdown)); font-weight: 700; font-size: 0.85rem; font-family: var(--font-mono); }
.countdown-hidden-text { display: none; }
.countdown-expired { color: var(--muted); font-style: italic; }
.countdown-progress { background: linear-gradient(90deg, rgb(var(--c-countdown)), rgba(var(--c-countdown),0.4)) !important; }

/* Countdown flip-clock tiles (days / hours / mins) */
.cd-flip-wrap {
  display: inline-flex; align-items: center;
  gap: 4px;
  margin: 4px 0 2px;
}
.cd-flip-tile {
  display: inline-flex; flex-direction: column; align-items: center;
  padding: 4px 8px;
  min-width: 38px;
  background: linear-gradient(180deg,
    rgba(234,179,8,0.14) 0%,
    rgba(234,179,8,0.06) 50%,
    rgba(234,179,8,0.1) 100%);
  border: 1px solid rgba(234,179,8,0.22);
  border-radius: 6px;
  position: relative;
  overflow: hidden;
}
.cd-flip-tile::after {
  content: '';
  position: absolute;
  top: 50%; left: 0; right: 0; height: 1px;
  background: rgba(0,0,0,0.4);
  pointer-events: none;
}
.cd-flip-val {
  font-family: var(--font-mono);
  font-size: 1.05rem;
  font-weight: 800;
  color: rgb(var(--c-countdown));
  line-height: 1;
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  transition: transform .3s;
}
.cd-flip-val.cd-flip-anim {
  animation: cdFlipFlash .5s cubic-bezier(.2,.8,.25,1);
}
@keyframes cdFlipFlash {
  0%   { transform: rotateX(-80deg); opacity: 0; }
  50%  { transform: rotateX(0deg); opacity: 1; }
  100% { transform: rotateX(0deg); opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .cd-flip-val.cd-flip-anim { animation: none; opacity: 1; }
}
.cd-flip-lbl {
  font-size: 0.55rem;
  color: var(--muted);
  font-weight: 600;
  margin-top: 1px;
  text-transform: lowercase;
  letter-spacing: 0.02em;
}
.cd-flip-sep {
  color: rgb(var(--c-countdown));
  font-weight: 700;
  font-size: 1rem;
  opacity: 0.5;
  animation: cdFlipColonBlink 1s ease-in-out infinite;
}
@keyframes cdFlipColonBlink {
  0%, 100% { opacity: 0.5; }
  50%      { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .cd-flip-sep { animation: none; opacity: 0.7; }
}
.status-meta { display: flex; align-items: center; gap: 6px; }
.status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); flex-shrink: 0; }
.status-dot.online { background: rgb(var(--c-status)); box-shadow: 0 0 6px rgba(20, 184, 166, 0.7); }
.status-dot.offline { background: var(--danger); box-shadow: 0 0 6px rgba(239, 68, 68, 0.5); }
.status-dot.unknown { background: var(--muted); animation: pulse 1.5s ease-in-out infinite; }
@keyframes pulse { 0%,100%{opacity:1} 50%{opacity:0.3} }
@media (prefers-reduced-motion: reduce) {
  .status-dot.unknown { animation: none; opacity: 0.5; }
}

.fab{position:fixed;bottom:32px;left:32px;width:60px;height:60px;border-radius:18px;background:var(--accent2);color:#fff;border:none;cursor:pointer;transition:all .4s cubic-bezier(0.16, 1, 0.3, 1);z-index:60;display:flex;align-items:center;justify-content:center;box-shadow:0 10px 25px rgba(139, 92, 246, 0.4);}
.fab svg { width: 22px; height: 22px; }
.fab:hover{
  transform: scale(1.08) rotate(90deg);
  background: var(--accent2);
  box-shadow: 0 14px 34px rgba(79, 172, 254, 0.34);
}

.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.6);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .3s ease;cursor:pointer;}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
.modal-box{background:rgba(11, 11, 17, 0.98);border:1px solid rgba(255,255,255,0.08);border-radius:24px;padding:24px;width:100%;max-width:460px;display:flex;flex-direction:column;gap:20px;box-shadow:0 40px 80px rgba(0,0,0,0.7);animation:fadeUp .4s cubic-bezier(0.16, 1, 0.3, 1);max-height:85vh;overflow-y:auto;backdrop-filter:blur(20px);}
@keyframes fadeUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.modal-header{border-bottom:1px solid var(--border);padding-bottom:16px;margin-bottom:-4px;}
.modal-header-actions{display:flex;align-items:center;gap:10px;}
.modal-box-sm  { max-width: 380px; }
.modal-box-md  { max-width: 420px; }
.modal-box-mdl { max-width: 440px; }
.modal-box-lg  { max-width: 560px; }
.modal-field-hint { opacity: .55; font-weight: 400; }
.dim-hint { opacity: .55; }
.sep-muted { color: var(--muted); }
.caption-muted { color: var(--muted); font-size: 0.75rem; }
.muted { color: var(--muted); }
.form-note { font-size: 0.78rem; color: var(--muted); margin: 6px 0 12px; line-height: 1.55; }
.form-note-top { font-size: 0.78rem; color: var(--muted); margin-top: 4px; }
.info-box-accent { padding: 10px 14px; background: rgba(139,92,246,0.08); border: 1px solid rgba(139,92,246,0.2); border-radius: 10px; color: var(--text); font-size: 0.82rem; line-height: 1.8; }
.modal-header-row { display: flex; justify-content: space-between; align-items: flex-start; }
.loan-details { margin-top: 10px; }
.loan-details summary { font-size: 0.78rem; color: var(--muted); cursor: pointer; padding: 6px 0; }
.label-mt { margin-top: 8px; }
.text-teal { color: #59d8ff; }
.modal-input-stacked { margin-bottom: 8px; }
.btn-full { width: 100%; }
.modal-wc{font-size:0.72rem;}
.modal-title{font-size:1.4rem;font-weight:800;color:var(--text);margin-bottom:4px;}
.modal-subtitle{font-size:0.85rem;color:var(--muted);font-weight:500;}

.field-group{display:flex;flex-direction:column;gap:8px;text-align:right;}

.field-row{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;}
.flex-1{flex:1 1 auto;min-width:0;}
.flex-2{flex:2 1 auto;min-width:0;}
.mt-md{margin-top:12px;}
.width-auto{width:auto;}
.fg-narrow{flex:0 1 clamp(80px,28vw,100px);min-width:0;}
.fg-narrow-wide{flex:0 1 clamp(100px,32vw,140px);min-width:0;}
@media (max-width:520px){
  .field-row{gap:10px;}
  .fg-narrow,.fg-narrow-wide{flex:1 1 100%;}
}
.center-align{align-items:center;text-align:center;}

.field-group label{font-size:.85rem;font-weight:700;color:#a1a1aa;font-family:var(--font-ar);letter-spacing:0.5px;}
.modal-label-spaced  { margin-top: 12px; }
.modal-checkbox-label{ display: flex; align-items: center; gap: 8px; margin-top: 8px; cursor: pointer; }
.modal-input-row     { display: flex; gap: 8px; align-items: center; }
.modal-input-flex    { flex: 1; }
.modal-link-accent   { color: #a78bfa; }
.modal-input{background:rgba(255,255,255,0.02);border:1px solid var(--border2);border-radius:14px;color:var(--text);padding:12px 16px;font-family:var(--font-ar);font-size:0.95rem;font-weight:500;outline:none;transition:border-color .2s, box-shadow .2s;width:100%;resize:none;}
.modal-input:focus{border-color:var(--accent2);background:rgba(79, 172, 254, 0.05);box-shadow: 0 0 0 3px rgba(79, 172, 254, 0.1);}
.modal-input::placeholder{color:rgba(255,255,255,0.2);}
select.modal-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238c8c9a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:left 14px center;padding-left:36px;cursor:pointer;}
select.modal-input option{background:#1a1c23;color:var(--text);}
select.modal-input:focus{border-color:var(--accent2);background-color:rgba(139,92,246,0.05);}
.mono-input { font-family: var(--font-mono); font-size: 0.85rem; }

/* Filter dropdown */
.filter-select { background: rgba(255,255,255,0.03); border: 1px solid var(--border2); border-radius: 12px; color: var(--text); font-family: var(--font-ar); font-size: 0.9rem; font-weight: 700; padding: 8px 16px; cursor: pointer; outline: none; transition: all .2s; appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238c8c9a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: left 10px center; padding-left: 32px; }
.filter-select:hover { border-color: var(--accent2); background-color: rgba(139,92,246,0.05); }
.filter-select:focus { border-color: var(--accent2); box-shadow: 0 0 0 3px rgba(139,92,246,0.1); background-color: rgba(139,92,246,0.05); }
.filter-select option { background: #18181c; color: var(--text); }


.icon-selection-wrapper { display: flex; flex-direction: column; align-items: center; gap: 8px; }
.icon-display-btn {
  width: 50px;
  height: 50px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border2);
  border-radius: 14px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.6rem;
  cursor: pointer;
  transition: all .2s;
}
.icon-display-btn:hover { border-color: var(--accent2); background: rgba(79, 172, 254, 0.08); transform: translateY(-2px); }

.checklist-inputs-list { display: flex; flex-direction: column; gap: 8px; }
.checklist-input-row { display: flex; gap: 8px; align-items: center; animation: slideUp .2s ease; background: rgba(255,255,255,0.01); border: 1px solid transparent; padding: 4px; border-radius: 12px; transition: all 0.2s; }
.checklist-input-row:hover { background: rgba(255,255,255,0.03); border-color: var(--border); }
@keyframes slideUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

.drag-handle { width: 28px; height: 32px; display: flex; align-items: center; justify-content: center; color: var(--muted); cursor: grab; opacity: 0.3; transition: opacity 0.2s, color 0.2s; flex-shrink: 0; }
.checklist-input-row:hover .drag-handle { opacity: 0.8; }
.drag-handle:hover { opacity: 1 !important; color: var(--text); }
.drag-handle:active { cursor: grabbing; color: var(--accent2); }
.drag-handle svg { width: 14px; height: 14px; }

.checklist-input-row.sortable-ghost { opacity: 0.4; outline: 2px dashed var(--accent2); background: var(--surface); border-color: transparent; }
.checklist-input-row.sortable-drag { opacity: 1 !important; box-shadow: 0 10px 25px rgba(0,0,0,0.5); border-color: var(--accent2); cursor: grabbing; }

.btn-remove-item { width: 32px; height: 32px; flex-shrink: 0; background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 8px; color: var(--muted); cursor: pointer; display: flex; align-items: center; justify-content: center; font-size: 0.9rem; transition: all .2s; }
.btn-remove-item:hover { color: var(--danger); border-color: var(--danger); background: rgba(239, 68, 68, 0.08); }

.btn-add-item { width: 100%; padding: 12px; background: none; border: 2px dashed var(--border2); border-radius: 14px; color: var(--accent2); font-family: var(--font-ar); font-size: 0.9rem; font-weight: 700; cursor: pointer; transition: all .2s; display: flex; align-items: center; justify-content: center; gap: 10px; margin-top: 4px;}
.btn-add-item svg { width: 16px; height: 16px; }
.btn-add-item:hover { border-color: var(--accent2); background: rgba(79, 172, 254, 0.05); }

/* Subscription Multi-items */
.sub-item-row:hover .btn-remove-sub { opacity: 1; transform: scale(1.1); }
.sub-item-top { display: flex; gap: 8px; align-items: center; }
.btn-sub-icon-picker { width: 38px; height: 38px; background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 10px; display: flex; align-items: center; justify-content: center; font-size: 1.2rem; cursor: pointer; transition: all 0.2s; flex-shrink: 0; }
.btn-sub-icon-picker:hover { background: rgba(255,255,255,0.08); border-color: var(--accent2); }
.sub-item-row .modal-input { padding: 8px 12px; font-size: 0.85rem; }

/* Dashboard Subscription Preview */
.subs-preview-list { display: flex; flex-direction: column; gap: 6px; width: 100%; border-top: 1px solid rgba(255,255,255,0.05); padding-top: 8px; margin-top: 4px; }
.sub-item-preview { display: flex; flex-direction: row; align-items: center; gap: 8px; font-size: 0.8rem; padding: 6px 0; border-bottom: 1px solid rgba(255,255,255,0.03); }
.sub-item-preview:last-child { border-bottom: none; }
.sub-item-preview-empty { color: var(--muted); justify-content: center; }
.checklist-more-label { color: var(--muted); font-size: 0.72rem; }
.srv-port-dim { opacity: 0.5; }
.form-label-hint { color: var(--muted); font-size: 0.72rem; }
.label-optional { color: var(--muted); font-weight: 400; font-size: 0.78rem; }
.sub-preview-icon { width: 22px; height: 22px; background: rgba(255,255,255,0.04); border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; flex-shrink: 0; }
.sub-item-preview-content { flex: 1; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.sub-name { font-weight: 700; color: var(--text); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sub-price { font-family: var(--font-mono); color: var(--accent2); font-weight: 700; align-self: flex-start; }
.sub-urgency { font-size: 0.7rem; font-weight: 800; padding: 2px 8px; border-radius: 6px; }
.sub-urgency.ok { background: rgba(34, 197, 94, 0.1); color: #22c55e; }
.sub-urgency.soon30 { background: rgba(234, 179, 8, 0.1); color: #eab308; }
.sub-urgency.soon7 { background: rgba(249, 115, 22, 0.1); color: #f97316; }
.sub-urgency.soon3 { background: rgba(239, 68, 68, 0.1); color: var(--danger); }
.sub-urgency.overdue { background: var(--danger); color: white; }

/* Document Multi-items */
.doc-item-row { background: rgba(255,255,255,0.02); border: 1px solid var(--border); border-radius: 12px; padding: 12px; display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; position: relative; animation: slideDown 0.3s ease; }
.btn-remove-doc { position: absolute; top: -8px; left: -8px; width: 24px; height: 24px; border-radius: 50%; background: var(--danger); border: none; color: white; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 4px 10px rgba(239, 68, 68, 0.3); opacity: 0; transition: all 0.2s; z-index: 5; }
.doc-item-row:hover .btn-remove-doc { opacity: 1; transform: scale(1.1); }
.doc-item-grid { display: grid; grid-template-columns: 1.2fr 1fr; gap: 10px; }
.vehicle-item-grid { display: grid; grid-template-columns: 0.9fr 1.3fr 1fr; gap: 10px; }
.medicine-item-grid { display: grid; grid-template-columns: 1.15fr 1fr 1fr; gap: 10px; }

/* Dashboard Document Preview */
.docs-preview-list { display: flex; flex-direction: column; gap: 6px; width: 100%; border-top: 1px solid rgba(255,255,255,0.05); padding-top: 8px; margin-top: 4px; }
.doc-item-preview { display: flex; flex-direction: column; align-items: flex-start; gap: 4px; font-size: 0.8rem; padding: 4px 0; border-bottom: 1px solid rgba(255,255,255,0.03); }
.doc-item-preview:last-child { border-bottom: none; }
.doc-name { font-weight: 700; color: var(--text); text-align: right; width: 100%; white-space: normal; line-height: 1.3; }
.doc-urgency { font-size: 0.7rem; font-weight: 800; padding: 2px 8px; border-radius: 6px; }
.doc-urgency.safe { background: rgba(34, 197, 94, 0.1); color: #22c55e; }
.doc-urgency.warning { background: rgba(234, 179, 8, 0.1); color: #eab308; }
.doc-urgency.critical { background: rgba(239, 68, 68, 0.1); color: var(--danger); }
.doc-urgency.expired { background: var(--danger); color: white; }

.modal-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:16px;padding-top:16px;border-top:1px solid var(--border);}
.btn-cancel{padding:12px 24px;background:none;border:none;color:var(--muted);font-weight:700;cursor:pointer;font-family:var(--font-ar);font-size:0.95rem;transition:all .2s;}
.btn-cancel:hover{color:var(--text);}
.btn-save{padding:12px 36px;background:var(--accent2);border:none;border-radius:14px;color:#fff;font-family:var(--font-ar);font-size:1rem;font-weight:800;cursor:pointer;transition:all .2s;box-shadow:0 8px 20px rgba(79, 172, 254, 0.25);}
.btn-save:hover{background:var(--accent2);transform:translateY(-1px);box-shadow:0 12px 28px rgba(79, 172, 254, 0.35);}

@media (max-width: 720px) {
  .vehicle-item-grid,
  .medicine-item-grid {
    grid-template-columns: 1fr;
  }
}

.emoji-picker-container {
  background: #111116 !important;
  border-radius: 16px;
  overflow: hidden;
  border: 1px solid var(--border2);
  box-shadow: 0 30px 90px rgba(0,0,0,0.9);
  width: 352px;
  min-height: 450px;
  line-height: 1.35;
  animation: fadeUp .2s cubic-bezier(0.16,1,0.3,1);
  display: flex;
  flex-direction: column;
  z-index: 99999 !important;
  backdrop-filter: blur(20px);
}
/* Emoji Mart dark theme overrides */
em-emoji-picker {
  --rgb-background: 26, 28, 35;
  --rgb-input: 16, 16, 20;
  --rgb-color: 255, 255, 255;
  --rgb-accent: 79, 172, 254;
  --border-radius: 12px;
  width: 352px;
  height: 420px;
}

::-webkit-scrollbar{width:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px;}
::-webkit-scrollbar-thumb:hover{background:var(--border2);}

/* Reorder mode — pick & place style */
@keyframes card-wiggle {
  0%   { transform: rotate(-0.6deg); }
  50%  { transform: rotate(0.6deg);  }
  100% { transform: rotate(-0.6deg); }
}

.card.reorder-active {
  cursor: pointer;
  border-color: rgba(139,92,246,0.35);
  box-shadow: 0 2px 12px rgba(139,92,246,0.08);
  position: relative;
  user-select: none;
  animation: card-wiggle 0.8s ease-in-out infinite;
  transform-origin: center center;
}

/* Stagger so cards don't all wiggle in sync — feels more organic */
.card.reorder-active:nth-child(2n)   { animation-delay: -0.18s; }
.card.reorder-active:nth-child(3n)   { animation-delay: -0.38s; }
.card.reorder-active:nth-child(4n)   { animation-delay: -0.10s; }
.card.reorder-active:nth-child(5n)   { animation-delay: -0.52s; }
.card.reorder-active:nth-child(6n)   { animation-delay: -0.25s; }

.card.reorder-active:hover {
  border-color: var(--accent2);
  box-shadow: 0 4px 20px rgba(139,92,246,0.2);
  animation-play-state: paused; /* freeze wiggle on hover */
  transform: translateY(-2px);
}
.card.reorder-active .card-actions,
.card.reorder-active:hover .card-actions { opacity: 0 !important; pointer-events: none; }

/* The card being "held" — stops wiggling, scales up */
.card.reorder-picked {
  border-color: var(--accent2) !important;
  box-shadow:
    0 0 0 3px rgba(139,92,246,0.45),
    0 0 0 6px rgba(139,92,246,0.18),
    0 12px 36px rgba(139,92,246,0.32),
    0 0 60px rgba(139,92,246,0.2) !important;
  transform: scale(1.05) translateY(-2px) !important;
  animation: reorder-picked-float 2.4s ease-in-out infinite !important;
  z-index: 3;
  position: relative;
}
.card.reorder-picked::before {
  content: '';
  position: absolute;
  inset: -3px;
  border-radius: inherit;
  background: conic-gradient(from 0deg, rgba(139,92,246,0.4), rgba(45,212,191,0.4), rgba(139,92,246,0.4));
  z-index: -1;
  filter: blur(6px);
  opacity: 0.7;
  animation: reorder-picked-spin 3s linear infinite;
}
@keyframes reorder-picked-float {
  0%, 100% { transform: scale(1.05) translateY(-2px) rotate(0deg) !important; }
  50%      { transform: scale(1.05) translateY(-5px) rotate(0.3deg) !important; }
}
@keyframes reorder-picked-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Target cards pulse when a card is picked */
.dash-grid.has-picked .card.reorder-active:not(.reorder-picked) {
  border-color: rgba(139,92,246,0.5);
  animation: card-wiggle 0.55s ease-in-out infinite, reorder-pulse 1.6s ease-in-out infinite;
  cursor: cell;
}
.dash-grid.has-picked .card.reorder-active:not(.reorder-picked):hover {
  border-color: #2dd4bf !important;
  box-shadow:
    0 0 0 2px rgba(45,212,191,0.45),
    0 8px 28px rgba(45,212,191,0.28) !important;
  transform: translateY(-3px) scale(1.02) !important;
  animation-play-state: paused !important;
}
.dash-grid.has-picked .card.reorder-active:not(.reorder-picked):hover::after {
  content: '⇄';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 2.2rem;
  font-weight: 900;
  color: #2dd4bf;
  text-shadow: 0 0 18px rgba(45,212,191,0.6), 0 2px 6px rgba(0,0,0,0.5);
  pointer-events: none;
  z-index: 10;
  animation: reorder-swap-pop 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes reorder-swap-pop {
  from { opacity: 0; transform: translate(-50%, -50%) scale(0.4); }
  to   { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}
@keyframes reorder-pulse {
  0%,100% { box-shadow: 0 2px 10px rgba(139,92,246,0.08); }
  50%      { box-shadow: 0 2px 18px rgba(139,92,246,0.22); }
}
@media (prefers-reduced-motion: reduce) {
  .card.reorder-active { animation: none; }
  .card.reorder-picked { animation: none !important; transform: scale(1.03) !important; }
  .card.reorder-picked::before { animation: none; }
  .dash-grid.has-picked .card.reorder-active:not(.reorder-picked) { animation: none; }
  .dash-grid.has-picked .card.reorder-active:not(.reorder-picked):hover::after { animation: none; }
}

/* Position number badge */
.reorder-pos-badge {
  position: absolute;
  top: 8px;
  left: 8px;
  background: linear-gradient(135deg, rgba(139,92,246,0.22), rgba(45,212,191,0.12));
  border: 1px solid rgba(139,92,246,0.35);
  color: var(--accent2);
  font-size: 0.68rem;
  font-weight: 800;
  border-radius: 6px;
  padding: 2px 7px;
  pointer-events: none;
  box-shadow: 0 2px 8px rgba(139,92,246,0.18);
  letter-spacing: 0.05em;
}
.card.reorder-picked .reorder-pos-badge {
  background: linear-gradient(135deg, #8b5cf6, #2dd4bf);
  color: #fff;
  border-color: rgba(255,255,255,0.3);
  box-shadow: 0 4px 12px rgba(45,212,191,0.4);
}
.sortable-ghost {
  opacity: 0.45;
  outline: 2px dashed var(--accent2);
  outline-offset: -4px;
  background: linear-gradient(135deg, rgba(139,92,246,0.08), rgba(45,212,191,0.05)) !important;
  transform: scale(0.98);
  box-shadow: none;
  border-color: transparent;
  animation: sortable-ghost-pulse 1.4s ease-in-out infinite;
}
.sortable-chosen { z-index: 100; }
.sortable-drag {
  box-shadow: 0 20px 50px rgba(0,0,0,0.5), 0 0 0 2px var(--accent2) !important;
  opacity: 0.94 !important;
  transform: rotate(1.5deg) scale(1.03) !important;
  cursor: grabbing !important;
}
@keyframes sortable-ghost-pulse {
  0%, 100% { opacity: 0.35; }
  50%      { opacity: 0.6; }
}
@media (prefers-reduced-motion: reduce) {
  .sortable-ghost { animation: none; opacity: 0.45; }
}

/* Page view */
.page-view{position:fixed;inset:0;background:var(--bg);z-index:80;display:flex;flex-direction:column;animation:slideIn .4s cubic-bezier(0.16, 1, 0.3, 1);}
@keyframes slideIn{from{transform:translateX(60px);opacity:0}to{transform:translateX(0);opacity:1}}
@media (prefers-reduced-motion: reduce) {
  .page-view { animation: none; }
  .modal-overlay { animation: none; }
  .modal-box { animation: none; }
}
.page-header {
  position: relative;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px 16px 130px; /* extra padding-left reserves space for the absolute back btn */
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}

/* ─── BACK BUTTON RULE ─────────────────────────────────────────
   Always pinned to the LEFT edge of the screen (regardless of RTL/LTR).
   Chevron points right (RTL convention: "back" = الجهة اليمنى).
   ─────────────────────────────────────────────────────────────── */
.back-btn {
  position: absolute;
  left: 16px;
  top: 50%;
  transform: translateY(-50%);
  /* Force LTR so the layout is icon-then-text regardless of RTL parent.
     Result: [ < رجوع ] — chevron on the left, text on the right. */
  direction: ltr;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text);
  padding: 9px 16px;
  border-radius: 10px;
  cursor: pointer;
  font-family: var(--font-ar);
  font-weight: 600;
  font-size: 0.92rem;
  letter-spacing: 0;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.12s ease, color 0.18s ease;
}
.back-btn svg { flex-shrink: 0; opacity: 0.85; }
.back-btn:hover {
  background: rgba(167, 139, 250, 0.10);
  border-color: rgba(167, 139, 250, 0.35);
  color: #f3f0ff;
}
.back-btn:hover svg { opacity: 1; }
.back-btn:active { transform: translateY(-50%) scale(0.96); }
.back-btn:focus-visible {
  outline: 2px solid rgba(167, 139, 250, 0.7);
  outline-offset: 3px;
}

@media (max-width: 640px) {
  .page-header { padding: 12px 16px 12px 100px; gap: 10px; }
  .back-btn { left: 10px; padding: 8px 12px; font-size: 0.85rem; }
  .back-btn span { display: none; } /* icon-only on small screens to save space */
}
.page-heading{font-size:1.4rem;font-weight:800;color:var(--text);}
.page-empty { grid-column: 1/-1; text-align: center; color: var(--muted); font-size: 1rem; font-weight: 600; padding: 80px 0; }
.page-content{flex:1;padding:48px 40px;overflow-y:auto;background:var(--bg);}
.page-placeholder{color:var(--muted);font-size:1.1rem;font-weight:600;text-align:center;margin-top:120px;}

/* Checklist cards */
.card-checklist-preview{display:flex;flex-direction:column;gap:4px;margin-top:4px;}
.preview-item{font-size:.75rem;color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.preview-item.done{text-decoration:line-through;opacity:0.5;}
.preview-dot{width:6px;height:6px;border-radius:50%;border:1px solid var(--muted);}
.preview-item.done .preview-dot{background:var(--accent);border-color:var(--accent);}

.card-progress-container{width:100%;height:4px;background:rgba(255,255,255,0.05);border-radius:2px;margin-top:auto;}
.card-container[data-type="countdown"] .card-progress-container { margin-top: 4px; }
.expense-live-preview .card-progress-container { margin: 6px 0 0; }
.card-progress-bar{height:100%;background:rgb(var(--card-color));border-radius:2px;transition:width .3s ease;}
.card-checklist-count { font-size: 0.7rem; color: var(--muted); margin-top: 4px; }

/* Checklist modal */
.checklist-items-container{display:flex;flex-direction:column;gap:12px;max-width:600px;margin:0 auto;}
.checklist-label-item{display:flex;align-items:center;gap:16px;padding:16px 20px;background:var(--surface);border:1px solid var(--border);border-radius:16px;cursor:pointer;transition:all .2s;position:relative;overflow:hidden;}
.checklist-label-item:hover{border-color:var(--border2);background:rgba(255,255,255,0.02);}
.checklist-cb{width:22px;height:22px;border:2px solid var(--border2);border-radius:6px;display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0;}
.checklist-label-item.done .checklist-cb{background:rgb(var(--c-checklist));border-color:rgb(var(--c-checklist));}
.checklist-cb::after{content:'✓';color:#000;font-size:14px;display:none;font-weight:900;}
.checklist-label-item.done .checklist-cb::after{display:block;}
.checklist-text{font-size:1.1rem;font-weight:500;color:var(--text);transition:all .2s;position:relative;}
.checklist-label-item.done .checklist-text{color:var(--muted);}

/* Strikethrough animation: draw a line from start to end */
.checklist-label-item .checklist-text::after {
  content: '';
  position: absolute;
  top: 50%; inset-inline-start: 0;
  height: 2px;
  width: 0;
  background: currentColor;
  transform: translateY(-1px);
  transition: width 0.35s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
  opacity: 0.75;
}
.checklist-label-item.done .checklist-text::after {
  width: 100%;
}
/* Just-toggled: pop checkbox + faint row flash */
.checklist-label-item.just-toggled.done .checklist-cb {
  animation: cbCheck 0.42s cubic-bezier(0.22, 1.4, 0.36, 1);
}
.checklist-label-item.just-toggled.done {
  animation: clRowFlash 0.5s ease-out;
}
@keyframes cbCheck {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.35); }
  100% { transform: scale(1); }
}
@keyframes clRowFlash {
  0%   { background: rgba(34, 197, 94, 0.08); }
  100% { background: var(--surface); }
}
/* Ripple: expanding circle from click point */
.cl-ripple {
  position: absolute;
  top: 50%; inset-inline-start: 50%;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: rgba(34, 197, 94, 0.35);
  transform: translate(-50%, -50%);
  pointer-events: none;
  animation: clRippleExpand 0.55s ease-out forwards;
}
@keyframes clRippleExpand {
  0%   { opacity: 0.8; width: 8px; height: 8px; }
  100% { opacity: 0; width: 320px; height: 320px; }
}
@media (prefers-reduced-motion: reduce) {
  .checklist-label-item.just-toggled.done .checklist-cb,
  .checklist-label-item.just-toggled.done,
  .cl-ripple { animation: none !important; }
  .checklist-label-item .checklist-text::after { transition: none; }
}

.flex-between { display: flex; align-items: center; justify-content: space-between; }
.close-btn { background: rgba(255,255,255,0.05); border: none; color: var(--muted); cursor: pointer; padding: 8px; border-radius: 12px; display: flex; align-items: center; justify-content: center; transition: all 0.2s; }
.close-btn:hover { background: rgba(239, 68, 68, 0.15); color: var(--danger); transform: scale(1.05); }

.checklist-modal-box { max-width: 600px !important; padding: 24px 32px !important; }
.modal-content { max-height: 60vh; overflow-y: auto; padding-right: 8px; margin-top: 16px; margin-right: -8px; }
.modal-content::-webkit-scrollbar { width: 6px; }
.modal-content::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 4px; }
.modal-content-center { align-items: center; text-align: center; gap: 12px; }
.modal-content-flush { padding: 0; gap: 0; }
.modal-intro-hint { color: var(--muted); font-size: 0.85rem; margin-bottom: 12px; }
.flex-row-gap-sm { display: flex; align-items: center; gap: 10px; }
.flex-row-gap-md { display: flex; align-items: center; gap: 12px; }
.modal-title-centered { min-width: 160px; text-align: center; }
.si-empty-hint { grid-column: 1/-1; text-align: center; color: var(--muted); padding: 20px; }
.icon-lg { font-size: 1.2rem; }

/* ─── SERVER MODAL ─────────────────────────────────────────── */
.server-fields { display: flex; flex-direction: column; gap: 12px; }
.server-field-row { display: flex; align-items: center; gap: 12px; padding: 10px 16px; background: rgba(255,255,255,0.02); border: 1px solid var(--border); border-radius: 12px; }
.server-field-label { font-size: 0.78rem; font-weight: 700; color: var(--muted); font-family: var(--font-ar); min-width: 64px; text-align: right; }
.server-field-val { flex: 1; font-family: var(--font-mono); font-size: 0.88rem; color: var(--text); word-break: break-all; }
.server-field-val.server-field-desc { font-family: var(--font-ar); font-size: 0.9rem; }
.copy-field-btn { background: rgba(139,92,246,0.1); border: 1px solid rgba(139,92,246,0.2); border-radius: 8px; color: var(--accent2); font-family: var(--font-ar); font-size: 0.75rem; font-weight: 700; padding: 5px 12px; cursor: pointer; transition: all .2s; flex-shrink: 0; }
.copy-field-btn:hover { background: rgba(139,92,246,0.2); border-color: var(--accent2); }
.server-ssh-row { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: rgba(139,92,246,0.06); border: 1px solid rgba(139,92,246,0.2); border-radius: 12px; }
.server-ssh-cmd { flex: 1; font-family: var(--font-mono); font-size: 0.88rem; color: rgb(var(--c-command)); word-break: break-all; }

/* ─── LINKGROUP MODAL ──────────────────────────────────────── */
.linkgroup-item { display: flex; flex-direction: column; gap: 2px; padding: 14px 18px; background: rgba(255,255,255,0.02); border: 1px solid var(--border); border-radius: 12px; text-decoration: none; transition: all .2s; margin-bottom: 8px; }
.linkgroup-item:hover { border-color: rgba(var(--c-linkgroup), 0.4); background: rgba(var(--c-linkgroup), 0.05); transform: translateX(-3px); }
.linkgroup-item-label { font-size: 1rem; font-weight: 700; color: var(--text); }
.linkgroup-item-url { font-size: 0.75rem; color: var(--muted); font-family: var(--font-mono); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ─── MARKDOWN MODAL ───────────────────────────────────────── */
.markdown-modal-box { max-width: 700px !important; }
.markdown-content { color: var(--text); line-height: 1.8; font-family: var(--font-ar); text-align: right; }
.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6 { color: var(--text); font-weight: 800; margin: 1.2em 0 0.5em; line-height: 1.3; }
.markdown-content h1 { font-size: 1.8rem; border-bottom: 1px solid var(--border); padding-bottom: 8px; }
.markdown-content h2 { font-size: 1.4rem; }
.markdown-content h3 { font-size: 1.15rem; }
.markdown-content p { margin: 0.8em 0; color: rgba(255,255,255,0.85); }
.markdown-content a { color: var(--accent2); text-decoration: underline; }
.markdown-content a:hover { color: var(--accent); }
.markdown-content strong { color: var(--text); font-weight: 800; }
.markdown-content em { color: rgba(255,255,255,0.7); font-style: italic; }
.markdown-content ul,.markdown-content ol { padding-inline-start: 1.5em; margin: 0.8em 0; }
.markdown-content li { margin: 0.4em 0; }
.markdown-content code { font-family: var(--font-mono); font-size: 0.85em; background: rgba(255,255,255,0.07); border: 1px solid var(--border2); border-radius: 6px; padding: 2px 6px; color: rgb(var(--c-command)); }
.markdown-content pre { background: rgba(0,0,0,0.4); border: 1px solid var(--border2); border-radius: 12px; padding: 16px; overflow-x: auto; margin: 1em 0; }
.markdown-content pre code { background: none; border: none; padding: 0; font-size: 0.88rem; color: rgb(var(--c-command)); }
.markdown-content blockquote { border-inline-start: 3px solid var(--accent2); padding-inline-start: 16px; color: var(--muted); margin: 1em 0; font-style: italic; }
.markdown-content hr { border: none; border-top: 1px solid var(--border); margin: 1.5em 0; }
.markdown-content table { width: 100%; border-collapse: collapse; margin: 1em 0; }
.markdown-content th,.markdown-content td { padding: 10px 14px; border: 1px solid var(--border2); text-align: right; }
.markdown-content th { background: rgba(255,255,255,0.04); font-weight: 700; }

/* ─── TOAST ────────────────────────────────────────────────── */
/* ─── QUICK ADD ────────────────────────────────────────────── */
.quick-add-trigger { display: flex; align-items: center; gap: 6px; color: var(--accent2) !important; border-color: rgba(139,92,246,0.3) !important; }
.quick-add-trigger.active { background: rgba(139,92,246,0.1) !important; border-color: var(--accent2) !important; }
.quick-add-trigger svg { flex-shrink: 0; }

.quick-add-panel {
  position: fixed;
  bottom: 80px;
  right: 76px;
  width: 300px;
  background: #1a1a1f;
  border: 1px solid var(--border2);
  border-radius: 20px;
  padding: 16px;
  z-index: 300;
  display: flex;
  flex-direction: column;
  gap: 10px;
  box-shadow: 0 20px 50px rgba(0,0,0,0.6);
  animation: fadeUp .25s cubic-bezier(0.16,1,0.3,1);
}

.quick-add-tabs { display: flex; gap: 4px; background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 12px; padding: 3px; }
.quick-tab { flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 7px; background: none; border: none; border-radius: 9px; color: var(--muted); font-family: var(--font-ar); font-size: 0.82rem; font-weight: 700; cursor: pointer; transition: all .2s; }
.quick-tab:hover { color: var(--text); }
.quick-tab.active { background: var(--surface); color: var(--accent2); box-shadow: 0 2px 8px rgba(0,0,0,0.3); }

.quick-input { background: rgba(255,255,255,0.03); border: 1px solid var(--border2); border-radius: 12px; color: var(--text); padding: 10px 14px; font-family: var(--font-ar); font-size: 0.9rem; font-weight: 500; outline: none; transition: all .2s; width: 100%; resize: none; }
.quick-input:focus { border-color: var(--accent2); background: rgba(139,92,246,0.05); }
.quick-input::placeholder { color: rgba(255,255,255,0.2); }
.quick-textarea { min-height: 64px; }

.quick-add-actions { display: flex; gap: 8px; justify-content: flex-end; padding-top: 4px; }
.quick-cancel { background: none; border: none; color: var(--muted); font-family: var(--font-ar); font-size: 0.85rem; font-weight: 700; cursor: pointer; padding: 8px 12px; transition: color .2s; }
.quick-cancel:hover { color: var(--text); }
.quick-save { background: var(--accent2); border: none; border-radius: 10px; color: #fff; font-family: var(--font-ar); font-size: 0.88rem; font-weight: 800; padding: 8px 20px; cursor: pointer; transition: all .2s; box-shadow: 0 4px 14px rgba(139,92,246,0.3); }
.quick-save:hover { background: #7C3AED; transform: translateY(-1px); }

/* FAB stays bottom-left (already defined above with fixed positioning) */

.toast { position: fixed; bottom: 32px; right: 32px; background: var(--accent2); color: #fff; font-family: var(--font-ar); font-weight: 700; font-size: 0.9rem; padding: 12px 24px; border-radius: 14px; z-index: 9000; box-shadow: 0 8px 24px rgba(139,92,246,0.4); opacity: 0; transform: translateY(10px); transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); pointer-events: none; max-width: 300px; }
.toast.show { opacity: 1; transform: translateY(0); }
.toast.celebration { background: linear-gradient(135deg, #f59e0b, #ef4444, #8b5cf6) !important; box-shadow: 0 8px 30px rgba(245,158,11,0.5) !important; animation: toastCelebrate .6s ease !important; font-size: 1rem !important; }
@keyframes toastCelebrate { 0%{transform:scale(0.8) translateY(10px)} 60%{transform:scale(1.05) translateY(-2px)} 100%{transform:scale(1) translateY(0)} }
@media (prefers-reduced-motion: reduce) {
  .toast.celebration { animation: none !important; }
}

/* Reminder card urgency */
.reminder-info { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.reminder-urgency-badge { font-size: 0.65rem; font-weight: 800; font-family: var(--font-mono); padding: 2px 8px; border-radius: 20px; text-transform: uppercase; letter-spacing: 0.5px; }
.reminder-urgency-badge.overdue { background: rgba(239,68,68,0.2); color: var(--danger); border: 1px solid rgba(239,68,68,0.3); }
.reminder-urgency-badge.today { background: rgba(245,158,11,0.2); color: #f59e0b; border: 1px solid rgba(245,158,11,0.3); }
.reminder-urgency-badge.tomorrow { background: rgba(34,211,117,0.15); color: #22d375; border: 1px solid rgba(34,211,117,0.25); }
.reminder-urgency-badge.soon { background: rgba(139,92,246,0.15); color: #8B5CF6; border: 1px solid rgba(139,92,246,0.25); }
.reminder-urgency-badge.future { background: rgba(255,255,255,0.05); color: var(--muted); border: 1px solid var(--border); }
.reminder-date { font-size: 0.7rem; color: var(--muted); font-family: var(--font-mono); }
.reminder-details-preview { font-size: 0.73rem; color: var(--muted); margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Reminder done state */
.card-reminder-done { opacity: 0.45; }
.card-reminder-done .card-title { text-decoration: line-through; color: var(--muted); }

/* Subscription urgency */
.sub-badge { display:inline-flex; align-items:center; padding:2px 8px; border-radius:6px; font-size:0.7rem; font-weight:700; font-family:var(--font-mono); }
.sub-badge.overdue,.sub-badge.soon3 { background:rgba(239,68,68,0.15); color:var(--danger); }
.sub-badge.soon7 { background:rgba(249,115,22,0.15); color:#f97316; }
.sub-badge.soon30 { background:rgba(234,179,8,0.15); color:#eab308; }
.sub-badge.ok { background:rgba(52,211,153,0.15); color:#34d399; }

/* Document urgency */
.doc-badge { display:inline-flex; align-items:center; padding:2px 8px; border-radius:6px; font-size:0.7rem; font-weight:700; font-family:var(--font-mono); }
.doc-badge.expired,.doc-badge.critical { background:rgba(239,68,68,0.15); color:var(--danger); }
.doc-badge.warning { background:rgba(249,115,22,0.15); color:#f97316; }
.doc-badge.caution { background:rgba(234,179,8,0.15); color:#eab308; }
.doc-badge.safe { background:rgba(52,211,153,0.15); color:#34d399; }

.doc-holder { font-size:0.78rem; color:var(--muted); margin-top:2px; }
.sub-amount { font-family:var(--font-mono); font-size:0.85rem; color:var(--text); }
.sub-cycle { font-size:0.72rem; color:var(--muted); }

/* Document progress bar */
.doc-progress-wrap { width:100%; height:5px; background:rgba(255,255,255,0.06); border-radius:99px; overflow:hidden; margin-top:8px; }
.doc-progress-fill { height:100%; border-radius:99px; transition:width .4s ease; }
.doc-progress-fill.safe    { background:#34d399; }
.doc-progress-fill.caution { background:#eab308; }
.doc-progress-fill.warning { background:#f97316; }
.doc-progress-fill.critical,.doc-progress-fill.expired { background:var(--danger); }
.doc-progress-pct { font-family:var(--font-mono); font-size:0.65rem; color:var(--muted); margin-top:3px; display:block; }

/* ─── Fields card ────────────────────────────────────────────── */
.card[data-type="fields"] .card-meta { display: block; overflow-y: auto; flex: 1; padding-right: 4px; }
.card[data-type="fields"] .card-meta::-webkit-scrollbar { width: 4px; }
.card[data-type="fields"] .card-meta::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 10px; }
.card-fields-list { display: flex; flex-direction: column; gap: 5px; margin-top: 2px; }
.card-field-row { display: flex; align-items: center; gap: 8px; min-height: 28px; }
.card-field-label { font-size: 0.7rem; color: var(--muted); min-width: 72px; max-width: 90px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex-shrink: 0; }
.card-field-value { font-family: var(--font-mono); font-size: 0.8rem; color: var(--text); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.card-field-copy { flex-shrink: 0; padding: 2px 9px; background: rgba(129,140,248,0.1); border: 1px solid rgba(129,140,248,0.25); border-radius: 6px; color: rgba(129,140,248,0.9); font-size: 0.68rem; font-family: var(--font-ar); cursor: pointer; transition: all .15s; line-height: 1.6; }
.card-field-copy:hover { background: rgba(129,140,248,0.25); border-color: rgba(129,140,248,0.6); color: #fff; }

/* Modal: fields input rows */
.fi-row { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.fi-row .modal-input { flex: 1; }
.fi-row .fi-label { flex: 0 0 130px; }
.fi-row .btn-remove-item { flex-shrink: 0; }

/* ─── Fields mode toggle ─── */
.fmode-bar { display: flex; gap: 6px; margin-bottom: 12px; }
.fmode-tab {
  flex: 1;
  -webkit-appearance: none; appearance: none;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 10px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.83rem;
  font-weight: 600;
  padding: 7px 10px;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.fmode-tab.active {
  background: rgba(139,92,246,0.18);
  border-color: rgba(139,92,246,0.5);
  color: #c4b5fd;
}
/* ─── Grouped fields form ─── */
.fg-groups-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 8px; }
.fg-group { background: rgba(255,255,255,0.025); border: 1px solid rgba(255,255,255,0.08); border-radius: 12px; padding: 10px 12px; }
.fg-group-header { display: flex; gap: 8px; align-items: center; margin-bottom: 8px; }
.fg-group-name { flex: 1; font-weight: 700 !important; font-size: 0.92rem !important; padding: 8px 12px !important; }
.fg-group-remove { -webkit-appearance: none; appearance: none; background: none; border: none; color: rgba(239,68,68,0.55); cursor: pointer; padding: 4px 7px; border-radius: 7px; font-size: 0.85rem; flex-shrink: 0; }
.fg-group-remove:hover { background: rgba(239,68,68,0.1); color: var(--danger); }
.fg-group-remove:disabled { opacity: 0.2; pointer-events: none; }
.fg-sub-list { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
.fg-sub-row { display: flex; gap: 6px; align-items: center; }
.fg-sub-row .fg-sub-label { flex: 0 0 120px; font-size: 0.83rem !important; padding: 7px 10px !important; }
.fg-sub-row .fg-sub-value { flex: 1; font-size: 0.83rem !important; padding: 7px 10px !important; }
.fg-sub-remove { -webkit-appearance: none; appearance: none; background: none; border: none; color: rgba(239,68,68,0.4); cursor: pointer; padding: 3px 6px; border-radius: 6px; font-size: 0.8rem; flex-shrink: 0; }
.fg-sub-remove:hover { color: var(--danger); background: rgba(239,68,68,0.08); }
.fg-sub-remove:disabled { opacity: 0.2; pointer-events: none; }
.fg-add-sub { -webkit-appearance: none; appearance: none; background: none; border: 1px dashed rgba(255,255,255,0.12); border-radius: 7px; color: var(--muted); font-family: var(--font-ar); font-size: 0.78rem; padding: 4px 12px; cursor: pointer; width: 100%; transition: border-color 0.15s, color 0.15s; }
.fg-add-sub:hover { border-color: rgba(139,92,246,0.4); color: #c4b5fd; }
.fg-preview-body { padding: 4px 0; }
.fg-preview-group { display: flex; align-items: baseline; gap: 6px; margin-bottom: 4px; }
.fg-preview-name { font-size: 0.8rem; font-weight: 700; color: var(--text); white-space: nowrap; }
.fg-preview-fields { font-size: 0.72rem; color: var(--muted); }
.fv-group-section { margin-bottom: 12px; }
.fv-group-name { font-size: 0.82rem; font-weight: 700; color: #c4b5fd; padding: 4px 0 6px; border-bottom: 1px solid rgba(255,255,255,0.06); margin-bottom: 6px; text-align: right; }

/* ─── Records form ─── */
.fr-section-hdr {
  font-size: 0.8rem;
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 7px;
  margin-top: 12px;
  text-align: right;
}
.fr-cols-list { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 8px; }
.fr-col-item { display: flex; align-items: center; gap: 5px; min-width: 120px; flex: 1; }
.fr-col-input { font-size: 0.85rem !important; padding: 8px 12px !important; }
.fr-col-remove {
  -webkit-appearance: none; appearance: none;
  background: none; border: none; color: rgba(239,68,68,0.6);
  cursor: pointer; font-size: 0.85rem; padding: 4px 6px; border-radius: 6px;
  flex-shrink: 0;
}
.fr-col-remove:hover { background: rgba(239,68,68,0.1); color: var(--danger); }
.fr-col-remove:disabled { opacity: 0.25; pointer-events: none; }
.fr-add-col { margin-bottom: 4px; }
.fr-rows-list { display: flex; flex-direction: column; gap: 7px; margin-bottom: 8px; }
.fr-row-item {
  display: grid;
  gap: 6px;
  align-items: center;
  grid-template-columns: var(--fr-cols-def, repeat(1, 1fr) 28px);
}
.fr-row-item .fr-cell { font-size: 0.88rem !important; padding: 8px 12px !important; }
.fr-row-remove {
  -webkit-appearance: none; appearance: none;
  background: none; border: none; color: rgba(239,68,68,0.5);
  cursor: pointer; font-size: 0.85rem; padding: 4px; border-radius: 6px;
  width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.fr-row-remove:hover { background: rgba(239,68,68,0.1); color: var(--danger); }
.fr-row-remove:disabled { opacity: 0.2; pointer-events: none; }
/* ─── Fields card preview (records mode) ─── */
.fr-preview-body { padding: 6px 0; }
.fr-preview-meta {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 6px; gap: 8px;
}
.fr-cols-preview { font-size: 0.72rem; color: var(--muted); }
.fr-count-badge {
  font-size: 0.72rem; font-weight: 700; padding: 2px 7px;
  background: rgba(139,92,246,0.15); border-radius: 999px; color: #c4b5fd;
  white-space: nowrap;
}
.fr-preview-row { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.fr-preview-cell { display: flex; flex-direction: column; min-width: 70px; }
.fr-pcell-k { font-size: 0.68rem; color: var(--muted); font-weight: 600; }
.fr-pcell-v { font-size: 0.82rem; font-weight: 700; color: var(--text); }
/* ─── Fields detail view table ─── */
.fv-table-row {
  display: grid;
  gap: 0;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.fv-header-row { background: rgba(255,255,255,0.03); border-radius: 8px 8px 0 0; }
.fv-th {
  padding: 8px 12px; font-size: 0.75rem; font-weight: 700;
  color: var(--muted); text-align: right;
}
.fv-td {
  padding: 9px 12px; font-size: 0.88rem; color: var(--text);
  text-align: right; word-break: break-word;
}
.fv-data-row:hover { background: rgba(255,255,255,0.025); }
.fv-copy-row { font-size: 0.75rem !important; padding: 4px 8px !important; align-self: center; margin: 4px; }

/* Reminder overdue/today card glow + ambient pulse */
.card[data-urgency="overdue"] { border-color: rgba(239,68,68,0.25); animation: reminderPulseOverdue 2.6s ease-in-out infinite; }
.card[data-urgency="overdue"]:hover { border-color: rgba(239,68,68,0.5); box-shadow: 0 10px 24px rgba(0,0,0,0.4), 0 0 16px rgba(239,68,68,0.2); }
.card[data-urgency="today"] { border-color: rgba(245,158,11,0.25); animation: reminderPulseToday 3.4s ease-in-out infinite; }
.card[data-urgency="today"]:hover { border-color: rgba(245,158,11,0.5); box-shadow: 0 10px 24px rgba(0,0,0,0.4), 0 0 16px rgba(245,158,11,0.2); }

@keyframes reminderPulseOverdue {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.0), 0 6px 16px rgba(0,0,0,0.25); }
  50%      { box-shadow: 0 0 0 6px rgba(239,68,68,0.08), 0 6px 16px rgba(0,0,0,0.25), 0 0 24px rgba(239,68,68,0.25); }
}
@keyframes reminderPulseToday {
  0%, 100% { box-shadow: 0 0 0 0 rgba(245,158,11,0.0), 0 6px 16px rgba(0,0,0,0.25); }
  50%      { box-shadow: 0 0 0 4px rgba(245,158,11,0.06), 0 6px 16px rgba(0,0,0,0.25), 0 0 18px rgba(245,158,11,0.18); }
}
/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  .card[data-urgency="overdue"],
  .card[data-urgency="today"] { animation: none; }
}

/* Done button - always visible on reminder cards */
.reminder-done-row { margin-top: auto; padding-top: 8px; display: flex; justify-content: flex-end; }
.card-done-btn { background: rgba(34,211,117,0.1); border: 1px solid rgba(34,211,117,0.25); border-radius: 8px; color: #22d375; font-size: 0.72rem; font-weight: 800; font-family: var(--font-ar); padding: 5px 14px; cursor: pointer; transition: all .2s; }
.card-done-btn:hover { background: rgba(34,211,117,0.2); border-color: rgba(34,211,117,0.5); }
.card-undone-btn { background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 8px; color: var(--muted); font-size: 0.72rem; font-weight: 700; font-family: var(--font-ar); padding: 5px 14px; cursor: pointer; transition: all .2s; }
.card-undone-btn:hover { color: var(--text); background: rgba(255,255,255,0.08); }

/* ─── TRACKER CARD ──────────────────────────────────────────── */
.tracker-value-big { font-size: 2rem; font-weight: 800; color: rgb(var(--c-tracker)); font-family: var(--font-mono); line-height: 1; }
.tracker-unit { font-size: 0.8rem; color: var(--muted); margin-right: 4px; font-family: var(--font-ar); }
.tracker-progress-wrap { width: 100%; height: 6px; background: rgba(255,255,255,0.06); border-radius: 99px; overflow: hidden; margin-top: 6px; }
.tracker-progress-fill { height: 100%; background: rgb(var(--c-tracker)); border-radius: 99px; transition: width .4s ease; }
.tracker-target-label { font-size: 0.7rem; color: var(--muted); margin-top: 3px; font-family: var(--font-mono); }

/* ─── WIFI CARD ─────────────────────────────────────────────── */
.wifi-name { font-size: 0.9rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.wifi-password-row { display: flex; align-items: center; gap: 6px; margin-top: 4px; }
.wifi-password-dots { font-family: var(--font-mono); font-size: 0.85rem; color: var(--muted); flex: 1; letter-spacing: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.wifi-toggle-btn, .wifi-copy-btn { background: rgba(34,197,94,0.1); border: 1px solid rgba(34,197,94,0.25); border-radius: 6px; color: rgb(var(--c-wifi)); font-size: 0.68rem; font-family: var(--font-ar); font-weight: 700; padding: 3px 8px; cursor: pointer; transition: all .2s; flex-shrink: 0; }
.wifi-toggle-btn:hover, .wifi-copy-btn:hover { background: rgba(34,197,94,0.2); border-color: rgb(var(--c-wifi)); }

/* ─── SEARCH HIGHLIGHT ──────────────────────────────────────── */
mark { background: rgba(139,92,246,0.25); color: var(--text); border-radius: 3px; padding: 0 2px; }

/* ─── MOBILE SIDEBAR BACKDROP ───────────────────────────────── */
.mobile-sidebar-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(5,6,12,0.55);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.22s ease;
  z-index: 58; /* below header (60), above content */
}
body.mobile-sidebar-open .mobile-sidebar-backdrop {
  opacity: 1;
  pointer-events: auto;
}
@media (min-width: 901px) {
  .mobile-sidebar-backdrop { display: none !important; }
}

/* ─── LOADING STATES ────────────────────────────────────────── */
/* Shared spinner — use anywhere via <span class="ana-spinner"></span>.
   Inherits current font-color for the top arc so it blends with context. */
.ana-spinner {
  display: inline-block;
  width: 16px;
  height: 16px;
  border: 2px solid rgba(255,255,255,0.18);
  border-top-color: currentColor;
  border-radius: 50%;
  animation: anaSpin 0.75s linear infinite;
  vertical-align: middle;
  flex-shrink: 0;
}
.ana-spinner.ana-spinner-sm { width: 12px; height: 12px; border-width: 1.5px; }
.ana-spinner.ana-spinner-lg { width: 28px; height: 28px; border-width: 2.5px; }
@keyframes anaSpin { to { transform: rotate(360deg); } }

/* Inline loading row: <div class="ana-loading"><span class="ana-spinner"></span> جارٍ التحميل…</div> */
.ana-loading {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  color: var(--muted);
  font-size: 0.88rem;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(255,255,255,0.03);
}

/* Shimmer skeleton blocks — use .ana-skel + a width class or inline style */
.ana-skel {
  position: relative;
  overflow: hidden;
  background: rgba(255,255,255,0.06);
  border-radius: 8px;
  min-height: 14px;
}
.ana-skel::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,0.08) 45%,
    rgba(255,255,255,0.14) 50%,
    rgba(255,255,255,0.08) 55%,
    rgba(255,255,255,0) 100%
  );
  animation: anaSkelShine 1.25s ease-in-out infinite;
  transform: translateX(100%);
}
@keyframes anaSkelShine {
  0%   { transform: translateX(100%); }
  100% { transform: translateX(-100%); }
}
.ana-skel-line { height: 12px; }
.ana-skel-line-lg { height: 18px; }
.ana-skel-circle { border-radius: 50%; }
.ana-skel-block { min-height: 80px; border-radius: 12px; }
.ana-skel-stack { display: flex; flex-direction: column; gap: 10px; }
@media (prefers-reduced-motion: reduce) {
  .ana-spinner, .ana-skel::after { animation: none; }
}

/* ─── EMPTY STATE ───────────────────────────────────────────── */
.empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 64px 22px;
  grid-column: 1 / -1;
  text-align: center;
  border-radius: 18px;
  background:
    radial-gradient(ellipse 60% 50% at 50% 0%, rgba(139,92,246,0.09), transparent 70%),
    radial-gradient(ellipse 40% 40% at 80% 80%, rgba(45,212,191,0.06), transparent 70%),
    linear-gradient(180deg, rgba(139,92,246,0.04) 0%, rgba(139,92,246,0) 70%);
  animation: emptyStateIn 0.45s cubic-bezier(0.16, 1, 0.3, 1) both;
  position: relative;
  overflow: hidden;
}
.empty-state-pushed { margin-top: 40px; }
/* Soft orbiting halo behind the icon */
.empty-state::before {
  content: '';
  position: absolute;
  top: 58px;
  left: 50%;
  width: 160px;
  height: 160px;
  margin-left: -80px;
  border-radius: 50%;
  background:
    conic-gradient(from 0deg, rgba(139,92,246,0) 0deg, rgba(139,92,246,0.12) 90deg, rgba(45,212,191,0.12) 180deg, rgba(139,92,246,0) 270deg, rgba(139,92,246,0) 360deg);
  filter: blur(18px);
  animation: emptyStateHalo 9s linear infinite;
  pointer-events: none;
  opacity: 0.9;
}
@keyframes emptyStateHalo {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
.empty-icon {
  font-size: 2.8rem;
  width: 76px;
  height: 76px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 22px;
  background:
    radial-gradient(circle at 30% 30%, rgba(139,92,246,0.22), rgba(139,92,246,0.08) 60%),
    rgba(139,92,246,0.06);
  border: 1px solid rgba(139,92,246,0.26);
  color: var(--accent2, #a78bfa);
  box-shadow:
    0 8px 24px rgba(139,92,246,0.18),
    0 0 0 1px rgba(255,255,255,0.02) inset;
  margin-bottom: 6px;
  position: relative;
  animation: emptyIconFloat 4s ease-in-out infinite;
  z-index: 1;
}
.empty-icon::after {
  content: '';
  position: absolute;
  inset: -6px;
  border-radius: 26px;
  background: radial-gradient(circle, rgba(139,92,246,0.2), transparent 65%);
  filter: blur(10px);
  opacity: 0.6;
  z-index: -1;
  animation: emptyIconPulse 3s ease-in-out infinite;
}
@keyframes emptyIconFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
@keyframes emptyIconPulse {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50%      { opacity: 0.7; transform: scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .empty-state,
  .empty-icon, .empty-icon::after, .empty-state::before {
    animation: none !important;
  }
}
.empty-title {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--text);
  margin: 0;
  opacity: 0.82;
}
.empty-sub {
  font-size: 0.85rem;
  color: var(--muted);
  margin: 0;
  max-width: 360px;
  line-height: 1.6;
}
.empty-state > button,
.empty-state .empty-cta {
  margin-top: 14px;
  padding: 10px 22px;
  border-radius: 12px;
  border: none;
  background: var(--accent2, #8b5cf6);
  color: #fff;
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.empty-state > button:hover,
.empty-state .empty-cta:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(139,92,246,0.35);
}
@keyframes emptyStateIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
/* Small / inline empty variants */
.empty-state.empty-state-sm      { padding: 32px 16px; }
.empty-state.empty-state-compact  { padding: 24px 12px; }
.empty-state.empty-state-sm .empty-icon { width: 56px; height: 56px; font-size: 2rem; border-radius: 16px; }
.empty-state.empty-state-sm .empty-title { font-size: 0.98rem; }
.empty-state.empty-state-sm .empty-sub { font-size: 0.8rem; }

/* ─── COLOR SWATCHES ────────────────────────────────────────── */
.color-swatches { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
.color-swatch { width: 28px; height: 28px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; transition: all .2s; }
.color-swatch:hover, .color-swatch.active { border-color: white; transform: scale(1.15); }

/* ─── MOBILE BOTTOM NAV ─────────────────────────────────────── */
.mobile-bottom-nav { display: none; }

/* ─── MOBILE SIDEBAR OVERLAY ────────────────────────────────── */
.sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 49; backdrop-filter: blur(4px); }
.sidebar-overlay.show { display: block; }

/* ─── MODAL SCROLLING ───────────────────────────────────────── */
.modal-overlay { overflow-y: auto; }

/* ═══════════════════════════════════════════════════════════════
   MOBILE REDESIGN — max-width: 768px
   ═══════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {

  /* ─── 1. HEADER — simplified ──────────────────────────────── */
  .dash-header {
    height: 48px;
    min-height: 48px;
    padding: 0 10px;
  }
  .dash-header-right { gap: 6px; }
  .dash-header-left { gap: 4px; }

  /* Hide non-essential header items */
  .header-section-label,
  .header-section-label + .header-divider,
  .header-date,
  .header-time-pill,
  .header-time-pill + div,
  #edit-order-btn,
  #quick-add-btn { display: none !important; }

  /* Keep hamburger visible */
  .mobile-menu-btn { display: flex; }

  /* Logo smaller */
  .dash-logo { font-size: 1.1rem; letter-spacing: 0.5px; }

  /* Search: compact, expandable feel */
  .header-search-wrap {
    min-width: 0;
    flex: 1;
    height: 32px;
    border-radius: 10px;
    padding: 0 10px;
    background: rgba(255,255,255,0.05);
  }
  .header-search-input { font-size: 0.82rem; }
  .header-search-input::placeholder { font-size: 0.75rem; }

  /* Dividers thinner on mobile */
  .header-divider { height: 14px; margin: 0 2px; }

  /* Settings/command buttons smaller */
  .header-icon-btn { width: 32px; height: 32px; border-radius: 8px; }

  /* ─── 2. BOTTOM NAV — app-style ───────────────────────────── */
  .mobile-bottom-nav {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 64px;
    z-index: 55;
    background: rgba(13,13,17,0.98);
    border-top: 1px solid var(--border);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    align-items: stretch;
    padding-bottom: env(safe-area-inset-bottom, 0px);
  }
  .mob-nav-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    background: none;
    border: none;
    color: var(--muted);
    font-family: var(--font-ar);
    font-size: 0.68rem;
    font-weight: 700;
    cursor: pointer;
    transition: color .15s;
    padding: 6px 2px;
    -webkit-tap-highlight-color: transparent;
    position: relative;
  }
  .mob-nav-btn svg { width: 22px; height: 22px; }
  .mob-nav-btn.active {
    color: var(--accent2);
  }
  .mob-nav-btn.active::after {
    content: '';
    position: absolute;
    top: 4px;
    left: 50%;
    transform: translateX(-50%);
    width: 20px;
    height: 3px;
    background: var(--accent2);
    border-radius: 99px;
  }


  /* ─── 3. SIDEBAR — wider, cleaner ─────────────────────────── */
  .sidebar {
    position: fixed;
    top: 0;
    right: -300px;
    height: 100vh;
    height: 100dvh;
    width: 280px;
    z-index: 56;
    transition: right .3s cubic-bezier(0.16,1,0.3,1);
    padding-top: 56px;
    padding-bottom: env(safe-area-inset-bottom, 16px);
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .sidebar.mobile-open { right: 0; }
  .sidebar.expanded { width: 280px; }

  /* Always show labels in mobile sidebar */
  .sidebar .sidebar-label { display: block; }
  .sidebar .sidebar-nav-btn,
  .sidebar .sidebar-icon-btn {
    width: 100%;
    justify-content: flex-start;
    gap: 14px;
    padding: 0 18px;
    border-radius: 12px;
    height: 48px;
    font-size: 0.9rem;
  }
  .sidebar .sidebar-nav-btn svg,
  .sidebar .sidebar-icon-btn svg { width: 20px; height: 20px; }

  /* Hide sidebar tooltips on mobile */
  .sidebar .sidebar-icon-btn::before,
  .sidebar .sidebar-nav-btn::before { display: none; }
  .sidebar-top { display: none; }
  .sidebar-filters { padding: 12px 10px; gap: 4px; }
  .sidebar-bottom { padding: 12px 10px; gap: 4px; }

  /* Show sidebar stats on mobile */
  .sidebar .sidebar-stats { display: flex; }

  /* Sidebar overlay better */
  .sidebar-overlay { z-index: 55; }
  .sidebar-overlay.show { display: block; }

  /* ─── 4. MAIN CONTENT ─────────────────────────────────────── */
  .main-content {
    padding: 12px 10px;
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px) + 12px);
    -webkit-overflow-scrolling: touch;
  }

  /* ─── 5. CARDS — single column, full width on mobile ──────── */
  .dash-grid {
    grid-template-columns: 1fr;
    gap: 8px;
  }

  .card {
    height: auto;
    min-height: 160px;
    padding: 14px;
    border-radius: 16px;
    -webkit-tap-highlight-color: transparent;
  }
  /* Active press effect instead of hover */
  .card:active {
    transform: scale(0.97);
    transition: transform .1s;
  }
  .card:hover {
    transform: none;
    box-shadow: 0 12px 30px rgba(0,0,0,0.5), inset 0 1px 0 rgba(255,255,255,0.05);
  }

  .card-icon { width: 30px; height: 30px; border-radius: 8px; font-size: 1.1rem; }
  .card-title { font-size: 0.9rem; }
  .card-meta { font-size: 0.72rem; }
  .card-type-badge { font-size: 0.58rem; top: 16px; left: 16px; }

  /* Card actions: always visible, compact */
  .card-actions {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
    padding: 12px 14px 10px;
  }
  .card-delete, .card-edit, .card-reset, .card-copy {
    font-size: 0.68rem;
    padding: 5px 10px;
    border-radius: 6px;
  }

  /* ─── 6. MODALS — bottom sheet style ──────────────────────── */
  .modal-overlay {
    align-items: flex-end;
    padding: 0;
  }
  .modal-box {
    max-width: 100%;
    width: 100%;
    margin: 0;
    border-radius: 20px 20px 0 0;
    max-height: 92vh;
    max-height: 92dvh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 20px 16px;
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    animation: mobileSlideUp .35s cubic-bezier(0.16,1,0.3,1);
  }
  @keyframes mobileSlideUp {
    from { transform: translateY(100%); opacity: 0.5; }
    to   { transform: translateY(0);    opacity: 1;   }
  }

  /* Drag handle visual cue */
  .modal-box::before {
    content: '';
    display: block;
    width: 40px;
    height: 4px;
    background: rgba(255,255,255,0.15);
    border-radius: 99px;
    margin: 0 auto 14px;
  }

  /* Input fields bigger touch targets */
  .modal-input {
    padding: 14px 16px;
    font-size: 0.95rem;
    border-radius: 12px;
    min-height: 46px;
  }
  select.modal-input { min-height: 46px; }


  /* Modal actions sticky at bottom */
  .modal-actions {
    position: sticky;
    bottom: 0;
    background: rgba(24,24,28,0.98);
    backdrop-filter: blur(12px);
    margin: 16px -16px -16px;
    padding: 14px 16px;
    padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));
    border-top: 1px solid var(--border);
    border-radius: 0;
    z-index: 5;
  }
  .btn-save { width: 100%; text-align: center; padding: 14px; border-radius: 12px; font-size: 1rem; }
  .btn-cancel { padding: 14px 20px; font-size: 0.95rem; }

  /* Checklist modal */
  .checklist-modal-box { max-width: 100% !important; padding: 20px 16px !important; }

  /* ─── 7. QUICK ADD — bottom sheet ─────────────────────────── */
  .quick-add-panel {
    position: fixed !important;
    right: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    top: auto !important;
    width: 100% !important;
    border-radius: 20px 20px 0 0;
    padding: 20px 16px;
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -10px 40px rgba(0,0,0,0.6);
    animation: mobileSlideUp .3s cubic-bezier(0.16,1,0.3,1);
    z-index: 200 !important;
  }
  .quick-add-panel::before {
    content: '';
    display: block;
    width: 40px;
    height: 4px;
    background: rgba(255,255,255,0.15);
    border-radius: 99px;
    margin: 0 auto 12px;
  }
  .quick-input { padding: 14px; font-size: 0.95rem; border-radius: 12px; }
  .quick-save { padding: 12px 24px; font-size: 0.95rem; border-radius: 12px; }
  .quick-cancel { padding: 12px 16px; font-size: 0.9rem; }
  .quick-tab { padding: 10px 14px; font-size: 0.85rem; }

  /* ─── 8. PAGE VIEW ────────────────────────────────────────── */
  .page-header { padding: 14px 16px; }
  .page-content {
    padding: 16px 10px;
    padding-bottom: calc(64px + env(safe-area-inset-bottom, 0px) + 12px);
  }
  .page-heading { font-size: 1.2rem; }
  .back-btn { padding: 8px 16px; font-size: 0.85rem; border-radius: 10px; }

  /* ─── 9. FAB — hidden (bottom nav has add) ────────────────── */
  .fab { display: none; }

  /* ─── 10. TOASTS — top of screen ──────────────────────────── */
  .toast {
    bottom: auto !important;
    top: 12px;
    right: 12px;
    left: 12px;
    max-width: none;
    text-align: center;
    border-radius: 12px;
    font-size: 0.85rem;
    padding: 12px 16px;
  }

  /* ─── 11. EMOJI PICKER — full width ───────────────────────── */
  .emoji-picker-container {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    top: auto !important;
    width: 100% !important;
    border-radius: 16px 16px 0 0 !important;
  }
  em-emoji-picker { width: 100% !important; }

  /* ─── 12. SETTINGS DRAWER — full width (now full-page, no-op) ── */
  /* .settings-drawer { width: 100%; } — replaced by .settings-page */

  /* ─── 13. TOOLBAR — simplified ────────────────────────────── */
  .cards-toolbar { padding: 0 2px 6px; gap: 6px; }
  .toolbar-btn { padding: 4px 6px; font-size: 0.7rem; }
  .toolbar-btn span { display: none; }
  .sort-select { font-size: 0.72rem; padding: 4px 6px; }
  .toolbar-label { font-size: 0.68rem; }

  /* ─── 14. CRITICAL ALERTS BAR — compact ───────────────────── */
  .daily-summary { margin-bottom: 12px; border-radius: 12px; }
  .crit-items-scroll { padding: 10px 12px; gap: 8px; }
  .crit-item { width: 160px; padding: 8px 10px; border-radius: 10px; }
  .crit-title { font-size: 0.72rem; }

  /* ─── 15. SUBSCRIPTION / DOCUMENT VIEWS — bottom sheet ───── */
  .sub-view-box,
  .note-modal-box,
  .markdown-modal-box { max-width: 100% !important; }
  .sub-view-item { padding: 10px 12px; }
  .sub-view-item-name { font-size: 0.88rem; }
  .sub-view-amount { font-size: 0.95rem; }

  /* ─── 16. CONTEXT MENU — full width bottom sheet ──────────── */
  #card-context-menu {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    top: auto !important;
    width: 100%;
    border-radius: 16px 16px 0 0;
    padding-bottom: env(safe-area-inset-bottom, 8px);
  }

  /* ─── 17. SEARCH HISTORY ──────────────────────────────────── */
  .search-history-drop { border-radius: 10px; }

  /* ─── 18. SIDEBAR SEARCH BAR ──────────────────────────────── */
  .sidebar-search-bar {
    right: 0;
    top: 48px;
    height: 48px;
    padding: 0 14px;
  }

  /* ─── 19. LOGIN — mobile friendly ─────────────────────────── */
  .login-box { padding: 32px 24px; border-radius: 20px; }
  .login-logo { font-size: 2.2rem; }
  .pin-digit { width: 48px; height: 58px; font-size: 1.6rem; border-radius: 10px; }
  .pin-inputs { gap: 8px; }

  /* ─── 20. MISC TOUCH IMPROVEMENTS ─────────────────────────── */

  /* Checklist items bigger */
  .checklist-label-item { padding: 14px 16px; }
  .checklist-cb { width: 24px; height: 24px; }
  .checklist-text { font-size: 1rem; }

  /* Scrollbar hidden on mobile */
  ::-webkit-scrollbar { display: none; }
  * { scrollbar-width: none; }

  /* Disable hover effects (touch devices) */
  @media (hover: none) {
    .card:hover { transform: none; border-color: rgba(var(--card-color,255,255,255), 0.04); }
    .sidebar-icon-btn:hover, .sidebar-nav-btn:hover { background: none; }
  }
}

/* ─── EXTRA SMALL PHONES (< 380px) ──────────────────────────── */
@media (max-width: 380px) {
  .dash-grid { grid-template-columns: 1fr; }
  .card { min-height: 140px; }
  .mob-nav-btn span { font-size: 0.6rem; }
  .mob-nav-btn.mob-nav-add svg { width: 40px; height: 40px; margin-top: -12px; }
}

.mobile-menu-btn { display: none; width: 34px; height: 34px; border-radius: 10px; background: none; border: none; color: var(--muted); cursor: pointer; align-items: center; justify-content: center; transition: all .2s; }
.mobile-menu-btn:hover { background: rgba(255,255,255,0.06); color: var(--text); }
.mobile-sidebar-head { display: none; }


/* ─── NEW v19 STYLES ─────────────────────────────────────── */

/* Routine card type color */
:root { --c-routine: 251, 113, 133; --c-expense: 251, 113, 133; --c-contact: 168, 85, 247; }
.card[data-type="routine"] { --card-color: var(--c-routine); }
.card[data-type="expense"] { --card-color: var(--c-expense); }
.card[data-type="contact"] { --card-color: var(--c-contact); }

/* Tracker controls */
.tracker-controls { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:10px; padding:6px 0 2px; border-top:1px solid var(--border); }
.tracker-btn { width:32px; height:32px; border-radius:10px; background:rgba(6,182,212,0.1); border:1px solid rgba(6,182,212,0.2); color:rgb(6,182,212); font-size:1.2rem; font-weight:700; cursor:pointer; transition:all .15s; display:flex; align-items:center; justify-content:center; }
.tracker-btn:hover { background:rgba(6,182,212,0.25); }
.tracker-val-display { font-family:var(--font-mono); font-size:1rem; font-weight:700; color:var(--text); flex:1; text-align:center; }

/* Tracker card height auto */
.card[data-type="tracker"] { height:auto; min-height:185px; }
.card[data-type="tracker"] .card-meta { display:block; overflow:visible; }

/* Routine card height auto */
.card[data-type="routine"] { height:auto; min-height:185px; }
.card[data-type="routine"] .card-meta { display:block; overflow:visible; }

/* Pinned cards (.card already has position:relative at line 594) */
.card.pinned-card { border-color: rgba(251,191,36,0.3); }
.card.pinned-card::after { content:'📌'; position:absolute; top:10px; left:10px; font-size:0.75rem; opacity:0.7; pointer-events:none; }
.card-pin-btn { background:none; border:none; color:var(--muted); cursor:pointer; font-size:0.8rem; padding:4px 8px; border-radius:8px; transition:all .15s; }
.card-pin-btn:hover, .card-pin-btn.active { color:#fbbf24; }

/* Shortcuts overlay */
.shortcuts-overlay {
  position: fixed; inset: 0;
  background: rgba(5,6,12,0.72);
  z-index: 9600;
  display: flex; align-items: center; justify-content: center;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  padding: 20px;
  animation: shortcutsFade 0.2s ease-out;
}
.shortcuts-overlay.hidden { display: none !important; }
@keyframes shortcutsFade { from { opacity: 0; } to { opacity: 1; } }
.shortcuts-box {
  background: linear-gradient(180deg, rgba(24,22,36,0.98), rgba(15,13,26,0.98));
  border: 1px solid rgba(139,92,246,0.22);
  border-radius: 20px;
  padding: 22px 24px 18px;
  width: min(720px, 100%);
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 24px 60px rgba(0,0,0,0.5), 0 0 0 1px rgba(255,255,255,0.04);
  animation: shortcutsIn 0.25s ease-out;
}
@keyframes shortcutsIn {
  from { opacity: 0; transform: translateY(8px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@media (prefers-reduced-motion: reduce) {
  .shortcuts-overlay { animation: none; }
  .shortcuts-box { animation: none; }
}
.shortcuts-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.shortcuts-title {
  display: inline-flex; align-items: center; gap: 10px;
  font-weight: 700; font-size: 1.02rem; color: var(--text);
}
.shortcuts-title svg { color: var(--accent2, #a78bfa); }
.shortcuts-close {
  width: 30px; height: 30px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: var(--muted); cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  transition: all 0.15s;
}
.shortcuts-close:hover {
  background: rgba(239,68,68,0.14);
  border-color: rgba(239,68,68,0.3);
  color: #fca5a5;
}
.shortcuts-groups {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 20px 28px;
}
.shortcuts-group-title {
  margin: 0 0 10px;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--accent2, #a78bfa);
  letter-spacing: 0.04em;
  text-transform: none;
  opacity: 0.85;
}
.shortcuts-list {
  display: flex; flex-direction: column; gap: 8px;
}
.shortcut-row {
  display: flex; justify-content: space-between; align-items: center; gap: 14px;
  padding: 7px 10px;
  border-radius: 9px;
  transition: background 0.14s;
}
.shortcut-row:hover { background: rgba(139,92,246,0.06); }
.shortcut-row span {
  color: var(--muted);
  font-size: 0.86rem;
  text-align: start;
  flex: 1;
}
.shortcuts-foot {
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.06);
  font-size: 0.78rem;
  color: var(--muted);
  text-align: center;
  opacity: 0.75;
}
kbd {
  display: inline-block;
  background: linear-gradient(180deg, rgba(255,255,255,0.1), rgba(255,255,255,0.04));
  border: 1px solid rgba(255,255,255,0.14);
  border-bottom-width: 2px;
  border-radius: 6px;
  padding: 2px 8px;
  font-family: var(--font-mono);
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text);
  min-width: 24px;
  text-align: center;
  line-height: 1.4;
  box-shadow: 0 1px 0 rgba(0,0,0,0.25);
}

/* Search count */
.search-count { font-size:0.72rem; color:var(--muted); white-space:nowrap; }

/* Sidebar count badges */
.sidebar-count { font-size:0.6rem; background:rgba(255,255,255,0.1); border-radius:99px; padding:1px 5px; color:var(--muted); font-family:var(--font-mono); min-width:16px; text-align:center; transition: background .3s, color .3s; }
.sidebar-count-urgent { background: rgba(239,100,80,0.25) !important; color: #ef6450 !important; font-weight:700; animation: pulseBadge 1.5s ease infinite; }
@keyframes pulseBadge { 0%,100%{opacity:1} 50%{opacity:0.5} }
@media (prefers-reduced-motion: reduce) {
  .sidebar-count-urgent { animation: none; }
}

/* WiFi modal eye button */
.wifi-modal-eye-btn { width:42px; height:42px; flex-shrink:0; background:rgba(255,255,255,0.03); border:1px solid var(--border2); border-radius:12px; color:var(--muted); cursor:pointer; font-size:1rem; display:flex; align-items:center; justify-content:center; transition:all .2s; }
.wifi-modal-eye-btn:hover { border-color:rgb(var(--c-wifi)); color:rgb(var(--c-wifi)); }

/* ─── NEW v20 STYLES ─────────────────────────────────────── */

/* Counter card color */
:root { --c-counter: 251, 191, 36; }
.card[data-type="counter"] { --card-color: var(--c-counter); }
.card[data-type="counter"] { height:auto; min-height:185px; }
.card[data-type="counter"] .card-meta { display:block; overflow:visible; -webkit-line-clamp:unset; }

/* Counter display */
.counter-display { display:flex; align-items:baseline; gap:6px; justify-content:center; padding:12px 0 8px; cursor:pointer; user-select:none; }
.counter-number { font-family:var(--font-mono); font-size:2.8rem; font-weight:700; color:var(--text); line-height:1; transition:transform .1s; }
.counter-display:active .counter-number { transform:scale(0.92); }
.counter-max { font-family:var(--font-mono); font-size:1rem; color:var(--muted); }

/* Card duplicate button */
.card-text-copy { background:none; border:none; color:var(--muted); cursor:pointer; font-size:0.78rem; padding:5px 10px; border-radius:8px; transition:all .15s; white-space:nowrap; }
.card-text-copy:hover { color:var(--text); background:rgba(255,255,255,0.06); }

/* Card timestamp */
.card-timestamp { font-size:0.62rem; color:rgba(255,255,255,0.15); font-family:var(--font-mono); text-align:left; padding:4px 14px 6px; margin-top:-4px; }
.card-word-count { display:inline-block; font-size:0.6rem; color:rgba(255,255,255,0.2); font-family:var(--font-mono); margin-right:6px; vertical-align:middle; border:1px solid rgba(255,255,255,0.08); border-radius:4px; padding:0 4px; }

/* Card new highlight animation */
@keyframes cardHighlight { 0% { box-shadow:0 0 0 2px var(--accent2), 0 8px 30px rgba(0,0,0,0.3); } 100% { box-shadow:0 8px 30px rgba(0,0,0,0.3); } }
.card-new-highlight { animation:cardHighlight 1.2s ease-out forwards; }
@media (prefers-reduced-motion: reduce) {
  .card-new-highlight { animation: none; }
}

/* PIN Change Panel */
.pin-change-panel { position:fixed; z-index:200; background:var(--surface); border:1px solid var(--border2); border-radius:16px; padding:20px; width:280px; box-shadow:0 20px 50px rgba(0,0,0,0.7); display:flex; flex-direction:column; gap:10px; }
.pin-change-header { display:flex; justify-content:space-between; align-items:center; font-weight:700; margin-bottom:4px; }
.pin-change-header button { background:none; border:none; color:var(--muted); cursor:pointer; font-size:1.1rem; }
.pin-change-error { color:var(--danger); font-size:0.82rem; text-align:center; }

.settings-overlay { display: none; }

/* ══════════════════════════════════════════════════════════
   Settings — macOS-style window (backdrop + centered shell)
   ══════════════════════════════════════════════════════════ */

/* Backdrop overlay */
.settings-page {
  position: fixed;
  inset: 0;
  z-index: 9500;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.55);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  padding: 16px;
  box-sizing: border-box;
}
.settings-page.hidden { display: none !important; }

/* Floating window */
.sp-shell {
  display: flex;
  flex-direction: row;
  direction: rtl;
  width: 100%;
  max-width: 1120px;        /* ↑ from 860 — more room for sidebar nav editor with chips */
  height: min(760px, 92dvh); /* ↑ from 700 — taller for content */
  background: var(--surface, #111118);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 32px 80px rgba(0,0,0,0.7), 0 0 0 0.5px rgba(255,255,255,0.05);
  animation: spShellIn 0.2s cubic-bezier(0.34, 1.3, 0.64, 1) both;
}
@keyframes spShellIn {
  from { opacity: 0; transform: scale(0.95) translateY(8px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

/* ── Sidebar ──────────────────────────────────────── */
.sp-sidebar {
  width: 210px;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  border-left: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.025);
}

.sp-sidebar-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 14px 12px;
  flex-shrink: 0;
}
.sp-sidebar-title {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.sp-close-btn {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 7px;
  color: var(--muted);
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.15s;
  flex-shrink: 0;
}
.sp-close-btn:hover { background: rgba(255,255,255,0.1); color: var(--text); }

/* Vertical nav list */
.sp-nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 10px;
  flex: 1;
}
.sp-tab {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 9px;
  padding: 9px 11px;
  background: none;
  border: none;
  border-radius: 9px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.12s, color 0.12s;
  text-align: right;
  width: 100%;
}
.sp-tab svg { opacity: 0.55; flex-shrink: 0; }
.sp-tab:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.sp-tab.active {
  background: rgba(139, 92, 246, 0.13);
  color: var(--accent2, #8b5cf6);
}
.sp-tab.active svg { opacity: 1; }

.sp-sidebar-footer {
  padding: 12px 14px;
  font-family: var(--font-en, monospace);
  font-size: 0.7rem;
  color: rgba(255,255,255,0.2);
  border-top: 1px solid rgba(255,255,255,0.05);
  flex-shrink: 0;
}

/* ── Content area ─────────────────────────────────── */
.sp-content {
  flex: 1;
  overflow-y: auto;
  padding: 24px 26px;
  direction: rtl;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.1) transparent;
  min-width: 0;
}
.sp-content::-webkit-scrollbar { width: 5px; }
.sp-content::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 99px; }

/* Panes */
.sp-pane { display: none; }
.sp-pane.active { display: block; }

.sp-pane-title {
  font-size: 1.15rem;
  font-weight: 700;
  color: var(--text);
  margin: 0 0 18px;
}

/* Section dividers */
.sp-section-title {
  font-size: 0.7rem;
  font-weight: 700;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin: 22px 0 10px;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.sp-section-title:first-of-type { margin-top: 0; }
.sp-danger-title { color: rgba(239,68,68,0.55); }

/* Action cards grid (data tab) */
.sp-action-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px;
  margin-bottom: 4px;
}
.sp-action-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 16px 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  color: var(--text);
  font-family: var(--font-ar);
  cursor: pointer;
  transition: all 0.15s;
  text-align: center;
}
.sp-action-card:hover { background: rgba(255,255,255,0.07); border-color: rgba(255,255,255,0.15); }
.sp-action-card span { font-size: 0.82rem; font-weight: 600; }
.sp-action-card small { font-size: 0.67rem; color: var(--muted); }
.sp-action-card svg { opacity: 0.7; }

/* Drag handle for sidebar editor */
.sn-drag-handle {
  cursor: grab;
  color: rgba(255,255,255,0.2);
  font-size: 1.1rem;
  line-height: 1;
  padding: 0 2px;
  flex-shrink: 0;
  user-select: none;
  -webkit-user-select: none;
}
.sn-drag-handle:active { cursor: grabbing; }
.sn-item-ghost { opacity: 0.4; background: rgba(139,92,246,0.1) !important; }

/* ═══════════════════════════════════════════════════════════════
   🔐 API KEYS MANAGEMENT — settings/apis tab
   ═══════════════════════════════════════════════════════════════ */
.sp-apis-intro {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 14px 16px;
  background: linear-gradient(135deg, rgba(139,92,246,0.08), rgba(45,212,191,0.06));
  border: 1px solid rgba(139,92,246,0.18);
  border-radius: 14px;
  margin-bottom: 16px;
}
.sp-apis-intro-icon {
  font-size: 1.6rem;
  filter: drop-shadow(0 0 8px rgba(139,92,246,0.4));
}
.sp-apis-intro-title {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 3px;
}
.sp-apis-intro-desc {
  font-size: 0.74rem;
  color: var(--muted);
  line-height: 1.55;
}

.sp-apis-toolbar {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 14px;
}
.sp-apis-search-wrap {
  position: relative;
  display: flex;
  align-items: center;
}
.sp-apis-search-icon {
  position: absolute;
  right: 12px;
  color: var(--muted);
  pointer-events: none;
}
.sp-apis-search {
  flex: 1;
  padding: 10px 38px 10px 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  color: var(--text);
  outline: none;
  transition: all 0.15s;
}
.sp-apis-search:focus {
  border-color: rgba(139,92,246,0.45);
  background: rgba(255,255,255,0.07);
}
.sp-apis-cats {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.sp-apis-cat {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 999px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.74rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.sp-apis-cat:hover {
  background: rgba(255,255,255,0.06);
  color: var(--text);
}
.sp-apis-cat.active {
  background: linear-gradient(135deg, rgba(139,92,246,0.18), rgba(139,92,246,0.1));
  border-color: rgba(139,92,246,0.45);
  color: #fff;
}
.sp-apis-cat-icon { font-size: 0.85rem; }

.sp-apis-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.sp-apis-empty {
  text-align: center;
  padding: 40px 20px;
  color: var(--muted);
}
.sp-apis-empty-icon { font-size: 2.4rem; margin-bottom: 10px; opacity: 0.5; }
.sp-apis-empty-title { font-size: 0.92rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.sp-apis-empty-desc { font-size: 0.74rem; }

.sp-api-card {
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  padding: 14px;
  transition: all 0.2s;
}
.sp-api-card:hover {
  border-color: rgba(255,255,255,0.12);
  background: rgba(255,255,255,0.04);
}
.sp-api-card.enabled {
  border-color: rgba(34,211,117,0.25);
  box-shadow: 0 0 0 1px rgba(34,211,117,0.08), 0 6px 20px -12px rgba(34,211,117,0.3);
}
.sp-api-card.custom {
  border-style: dashed;
}

.sp-api-head {
  display: grid;
  grid-template-columns: 40px 1fr auto;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 12px;
}
.sp-api-icon {
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  background: linear-gradient(135deg, rgba(255,255,255,0.06), rgba(255,255,255,0.02));
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
}
.sp-api-meta { min-width: 0; }
.sp-api-name {
  font-size: 0.93rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 3px;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.sp-api-custom-badge {
  display: inline-block;
  padding: 2px 7px;
  background: rgba(167,139,250,0.18);
  border: 1px solid rgba(167,139,250,0.35);
  border-radius: 999px;
  color: #c4b5fd;
  font-size: 0.62rem;
  font-weight: 700;
}
.sp-api-desc {
  font-size: 0.73rem;
  color: var(--muted);
  line-height: 1.5;
  margin-bottom: 4px;
}
.sp-api-usage {
  font-size: 0.67rem;
  color: rgba(139,92,246,0.9);
  font-weight: 600;
}

.sp-api-status-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.sp-api-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  flex-shrink: 0;
}
.sp-api-dot-ok {
  background: #22d375;
  box-shadow: 0 0 0 2px rgba(34,211,117,0.15), 0 0 8px rgba(34,211,117,0.5);
}
.sp-api-dot-fail {
  background: #ef6450;
  box-shadow: 0 0 0 2px rgba(239,100,80,0.18), 0 0 8px rgba(239,100,80,0.5);
}
.sp-api-dot-pending {
  background: #f59e0b;
  box-shadow: 0 0 0 2px rgba(245,158,11,0.18);
}
.sp-api-dot-empty {
  background: rgba(255,255,255,0.12);
}

.sp-api-toggle {
  position: relative;
  display: inline-block;
  width: 34px;
  height: 18px;
  flex-shrink: 0;
}
.sp-api-toggle input { opacity: 0; width: 0; height: 0; }
.sp-api-toggle-slider {
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.12);
  border-radius: 999px;
  cursor: pointer;
  transition: background 0.18s;
}
.sp-api-toggle-slider::before {
  content: '';
  position: absolute;
  top: 2px;
  right: 2px;
  width: 14px;
  height: 14px;
  background: #fff;
  border-radius: 50%;
  transition: transform 0.18s;
}
.sp-api-toggle input:checked + .sp-api-toggle-slider {
  background: #22d375;
}
.sp-api-toggle input:checked + .sp-api-toggle-slider::before {
  transform: translateX(-16px);
}
.sp-api-toggle input:disabled + .sp-api-toggle-slider {
  opacity: 0.4;
  cursor: not-allowed;
}

.sp-api-keyrow {
  display: flex;
  gap: 6px;
  align-items: stretch;
  margin-bottom: 10px;
}
.sp-api-input-wrap {
  position: relative;
  flex: 1;
}
.sp-api-input {
  width: 100%;
  padding: 9px 38px 9px 14px;
  background: rgba(0,0,0,0.28);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 9px;
  font-family: var(--font-mono);
  font-size: 0.82rem;
  color: var(--text);
  outline: none;
  letter-spacing: 0.02em;
  transition: all 0.15s;
  direction: ltr;
  text-align: left;
}
.sp-api-input:focus {
  border-color: rgba(139,92,246,0.5);
  background: rgba(0,0,0,0.4);
  box-shadow: 0 0 0 3px rgba(139,92,246,0.12);
}
.sp-api-eye {
  position: absolute;
  left: 6px;
  top: 50%;
  transform: translateY(-50%);
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: none;
  border-radius: 6px;
  color: var(--muted);
  cursor: pointer;
  transition: all 0.15s;
}
.sp-api-eye:hover { background: rgba(255,255,255,0.06); color: var(--text); }

.sp-api-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 9px 12px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 9px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.77rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
}
.sp-api-btn:hover:not(:disabled) {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.16);
}
.sp-api-btn:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.sp-api-btn-test:hover:not(:disabled) {
  background: rgba(34,211,117,0.1);
  border-color: rgba(34,211,117,0.35);
  color: #22d375;
}
.sp-api-btn-del {
  padding: 9px 10px;
  color: rgba(239,100,80,0.85);
}
.sp-api-btn-del:hover {
  background: rgba(239,100,80,0.1);
  border-color: rgba(239,100,80,0.35);
  color: #ef6450;
}

.sp-api-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.sp-api-status-msg {
  font-size: 0.7rem;
  color: var(--muted);
  line-height: 1.4;
  flex: 1;
  min-width: 140px;
}
.sp-api-status-msg.ok { color: #22d375; font-weight: 600; }
.sp-api-status-msg.fail { color: #ef6450; font-weight: 600; }
.sp-api-status-msg.pending { color: #f59e0b; font-weight: 600; }

.sp-api-links {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
}
.sp-api-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 5px 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 7px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.7rem;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.15s;
}
.sp-api-link:hover {
  background: rgba(255,255,255,0.07);
  color: var(--text);
  border-color: rgba(255,255,255,0.12);
}
.sp-api-link-danger:hover {
  background: rgba(239,100,80,0.1);
  border-color: rgba(239,100,80,0.3);
  color: #ef6450;
}

.sp-apis-add-custom {
  width: 100%;
  margin-top: 14px;
  padding: 12px;
  background: rgba(139,92,246,0.08);
  border: 1px dashed rgba(139,92,246,0.35);
  border-radius: 12px;
  color: #c4b5fd;
  font-family: var(--font-ar);
  font-size: 0.84rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  transition: all 0.18s;
}
.sp-apis-add-custom:hover {
  background: rgba(139,92,246,0.14);
  border-color: rgba(139,92,246,0.55);
  color: #fff;
}

/* Custom API dialog */
.custom-api-dialog {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.7);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  z-index: 9800;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
}
.custom-api-dialog.hidden { display: none !important; }
.custom-api-shell {
  width: 100%;
  max-width: 440px;
  background: var(--card, #15121e);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 30px 80px -20px rgba(0,0,0,0.7);
  animation: customApiIn 0.22s cubic-bezier(0.25, 1, 0.5, 1) both;
}
@keyframes customApiIn {
  from { transform: translateY(12px) scale(0.97); opacity: 0; }
  to   { transform: translateY(0)    scale(1);    opacity: 1; }
}
.custom-api-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.custom-api-head h3 {
  font-size: 1.02rem;
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.custom-api-close {
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  color: var(--muted);
  cursor: pointer;
  transition: all 0.15s;
}
.custom-api-close:hover { background: rgba(255,255,255,0.1); color: var(--text); }
.custom-api-body {
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-height: 70vh;
  overflow-y: auto;
}
.custom-api-label {
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.custom-api-label span {
  font-size: 0.76rem;
  font-weight: 600;
  color: var(--muted);
}
.custom-api-label input {
  padding: 9px 12px;
  background: rgba(0,0,0,0.28);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 9px;
  font-family: var(--font-ar);
  font-size: 0.84rem;
  color: var(--text);
  outline: none;
  transition: all 0.15s;
}
.custom-api-label input:focus {
  border-color: rgba(139,92,246,0.5);
  background: rgba(0,0,0,0.4);
  box-shadow: 0 0 0 3px rgba(139,92,246,0.12);
}
.custom-api-foot {
  display: flex;
  gap: 10px;
  padding: 14px 18px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.custom-api-cancel, .custom-api-save {
  flex: 1;
  padding: 10px;
  border-radius: 9px;
  font-family: var(--font-ar);
  font-size: 0.84rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
}
.custom-api-cancel {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--text);
}
.custom-api-cancel:hover { background: rgba(255,255,255,0.08); }
.custom-api-save {
  background: linear-gradient(135deg, #a78bfa, #8b5cf6);
  border: 1px solid rgba(139,92,246,0.5);
  color: #fff;
  box-shadow: 0 4px 12px -4px rgba(139,92,246,0.5);
}
.custom-api-save:hover {
  transform: translateY(-1px);
  box-shadow: 0 8px 20px -4px rgba(139,92,246,0.6);
}

@media (max-width: 640px) {
  .sp-api-head { grid-template-columns: 36px 1fr; }
  .sp-api-status-wrap { grid-column: 1 / -1; justify-self: flex-end; }
  .sp-api-keyrow { flex-wrap: wrap; }
  .sp-api-btn { flex: 1; justify-content: center; }
}

/* ── Mobile: full-screen, sidebar becomes top tab strip ── */
@media (max-width: 640px) {
  .settings-page { padding: 0; align-items: flex-end; }
  .sp-shell {
    flex-direction: column;
    max-width: 100%;
    width: 100%;
    height: 94dvh;
    border-radius: 20px 20px 0 0;
    animation: spShellInMobile 0.25s cubic-bezier(0.25, 1, 0.5, 1) both;
  }
  @keyframes spShellInMobile {
    from { transform: translateY(100%); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
  }
  .sp-sidebar {
    width: 100%;
    border-left: none;
    border-bottom: 1px solid rgba(255,255,255,0.07);
    flex-direction: row;
    align-items: center;
    background: var(--surface);
  }
  .sp-sidebar-top { padding: 14px 14px 14px; border-bottom: none; flex-shrink: 0; }
  .sp-sidebar-title { font-size: 0.88rem; }
  .sp-nav {
    flex-direction: row;
    flex: 1;
    padding: 6px 4px;
    gap: 2px;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .sp-nav::-webkit-scrollbar { display: none; }
  .sp-tab {
    flex-direction: column;
    gap: 3px;
    padding: 6px 10px;
    font-size: 0.7rem;
    white-space: nowrap;
    flex-shrink: 0;
    border-radius: 8px;
  }
  .sp-sidebar-footer { display: none; }
  .sp-content { padding: 16px; }
  .sp-action-grid { grid-template-columns: repeat(2, 1fr); }
}
.settings-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:24px; }
.settings-header span { font-size:1.1rem; font-weight:700; }
.settings-header button { background:none; border:none; color:var(--muted); cursor:pointer; font-size:1.1rem; }
.settings-list { display:flex; flex-direction:column; gap:4px; flex:1; }
.settings-item { display:flex; align-items:center; gap:12px; padding:14px 16px; background:none; border:none; border-radius:12px; color:var(--text); font-family:var(--font-ar); font-size:0.95rem; cursor:pointer; transition:all .15s; width:100%; text-align:right; }
.settings-item:hover { background:rgba(255,255,255,0.06); }
.settings-item.danger { color:var(--danger); }
.settings-item.danger:hover { background:rgba(239,68,68,0.08); }
.settings-footer { border-top:1px solid var(--border); padding-top:16px; display:flex; justify-content:space-between; align-items:center; }
.settings-footer span { font-family:var(--font-en); font-weight:700; font-size:0.9rem; }
.settings-section-title { font-size:0.72rem; color:var(--muted); font-weight:700; text-transform:uppercase; letter-spacing:1px; padding: 14px 16px 6px; border-top:1px solid var(--border); margin-top:4px; }
.settings-accent-row { display:flex; gap:10px; padding:6px 16px 12px; flex-wrap:wrap; }
.settings-row { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:6px; }
.flex-wrap-gap { display: flex; flex-wrap: wrap; gap: 8px; }
.settings-label { font-size:0.9rem; color:var(--text); }
.settings-select-sm { width:auto; min-width:140px; padding:6px 14px; }
.settings-hint-flush { margin: 0 0 12px; }
.settings-hint-bottom { margin: 0 0 14px; }
.settings-hint-between { margin: 6px 0 14px; }
.settings-hint-top { margin: 8px 0 0; }
.settings-hint-sm { font-size: 0.78rem; margin: 8px 0 0; }
.accent-swatch {
  width: 28px; height: 28px; border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: all .2s;
  position: relative;
}
.accent-swatch:hover { transform: scale(1.15); }
.accent-swatch.active { border-color: white; box-shadow: 0 0 0 3px rgba(255,255,255,0.15); }
.accent-swatch.active::after { content:'✓'; position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-size:0.75rem; color:#fff; font-weight:900; }

/* ─── NEW v21 STYLES ─────────────────────────────────────── */

/* Expense card */
.expense-summary { display:flex; flex-direction:column; gap:4px; margin-bottom:8px; }
.expense-row { display:flex; justify-content:space-between; align-items:center; font-size:0.8rem; }
.expense-row span:first-child { color:var(--muted); }
.expense-spent { font-family:var(--font-mono); font-weight:700; color:#f97316; }
.expense-remaining { font-family:var(--font-mono); font-weight:700; color:#34d399; }
.expense-remaining.negative { color:var(--danger); }
.card[data-type="expense"] { height:auto; min-height:185px; }
.card[data-type="expense"] .card-meta { display:block; overflow:visible; -webkit-line-clamp:unset; }

/* Progress bar urgency states */
.card-progress-bar.warning { background:#eab308; }
.card-progress-bar.critical { background:var(--danger); }
.card-progress-bar.safe { background:rgb(var(--card-color)); }

/* Contact card */
.contact-info { display:flex; flex-direction:column; gap:6px; }
.contact-row { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.contact-phone { font-family:var(--font-mono); font-size:0.9rem; direction:ltr; }
.contact-email { font-size:0.78rem; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; flex:1; }
.contact-note { font-size:0.75rem; color:var(--muted); }
.card[data-type="contact"] { height:auto; min-height:145px; }
.card[data-type="contact"] .card-meta { display:block; overflow:visible; -webkit-line-clamp:unset; }

/* Empty state quick create */
.empty-quick-create { display:flex; gap:10px; flex-wrap:wrap; justify-content:center; margin-top:8px; }
.empty-quick-btn { padding:8px 16px; background:rgba(255,255,255,0.05); border:1px solid var(--border2); border-radius:12px; color:var(--muted); font-family:var(--font-ar); font-size:0.85rem; cursor:pointer; transition:all .2s; }
.empty-quick-btn:hover { background:rgba(255,255,255,0.1); color:var(--text); }


/* ─── Pinned section separator ─────────────────────────────── */
.pinned-section-sep {
  grid-column: 1 / -1;
  height: 1px;
  background: linear-gradient(to right, transparent, rgba(139,92,246,0.3), transparent);
  margin: 4px 0;
  position: relative;
}
.pinned-section-sep::before {
  content: '📌 مثبّت';
  position: absolute;
  top: -9px;
  right: 0;
  font-size: 0.64rem;
  font-weight: 700;
  color: rgba(139,92,246,0.6);
  font-family: var(--font-ar);
  letter-spacing: 0.5px;
  background: var(--bg);
  padding: 0 8px;
}

/* ─── CRITICAL INFO BAR / NOTIFICATIONS ────────────────────────── */
/* Notifications Dropdown (Popover) */
.notif-dropdown {
  position: fixed;
  width: 340px;
  max-height: 500px;
  background: var(--surface);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 14px;
  z-index: 9500;
  display: flex;
  flex-direction: column;
  box-shadow: 0 18px 48px rgba(0,0,0,0.7);
  font-family: var(--font-ar);
  animation: notifIn 0.14s ease-out both;
  bottom: auto;
  top: auto;
  left: auto;
  right: auto;
}
.notif-dropdown.hidden { display: none !important; }
@keyframes notifIn {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .notif-dropdown { animation: none; }
}
.notif-dropdown-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  font-weight: 600;
  font-size: 0.95rem;
}
.notif-close-btn {
  background: none;
  border: none;
  color: var(--text);
  font-size: 1.2rem;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.6;
  transition: opacity 0.15s;
}
.notif-close-btn:hover { opacity: 1; }
.notif-dropdown-body {
  flex: 1;
  overflow-y: auto;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.notif-dropdown-body::-webkit-scrollbar { width: 6px; }
.notif-dropdown-body::-webkit-scrollbar-track { background: transparent; }
.notif-dropdown-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.12);
  border-radius: 3px;
}
.notif-dropdown-body::-webkit-scrollbar-thumb:hover {
  background: rgba(255,255,255,0.2);
}
.notif-empty {
  text-align: center;
  padding: 24px 12px;
  color: var(--muted);
  font-size: 0.85rem;
}
.notif-item {
  width: 100% !important;
  margin: 0 !important;
}

/* Individual alert card */
.crit-item {
  flex-shrink: 0;
  width: 190px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  padding: 10px 12px;
  cursor: pointer;
  transition: transform .15s, border-color .15s, box-shadow .15s;
}
.crit-item:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(0,0,0,0.3);
}
.crit-header {
  display: flex;
  align-items: center;
  gap: 7px;
  margin-bottom: 8px;
}
.crit-icon { font-size: 1rem; flex-shrink: 0; }
.crit-title {
  flex: 1;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.crit-badge {
  font-size: 0.68rem;
  font-weight: 700;
  font-family: var(--font-mono);
  padding: 2px 7px;
  border-radius: 99px;
  white-space: nowrap;
  flex-shrink: 0;
}

/* Progress bar */
.crit-bar-track {
  height: 5px;
  background: rgba(255,255,255,0.06);
  border-radius: 99px;
  overflow: hidden;
}
.crit-bar-fill {
  height: 100%;
  border-radius: 99px;
  transition: width .8s cubic-bezier(.16,1,.3,1);
  background: var(--crit-bar-color, var(--accent));
}

/* Urgency color variants */
.crit-danger { border-color: rgba(239,68,68,0.3); background: rgba(239,68,68,0.05); }
.crit-danger:hover { border-color: rgba(239,68,68,0.5); box-shadow: 0 6px 20px rgba(239,68,68,0.12); }
.crit-danger .crit-title { color: #fca5a5; }
.crit-badge-danger { background: rgba(239,68,68,0.18); color: #f87171; }

.crit-warn { border-color: rgba(234,179,8,0.3); background: rgba(234,179,8,0.04); }
.crit-warn:hover { border-color: rgba(234,179,8,0.5); box-shadow: 0 6px 20px rgba(234,179,8,0.1); }
.crit-warn .crit-title { color: #fde68a; }
.crit-badge-warn { background: rgba(234,179,8,0.18); color: #fbbf24; }

.crit-info { border-color: rgba(59,130,246,0.3); background: rgba(59,130,246,0.04); }
.crit-info:hover { border-color: rgba(59,130,246,0.5); }
.crit-badge-info { background: rgba(59,130,246,0.18); color: #93c5fd; }

.crit-success { border-color: rgba(34,211,117,0.3); background: rgba(34,211,117,0.04); }
.crit-success:hover { border-color: rgba(34,211,117,0.5); box-shadow: 0 6px 20px rgba(34,211,117,0.1); }
.crit-success .crit-title { color: #6ee7b7; }
.crit-badge-success { background: rgba(34,211,117,0.18); color: var(--accent); }

.crit-muted { border-color: var(--border); }
.crit-badge-muted { background: rgba(255,255,255,0.06); color: var(--muted); }

/* Legacy chip classes kept for backward compatibility */
.summary-chip { display: none; }
.chip-danger,.chip-warn,.chip-success,.chip-info,.chip-muted { display: none; }

/* ─── Link Card Favicon ────────────────────────────────────── */
.link-meta-row { display: flex; align-items: center; gap: 6px; }
.link-favicon { width: 16px; height: 16px; border-radius: 3px; flex-shrink: 0; opacity: 0.85; }
.link-url-text { font-size: 0.82rem; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.link-meta-card { display: flex; flex-direction: column; gap: 10px; width: 100%; min-width: 0; position: relative; }
.link-domain-chip {
  width: fit-content;
  max-width: 100%;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid rgba(118, 149, 188, 0.12);
  background: rgba(255,255,255,0.03);
  color: rgba(191, 202, 219, 0.8);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  letter-spacing: 0.05em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.link-path-chip {
  margin-inline-start: 4px;
  opacity: 0.55;
  font-size: 0.64rem;
}
.link-proto-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.link-proto-dot.link-proto-secure   { background: #22c55e; box-shadow: 0 0 6px rgba(34, 197, 94, 0.5); }
.link-proto-dot.link-proto-insecure { background: #f59e0b; box-shadow: 0 0 6px rgba(245, 158, 11, 0.5); }

/* ── LINK HOVER PREVIEW (desktop only) ────────────────────── */
.link-hover-preview {
  position: absolute;
  bottom: calc(100% + 12px);
  inset-inline-start: 0;
  min-width: 220px;
  max-width: 320px;
  padding: 14px 16px;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(20, 18, 32, 0.96), rgba(30, 26, 46, 0.96));
  border: 1px solid rgba(139, 92, 246, 0.35);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.5), 0 0 24px rgba(139, 92, 246, 0.2);
  display: flex;
  align-items: center;
  gap: 12px;
  opacity: 0;
  transform: translateY(8px) scale(0.96);
  pointer-events: none;
  transition: opacity 0.22s ease, transform 0.28s cubic-bezier(0.22, 1.3, 0.36, 1);
  z-index: 50;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.link-preview-fav {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
  padding: 4px;
  flex-shrink: 0;
}
.link-preview-text { flex: 1; min-width: 0; }
.link-preview-domain {
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.link-preview-path {
  font-size: 0.68rem;
  color: rgba(191, 202, 219, 0.6);
  font-family: var(--font-mono);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-top: 2px;
}
.link-preview-cta {
  font-size: 0.7rem;
  color: #a78bfa;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(139, 92, 246, 0.12);
  white-space: nowrap;
}
/* Desktop hover reveal */
@media (hover: hover) and (min-width: 900px) {
  .card[data-type="link"]:hover .link-hover-preview,
  .card.link-dash-card:hover .link-hover-preview {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
/* Position for dashboard-style link card (tooltip appears above card) */
.card.link-dash-card .link-hover-preview {
  top: 100%;
  bottom: auto;
  inset-inline-start: 50%;
  transform: translate(-50%, 8px) scale(0.96);
  margin-top: 10px;
}
@media (hover: hover) and (min-width: 900px) {
  .card.link-dash-card:hover .link-hover-preview {
    transform: translate(-50%, 0) scale(1);
  }
}
@media (prefers-reduced-motion: reduce) {
  .link-hover-preview { transition: none; }
}

.card.link-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  right: auto;
  bottom: auto;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
  background: none;
  padding: 0;
  pointer-events: none;
}
.card.link-dash-card:hover .card-actions {
  opacity: 1;
  pointer-events: auto;
}
.card.link-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px;
  height: 28px;
  min-width: 28px;
  min-height: 28px;
  padding: 0 !important;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.link-dash-card .card-actions .card-delete:hover { background: rgba(239,68,68,0.6); }
.card.link-dash-card .card-actions .card-edit:hover { background: rgba(139,92,246,0.7); }
.card.link-dash-card .card-actions .card-more-btn,
.card.link-dash-card .card-actions .card-move-btn {
  letter-spacing: 0;
}

/* ─── Note View Modal ──────────────────────────────────────── */
.note-modal-box { max-width: 500px; }
.note-view-content {
  white-space: pre-wrap;
  font-family: var(--font-ar);
  font-size: 0.95rem;
  line-height: 1.8;
  color: var(--text);
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 16px;
  max-height: 400px;
  overflow-y: auto;
  direction: rtl;
  text-align: right;
}
.modal-footer-actions {
  padding: 12px 20px 16px;
  border-top: 1px solid var(--border);
  display: flex;
  justify-content: flex-end;
}
.btn-copy-all-fields {
  background: rgba(139,92,246,0.1);
  border: 1px solid rgba(139,92,246,0.25);
  color: var(--accent2);
  border-radius: 10px;
  padding: 8px 18px;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  transition: all .15s;
}
.btn-copy-all-fields:hover { background: rgba(139,92,246,0.2); }

/* ─── Contact Card Meta ────────────────────────────────────── */
.contact-meta { display: flex; flex-direction: column; gap: 4px; }
.contact-phone-meta { font-family: var(--font-mono); font-size: 0.88rem; direction: ltr; unicode-bidi: embed; }
.contact-email-meta { font-size: 0.78rem; color: var(--muted); }
.contact-action-btn { text-decoration: none; display: inline-flex; align-items: center; }

/* ─── Expense Card Meta ────────────────────────────────────── */
.expense-summary-meta { display: flex; align-items: baseline; gap: 4px; }
.expense-spent-meta { font-size: 1.3rem; font-weight: 800; color: var(--text); font-family: var(--font-mono); }
.expense-sep-meta { color: var(--muted); font-size: 0.85rem; }
.expense-budget-meta { font-size: 0.82rem; color: var(--muted); }
.card-progress-bar.expense-over { background: var(--danger); }

/* ─── Expense Modal ────────────────────────────────────────── */
.expense-view-header { padding: 4px 0 12px; border-bottom: 1px solid var(--border); margin-bottom: 12px; }
.expense-view-header ~ .card-progress-container,
.expense-view-totals ~ .card-progress-container { margin: 10px 0; }
.expense-view-totals { display: flex; align-items: baseline; gap: 6px; margin-bottom: 4px; }
.expense-view-spent { font-size: 2rem; font-weight: 800; color: var(--text); font-family: var(--font-mono); }
.expense-view-slash { color: var(--muted); }
.expense-view-budget { font-size: 1rem; color: var(--muted); }
.expense-view-remaining { font-size: 0.85rem; color: var(--accent); font-weight: 600; }
.expense-view-remaining.over { color: var(--danger); }
.expense-items-list { display: flex; flex-direction: column; gap: 6px; max-height: 280px; overflow-y: auto; }
.expense-item-row { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: rgba(255,255,255,0.03); border-radius: 8px; border: 1px solid var(--border); }
.expense-item-name { font-size: 0.88rem; color: var(--text); }
.expense-item-amount { font-family: var(--font-mono); font-size: 0.85rem; color: var(--accent2); font-weight: 600; }

/* ─── EXPENSE LIVE PREVIEW ────────────────────────────────── */
.expense-live-preview {
  background: rgba(74,222,128,0.06);
  border: 1px solid rgba(74,222,128,0.15);
  border-radius: 10px;
  padding: 10px 14px;
  margin-top: 6px;
  font-size: 0.85rem;
  font-variant-numeric: tabular-nums;
}
.expense-live-spent { font-weight: 700; color: var(--accent); }
.expense-live-budget { color: var(--muted); }

/* ─── DRAFT INDICATOR ────────────────────────────────────── */
.draft-indicator {
  font-size: 0.68rem;
  color: var(--accent2);
  opacity: 0.7;
  font-family: var(--font-ar);
  padding: 2px 6px;
  border-radius: 5px;
  background: rgba(139,92,246,0.08);
  border: 1px solid rgba(139,92,246,0.2);
  animation: pulseFade 2s ease infinite;
}
@keyframes pulseFade { 0%,100%{opacity:.5} 50%{opacity:1} }

/* ─── SIDEBAR STATS ──────────────────────────────────────── */
.sidebar-stats {
  padding: 10px 14px;
  border-top: 1px solid var(--border);
  margin-top: auto;
  display: flex;
  flex-direction: column;
  gap: 4px;
  width: 100%;
}
.sidebar-stat-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 4px 8px;
  border-radius: 8px;
  font-size: 0.75rem;
  gap: 8px;
}
.sidebar-stat-row.danger { background: rgba(239,100,80,0.08); }
.sidebar-stat-row.success { background: rgba(34,211,117,0.06); }
.sidebar-stat-label { color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; }
.sidebar-stat-val { font-family: var(--font-mono); color: var(--text); font-size: 0.72rem; flex-shrink: 0; }
.sidebar-stat-row.danger .sidebar-stat-val { color: #ef6450; }
.sidebar-stat-row.success .sidebar-stat-val { color: var(--accent); }

/* When sidebar is collapsed, hide stats */
.sidebar:not(.expanded) .sidebar-stats { display: none; }

/* ─── FOCUS MODE ─────────────────────────────────────────── */
body.focus-mode .dash-header { transform: translateY(-100%); opacity: 0; transition: all .4s ease; pointer-events: none; }
body.focus-mode .sidebar { transform: translateX(100%); opacity: 0; transition: all .4s ease; pointer-events: none; }
body.focus-mode .main-content { margin-right: 0 !important; padding-top: 20px; transition: all .4s ease; }
body.focus-mode .fab { bottom: 24px; }
body:not(.focus-mode) .dash-header,
body:not(.focus-mode) .sidebar { transition: all .3s ease; }

/* ─── CARDS TOOLBAR ──────────────────────────────────────── */
.cards-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 4px 8px;
  gap: 10px;
}
.cards-toolbar-right { display: flex; align-items: center; gap: 8px; }
.cards-toolbar-left  { display: flex; align-items: center; gap: 6px; }
.toolbar-label { font-size: 0.75rem; color: var(--muted); font-variant-numeric: tabular-nums; }
.sort-select {
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--muted);
  font-size: 0.75rem;
  font-family: var(--font-ar);
  padding: 4px 8px;
  cursor: pointer;
  outline: none;
  transition: border-color .2s, color .2s;
  direction: rtl;
}
.sort-select:hover { border-color: var(--border2); color: var(--text); }
.sort-select:focus { border-color: var(--accent); color: var(--text); }
.sort-select option { background: #1e1e24; }
.toolbar-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  border-radius: 8px;
  color: var(--muted);
  font-size: 0.73rem;
  font-family: var(--font-ar);
  padding: 4px 10px;
  cursor: pointer;
  transition: all .2s;
  white-space: nowrap;
}
.toolbar-btn:hover { border-color: var(--border2); color: var(--text); background: rgba(255,255,255,0.07); }
.toolbar-btn.active { border-color: var(--accent); color: var(--accent); background: rgba(34,211,117,0.08); }
@media(max-width:600px) {
  .toolbar-btn span, .sort-select { display: none; }
  .toolbar-btn { padding: 5px 7px; }
}

/* ─── MOVE TO PAGE MODAL ─────────────────────────────────── */
.move-page-list { display: flex; flex-direction: column; gap: 6px; }
.move-page-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px 16px;
  color: var(--text);
  font-size: 0.88rem;
  font-family: var(--font-ar);
  cursor: pointer;
  transition: all .2s;
  text-align: right;
  width: 100%;
}
.move-page-btn:hover { background: rgba(139,92,246,0.08); border-color: rgba(139,92,246,0.3); color: var(--accent2); }
.move-page-icon { font-size: 1.1rem; }
.move-page-name { flex: 1; }
.move-page-arrow { color: var(--muted); font-size: 1rem; }
.move-no-pages { color: var(--muted); font-size: 0.82rem; text-align: center; padding: 20px; line-height: 1.7; }

/* ─── NOTE EDIT ──────────────────────────────────────────── */
.note-edit-area {
  width: 100%;
  min-height: 200px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.9rem;
  line-height: 1.75;
  padding: 14px;
  resize: vertical;
  outline: none;
  transition: border-color .2s;
}
.note-edit-area:focus { border-color: var(--accent2); }
.note-word-count {
  font-size: 0.7rem;
  color: var(--muted);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}
.note-edit-toggle-btn {
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--border);
  border-radius: 7px;
  color: var(--muted);
  font-size: 0.85rem;
  padding: 3px 8px;
  cursor: pointer;
  transition: all .2s;
}
.note-edit-toggle-btn:hover { color: var(--accent2); border-color: var(--accent2); background: rgba(139,92,246,0.08); }
.btn-note-save {
  background: rgba(34,211,117,0.12);
  border: 1px solid rgba(34,211,117,0.3);
  border-radius: 8px;
  color: var(--accent);
  font-size: 0.8rem;
  font-family: var(--font-ar);
  padding: 6px 14px;
  cursor: pointer;
  transition: all .2s;
}
.btn-note-save:hover { background: rgba(34,211,117,0.22); }

/* ─── CARD TAGS ──────────────────────────────────────────── */
.card-tags-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 5px;
}
.card-tag {
  font-size: 0.65rem;
  padding: 2px 7px;
  border-radius: 99px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--muted);
  cursor: pointer;
  transition: all .15s;
  font-family: var(--font-ar);
}
.card-tag:hover { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.3); color: var(--accent2); }

/* Tags bar */
.type-filters-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding: 0 0 10px;
}
.type-filters-bar::-webkit-scrollbar { display: none; }
.type-filter-chip {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  flex-shrink: 0;
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  border-radius: 99px;
  color: var(--muted);
  font-size: 0.74rem;
  font-family: var(--font-ar);
  font-weight: 600;
  padding: 6px 12px;
  cursor: pointer;
  transition: all .15s;
}
.type-filter-chip:hover {
  background: rgba(59,130,246,0.08);
  border-color: rgba(59,130,246,0.25);
  color: var(--text);
}
.type-filter-chip.active {
  background: rgba(59,130,246,0.12);
  border-color: rgba(59,130,246,0.38);
  color: #c8ecff;
  box-shadow: 0 10px 24px rgba(7, 15, 30, 0.22);
}
.type-filter-icon {
  font-size: 0.85rem;
  line-height: 1;
  opacity: 0.9;
}
.type-filter-label {
  white-space: nowrap;
}
.type-filter-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  padding: 2px 7px;
  border-radius: 999px;
  background: rgba(255,255,255,0.07);
  color: var(--text);
  font-size: 0.68rem;
  font-family: var(--font-mono);
  line-height: 1;
}
.type-filter-chip.active .type-filter-count {
  background: rgba(68, 200, 255, 0.16);
  color: #7dd3fc;
}

.tags-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 5px;
  padding: 0 4px 10px;
}
.tags-bar-label { font-size: 0.72rem; color: var(--muted); padding-left: 2px; flex-shrink: 0; }
.tag-filter-chip {
  background: rgba(255,255,255,0.04);
  border: 1px solid var(--border);
  border-radius: 99px;
  color: var(--muted);
  font-size: 0.72rem;
  font-family: var(--font-ar);
  padding: 3px 10px;
  cursor: pointer;
  transition: all .15s;
}
.tag-filter-chip:hover { background: rgba(139,92,246,0.1); border-color: rgba(139,92,246,0.3); color: var(--accent2); }
.tag-filter-chip.active { background: rgba(139,92,246,0.15); border-color: var(--accent2); color: var(--accent2); font-weight: 700; }
.tag-filter-clear {
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.2);
  border-radius: 99px;
  color: var(--danger);
  font-size: 0.7rem;
  font-family: var(--font-ar);
  padding: 3px 10px;
  cursor: pointer;
  transition: all .15s;
}
.tag-filter-clear:hover { background: rgba(239,68,68,0.15); }

/* Tag suggestions */
.tag-suggestions {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  padding: 6px 0 2px;
}
.tag-sug-btn {
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  border-radius: 99px;
  color: var(--muted);
  font-size: 0.75rem;
  font-family: var(--font-ar);
  padding: 3px 10px;
  cursor: pointer;
  transition: all .15s;
}
.tag-sug-btn:hover { background: rgba(139,92,246,0.1); border-color: rgba(139,92,246,0.3); color: var(--accent2); }

/* Tags field in modal */
.tags-field-group { border-top: 1px solid var(--border); padding-top: 14px; margin-top: 4px; }

/* ─── CARD MOVE BTN ──────────────────────────────────────── */
.card-move-btn {
  background: rgba(139,92,246,0.08);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 6px;
  color: var(--accent2);
  font-size: 0.7rem;
  padding: 3px 7px;
  cursor: pointer;
  transition: all .15s;
  font-family: var(--font-en);
}
.card-move-btn:hover { background: rgba(139,92,246,0.18); }

/* ─── LIST VIEW MODE ─────────────────────────────────────── */

/* ─── COMPACT DENSITY MODE ──────────────────────────────── */
.dash-grid.compact-mode {
  gap: 8px !important;
}
.dash-grid.compact-mode .card {
  padding: 10px 14px;
}
.dash-grid.compact-mode .card-icon { font-size: 1.1rem; }
.dash-grid.compact-mode .card-title { font-size: 0.83rem; }
.dash-grid.compact-mode .card-meta { font-size: 0.72rem; }
.dash-grid.compact-mode .card-type-badge { font-size: 0.6rem; padding: 1px 5px; }
.dash-grid.compact-mode .card-timestamp { display: none; }
.dash-grid.compact-mode .card-actions button { font-size: 0.68rem !important; padding: 3px 6px !important; }

/* Spacious mode — generous breathing room */
.dash-grid.spacious-mode,
#page-grid.spacious-mode {
  gap: 28px !important;
  padding: 8px 4px;
}
.dash-grid.spacious-mode .card,
#page-grid.spacious-mode .card {
  padding: 26px 28px;
  border-radius: 22px;
  min-height: 200px;
}
.dash-grid.spacious-mode .card-icon,
#page-grid.spacious-mode .card-icon {
  font-size: 1.7rem;
  margin-bottom: 8px;
}
.dash-grid.spacious-mode .card-title,
#page-grid.spacious-mode .card-title {
  font-size: 1.18rem;
  line-height: 1.4;
  margin-bottom: 8px;
}
.dash-grid.spacious-mode .card-meta,
#page-grid.spacious-mode .card-meta {
  font-size: 0.92rem;
  line-height: 1.55;
}
.dash-grid.spacious-mode .card-type-badge,
#page-grid.spacious-mode .card-type-badge {
  font-size: 0.74rem;
  padding: 4px 10px;
}
@media (min-width: 1100px) {
  .dash-grid.spacious-mode { gap: 32px !important; }
  .dash-grid.spacious-mode .card-auto-height { min-height: 220px; }
}
body.density-spacious .dash-grid {
  max-width: 1500px;
  margin: 0 auto;
}

/* ─── WiFi QR Modal ────────────────────────────────────────── */
.wifi-qr-box { max-width: 320px; }
.wifi-qr-canvas { display: flex; justify-content: center; align-items: center; padding: 12px; background: rgba(255,255,255,0.04); border-radius: 16px; border: 1px solid var(--border); }
.wifi-qr-canvas img, .wifi-qr-canvas canvas { border-radius: 8px; }
.wifi-qr-ssid { font-weight: 700; font-size: 1rem; color: var(--text); margin-top: 4px; }
.wifi-qr-hint { font-size: 0.78rem; color: var(--muted); max-width: 220px; line-height: 1.5; }
.wifi-qr-btn { font-size: 0.72rem !important; padding: 3px 8px !important; background: rgba(34,197,94,0.1) !important; border: 1px solid rgba(34,197,94,0.3) !important; color: #22c55e !important; border-radius: 6px !important; }
.wifi-qr-btn:hover { background: rgba(34,197,94,0.2) !important; }

/* ─── Reminder Detail Modal ────────────────────────────────── */
.reminder-detail-date {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 0.85rem;
  color: var(--accent2);
  background: rgba(139,92,246,0.08);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 10px;
  padding: 6px 14px;
  margin-bottom: 12px;
  font-family: var(--font-ar);
}
.reminder-detail-date::before { content: '📅 '; }
.reminder-detail-body {
  font-size: 0.9rem;
  line-height: 1.75;
  color: var(--text);
  white-space: pre-wrap;
  background: rgba(255,255,255,0.03);
  border-radius: 10px;
  padding: 14px;
  border: 1px solid var(--border);
}

/* ─── CODE CARD ──────────────────────────────────────────── */
.card[data-type="code"] { border-right-color: rgba(var(--c-code), 0.7) !important; }
.card[data-type="code"] .card-type-badge { background: rgba(var(--c-code), 0.12); color: rgb(var(--c-code)); }
.code-preview-wrap { margin-top: 4px; }
.code-lang-tag {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: 0.65rem;
  padding: 1px 7px;
  border-radius: 6px;
  background: rgba(var(--c-code), 0.15);
  color: rgb(var(--c-code));
  margin-bottom: 5px;
  letter-spacing: 0.5px;
  text-transform: uppercase;
}
.code-preview {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  line-height: 1.55;
  color: rgba(255,255,255,0.75);
  white-space: pre;
  overflow: hidden;
  max-height: 64px;
  text-overflow: ellipsis;
  direction: ltr;
  text-align: left;
}
.code-more { color: var(--muted); font-style: italic; font-size: 0.65rem; }
.code-modal-textarea {
  font-family: var(--font-mono) !important;
  font-size: 0.82rem !important;
  direction: ltr;
  text-align: left;
  line-height: 1.6;
  resize: vertical;
}

/* ─── COMMAND PALETTE ─────────────────────────────────────── */
.cmd-palette {
  position: fixed; inset: 0; z-index: 9000;
  background: rgba(0,0,0,0.6);
  display: flex; align-items: flex-start; justify-content: center;
  padding-top: clamp(60px, 10vh, 120px);
  backdrop-filter: blur(4px);
  animation: fadeInFast .12s ease;
}
@keyframes fadeInFast { from { opacity:0 } to { opacity:1 } }
.cmd-box {
  width: min(680px, 94vw);
  background: #1a1a20;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 32px 80px rgba(0,0,0,0.7), 0 0 0 1px rgba(255,255,255,0.05);
  animation: cmdSlideIn .15s cubic-bezier(0.16,1,0.3,1);
}
@keyframes cmdSlideIn { from { transform:translateY(-14px) scale(0.98); opacity:0 } to { transform:none; opacity:1 } }
@media (prefers-reduced-motion: reduce) {
  .cmd-palette { animation: none; }
  .cmd-box { animation: none; }
}
.cmd-search-row {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 18px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.cmd-search-icon { flex-shrink: 0; color: var(--muted); }
.cmd-input {
  flex: 1; background: transparent; border: none; outline: none;
  color: var(--text); font-size: 1.05rem; font-family: var(--font-ar);
  direction: rtl;
}
.cmd-esc-hint {
  font-size: 0.68rem; padding: 2px 7px; border-radius: 5px;
  background: rgba(255,255,255,0.06); color: var(--muted);
  font-family: var(--font-mono); flex-shrink: 0;
}
.cmd-results {
  max-height: 380px; overflow-y: auto;
  padding: 6px 0;
}
.cmd-group-label {
  font-size: 0.68rem; font-weight: 700; letter-spacing: 0.08em;
  color: var(--muted); text-transform: uppercase;
  padding: 8px 18px 4px;
}
.cmd-item {
  display: flex; align-items: center; gap: 12px;
  padding: 9px 18px; cursor: pointer;
  transition: background .12s;
}
.cmd-item:hover, .cmd-active {
  background: rgba(255,255,255,0.05);
}
.cmd-icon {
  font-size: 1.1rem; width: 26px; text-align: center; flex-shrink: 0;
}
.cmd-label { font-size: 0.9rem; flex: 1; }
.cmd-item-body { display: flex; flex-direction: column; gap: 1px; flex: 1; }
.cmd-sub { font-size: 0.73rem; color: var(--muted); }
.cmd-kbd {
  font-size: 0.65rem; padding: 2px 6px; border-radius: 5px;
  background: rgba(255,255,255,0.06); color: var(--muted);
  font-family: var(--font-mono); flex-shrink: 0;
}
.cmd-type-badge {
  font-size: 0.65rem; padding: 2px 8px; border-radius: 99px;
  background: rgba(255,255,255,0.07); color: var(--muted);
  flex-shrink: 0;
}
.cmd-empty {
  padding: 24px 18px; text-align: center;
  color: var(--muted); font-size: 0.9rem;
}
.cmd-footer {
  display: flex; gap: 16px; padding: 8px 18px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.cmd-hint { display: flex; align-items: center; gap: 5px; font-size: 0.72rem; color: var(--muted); }
.cmd-hint kbd { font-size: 0.65rem; padding: 1px 5px; border-radius: 4px; background: rgba(255,255,255,0.07); font-family: var(--font-mono); }

/* ─── BULK SELECT ─────────────────────────────────────────── */
.bulk-bar {
  position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%);
  z-index: 800; display: flex; align-items: center; gap: 12px;
  background: #0F0F16; border: 1px solid rgba(255,255,255,0.12);
  border-radius: 50px; padding: 10px 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.6);
  animation: slideUpIn .2s cubic-bezier(0.16,1,0.3,1);
}
@keyframes slideUpIn { from { transform: translateX(-50%) translateY(20px); opacity:0 } to { transform: translateX(-50%) translateY(0); opacity:1 } }
.bulk-close-btn {
  background: transparent; border: none; color: var(--muted);
  cursor: pointer; font-size: 0.85rem; padding: 2px 4px;
  border-radius: 50%; transition: color .15s;
}
.bulk-close-btn:hover { color: var(--text); }
.bulk-count { font-size: 0.82rem; color: var(--text); white-space: nowrap; font-weight: 600; }
.bulk-actions { display: flex; gap: 8px; }
.bulk-act-btn {
  background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.1);
  color: var(--text); border-radius: 50px; padding: 5px 14px;
  font-size: 0.8rem; cursor: pointer; transition: all .15s;
  font-family: var(--font-ar);
}
.bulk-act-btn:hover:not(:disabled) { background: rgba(255,255,255,0.15); }
.bulk-act-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.bulk-act-danger { color: #f87171 !important; border-color: rgba(248,113,113,0.25) !important; }
.bulk-act-danger:hover:not(:disabled) { background: rgba(248,113,113,0.12) !important; }
.card.bulk-selectable { cursor: crosshair !important; }
.card.card-selected {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 2px var(--accent), 0 4px 24px rgba(0,0,0,0.3) !important;
  background: rgba(34,211,117,0.06) !important;
}
.card.card-selected::before {
  content: '✓'; position: absolute; top: 8px; left: 10px;
  width: 20px; height: 20px; background: var(--accent);
  border-radius: 50%; font-size: 0.7rem; color: #000;
  display: flex; align-items: center; justify-content: center;
  font-weight: 800; line-height: 1;
}
/* duplicate `.card { position:relative }` removed — already declared at base rule */

/* ─── AUTO-LOCK SETTINGS ──────────────────────────────────── */
.autolock-row {
  display: flex; gap: 6px; flex-wrap: wrap;
  padding: 8px 16px 12px;
}
.autolock-opt {
  background: rgba(255,255,255,0.06); border: 1px solid rgba(255,255,255,0.1);
  color: var(--muted); border-radius: 50px; padding: 4px 14px;
  font-size: 0.78rem; cursor: pointer; transition: all .15s;
  font-family: var(--font-ar);
}
.autolock-opt:hover { background: rgba(255,255,255,0.1); color: var(--text); }
.autolock-opt.active {
  background: rgba(34,211,117,0.15); border-color: var(--accent);
  color: var(--accent); font-weight: 600;
}

/* ─── PHANTOM "ADD" CARD ─────────────────────────────────── */
.card-phantom {
  background: transparent !important;
  border: 2px dashed rgba(255,255,255,0.08) !important;
  box-shadow: none !important;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: border-color .2s, background .2s;
}
.card-phantom:hover {
  border-color: rgba(255,255,255,0.2) !important;
  background: rgba(255,255,255,0.03) !important;
}
.phantom-inner {
  display: flex; flex-direction: column; align-items: center; gap: 8px;
  color: rgba(255,255,255,0.25);
}
.phantom-inner svg { opacity: 0.5; }
.phantom-inner span { font-size: 0.78rem; }
.card-phantom:hover .phantom-inner { color: rgba(255,255,255,0.4); }

/* ─── STATISTICS MODAL ───────────────────────────────────── */
.stats-modal-box { max-width: 500px; max-height: 88vh; overflow-y: auto; }
.stats-summary-grid {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px;
  padding: 16px 18px 12px;
}
.stats-summary-card {
  background: rgba(255,255,255,0.04); border-radius: 12px;
  padding: 12px 10px; text-align: center;
  border: 1px solid rgba(255,255,255,0.06);
}
.stats-summary-card.danger { border-color: rgba(239,68,68,0.3); background: rgba(239,68,68,0.07); }
.stats-big-num { font-size: 1.7rem; font-weight: 800; color: var(--text); line-height: 1; margin-bottom: 4px; }
.stats-big-label { font-size: 0.68rem; color: var(--muted); }
.stats-section-title {
  font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--muted);
  padding: 10px 18px 6px;
}
.stats-types-list { padding: 0 18px 8px; display: flex; flex-direction: column; gap: 7px; }
.stats-type-row { display: flex; align-items: center; gap: 8px; }
.stats-type-icon { font-size: 1rem; width: 22px; text-align: center; flex-shrink: 0; }
.stats-type-body { flex: 1; }
.stats-type-top { display: flex; justify-content: space-between; align-items: center; margin-bottom: 3px; }
.stats-type-label { font-size: 0.82rem; }
.stats-type-count { font-size: 0.75rem; color: var(--muted); font-family: var(--font-mono); }
.stats-type-bar-bg { height: 4px; background: rgba(255,255,255,0.06); border-radius: 99px; }
.stats-type-bar { height: 100%; background: rgb(var(--card-color, 255,255,255)); border-radius: 99px; transition: width .4s ease; }
.stats-reminders-row { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 18px 12px; }
.stats-rem-chip { font-size: 0.78rem; padding: 4px 12px; border-radius: 99px; border: 1px solid; }
.stats-rem-chip.danger { background: rgba(239,68,68,0.1); border-color: rgba(239,68,68,0.3); color: #f87171; }
.stats-rem-chip.warn   { background: rgba(245,158,11,0.1); border-color: rgba(245,158,11,0.3); color: #fbbf24; }
.stats-rem-chip.success{ background: rgba(16,185,129,0.1); border-color: rgba(16,185,129,0.3); color: #34d399; }
.stats-recent-list { padding: 0 18px 8px; display: flex; flex-direction: column; gap: 5px; }
.stats-recent-row { display: flex; align-items: center; gap: 8px; font-size: 0.8rem; }
.stats-recent-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.stats-recent-type { font-size: 0.68rem; color: var(--muted); white-space: nowrap; }
.stats-recent-time { font-size: 0.68rem; color: var(--muted); white-space: nowrap; }
.stats-footer-note { font-size: 0.7rem; color: var(--muted); text-align: center; padding: 10px 18px 14px; }

/* ─── INLINE TITLE EDIT ──────────────────────────────────────── */
.inline-title-input {
  background: rgba(255,255,255,0.06);
  border: 1px solid var(--accent);
  border-radius: 6px;
  padding: 2px 8px;
  font-family: var(--font-ar);
  font-size: inherit;
  font-weight: 700;
  color: var(--text);
  width: 100%;
  outline: none;
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb,34,211,117),0.15);
}

/* ─── SETTINGS TAGS ──────────────────────────────────────────── */
.settings-tags-list { padding: 0 12px 8px; display: flex; flex-direction: column; gap: 4px; }
.settings-tag-row {
  display: flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  padding: 5px 10px;
}
.settings-tag-name { flex: 1; font-size: 0.82rem; color: var(--accent); font-family: var(--font-ar); }
.settings-tag-count { font-size: 0.7rem; color: var(--muted); font-family: var(--font-mono); min-width: 18px; text-align: center; }
.settings-tag-filter, .settings-tag-del {
  background: none; border: none; cursor: pointer; padding: 2px 5px;
  font-size: 0.78rem; border-radius: 5px; transition: background .15s;
}
.settings-tag-filter:hover { background: rgba(255,255,255,0.08); }
.settings-tag-del { color: var(--muted); }
.settings-tag-del:hover { background: rgba(239,68,68,0.12); color: #f87171; }

/* Untagged-cards row — pinned at top, button-style, opens filtered view */
.settings-untagged-row {
  width: 100%;
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.10), rgba(245, 158, 11, 0.04));
  border: 1px solid rgba(245, 158, 11, 0.32);
  cursor: pointer;
  font-family: var(--font-ar);
  text-align: start;
  margin-bottom: 8px;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
}
.settings-untagged-row:hover {
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.18), rgba(245, 158, 11, 0.08));
  border-color: rgba(245, 158, 11, 0.55);
  transform: translateY(-1px);
}
.settings-untagged-row:active { transform: scale(0.98); }
.settings-untagged-row .settings-tag-name {
  color: rgba(252, 211, 77, 0.95);
  font-weight: 700;
}
.settings-untagged-icon { font-size: 1rem; line-height: 1; }
.settings-untagged-count {
  background: rgba(245, 158, 11, 0.18);
  border: 1px solid rgba(245, 158, 11, 0.4);
  border-radius: 999px;
  padding: 2px 9px;
  color: #fde68a;
  font-weight: 700;
  min-width: 28px;
}
.settings-untagged-row .settings-tag-filter {
  color: rgba(252, 211, 77, 0.7);
  font-family: var(--font-mono);
  pointer-events: none;
}

/* ─── SIDEBAR TAG CLOUD ──────────────────────────────────────── */
.sidebar-tags-section {
  padding: 10px 14px 8px;
  border-top: 1px solid rgba(255,255,255,0.05);
  margin-top: 4px;
  width: 100%;
}
/* Hide tags when sidebar is collapsed */
.sidebar:not(.expanded) .sidebar-tags-section { display: none; }

.sidebar-tags-label {
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  display: block;
  margin-bottom: 8px;
  font-weight: 700;
}
.sidebar-tags-cloud {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}
.sidebar-tag-chip {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 99px;
  padding: 3px 10px;
  font-size: 0.72rem;
  color: var(--muted);
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
  white-space: nowrap;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sidebar-tag-chip:hover {
  background: rgba(255,255,255,0.1);
  border-color: var(--accent);
  color: var(--accent);
}

/* ─── PAGE BREADCRUMBS ───────────────────────────────────── */
.breadcrumb-root {
  color: var(--muted);
  font-size: 0.85rem;
  font-weight: 400;
  cursor: pointer;
  transition: color .2s;
}
.breadcrumb-root:hover { color: var(--accent); }
.breadcrumb-sep {
  color: var(--muted);
  font-size: 0.75rem;
  margin: 0 6px;
  opacity: 0.5;
}
.breadcrumb-current {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
}
.page-header {
  position: relative;
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 16px 24px 16px 130px; /* reserve space for the absolute back-btn at left:16px */
  border-bottom: 1px solid rgba(255,255,255,0.06);
  background: var(--bg-card);
}
/* margin-right:auto pushes the actions area to the LEFT side of the header in RTL flex layout */
.page-header-actions { margin-inline-start: auto; display: flex; align-items: center; gap: 8px; }
.page-search-input {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  padding: 5px 12px;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  color: var(--text);
  outline: none;
  width: 160px;
  transition: border-color .2s, width .3s;
  direction: rtl;
}
.page-search-input::placeholder { color: var(--muted); }
.page-search-input:focus { border-color: var(--accent); width: 220px; }
.page-cards-count {
  font-size: 0.75rem;
  color: var(--muted);
  background: rgba(255,255,255,0.06);
  padding: 3px 10px;
  border-radius: 99px;
}
/* ─── ARCHIVE VIEW ──────────────────────────────────────── */
.card.card-archived {
  opacity: 0.9;
  border-inline-start: 2px solid rgba(148,163,184,0.3);
}
.card.card-archived:hover { opacity: 1; }
.dash-grid .card.card-archived,
#page-grid .card.card-archived {
  display: flex !important;
  flex-direction: column !important;
  min-height: 320px !important;
  height: 320px !important;
  overflow: hidden !important;
}
.archive-card-preview {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.archive-card-line,
.archive-card-empty {
  display: block;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(255,255,255,0.035);
  border: 1px solid rgba(255,255,255,0.06);
  color: rgba(225,232,243,0.72);
  line-height: 1.6;
}
.archive-card-line.primary {
  color: rgba(245,247,251,0.92);
  font-weight: 700;
}
.archive-card-empty {
  color: var(--muted);
  text-align: center;
}
.archive-card-chip {
  background: rgba(148,163,184,0.12) !important;
  border-color: rgba(148,163,184,0.22) !important;
  color: #cbd5e1 !important;
}
.card-restore-btn {
  background: rgba(16,185,129,0.12);
  color: #34d399;
  border: 1px solid rgba(16,185,129,0.25);
  border-radius: 6px;
  padding: 3px 10px;
  font-size: 0.73rem;
  cursor: pointer;
  transition: background .2s;
  white-space: nowrap;
}
.card-restore-btn:hover { background: rgba(16,185,129,0.25); }
.card-archive-btn {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  padding: 3px 5px;
  font-size: 0.8rem;
  border-radius: 5px;
  transition: color .2s, background .2s;
  opacity: 0;
}
.card:hover .card-archive-btn { opacity: 1; }
.card-archive-btn:hover { background: rgba(245,158,11,0.12); color: #fbbf24; }
.sidebar-nav-archive { margin-top: auto; }

/* ─── CLOUD SYNC DOT ─────────────────────────────────────── */
.cloud-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  display: none !important;
  margin: 0 6px;
  flex-shrink: 0;
  transition: background 0.4s;
  background: var(--muted);
}
.cloud-dot.syncing {
  background: #3b82f6;
  animation: cloudPulse 0.9s ease-in-out infinite;
}
.cloud-dot.synced  { background: #10b981; }
.cloud-dot.error   { background: var(--danger); }
@keyframes cloudPulse {
  0%,100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.4; transform: scale(0.7); }
}
@media (prefers-reduced-motion: reduce) {
  .cloud-dot.syncing { animation: none; opacity: 0.6; }
}

/* ─── KEYBOARD FOCUS NAVIGATION ─────────────────────────────── */
.card.kb-focus {
  outline: 2.5px solid var(--accent2);
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(139,92,246,0.18), 0 8px 28px rgba(0,0,0,0.5);
}

/* ─── ONLINE / OFFLINE INDICATOR ────────────────────────────── */
body.is-offline::after {
  content: '⚡ بدون إنترنت';
  position: fixed;
  bottom: 16px;
  left: 50%;
  transform: translateX(-50%);
  background: #f59e0b;
  color: #000;
  font-size: 0.75rem;
  font-weight: 700;
  padding: 5px 14px;
  border-radius: 20px;
  z-index: 9999;
  pointer-events: none;
}

/* ─── CARD HOVER PREVIEW ─────────────────────────────────────── */
.card-hover-preview {
  display: none;
  position: absolute;
  bottom: calc(100% + 8px);
  right: 0; left: 0;
  background: #1e2028;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 12px;
  padding: 12px 14px;
  font-size: 0.78rem;
  color: var(--muted);
  line-height: 1.6;
  z-index: 50;
  max-height: 100px;
  overflow: hidden;
  pointer-events: none;
  white-space: pre-wrap;
  word-break: break-word;
  box-shadow: 0 8px 24px rgba(0,0,0,0.55);
  -webkit-mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
  mask-image: linear-gradient(to bottom, black 60%, transparent 100%);
}
.card:hover .card-hover-preview { display: block; animation: fadeUp .15s ease; }

/* ─── STAT MODAL CHARTS ──────────────────────────────────────── */
.stat-summary-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.stat-box { background: rgba(255,255,255,0.03); border: 1px solid var(--border); border-radius: 12px; padding: 14px; text-align: center; }
.stat-box-value { font-size: 1.8rem; font-weight: 800; color: var(--accent); line-height: 1; }
.stat-box-label { font-size: 0.72rem; color: var(--muted); margin-top: 4px; }
.stat-box.danger .stat-box-value { color: var(--danger); }
.stat-box.warn  .stat-box-value  { color: #f59e0b; }
.stat-type-row { display: flex; align-items: center; gap: 8px; margin-bottom: 7px; }
.stat-type-name { font-size: 0.78rem; color: var(--text); min-width: 90px; text-align: right; }
.stat-bar-track { flex: 1; height: 6px; background: rgba(255,255,255,0.06); border-radius: 3px; overflow: hidden; }
.stat-bar-fill { height: 100%; background: var(--accent); border-radius: 3px; transition: width .6s cubic-bezier(.16,1,.3,1); }
.stat-bar-count { font-size: 0.72rem; color: var(--muted); min-width: 24px; text-align: left; }
.stat-section-title { font-size: 0.7rem; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: 0.07em; margin: 16px 0 8px; }
.stat-section-title-top { margin-top: 14px; }
.stats-title-block { margin-bottom: 14px; }
/* ─── Scroll reveal (cards fade-rise into viewport) ─── */
.card.scroll-reveal-pending {
  opacity: 0;
  transform: translateY(18px) scale(0.98);
  transition: opacity 0.55s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.55s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}
.card.scroll-reveal-pending.scroll-revealed {
  opacity: 1;
  transform: translateY(0) scale(1);
}
/* Respect above-the-fold cards — they already animate via card-animate-in */
.card.card-animate-in.scroll-revealed { transform: none; }
@media (prefers-reduced-motion: reduce) {
  .card.scroll-reveal-pending { opacity: 1; transform: none; transition: none; }
}
/* ─── Pull-to-refresh indicator ─── */
.ptr-indicator {
  position: fixed;
  top: -60px;
  left: 50%;
  transform: translateX(-50%) translateY(0);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 10px 18px;
  background: rgba(20, 18, 30, 0.92);
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(139, 92, 246, 0.25);
  border-radius: 14px;
  color: #fff;
  font-size: 0.78rem;
  font-family: var(--font-ar);
  z-index: 10000;
  opacity: 0;
  pointer-events: none;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
}
.ptr-spinner {
  width: 26px;
  height: 26px;
  color: #a78bfa;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: transform 0.3s ease;
}
.ptr-indicator.ptr-ready .ptr-spinner {
  transform: rotate(180deg);
  color: #22d3ee;
}
.ptr-indicator.ptr-refreshing .ptr-spinner {
  animation: ptrSpin 0.8s linear infinite;
  color: #22d3ee;
}
@keyframes ptrSpin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .ptr-indicator.ptr-refreshing .ptr-spinner { animation: none; opacity: 0.6; }
}
.ptr-label {
  letter-spacing: 0.03em;
  color: var(--muted);
}
.ptr-indicator.ptr-ready .ptr-label { color: #22d3ee; }
@media (hover: hover) and (pointer: fine) {
  .ptr-indicator { display: none !important; }
}
/* ─── Mobile swipe indicators (left=delete, right=edit) ─── */
.swipe-indicator {
  position: absolute;
  top: 0;
  bottom: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  width: 90px;
  color: #fff;
  font-weight: 700;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.18s ease;
  z-index: 0;
}
/* Left = archive (amber/orange — safe), Right = options (blue/indigo) */
.swipe-indicator-delete,
.swipe-indicator-archive {
  left: 0;
  background: linear-gradient(90deg, rgba(245, 158, 11, 0.9), rgba(245, 158, 11, 0.04));
}
.swipe-indicator-edit {
  right: 0;
  background: linear-gradient(-90deg, rgba(99, 102, 241, 0.85), rgba(99, 102, 241, 0.04));
}
/* Green variant for type-specific right-swipe (done/count/log/open) */
.swipe-indicator-action {
  right: 0;
  background: linear-gradient(-90deg, rgba(34, 197, 94, 0.88), rgba(34, 197, 94, 0.04));
}
.card.swipe-left-active .swipe-indicator-delete,
.card.swipe-left-active .swipe-indicator-archive { opacity: 1; }
.card.swipe-right-active .swipe-indicator-edit,
.card.swipe-right-active .swipe-indicator-action { opacity: 1; }
.card.swipe-left-active .swipe-indicator-delete .swipe-ind-ico,
.card.swipe-left-active .swipe-indicator-archive .swipe-ind-ico,
.card.swipe-right-active .swipe-indicator-edit .swipe-ind-ico,
.card.swipe-right-active .swipe-indicator-action .swipe-ind-ico {
  animation: swipeIndicatorBounce 0.5s cubic-bezier(0.4, -0.3, 0.3, 1.4);
}
.swipe-ind-ico {
  font-size: 1.8rem;
  line-height: 1;
  filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.4));
}
.swipe-ind-txt {
  font-size: 0.72rem;
  letter-spacing: 0.05em;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
  font-family: var(--font-ar);
}
@keyframes swipeIndicatorBounce {
  0%   { transform: scale(1); }
  50%  { transform: scale(1.3) rotate(-8deg); }
  100% { transform: scale(1.1); }
}
@media (prefers-reduced-motion: reduce) {
  .card.swipe-left-active .swipe-indicator-delete .swipe-ind-ico,
  .card.swipe-right-active .swipe-indicator-edit .swipe-ind-ico,
  .card.swipe-right-active .swipe-indicator-action .swipe-ind-ico { animation: none; }
}
.card .swipe-indicator { display: none; }
@media (max-width: 768px) {
  .card .swipe-indicator { display: flex; }
}
/* ─── Header achievements chip ─── */
.header-achiev-btn {
  position: relative;
}
.header-achiev-icon {
  font-size: 1rem;
  line-height: 1;
  filter: drop-shadow(0 1px 2px rgba(0,0,0,0.3));
}
.header-achiev-count {
  position: absolute;
  top: -4px;
  left: -4px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: #0a0a0a;
  border-radius: 10px;
  font-size: 0.62rem;
  font-weight: 800;
  line-height: 16px;
  text-align: center;
  box-shadow: 0 0 10px rgba(251, 191, 36, 0.4);
  animation: achievCountPulse 2s ease-in-out infinite;
}
.header-achiev-count.hidden { display: none; }
@keyframes achievCountPulse {
  0%, 100% { transform: scale(1); }
  50%      { transform: scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .header-achiev-count { animation: none; }
}
/* ─── Achievement badges grid (in stats modal) ─── */
.stat-achiev-count {
  display: inline-block;
  margin-right: 8px;
  padding: 2px 8px;
  background: rgba(139, 92, 246, 0.15);
  color: #a78bfa;
  border-radius: 12px;
  font-size: 0.68rem;
  font-weight: 700;
  text-transform: none;
  letter-spacing: 0.02em;
  vertical-align: middle;
}
.stat-achievements-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
  gap: 10px;
  margin-bottom: 16px;
}
.stat-achiev-badge {
  position: relative;
  padding: 14px 10px 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--border);
  border-radius: 12px;
  text-align: center;
  overflow: hidden;
  transition: transform 0.2s ease, border-color 0.2s ease;
}
.stat-achiev-badge:hover {
  transform: translateY(-2px);
  border-color: rgba(139, 92, 246, 0.35);
}
.stat-achiev-badge.locked {
  opacity: 0.55;
  filter: grayscale(80%);
}
.stat-achiev-badge.unlocked.stat-achiev-bronze {
  background: linear-gradient(135deg, rgba(180, 83, 9, 0.15), rgba(120, 53, 15, 0.06));
  border-color: rgba(251, 146, 60, 0.3);
}
.stat-achiev-badge.unlocked.stat-achiev-silver {
  background: linear-gradient(135deg, rgba(148, 163, 184, 0.18), rgba(71, 85, 105, 0.07));
  border-color: rgba(203, 213, 225, 0.35);
}
.stat-achiev-badge.unlocked.stat-achiev-gold {
  background: linear-gradient(135deg, rgba(234, 179, 8, 0.2), rgba(161, 98, 7, 0.08));
  border-color: rgba(250, 204, 21, 0.4);
  box-shadow: 0 0 22px rgba(250, 204, 21, 0.12);
}
.stat-achiev-badge.unlocked::before {
  content: '';
  position: absolute;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  background: radial-gradient(circle, rgba(255, 255, 255, 0.08) 0%, transparent 60%);
  animation: achievShine 4s ease-in-out infinite;
  pointer-events: none;
}
@keyframes achievShine {
  0%, 100% { transform: translate(-60%, -60%) rotate(0deg); opacity: 0.5; }
  50%      { transform: translate(-40%, -40%) rotate(180deg); opacity: 1; }
}
.stat-achiev-icon {
  font-size: 2rem;
  line-height: 1;
  margin-bottom: 6px;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.3));
}
.stat-achiev-badge.unlocked .stat-achiev-icon {
  animation: achievPop 0.6s cubic-bezier(0.4, -0.3, 0.3, 1.5);
}
@keyframes achievPop {
  0% { transform: scale(0.2) rotate(-15deg); }
  60% { transform: scale(1.2) rotate(8deg); }
  100% { transform: scale(1) rotate(0deg); }
}
.stat-achiev-title {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 2px;
  font-family: var(--font-ar);
}
.stat-achiev-desc {
  font-size: 0.68rem;
  color: var(--muted);
  line-height: 1.3;
  min-height: 1.75em;
}
.stat-achiev-check {
  position: absolute;
  top: 6px;
  right: 8px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: #22c55e;
  color: #000;
  font-size: 0.7rem;
  font-weight: 900;
  line-height: 18px;
  text-align: center;
  box-shadow: 0 0 10px rgba(34, 197, 94, 0.5);
}
.stat-achiev-bar {
  margin-top: 8px;
  height: 4px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 2px;
  overflow: hidden;
}
.stat-achiev-fill {
  height: 100%;
  background: linear-gradient(90deg, #8b5cf6, #a78bfa);
  border-radius: 2px;
  transition: width 0.8s cubic-bezier(0.16, 1, 0.3, 1);
}
@media (prefers-reduced-motion: reduce) {
  .stat-achiev-badge.unlocked::before,
  .stat-achiev-badge.unlocked .stat-achiev-icon { animation: none; }
}

.stat-tags-cloud { display: flex; flex-wrap: wrap; gap: 6px; }
.stat-tag-chip { background: rgba(255,255,255,0.05); border: 1px solid var(--border); border-radius: 20px; padding: 3px 10px; font-size: 0.75rem; color: var(--muted); }
.stat-tag-chip span { color: var(--accent); font-weight: 700; margin-inline-end: 4px; }
.stat-empty { color: var(--muted); font-size: 0.8rem; }
.stat-empty-subs { color: var(--muted); font-size: 0.8rem; padding: 4px 0; }
.stat-empty-center { color: var(--muted); font-size: 0.82rem; padding: 10px 0; text-align: center; }
.qr-error-msg { padding: 20px; color: var(--muted); font-size: 0.85rem; text-align: center; }
.stat-finance-row { display: flex; justify-content: space-between; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--border); font-size: 0.82rem; }
.stat-finance-row:last-child { border-bottom: none; }
.stat-finance-amount { font-weight: 700; color: var(--accent); }
.stat-week-row { display: flex; align-items: flex-end; gap: 4px; height: 40px; margin-top: 4px; }
.stat-week-bar { flex: 1; background: rgba(var(--accent-rgb), var(--bar-opacity, 0.2)); border-radius: 4px 4px 0 0; min-height: 3px; position: relative; transition: background .2s; }
.stat-week-bar.stat-week-empty { background: rgba(255,255,255,0.05); }
.stat-week-bar:hover { background: var(--accent); }
.stat-week-bar::after { content: attr(data-label); position: absolute; bottom: -16px; left: 50%; transform: translateX(-50%); font-size: 0.6rem; color: var(--muted); white-space: nowrap; }
.stat-week-labels { display: flex; gap: 4px; padding-top: 20px; }
.stat-week-labels span { flex: 1; text-align: center; font-size: 0.62rem; color: var(--muted); }

/* ─── CUSTOM DATE PICKER (CDP) ───────────────────────────────── */
.cdp-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  width: 100%;
}

.cdp-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 7px;
  width: 100%;
  padding: 9px 12px;
  background: var(--input-bg, rgba(255,255,255,0.05));
  border: 1.5px solid var(--border);
  border-radius: 10px;
  color: var(--text);
  font-size: 0.9rem;
  font-family: inherit;
  cursor: pointer;
  transition: border-color .2s, box-shadow .2s;
  text-align: right;
  direction: rtl;
  min-height: 48px;
}
.cdp-trigger:hover {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--accent-rgb, 99,102,241), 0.12);
}
.cdp-trigger svg:first-child { flex-shrink: 0; color: var(--accent); }

.cdp-display {
  flex: 1;
  min-width: 0;
  text-align: right;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.25;
  font-family: var(--font-ar);
  font-size: 0.92rem;
  font-weight: 600;
}
.cdp-placeholder { color: var(--muted); }
.cdp-caret { flex-shrink: 0; color: var(--muted); transition: transform .2s; }

/* popup */
.cdp-popup {
  position: fixed;
  z-index: 10500;
  width: 300px;
  background: #1e2028;
  border: 1.5px solid rgba(255,255,255,0.1);
  border-radius: 18px;
  box-shadow: 0 24px 64px rgba(0,0,0,0.7), 0 0 0 1px rgba(255,255,255,0.06);
  overflow: hidden;
  direction: rtl;
  font-family: inherit;
  backdrop-filter: none;
}
.cdp-popup.hidden { display: none; }

/* header */
.cdp-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 10px 8px;
  background: rgba(255,255,255,0.04);
  border-bottom: 1px solid rgba(255,255,255,0.08);
  gap: 4px;
}
.cdp-nav {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  width: 30px;
  height: 30px;
  border-radius: 8px;
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, color .15s;
  flex-shrink: 0;
}
.cdp-nav:hover { background: rgba(255,255,255,0.08); color: var(--text); }
.cdp-hd-center {
  display: flex;
  align-items: center;
  gap: 4px;
  flex: 1;
  justify-content: center;
}
.cdp-hd-btn {
  background: none;
  border: 1px solid transparent;
  color: var(--text);
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 8px;
  font-size: 0.88rem;
  font-weight: 600;
  font-family: inherit;
  transition: background .15s, border-color .15s;
}
.cdp-hd-btn:hover {
  background: rgba(var(--accent-rgb, 99,102,241), 0.12);
  border-color: rgba(var(--accent-rgb, 99,102,241), 0.3);
  color: var(--accent);
}

/* body */
#cdp-body { padding: 8px 10px; }

/* weekday headers */
.cdp-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  margin-bottom: 4px;
}
.cdp-weekdays span {
  text-align: center;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--muted);
  padding: 3px 0;
}

/* days grid */
.cdp-days-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 1px;
}
.cdp-day {
  aspect-ratio: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.82rem;
  border-radius: 8px;
  cursor: pointer;
  border: none;
  background: none;
  color: var(--text);
  font-family: inherit;
  transition: background .12s, color .12s, transform .1s;
  width: 100%;
}
.cdp-day:hover:not(.cdp-other) {
  background: rgba(var(--accent-rgb, 99,102,241), 0.15);
  color: var(--accent);
  transform: scale(1.08);
}
.cdp-day.cdp-other { color: var(--muted); opacity: 0.45; cursor: default; }
.cdp-day.cdp-today {
  border: 1.5px solid var(--accent);
  color: var(--accent);
  font-weight: 700;
}
.cdp-day.cdp-selected {
  background: var(--accent);
  color: #fff;
  font-weight: 700;
  transform: scale(1.08);
}
.cdp-day.cdp-selected:hover { opacity: 0.9; transform: scale(1.1); }

/* months grid */
.cdp-month-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 4px 0;
}
.cdp-month-cell {
  padding: 9px 4px;
  border-radius: 10px;
  border: 1.5px solid transparent;
  background: rgba(255,255,255,0.05);
  color: var(--text);
  font-size: 0.82rem;
  font-family: inherit;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
  text-align: center;
}
.cdp-month-cell:hover {
  background: rgba(var(--accent-rgb, 99,102,241), 0.12);
  border-color: rgba(var(--accent-rgb, 99,102,241), 0.3);
  color: var(--accent);
}
.cdp-month-cell.cdp-selected {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 600;
}

/* years grid */
.cdp-year-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 4px 0;
}
.cdp-year-cell {
  padding: 9px 4px;
  border-radius: 10px;
  border: 1.5px solid transparent;
  background: rgba(255,255,255,0.05);
  color: var(--text);
  font-size: 0.85rem;
  font-family: inherit;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s;
  text-align: center;
}
.cdp-year-cell:hover {
  background: rgba(var(--accent-rgb, 99,102,241), 0.12);
  border-color: rgba(var(--accent-rgb, 99,102,241), 0.3);
  color: var(--accent);
}
.cdp-year-cell.cdp-selected {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  font-weight: 600;
}

/* time section */
.cdp-time {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding: 10px 14px 6px;
  background: rgba(255,255,255,0.03);
}
.cdp-time.hidden { display: none; }
.cdp-time-label {
  text-align: center;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
  margin-bottom: 8px;
}
.cdp-time-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  direction: ltr;
}
.cdp-time-col {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
}
.cdp-t-arr {
  background: none;
  border: none;
  color: var(--muted);
  cursor: pointer;
  font-size: 1rem;
  width: 32px;
  height: 26px;
  border-radius: 7px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .15s, color .15s;
  font-family: inherit;
}
.cdp-t-val,
.cdp-t-sep {
  direction: ltr;
}
.cdp-t-arr:hover { background: rgba(255,255,255,0.08); color: var(--text); }
.cdp-t-val {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--text);
  min-width: 44px;
  text-align: center;
  background: rgba(255,255,255,0.04);
  border-radius: 8px;
  padding: 4px 6px;
  letter-spacing: 0.04em;
}
.cdp-t-sep {
  font-size: 1.4rem;
  font-weight: 700;
  color: var(--accent);
  margin: 0 2px;
  padding-bottom: 4px;
}

/* footer */
.cdp-footer {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 10px 10px;
  border-top: 1px solid rgba(255,255,255,0.08);
}
.cdp-btn-clear {
  background: none;
  border: 1px solid var(--border);
  color: var(--muted);
  cursor: pointer;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: 0.78rem;
  font-family: inherit;
  transition: background .15s, border-color .15s, color .15s;
}
.cdp-btn-clear:hover { background: rgba(239,68,68,0.08); border-color: var(--danger); color: var(--danger); }
.cdp-btn-today {
  flex: 1;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  color: var(--text);
  cursor: pointer;
  padding: 6px 10px;
  border-radius: 8px;
  font-size: 0.8rem;
  font-family: inherit;
  transition: background .15s;
  text-align: center;
}
.cdp-btn-today:hover { background: rgba(255,255,255,0.1); }
.cdp-btn-confirm {
  background: var(--accent);
  border: none;
  color: #fff;
  cursor: pointer;
  padding: 6px 14px;
  border-radius: 8px;
  font-size: 0.82rem;
  font-weight: 600;
  font-family: inherit;
  transition: opacity .15s, transform .1s;
}
.cdp-btn-confirm:hover { opacity: 0.88; transform: scale(1.03); }

/* ─── SNOOZE / REMINDER MODAL ENHANCEMENTS ─────────────────── */
.reminder-snooze-section {
  margin: 12px 0 4px;
  padding: 12px;
  background: rgba(255,255,255,0.03);
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.07);
}
.snooze-label {
  font-size: 0.78rem;
  color: var(--muted);
  margin-bottom: 8px;
  text-align: center;
}
.snooze-btns-row {
  display: flex;
  gap: 8px;
  justify-content: center;
}
.snooze-btn {
  flex: 1;
  padding: 7px 4px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  color: var(--text);
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.82rem;
  font-family: inherit;
  transition: background .15s, border-color .15s, transform .1s;
}
.snooze-btn:hover {
  background: rgba(var(--accent-rgb), 0.15);
  border-color: var(--accent);
  transform: translateY(-1px);
}
.reminder-detail-recurrence {
  display: inline-block;
  font-size: 0.78rem;
  background: rgba(var(--accent-rgb), 0.12);
  color: var(--accent);
  border-radius: 6px;
  padding: 3px 8px;
  margin-bottom: 8px;
}
.reminder-detail-actions {
  display: flex;
  gap: 8px;
  margin-top: 14px;
}
.reminder-detail-actions .btn-primary {
  flex: 1;
  padding: 9px;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.9rem;
  font-family: inherit;
  font-weight: 600;
  transition: opacity .15s, transform .1s;
}
.reminder-detail-actions .btn-primary:hover { opacity: .88; transform: scale(1.02); }
.reminder-detail-actions .btn-secondary {
  padding: 9px 16px;
  background: rgba(255,255,255,0.06);
  color: var(--text);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.9rem;
  font-family: inherit;
  transition: background .15s;
}
.reminder-detail-actions .btn-secondary:hover { background: rgba(255,255,255,0.1); }

/* ─── RECURRENCE & SNOOZE BADGES ───────────────────────────── */
.recurrence-badge {
  display: inline-block;
  font-size: 0.68rem;
  background: rgba(99,102,241,0.15);
  color: #818cf8;
  border-radius: 4px;
  padding: 1px 5px;
  margin-right: 4px;
}
.snooze-active-badge {
  display: inline-block;
  font-size: 0.68rem;
  background: rgba(251,191,36,0.15);
  color: #fbbf24;
  border-radius: 4px;
  padding: 1px 5px;
  margin-right: 4px;
}

/* ─── CONTEXT MENU ─────────────────────────────────────────── */
.card-context-menu {
  position: fixed;
  z-index: 9999;
  background: #1e2028;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.5), 0 2px 8px rgba(0,0,0,0.3);
  min-width: 170px;
  padding: 4px;
  animation: ctx-in .12s ease;
}
.card-context-menu:not(.hidden) { display: block; }
@keyframes ctx-in {
  from { opacity: 0; transform: scale(0.95) translateY(-4px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}
@keyframes ctx-sheet-in {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .card-context-menu { animation: none; }
}
.card-context-menu.hidden { display: none; }
.ctx-sheet-head { display: none; }
.ctx-sheet-title {
  font-size: 0.82rem;
  font-weight: 800;
  color: rgba(255,255,255,0.72);
}
.ctx-sheet-close {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 11px;
  background: rgba(255,255,255,0.04);
  color: var(--text);
  font-size: 0.92rem;
  cursor: pointer;
}
.ctx-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 9px 12px;
  background: none;
  border: none;
  color: var(--text);
  font-size: 0.86rem;
  font-family: inherit;
  text-align: right;
  cursor: pointer;
  border-radius: 7px;
  transition: background .12s;
}
.ctx-item:hover { background: rgba(255,255,255,0.08); }
.ctx-item.ctx-danger { color: #f87171; }
.ctx-item.ctx-danger:hover { background: rgba(248,113,113,0.12); }
.ctx-separator {
  height: 1px;
  background: rgba(255,255,255,0.08);
  margin: 3px 6px;
}

/* ─── ROUTINE STREAK ────────────────────────────────────────── */
.routine-streak {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  font-size: 0.76rem;
  font-weight: 700;
  color: #f59e0b;
  background: rgba(245,158,11,0.12);
  border-radius: 6px;
  padding: 1px 6px;
}

/* ─── EXPORT DIALOG ─────────────────────────────────────────── */
.export-dialog {
  position: fixed;
  bottom: 80px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9998;
  background: #1e2028;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 14px;
  box-shadow: 0 12px 48px rgba(0,0,0,0.5);
  padding: 14px;
  width: 280px;
  animation: ctx-in .15s ease;
}
.export-dialog-title {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 10px;
  text-align: center;
}
.export-fmt-btn {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
  padding: 10px 12px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  cursor: pointer;
  text-align: right;
  color: var(--text);
  font-family: inherit;
  margin-bottom: 7px;
  transition: background .15s, border-color .15s;
}
.export-fmt-btn:hover { background: rgba(var(--accent-rgb),0.1); border-color: var(--accent); }
.export-fmt-btn-primary {
  background: linear-gradient(135deg, rgba(139,92,246,0.14), rgba(45,212,191,0.08));
  border-color: rgba(139,92,246,0.35);
}
.export-fmt-btn-primary:hover {
  background: linear-gradient(135deg, rgba(139,92,246,0.22), rgba(45,212,191,0.14));
  border-color: rgba(139,92,246,0.55);
  box-shadow: 0 4px 16px rgba(139,92,246,0.2);
}
.export-fmt-btn-primary .export-fmt-icon {
  background: rgba(139,92,246,0.22);
  color: #c4b5fd;
  font-size: 1.1rem;
}
.export-fmt-btn-primary .export-fmt-name { color: #e9e4ff; }
.export-fmt-icon {
  width: 36px;
  height: 36px;
  background: rgba(var(--accent-rgb),0.12);
  border-radius: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--accent);
  flex-shrink: 0;
  font-family: 'IBM Plex Mono', monospace;
}
.export-fmt-name { font-size: 0.88rem; font-weight: 600; }
.export-fmt-desc { font-size: 0.74rem; color: var(--muted); margin-top: 1px; }
.export-fmt-close {
  width: 100%;
  padding: 8px;
  background: none;
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--muted);
  border-radius: 8px;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.82rem;
  margin-top: 2px;
  transition: background .15s;
}
.export-fmt-close:hover { background: rgba(255,255,255,0.06); }


/* ─── ENHANCED STATS ────────────────────────────────────────── */
.stat-prod-wrap {
  background: rgba(255,255,255,0.03);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.07);
  padding: 14px;
  margin-bottom: 14px;
  text-align: center;
}
.stat-prod-score {
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1;
  color: var(--prod-color, var(--accent));
}
.stat-prod-label {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  margin: 4px 0 10px;
}
.stat-prod-bar-track {
  height: 6px;
  background: rgba(255,255,255,0.07);
  border-radius: 4px;
  overflow: hidden;
  margin-top: 10px;
}
.stat-prod-bar-fill {
  height: 100%;
  border-radius: 4px;
  transition: width .6s cubic-bezier(0.4,0,0.2,1);
  background: var(--prod-color, var(--accent));
}
.stat-prod-sub {
  font-size: 0.72rem;
  color: var(--muted);
  margin-top: 6px;
}
.stat-streaks { margin-bottom: 10px; }
.stat-streak-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 7px 4px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  font-size: 0.84rem;
}
.stat-streak-val {
  font-weight: 700;
  color: #f59e0b;
  font-size: 0.82rem;
}

/* ─── ACTIVITY HEATMAP ──────────────────────────────────────── */
.stat-heatmap {
  display: grid;
  grid-template-columns: repeat(15, 1fr);
  gap: 4px;
  margin-bottom: 8px;
}

/* Hour-of-day chart */
.stat-hour-wrap { padding: 8px 0 4px; }
.stat-hour-row {
  display: flex;
  align-items: flex-end;
  gap: 4px;
  height: 80px;
  padding: 4px 0 18px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.stat-hour-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  height: 100%;
  position: relative;
}
.stat-hour-bar {
  width: 80%;
  background: linear-gradient(to top, rgba(167,139,250,0.5), rgba(167,139,250,0.2));
  border-radius: 3px 3px 0 0;
  align-self: flex-end;
  min-height: 4px;
  transition: height 0.6s cubic-bezier(.2,.8,.25,1);
}
.stat-hour-bar.is-peak {
  background: linear-gradient(to top, #a78bfa, #7c3aed);
  box-shadow: 0 0 12px rgba(167,139,250,0.5);
}
.stat-hour-lbl {
  position: absolute;
  bottom: -16px;
  font-size: 0.6rem;
  color: var(--muted);
  font-family: var(--font-mono, monospace);
}
.stat-hour-foot {
  margin-top: 8px;
  font-size: 0.78rem;
  color: var(--muted);
  text-align: center;
}
.stat-hour-foot strong { color: #c4b5fd; font-family: var(--font-mono, monospace); }

/* Day-of-week bars */
.stat-dow-wrap {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 4px 0;
}
.stat-dow-row {
  display: grid;
  grid-template-columns: 70px 1fr 32px;
  align-items: center;
  gap: 10px;
}
.stat-dow-lbl {
  font-size: 0.78rem;
  color: var(--muted);
  font-family: var(--font-ar);
}
.stat-dow-track {
  height: 8px;
  background: rgba(255,255,255,0.05);
  border-radius: 99px;
  overflow: hidden;
}
.stat-dow-fill {
  height: 100%;
  background: linear-gradient(90deg, rgba(45,212,191,0.6), rgba(45,212,191,0.9));
  border-radius: 99px;
  transition: width 0.8s cubic-bezier(.2,.8,.25,1);
}
.stat-dow-row.is-peak .stat-dow-fill {
  background: linear-gradient(90deg, #2dd4bf, #14b8a6);
  box-shadow: 0 0 12px rgba(45,212,191,0.5);
}
.stat-dow-row.is-peak .stat-dow-lbl { color: #5eead4; font-weight: 700; }
.stat-dow-val {
  font-family: var(--font-mono, monospace);
  font-size: 0.8rem;
  color: var(--text);
  text-align: end;
}
.stat-dow-foot {
  margin-top: 8px;
  font-size: 0.78rem;
  color: var(--muted);
  text-align: center;
}
.stat-dow-foot strong { color: #5eead4; }

/* Completion donut */
.stat-donut-wrap {
  display: flex;
  align-items: center;
  gap: 18px;
  padding: 8px 0;
}
.stat-donut-svg { width: 110px; height: 110px; flex-shrink: 0; }
.stat-donut-arc {
  stroke: var(--donut-c, var(--accent));
  transition: stroke-dashoffset 1.2s cubic-bezier(.2,.8,.25,1);
}
.stat-donut-side { display: flex; flex-direction: column; gap: 6px; flex: 1; }
.stat-donut-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.84rem;
  color: var(--text);
}
.stat-donut-row .dot {
  width: 10px; height: 10px; border-radius: 50%;
  flex-shrink: 0;
  background: var(--dot-c, var(--muted));
}
.stat-donut-row span:nth-child(2) { flex: 1; color: var(--muted); font-size: 0.78rem; }
.stat-donut-row strong { font-family: var(--font-mono, monospace); }
.stat-donut-foot {
  margin-top: 6px;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.06);
  font-size: 0.76rem;
  color: var(--muted);
}
.heatmap-cell {
  aspect-ratio: 1;
  border-radius: 3px;
  cursor: default;
  background: var(--hm-cell-bg, rgba(255,255,255,0.04));
}
.stat-heatmap-legend {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 12px;
}
.stat-heatmap-legend > div {
  display: flex;
  align-items: center;
  gap: 3px;
}
.stat-heatmap-legend .heatmap-cell {
  width: 10px;
  height: 10px;
}

/* ─── PRODUCTIVITY SPARKLINE ────────────────────────────────── */
.prod-sparkline-wrap {
  width: 100%;
}
.prod-sparkline-svg {
  width: 100%;
  height: 50px;
  display: block;
}
.prod-sparkline-labels {
  display: flex;
  justify-content: space-between;
  font-size: 0.66rem;
  color: var(--muted);
  margin-top: 2px;
}
.prod-sparkline-empty {
  font-size: 0.75rem;
  color: var(--muted);
  text-align: center;
  padding: 12px 0;
}

/* ─── AGENDA VIEW ────────────────────────────────────────────── */
.agenda-wrap {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding-bottom: 20px;
  grid-column: 1 / -1; /* span full width in grid */
}
.agenda-section {
  background: rgba(255,255,255,0.02);
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.06);
  overflow: hidden;
}
.agenda-section-label {
  padding: 10px 16px 8px;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--muted);
  display: flex;
  align-items: center;
  gap: 8px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  background: rgba(255,255,255,0.02);
}
.agenda-count {
  background: rgba(var(--accent-rgb),0.15);
  color: var(--accent);
  border-radius: 10px;
  padding: 1px 7px;
  font-size: 0.72rem;
}
.agenda-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  cursor: pointer;
  transition: background .15s;
}
.agenda-item:last-child { border-bottom: none; }
.agenda-item:hover { background: rgba(255,255,255,0.04); }
.agenda-item.agenda-done { opacity: 0.5; }
.agenda-icon {
  font-size: 1.4rem;
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.agenda-body {
  flex: 1;
  min-width: 0;
}
.agenda-title {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.agenda-date {
  font-size: 0.74rem;
  color: var(--muted);
  margin-top: 2px;
}
.agenda-sub {
  font-size: 0.72rem;
  color: var(--muted);
  margin-top: 1px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.agenda-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}
.agenda-badge {
  font-size: 0.72rem;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 6px;
  white-space: nowrap;
  background: color-mix(in srgb, var(--badge-c, var(--accent)) 13%, transparent);
  color: var(--badge-c, var(--accent));
  border: 1px solid color-mix(in srgb, var(--badge-c, var(--accent)) 27%, transparent);
}
.agenda-type-chip {
  font-size: 0.66rem;
  color: var(--muted);
  background: rgba(255,255,255,0.05);
  padding: 1px 6px;
  border-radius: 4px;
}

/* ─── SEARCH ARCHIVE TOGGLE ─────────────────────────────────── */
.search-archive-toggle {
  background: none;
  border: none;
  cursor: pointer;
  font-size: 0.78rem;
  padding: 2px 4px;
  border-radius: 6px;
  opacity: 0.4;
  transition: opacity .15s, background .15s;
  flex-shrink: 0;
}
.search-archive-toggle:hover { opacity: 0.8; background: rgba(255,255,255,0.08); }
.search-archive-toggle.active {
  opacity: 1;
  background: rgba(var(--accent-rgb),0.15);
}

/* ─── ARCHIVED CARD IN SEARCH RESULTS ───────────────────────── */
.card.card-archived-result {
  opacity: 0.65;
  border: 1px dashed rgba(255,255,255,0.15) !important;
}
.card.card-archived-result::before {
  content: '📦 مؤرشف';
  position: absolute;
  top: 6px;
  left: 6px;
  font-size: 0.62rem;
  color: var(--muted);
  background: rgba(255,255,255,0.06);
  padding: 1px 5px;
  border-radius: 4px;
}
.card.card-archived-result { position: relative; }

/* ─── AGENDA SIDEBAR BUTTON ─────────────────────────────────── */
.sidebar-nav-agenda {
  border-top: 1px solid rgba(255,255,255,0.06);
  margin-top: 2px;
  padding-top: 4px;
}

/* Agenda mode: single column full-width */
.dash-grid.agenda-mode {
  display: block;
  max-width: 720px;
  margin: 0 auto;
}

/* ─── AUTH LAYER ────────────────────────────────────────────── */

/* Biometric button on login screen */
.biometric-btn {
  display: flex;
  align-items: center;
  gap: 10px;
  background: var(--accent);
  color: var(--bg);
  border: none;
  border-radius: 12px;
  padding: 14px 32px;
  font-size: 1rem;
  font-family: 'Tajawal', sans-serif;
  font-weight: 700;
  cursor: pointer;
  margin: 0 auto 16px;
  transition: transform .15s, opacity .15s;
  box-shadow: 0 4px 20px color-mix(in srgb, var(--accent) 40%, transparent);
}
.biometric-btn:hover { transform: translateY(-2px); opacity: .9; }
.biometric-btn:active { transform: scale(.97); }

/* Divider between biometric and PIN */
.pin-or-divider {
  color: var(--muted);
  font-size: 0.8rem;
  margin: 0 0 14px;
  text-align: center;
  letter-spacing: 1px;
}

/* Passkey registration banner */
.passkey-banner {
  display: flex;
  align-items: center;
  gap: 12px;
  background: color-mix(in srgb, var(--accent) 12%, var(--surface));
  border-bottom: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
  padding: 10px 20px;
  font-size: 0.85rem;
  color: var(--text);
  position: relative;
  z-index: 10;
}
.passkey-banner svg { color: var(--accent); flex-shrink: 0; }
.passkey-banner span { flex: 1; }
.passkey-banner-btn {
  background: var(--accent);
  color: var(--bg);
  border: none;
  border-radius: 8px;
  padding: 6px 16px;
  font-family: 'Tajawal', sans-serif;
  font-weight: 700;
  font-size: 0.82rem;
  cursor: pointer;
  white-space: nowrap;
  transition: opacity .15s;
}
.passkey-banner-btn:hover { opacity: .85; }
.passkey-banner-dismiss {
  background: none;
  border: none;
  color: var(--muted);
  font-size: 0.8rem;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  font-family: 'Tajawal', sans-serif;
  transition: color .15s;
}
.passkey-banner-dismiss:hover { color: var(--text); }

/* Trusted Devices / Passkeys list in settings */
.trusted-devices-list {
  padding: 4px 16px 12px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.trusted-device-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 10px;
  padding: 10px 14px;
}
.trusted-device-item.current-device {
  border-color: color-mix(in srgb, var(--accent) 40%, transparent);
  background: color-mix(in srgb, var(--accent) 6%, transparent);
}
.trusted-device-info {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  min-width: 0;
}
.trusted-device-name {
  font-size: 0.85rem;
  color: var(--text);
  font-weight: 600;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.device-current-badge {
  background: var(--accent);
  color: var(--bg);
  font-size: 0.65rem;
  padding: 1px 6px;
  border-radius: 4px;
  font-weight: 700;
}
.trusted-device-date {
  font-size: 0.75rem;
  color: var(--muted);
}
.trusted-device-revoke {
  background: rgba(239,68,68,0.12);
  color: var(--danger);
  border: 1px solid rgba(239,68,68,0.2);
  border-radius: 7px;
  padding: 5px 12px;
  font-size: 0.75rem;
  font-family: 'Tajawal', sans-serif;
  cursor: pointer;
  white-space: nowrap;
  transition: background .15s;
  flex-shrink: 0;
}
.trusted-device-revoke:hover { background: rgba(239,68,68,0.22); }
.trusted-device-empty,
.trusted-device-loading {
  font-size: 0.78rem;
  color: var(--muted);
  padding: 6px 0;
}
/* ─── END AUTH LAYER ─────────────────────────────────────────── */

/* ─── DEVICE APPROVAL SYSTEM ────────────────────────────────── */

/* Device name input on login screen */
.device-name-input {
  width: 100%;
  background: rgba(255,255,255,0.06);
  border: 1.5px solid rgba(255,255,255,0.12);
  border-radius: 12px;
  padding: 13px 16px;
  color: var(--text);
  font-family: 'Tajawal', sans-serif;
  font-size: 1rem;
  text-align: center;
  outline: none;
  margin-bottom: 12px;
  transition: border-color .2s;
  box-sizing: border-box;
}
.device-name-input:focus {
  border-color: var(--accent);
}
.device-name-input::placeholder { color: var(--muted); }

/* Request Access button */
.request-access-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  width: 100%;
  background: var(--accent);
  color: var(--bg);
  border: none;
  border-radius: 12px;
  padding: 13px 20px;
  font-family: 'Tajawal', sans-serif;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s, opacity .15s;
  box-shadow: 0 4px 20px color-mix(in srgb, var(--accent) 35%, transparent);
  margin-bottom: 14px;
}
.request-access-btn:hover { transform: translateY(-1px); opacity: .9; }
.request-access-btn:active { transform: scale(.97); }

/* PIN fallback link */
.pin-fallback-link {
  background: none;
  border: none;
  color: var(--muted);
  font-size: 0.78rem;
  font-family: 'Tajawal', sans-serif;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  transition: color .15s;
  display: block;
  margin: 0 auto;
  text-align: center;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.pin-fallback-link:hover { color: var(--text); }

/* Waiting for approval screen */
#waiting-approval {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
}
.approval-waiting-icon {
  width: 72px;
  height: 72px;
  border-radius: 50%;
  background: color-mix(in srgb, var(--accent) 12%, transparent);
  border: 2px solid color-mix(in srgb, var(--accent) 30%, transparent);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--accent);
  animation: pulse-ring 2s ease-in-out infinite;
}
@keyframes pulse-ring {
  0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 25%, transparent); }
  50%       { box-shadow: 0 0 0 12px color-mix(in srgb, var(--accent) 0%, transparent); }
}
.approval-waiting-title {
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.approval-waiting-sub {
  font-size: 0.82rem;
  color: var(--muted);
  margin: 0;
  text-align: center;
}
/* Animated dots */
.approval-dots {
  display: flex;
  gap: 6px;
  margin: 4px 0 6px;
}
.approval-dots span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
  animation: dot-bounce 1.2s ease-in-out infinite;
}
.approval-dots span:nth-child(2) { animation-delay: .2s; }
.approval-dots span:nth-child(3) { animation-delay: .4s; }
@keyframes dot-bounce {
  0%, 80%, 100% { transform: scale(.6); opacity: .4; }
  40%           { transform: scale(1);  opacity: 1;   }
}
@media (prefers-reduced-motion: reduce) {
  .approval-waiting-icon { animation: none; }
  .approval-dots span { animation: none; opacity: 0.7; }
}

/* Approval Popup (on trusted device / phone) */
.approval-popup {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(6px);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  animation: fadeInUp .25s ease;
}
.approval-popup.hidden { display: none; }
.approval-popup-inner {
  background: var(--surface);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 20px;
  padding: 32px 28px 24px;
  max-width: 340px;
  width: 90%;
  text-align: center;
  box-shadow: 0 24px 60px rgba(0,0,0,.5);
  animation: scaleIn .25s cubic-bezier(.34,1.56,.64,1);
}
@keyframes scaleIn {
  from { transform: scale(.85); opacity: 0; }
  to   { transform: scale(1);   opacity: 1; }
}
.approval-popup-icon {
  font-size: 2.4rem;
  margin-bottom: 10px;
  animation: swing .6s ease;
}
@keyframes swing {
  0%,100% { transform: rotate(0); }
  25%     { transform: rotate(-15deg); }
  75%     { transform: rotate(10deg); }
}
@media (prefers-reduced-motion: reduce) {
  .approval-popup { animation: none; }
  .approval-popup-inner { animation: none; }
  .approval-popup-icon { animation: none; }
}
.approval-popup-title {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--text);
  margin-bottom: 14px;
}
.approval-popup-device {
  font-size: 1rem;
  font-weight: 700;
  color: var(--accent);
  background: color-mix(in srgb, var(--accent) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent);
  border-radius: 10px;
  padding: 10px 18px;
  margin-bottom: 6px;
}
.approval-popup-time {
  font-size: 0.75rem;
  color: var(--muted);
  margin-bottom: 22px;
}
.approval-popup-actions {
  display: flex;
  gap: 10px;
}
.approval-approve-btn,
.approval-reject-btn {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  border: none;
  border-radius: 12px;
  padding: 13px 16px;
  font-family: 'Tajawal', sans-serif;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  transition: transform .15s, opacity .15s;
}
.approval-approve-btn {
  background: var(--accent);
  color: var(--bg);
  box-shadow: 0 4px 16px color-mix(in srgb, var(--accent) 35%, transparent);
}
.approval-approve-btn:hover { transform: translateY(-1px); opacity: .9; }
.approval-reject-btn {
  background: rgba(239,68,68,0.12);
  color: var(--danger);
  border: 1px solid rgba(239,68,68,0.2);
}
.approval-reject-btn:hover { background: rgba(239,68,68,0.2); }
/* ─── END DEVICE APPROVAL SYSTEM ────────────────────────────── */

/* ─── DOCUMENT VIEW MODAL ───────────────────────────────────── */
.doc-view-box { max-width: 460px; }

.doc-view-header-info {
  display: flex;
  align-items: center;
  gap: 12px;
}
.doc-view-card-icon { font-size: 2rem; line-height: 1; }
.doc-view-count {
  font-size: 0.75rem;
  color: var(--muted);
  margin-top: 2px;
}
.btn-doc-edit {
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  color: var(--text);
  padding: 7px 14px;
  font-size: 0.82rem;
  font-family: 'Tajawal', sans-serif;
  cursor: pointer;
  transition: background .15s;
}
.btn-doc-edit:hover { background: rgba(255,255,255,0.1); }

/* Document list in popup */
.doc-view-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 4px 0;
}
.doc-view-empty { color: var(--muted); font-size: 0.85rem; text-align: center; padding: 24px 0; }

.doc-view-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 12px;
  border: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.03);
  transition: background .15s;
}
.doc-view-item-safe     { border-inline-start: 3px solid #22c55e; }
.doc-view-item-caution  { border-inline-start: 3px solid #eab308; }
.doc-view-item-warning  { border-inline-start: 3px solid #f97316; }
.doc-view-item-critical { border-inline-start: 3px solid var(--danger); background: rgba(239,68,68,0.04); }
.doc-view-item-expired  { border-inline-start: 3px solid var(--danger); background: rgba(239,68,68,0.08); }

.doc-view-item-info { flex: 1; min-width: 0; }
.doc-view-item-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 4px;
}
.doc-view-item-date {
  font-size: 0.75rem;
  color: var(--muted);
}

/* Countdown bubble */
.doc-view-countdown {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 54px;
  padding: 8px 10px;
  border-radius: 10px;
  flex-shrink: 0;
}
.doc-view-countdown.safe     { background: rgba(34,197,94,0.1);  color: #22c55e; }
.doc-view-countdown.caution  { background: rgba(234,179,8,0.1);  color: #eab308; }
.doc-view-countdown.warning  { background: rgba(249,115,22,0.1); color: #f97316; }
.doc-view-countdown.critical { background: rgba(239,68,68,0.12); color: var(--danger); }
.doc-view-countdown.expired  { background: var(--danger); color: #fff; }
.doc-cd-num { font-size: 1.3rem; font-weight: 800; line-height: 1; font-family: 'IBM Plex Mono', monospace; }
.doc-cd-lbl { font-size: 0.65rem; font-weight: 600; opacity: .8; }
.doc-view-no-expiry { font-size: 0.75rem; color: var(--muted); }

/* ─── DOCUMENT CARD PREVIEW (dashboard) ─────────────────────── */
.docs-preview-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
  width: 100%;
  border-top: 1px solid rgba(255,255,255,0.05);
  padding-top: 8px;
  margin-top: 4px;
}
.doc-summary-badge {
  font-size: 0.7rem;
  font-weight: 800;
  padding: 3px 10px;
  border-radius: 20px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 2px;
  align-self: flex-start;
}
.doc-summary-badge.expired  { background: rgba(239,68,68,0.15); color: var(--danger); border: 1px solid rgba(239,68,68,0.25); }
.doc-summary-badge.critical { background: rgba(249,115,22,0.12); color: #f97316; border: 1px solid rgba(249,115,22,0.2); }

.doc-item-preview {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  font-size: 0.8rem;
  padding: 5px 6px;
  border-radius: 7px;
}
.doc-item-preview:last-child { border-bottom: none; }
.doc-item-critical { background: rgba(239,68,68,0.06); }
.doc-item-expired  { background: rgba(239,68,68,0.1); }

.doc-name { font-weight: 600; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; }
.doc-item-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  flex-shrink: 0;
}
.doc-urgency { font-size: 0.68rem; font-weight: 800; padding: 2px 7px; border-radius: 5px; white-space: nowrap; }
.doc-urgency.safe     { background: rgba(34,197,94,0.1);  color: #22c55e; }
.doc-urgency.caution  { background: rgba(234,179,8,0.1);  color: #eab308; }
.doc-urgency.warning  { background: rgba(249,115,22,0.1); color: #f97316; }
.doc-urgency.critical { background: rgba(239,68,68,0.12); color: var(--danger); }
.doc-urgency.expired  { background: var(--danger); color: white; }
.doc-expiry-date { font-size: 0.65rem; color: var(--muted); white-space: nowrap; }

/* ─── SUBSCRIPTION VIEW MODAL ───────────────────────────────── */
.sub-view-box { max-width: 480px; }

.sub-view-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 0;
}

.sub-view-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 13px 16px;
  border-radius: 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-inline-start: 3px solid rgba(255,255,255,0.12);
}
.sub-view-ok     { border-right-color: var(--accent); }
.sub-view-soon30 { border-right-color: #eab308; }
.sub-view-soon7  { border-right-color: #f97316; }
.sub-view-soon3  { border-right-color: var(--danger); background: rgba(239,68,68,0.05); }
.sub-view-overdue{ border-right-color: var(--danger); background: rgba(239,68,68,0.08); }

.sub-view-item-info { flex: 1; min-width: 0; }
.sub-view-item-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 5px;
}
.sub-view-item-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.sub-view-cycle {
  font-size: 0.72rem;
  background: rgba(255,255,255,0.07);
  border-radius: 5px;
  padding: 2px 8px;
  color: var(--muted);
}
.sub-view-date {
  font-size: 0.72rem;
  color: var(--muted);
}

.sub-view-item-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 5px;
  flex-shrink: 0;
}
.sub-view-amount {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--accent);
  font-family: 'IBM Plex Mono', monospace;
}
.sub-view-currency { font-size: 0.75rem; font-weight: 600; opacity: .7; }
.sub-urgency-badge {
  font-size: 0.68rem;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 5px;
  white-space: nowrap;
}
.sub-urgency-badge.ok      { background: rgba(34,197,94,0.1);  color: #22c55e; }
.sub-urgency-badge.soon30  { background: rgba(234,179,8,0.1);  color: #eab308; }
.sub-urgency-badge.soon7   { background: rgba(249,115,22,0.12);color: #f97316; }
.sub-urgency-badge.soon3   { background: rgba(239,68,68,0.12); color: var(--danger); }
.sub-urgency-badge.overdue { background: var(--danger); color: white; }

/* Totals section */
.sub-view-totals {
  margin-top: 14px;
  padding: 14px 16px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
}
.sub-totals-title {
  font-size: 0.75rem;
  color: var(--muted);
  font-weight: 700;
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: .5px;
}
.sub-total-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.85rem;
  color: var(--text);
  padding: 4px 0;
}
.sub-total-row b { color: var(--accent); font-family: 'IBM Plex Mono', monospace; }
/* ─── END SUBSCRIPTION VIEW MODAL ───────────────────────────── */

/* ─── HIDDEN FROM ALL ───────────────────────────────────────── */
/* Small eye-slash badge on cards hidden from "all" view */
.card-hidden-all {
  position: relative;
}
.card-hidden-all::after {
  content: '👁';
  position: absolute;
  top: 7px;
  left: 8px;
  font-size: 0.65rem;
  opacity: 0.35;
  filter: grayscale(1);
  pointer-events: none;
  line-height: 1;
}
.card-hidden-all:hover::after {
  opacity: 0.65;
}
/* ─────────────────────────────────────────────────────────────── */

@media (max-width: 768px) {
  body.mobile-sidebar-open {
    overflow: hidden;
  }

  .dash-header {
    height: auto !important;
    min-height: 0 !important;
    padding: calc(env(safe-area-inset-top, 0px) + 10px) 12px 12px !important;
    gap: 10px;
    background: rgba(9,9,14,0.94) !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
    box-shadow: 0 12px 28px rgba(0,0,0,0.32);
  }

  .dash-header-right {
    gap: 10px !important;
    flex: 1;
    min-width: 0;
  }

  .dash-header-left {
    gap: 8px !important;
    flex-shrink: 0;
  }

  .header-section-label,
  .header-section-label + .header-divider,
  .header-date,
  .header-time-pill,
  .header-time-pill + div,
  #edit-order-btn,
  #quick-add-btn,
  .dash-header-left button[onclick="openCmdPalette()"] {
    display: none !important;
  }

  .mobile-menu-btn {
    display: flex !important;
    width: 42px !important;
    height: 42px !important;
    border-radius: 16px !important;
    background: rgba(255,255,255,0.06) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    color: var(--text) !important;
  }

  .dash-logo {
    font-size: 1.32rem !important;
    letter-spacing: 1.2px !important;
  }

  .header-search-wrap {
    flex: 1;
    min-width: 0;
    height: 42px !important;
    border-radius: 16px !important;
    padding: 0 14px !important;
    gap: 8px !important;
    background: rgba(255,255,255,0.05) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
  }

  .header-icon-btn,
  .header-alert-badge {
    width: 40px !important;
    height: 40px !important;
    border-radius: 14px !important;
    padding: 0 !important;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
  }

  .header-icon-btn::before {
    display: none !important;
  }

  #settings-btn {
    margin-right: 0 !important;
  }

  .sidebar {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    width: min(88vw, 320px) !important;
    height: 100dvh !important;
    padding: calc(env(safe-area-inset-top, 0px) + 14px) 12px calc(env(safe-area-inset-bottom, 0px) + 18px) !important;
    background: linear-gradient(180deg, rgba(12,12,18,0.99), rgba(9,9,14,0.98)) !important;
    border-left: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: -28px 0 70px rgba(0,0,0,0.48) !important;
    transform: translateX(108%) !important;
    opacity: 0;
    pointer-events: none;
    overflow-y: auto;
    z-index: 220 !important;
  }

  .sidebar.mobile-open {
    transform: translateX(0) !important;
    opacity: 1;
    pointer-events: auto;
  }

  .sidebar.expanded {
    width: min(88vw, 320px) !important;
  }

  .mobile-sidebar-head {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
    padding: 0 4px 14px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
  }

  .mobile-sidebar-close {
    width: 42px;
    height: 42px;
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 14px;
    background: rgba(255,255,255,0.05);
    color: var(--text);
    display: flex;
    align-items: center;
    justify-content: center;
  }

  .sidebar-top {
    display: none !important;
  }

  .sidebar-filters,
  .sidebar-bottom {
    width: 100%;
    align-items: stretch;
    padding: 0 !important;
    gap: 8px !important;
  }

  .sidebar-stats {
    display: flex !important;
    width: 100%;
    flex-direction: column;
    gap: 8px;
    margin: 14px 0 12px;
    padding: 14px;
    border-radius: 18px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
  }

  .sidebar-nav-btn,
  .sidebar-icon-btn {
    width: 100% !important;
    min-height: 50px;
    justify-content: flex-start !important;
    gap: 12px !important;
    padding: 0 14px !important;
    border-radius: 14px !important;
  }

  .sidebar-label {
    display: block !important;
    font-size: 0.92rem !important;
    font-weight: 700;
  }

  .sidebar .sidebar-count {
    margin-inline-start: auto;
  }

  .sidebar .sidebar-icon-btn::before,
  .sidebar .sidebar-nav-btn::before {
    display: none !important;
  }

  .sidebar-overlay {
    z-index: 210 !important;
    background: rgba(3,3,5,0.72) !important;
    backdrop-filter: blur(6px) !important;
  }

  .dash-body {
    display: block !important;
  }

  .main-content {
    padding: 14px 12px calc(104px + env(safe-area-inset-bottom, 0px)) !important;
    margin-right: 0 !important;
  }

  .cards-toolbar {
    position: sticky !important;
    top: 0;
    z-index: 40;
    margin: 0 0 14px;
    padding: 0 0 8px;
    display: flex !important;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    background: linear-gradient(180deg, rgba(7,7,11,0.98), rgba(7,7,11,0.82) 70%, rgba(7,7,11,0));
    backdrop-filter: blur(16px);
  }

  .cards-toolbar-left {
    gap: 8px !important;
    overflow-x: auto;
    padding: 2px 0 4px;
    scrollbar-width: none;
  }

  .cards-toolbar-left::-webkit-scrollbar {
    display: none;
  }

  .toolbar-btn,
  .sort-select {
    flex: 0 0 auto;
    height: 40px !important;
    padding: 0 12px !important;
    border-radius: 14px !important;
    border: 1px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.05);
    color: var(--text);
  }

  .toolbar-btn span {
    display: inline !important;
  }

  .dash-grid {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }

  .card,
  .card-compact,
  .card-wide,
  .card-tall,
  .card-auto-height {
    grid-column: span 1 !important;
    grid-row: auto !important;
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr);
    grid-auto-rows: min-content;
    align-items: start;
    gap: 8px 12px !important;
    padding: 16px !important;
    border-radius: 22px !important;
    background: linear-gradient(180deg, rgba(13,13,18,0.96), rgba(10,10,15,0.92)) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    box-shadow: 0 14px 28px rgba(0,0,0,0.34), 0 0 0 1px rgba(255,255,255,0.02) inset !important;
    transform: none !important;
  }

  .card-icon,
  .card-compact .card-icon,
  .card-tall .card-icon {
    grid-column: 1;
    grid-row: 1 / span 3;
    width: 44px !important;
    height: 44px !important;
    margin: 0 !important;
    border-radius: 16px !important;
    font-size: 1.35rem !important;
    align-self: start;
  }

  .card-type-badge {
    position: static !important;
    grid-column: 2;
    grid-row: 1;
    justify-self: start;
    font-size: 0.66rem !important;
    opacity: 0.92;
  }

  .card-title,
  .card-compact .card-title,
  .card-tall .card-title {
    grid-column: 2;
    grid-row: 2;
    font-size: 1.02rem !important;
    line-height: 1.3 !important;
    margin: -2px 0 0 !important;
  }

  .card-meta,
  .card-compact .card-meta,
  .card-tall .card-meta {
    grid-column: 2;
    grid-row: 3;
    flex: none !important;
    padding: 0 !important;
    font-size: 0.82rem !important;
    line-height: 1.6 !important;
    max-height: none !important;
    overflow: visible !important;
  }

  .card-actions,
  .card-compact .card-actions {
    position: static !important;
    grid-column: 1 / -1;
    opacity: 1 !important;
    transform: none !important;
    pointer-events: auto !important;
    justify-content: flex-end !important;
    flex-wrap: nowrap;
    gap: 6px;
    width: 100%;
    margin-top: 6px;
    padding: 8px 0 0 !important;
    background: none !important;
    border-top: 1px solid rgba(255,255,255,0.04);
  }

  .card-compact .card-actions button {
    opacity: 1 !important;
  }

  .card-actions button,
  .card-delete,
  .card-edit,
  .card-reset,
  .card-copy,
  .card-more-btn {
    min-width: 36px;
    min-height: 36px;
    padding: 0 10px !important;
    border-radius: 10px !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem !important;
    border: 1px solid rgba(255,255,255,0.06);
    background: rgba(255,255,255,0.04);
  }

  .card-delete {
    color: var(--danger) !important;
    background: rgba(239,68,68,0.1) !important;
    border-color: rgba(239,68,68,0.2) !important;
  }

  .card-more-btn {
    background: rgba(139,92,246,0.08) !important;
    border-color: rgba(139,92,246,0.15) !important;
    color: var(--accent) !important;
    font-size: 1.1rem !important;
  }

  .card-hover-preview {
    display: none !important;
  }

  .card-wide .subs-preview-list,
  .card-wide .card-checklist-preview {
    grid-template-columns: 1fr !important;
  }

  .tracker-value-big,
  .counter-number {
    font-size: 2.4rem !important;
  }

  .mobile-bottom-nav {
    display: flex !important;
    position: fixed !important;
    left: 12px !important;
    right: 12px !important;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 10px) !important;
    height: 72px !important;
    padding: 8px !important;
    border-radius: 24px !important;
    background: rgba(12,12,18,0.92) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: 0 20px 50px rgba(0,0,0,0.45) !important;
    gap: 4px !important;
    z-index: 180 !important;
    transition: transform 0.24s ease, opacity 0.24s ease !important;
  }

  .mob-nav-btn {
    gap: 4px !important;
    padding: 8px 2px !important;
    border-radius: 18px !important;
    color: rgba(255,255,255,0.42) !important;
    font-size: 0.63rem !important;
  }

  .mob-nav-btn svg {
    width: 21px !important;
    height: 21px !important;
  }

  .mob-nav-btn.active {
    color: #f3efff !important;
    background: linear-gradient(180deg, rgba(139,92,246,0.24), rgba(139,92,246,0.08));
  }

  .mob-nav-btn.active::after {
    bottom: 8px !important;
    width: 16px !important;
    background: var(--accent) !important;
  }

  .mob-nav-add {
    width: 56px !important;
    height: 56px !important;
    margin: 0 6px !important;
    border-radius: 20px !important;
    background: linear-gradient(180deg, #2ddb78, #1fcb68) !important;
    color: #09110d !important;
    box-shadow: 0 14px 32px rgba(45,219,120,0.32) !important;
  }

  .mob-nav-add svg {
    width: 24px !important;
    height: 24px !important;
  }

  body:has(.modal-overlay:not(.hidden)) .mobile-bottom-nav,
  body:has(.quick-add-panel:not(.hidden)) .mobile-bottom-nav,
  body:has(.sidebar-overlay.show) .mobile-bottom-nav,
  body:has(.notifications-drawer.open) .mobile-bottom-nav,
  body.nav-hidden .mobile-bottom-nav {
    display: flex !important;
    opacity: 0;
    pointer-events: none;
    transform: translateY(24px);
  }
}

@media (max-width: 400px) {
  .mobile-bottom-nav {
    left: 10px !important;
    right: 10px !important;
    height: 68px !important;
  }

  .mob-nav-btn {
    font-size: 0.58rem !important;
  }

  .mob-nav-add {
    width: 44px !important;
    height: 44px !important;
    margin: 0 4px !important;
  }
}

/* Final mobile UX pass: resolves earlier mobile rule conflicts */
@media (max-width: 768px) {
  html,
  body {
    background-size: 36px 36px;
    overscroll-behavior-y: none;
  }

  body.mobile-sidebar-open {
    overflow: hidden;
  }

  .dashboard {
    background:
      radial-gradient(circle at 12% 0%, rgba(139,92,246,0.14), transparent 36%),
      radial-gradient(circle at 100% 10%, rgba(79,172,254,0.08), transparent 30%),
      linear-gradient(180deg, rgba(9,9,14,0.98), rgba(7,7,11,0.98));
  }

  .dash-header {
    height: auto !important;
    min-height: 0 !important;
    padding: calc(env(safe-area-inset-top, 0px) + 10px) 12px 12px !important;
    gap: 10px;
    background: rgba(9,9,14,0.94) !important;
    border-bottom: 1px solid rgba(255,255,255,0.06);
    box-shadow: 0 12px 28px rgba(0,0,0,0.32);
  }

  .dash-header-right {
    gap: 10px;
    flex: 1;
    min-width: 0;
  }

  .dash-header-left {
    gap: 8px;
    flex-shrink: 0;
  }

  .header-section-label,
  .header-section-label + .header-divider,
  .header-date,
  .header-time-pill,
  .header-time-pill + div,
  #edit-order-btn,
  #quick-add-btn,
  .dash-header-left button[onclick="openCmdPalette()"] {
    display: none !important;
  }

  .mobile-menu-btn {
    display: flex !important;
    width: 42px !important;
    height: 42px !important;
    border-radius: 16px !important;
    background: rgba(255,255,255,0.06) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    color: var(--text) !important;
    box-shadow: 0 10px 22px rgba(0,0,0,0.22);
  }

  .mobile-menu-btn svg {
    width: 20px;
    height: 20px;
  }

  .dash-logo {
    font-size: 1.32rem !important;
    letter-spacing: 1.2px !important;
    flex-shrink: 0;
  }

  .header-search-wrap {
    flex: 1;
    min-width: 0;
    height: 42px !important;
    border-radius: 16px !important;
    padding: 0 14px !important;
    gap: 8px !important;
    background: rgba(255,255,255,0.05) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
  }

  .header-search-wrap:focus-within {
    border-color: rgba(79,172,254,0.34) !important;
    box-shadow: 0 0 0 3px rgba(79,172,254,0.08);
  }

  .header-search-icon {
    color: rgba(255,255,255,0.48);
  }

  .header-search-input {
    font-size: 0.92rem !important;
  }

  .header-search-input::placeholder {
    color: rgba(255,255,255,0.24);
    font-size: 0.78rem;
  }

  .search-archive-toggle {
    width: 28px;
    height: 28px;
    border-radius: 10px;
    font-size: 0.78rem;
  }

  .header-icon-btn,
  .header-alert-badge {
    width: 40px !important;
    height: 40px !important;
    border-radius: 14px !important;
    padding: 0 !important;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
  }

  .header-alert-badge {
    justify-content: center;
  }

  .header-icon-btn::before {
    display: none !important;
  }

  #settings-btn {
    margin-right: 0 !important;
  }

  .sidebar {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    width: min(88vw, 320px) !important;
    height: 100dvh !important;
    padding: calc(env(safe-area-inset-top, 0px) + 14px) 12px calc(env(safe-area-inset-bottom, 0px) + 18px) !important;
    background: linear-gradient(180deg, rgba(12,12,18,0.99), rgba(9,9,14,0.98)) !important;
    border-left: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: -28px 0 70px rgba(0,0,0,0.48) !important;
    transform: translateX(108%);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1), opacity 0.2s ease !important;
    overflow-y: auto;
    z-index: 220 !important;
    gap: 0 !important;
  }

  .sidebar.mobile-open {
    transform: translateX(0);
    opacity: 1;
    pointer-events: auto;
  }

  .sidebar.expanded {
    width: min(88vw, 320px) !important;
  }

  .mobile-sidebar-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
    padding: 0 4px 14px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
  }

  .mobile-sidebar-copy {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  .mobile-sidebar-kicker {
    font-family: var(--font-mono);
    font-size: 0.68rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.4);
  }

  .mobile-sidebar-title {
    font-size: 1.08rem;
    font-weight: 800;
    color: var(--text);
  }

  .mobile-sidebar-close {
    width: 42px;
    height: 42px;
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 14px;
    background: rgba(255,255,255,0.05);
    color: var(--text);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
  }

  .sidebar-top {
    display: none !important;
  }

  .sidebar-filters,
  .sidebar-bottom {
    width: 100%;
    align-items: stretch;
    padding: 0 !important;
    gap: 8px !important;
  }

  .sidebar-stats {
    display: flex !important;
    width: 100%;
    flex-direction: column;
    gap: 8px;
    margin: 14px 0 12px;
    padding: 14px;
    border-radius: 18px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
  }

  .sidebar-nav-btn,
  .sidebar-icon-btn {
    width: 100% !important;
    min-height: 50px;
    justify-content: flex-start !important;
    gap: 12px !important;
    padding: 0 14px !important;
    border-radius: 14px !important;
  }

  .sidebar-nav-btn {
    margin: 0 !important;
    background: rgba(255,255,255,0.03);
    border: 1px solid transparent;
  }

  .sidebar-nav-btn.active {
    background: linear-gradient(180deg, rgba(139,92,246,0.24), rgba(139,92,246,0.12));
    border-color: rgba(139,92,246,0.22);
    box-shadow: 0 14px 30px rgba(139,92,246,0.12);
  }

  .sidebar-label {
    display: block !important;
    font-size: 0.92rem !important;
    font-weight: 700;
  }

  .sidebar .sidebar-count {
    margin-inline-start: auto;
    font-size: 0.68rem;
  }

  .sidebar .sidebar-icon-btn::before,
  .sidebar .sidebar-nav-btn::before {
    display: none !important;
  }

  .sidebar-overlay {
    z-index: 210 !important;
    background: rgba(3,3,5,0.72) !important;
    backdrop-filter: blur(6px) !important;
    opacity: 0;
    transition: opacity 0.2s ease;
  }

  .sidebar-overlay.show {
    display: block !important;
    opacity: 1;
  }

  .dash-body {
    display: block;
  }

  .main-content {
    padding: 14px 12px calc(104px + env(safe-area-inset-bottom, 0px)) !important;
    margin-right: 0 !important;
  }

  .cards-toolbar {
    position: sticky;
    top: 0;
    z-index: 40;
    margin: 0 0 14px;
    padding: 0 0 8px;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
    background: linear-gradient(180deg, rgba(7,7,11,0.98), rgba(7,7,11,0.82) 70%, rgba(7,7,11,0));
    backdrop-filter: blur(16px);
  }

  .cards-toolbar-right {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }

  .toolbar-label {
    font-size: 0.82rem !important;
    font-weight: 700;
    color: rgba(255,255,255,0.78);
    padding: 0 4px;
  }

  .cards-toolbar-left {
    gap: 8px !important;
    overflow-x: auto;
    padding: 2px 0 4px;
    scrollbar-width: none;
    scroll-snap-type: x proximity;
  }

  .cards-toolbar-left::-webkit-scrollbar {
    display: none;
  }

  .toolbar-btn,
  .sort-select {
    flex: 0 0 auto;
    height: 40px !important;
    padding: 0 12px !important;
    border-radius: 14px !important;
    border: 1px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.05);
    color: var(--text);
    scroll-snap-align: start;
  }

  .toolbar-btn span {
    display: inline !important;
  }

  .sort-select {
    min-width: 132px;
    font-size: 0.8rem !important;
  }

  .dash-grid {
    grid-template-columns: 1fr !important;
    gap: 14px !important;
  }

  .card,
  .card-compact,
  .card-wide,
  .card-tall,
  .card-auto-height {
    grid-column: span 1 !important;
    grid-row: auto !important;
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr);
    grid-auto-rows: min-content;
    align-items: start;
    gap: 8px 12px !important;
    padding: 16px !important;
    border-radius: 22px !important;
    background: linear-gradient(180deg, rgba(13,13,18,0.96), rgba(10,10,15,0.92)) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    box-shadow: 0 14px 28px rgba(0,0,0,0.34), 0 0 0 1px rgba(255,255,255,0.02) inset !important;
    transform: none !important;
  }

  .card::before {
    opacity: 0.74;
  }

  .card:hover {
    transform: none !important;
    border-color: rgba(var(--card-color,255,255,255), 0.14) !important;
  }

  .card:active {
    transform: scale(0.985) !important;
  }

  .card-icon,
  .card-compact .card-icon,
  .card-tall .card-icon {
    grid-column: 1;
    grid-row: 1 / span 3;
    width: 44px !important;
    height: 44px !important;
    margin: 0 !important;
    border-radius: 16px !important;
    font-size: 1.35rem !important;
    align-self: start;
  }

  .card-type-badge {
    position: static !important;
    top: auto !important;
    left: auto !important;
    grid-column: 2;
    grid-row: 1;
    justify-self: start;
    font-size: 0.66rem !important;
    opacity: 0.92;
  }

  .card-title,
  .card-compact .card-title,
  .card-tall .card-title {
    grid-column: 2;
    grid-row: 2;
    align-self: start;
    font-size: 1.02rem !important;
    line-height: 1.3 !important;
    margin: -2px 0 0 !important;
  }

  .card-meta,
  .card-compact .card-meta,
  .card-tall .card-meta {
    grid-column: 2;
    grid-row: 3;
    align-self: start;
    flex: none !important;
    padding: 0 !important;
    font-size: 0.82rem !important;
    line-height: 1.6 !important;
    max-height: none !important;
    overflow: visible !important;
  }

  .card-tags-row,
  .reminder-done-row,
  .card-timestamp,
  .card-actions {
    grid-column: 1 / -1;
  }

  .card-actions,
  .card-compact .card-actions {
    position: static !important;
    opacity: 1 !important;
    transform: none !important;
    pointer-events: auto !important;
    justify-content: flex-start !important;
    flex-wrap: wrap;
    gap: 8px;
    width: 100%;
    margin-top: 4px;
    padding: 10px 0 0 !important;
    background: none !important;
  }

  .card-compact .card-actions button {
    opacity: 1 !important;
  }

  .card-actions button,
  .card-delete,
  .card-edit,
  .card-reset,
  .card-copy,
  .card-pin-btn,
  .card-text-copy,
  .card-archive-btn,
  .card-move-btn {
    min-width: 38px;
    min-height: 38px;
    padding: 0 12px !important;
    border-radius: 12px !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem !important;
    border: 1px solid rgba(255,255,255,0.06);
    background: rgba(255,255,255,0.05);
  }

  .card-delete {
    background: rgba(239,68,68,0.1) !important;
    border-color: rgba(239,68,68,0.16) !important;
  }

  .card-hover-preview {
    display: none !important;
  }

  .card-wide .subs-preview-list,
  .card-wide .card-checklist-preview {
    grid-template-columns: 1fr !important;
  }

  .sub-item-preview,
  .preview-item {
    border-radius: 12px;
  }

  .tracker-value-big,
  .counter-number {
    font-size: 2.4rem !important;
  }

  .mobile-bottom-nav {
    display: flex !important;
    position: fixed !important;
    left: 12px !important;
    right: 12px !important;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 10px) !important;
    height: 72px !important;
    padding: 8px !important;
    border-radius: 24px !important;
    background: rgba(12,12,18,0.92) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: 0 20px 50px rgba(0,0,0,0.45) !important;
    gap: 4px !important;
    z-index: 180 !important;
    transition: transform 0.24s ease, opacity 0.24s ease !important;
  }

  .mob-nav-btn {
    gap: 4px !important;
    padding: 8px 2px !important;
    border-radius: 18px !important;
    color: rgba(255,255,255,0.42) !important;
    font-size: 0.63rem !important;
  }

  .mob-nav-btn svg {
    width: 21px !important;
    height: 21px !important;
  }

  .mob-nav-btn.active {
    color: #f3efff !important;
    background: linear-gradient(180deg, rgba(139,92,246,0.24), rgba(139,92,246,0.08));
  }

  .mob-nav-btn.active::after {
    bottom: 8px !important;
    width: 16px !important;
    background: var(--accent) !important;
  }

  .mob-nav-add {
    width: 56px !important;
    height: 56px !important;
    margin: 0 6px !important;
    border-radius: 20px !important;
    background: linear-gradient(180deg, #2ddb78, #1fcb68) !important;
    color: #09110d !important;
    box-shadow: 0 14px 32px rgba(45,219,120,0.32) !important;
  }

  .mob-nav-add svg {
    width: 24px !important;
    height: 24px !important;
  }

  body:has(.modal-overlay:not(.hidden)) .mobile-bottom-nav,
  body:has(.quick-add-panel:not(.hidden)) .mobile-bottom-nav,
  body:has(.sidebar-overlay.show) .mobile-bottom-nav,
  body:has(.notifications-drawer.open) .mobile-bottom-nav,
  body.nav-hidden .mobile-bottom-nav {
    display: flex !important;
    opacity: 0;
    pointer-events: none;
    transform: translateY(24px);
  }

  .modal-box,
  .note-modal-box,
  .markdown-modal-box,
  .quick-add-panel,
  .notifications-drawer {
    border-radius: 28px 28px 0 0 !important;
  }
}

@media (max-width: 400px) {
  .mobile-bottom-nav {
    left: 10px !important;
    right: 10px !important;
    height: 68px !important;
  }

  .mob-nav-btn {
    font-size: 0.58rem !important;
  }

  .mob-nav-add {
    width: 44px !important;
    height: 44px !important;
    margin: 0 4px !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════
   MOBILE REDESIGN v2 — إعادة تصميم كاملة لنسخة الهاتف
   ═══════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ── Body ──────────────────────────────────────────────────── */
  body {
    background-size: 28px 28px;
  }

  /* ══════════════════════════════════════════════════════════════
     HEADER — رأس الصفحة
     ══════════════════════════════════════════════════════════════ */
  .dash-header {
    height: 56px;
    min-height: 56px;
    padding: 0 14px;
    background: rgba(14, 14, 19, 0.98);
    border-bottom: 1px solid rgba(255,255,255,0.07);
    backdrop-filter: blur(28px);
  }

  .dash-header-right {
    gap: 10px;
    flex: 1;
    min-width: 0;
  }

  .dash-header-left {
    gap: 4px;
    flex-shrink: 0;
  }

  /* أخفِ العناصر التي تزحم الهيدر على الهاتف */
  .header-section-label,
  .header-section-label + .header-divider,
  .header-date,
  .header-time-pill,
  .header-divider,
  #edit-order-btn,
  .dash-header-left button[onclick="openCmdPalette()"] {
    display: none !important;
  }

  /* زر القائمة الجانبية */
  .mobile-menu-btn {
    display: flex !important;
    width: 38px;
    height: 38px;
    border-radius: 12px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
    color: var(--muted);
    flex-shrink: 0;
    transition: all .2s;
  }
  .mobile-menu-btn:hover {
    background: rgba(255,255,255,0.09);
    color: var(--text);
  }
  .mobile-menu-btn:active {
    transform: scale(0.94);
  }

  /* الشعار */
  .dash-logo {
    font-size: 1.25rem;
    flex-shrink: 0;
    letter-spacing: 1.5px;
  }

  /* شريط البحث */
  .header-search-wrap {
    flex: 1;
    min-width: 0;
    height: 38px;
    border-radius: 12px;
    padding: 0 12px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
    gap: 6px;
  }
  .header-search-wrap:focus-within {
    border-color: rgba(79,172,254,0.35);
    background: rgba(255,255,255,0.07);
    box-shadow: 0 0 0 3px rgba(79,172,254,0.08);
  }
  .header-search-input {
    font-size: 0.88rem;
  }

  /* أزرار الهيدر */
  .header-icon-btn {
    width: 38px;
    height: 38px;
    border-radius: 11px;
  }
  /* أخفِ tooltip في الهاتف */
  .header-icon-btn::before {
    display: none !important;
  }

  /* ══════════════════════════════════════════════════════════════
     SIDEBAR — القائمة الجانبية
     ══════════════════════════════════════════════════════════════ */
  .sidebar {
    position: fixed;
    top: 0;
    right: -280px;
    height: 100dvh;
    width: 260px;
    z-index: 200;
    transition: right 0.32s cubic-bezier(0.16, 1, 0.3, 1);
    padding-top: 68px;
    padding-bottom: 24px;
    background: rgba(16, 16, 22, 0.99);
    border-left: 1px solid rgba(255,255,255,0.09);
    backdrop-filter: blur(28px);
    box-shadow: -24px 0 80px rgba(0,0,0,0.55);
    overflow-y: auto;
  }

  .sidebar.mobile-open {
    right: 0;
  }

  .sidebar.expanded {
    width: 260px;
  }

  /* أزرار القائمة الجانبية — أكبر وأسهل للضغط */
  .sidebar-nav-btn {
    padding: 11px 14px;
    border-radius: 12px;
    margin: 1px 8px;
  }

  .sidebar-label {
    font-size: 0.9rem;
  }

  .sidebar-top {
    display: none !important;
  }

  /* ══════════════════════════════════════════════════════════════
     MAIN CONTENT — المحتوى الرئيسي
     ══════════════════════════════════════════════════════════════ */
  .main-content {
    padding: 14px 12px 96px !important;
    margin-right: 0 !important;
  }

  /* ══════════════════════════════════════════════════════════════
     TOOLBAR — شريط الأدوات
     ══════════════════════════════════════════════════════════════ */
  .cards-toolbar {
    padding: 0 2px 10px;
    gap: 8px;
    flex-wrap: wrap;
  }

  .cards-toolbar-left {
    gap: 6px;
  }

  .toolbar-label {
    font-size: 0.78rem;
    color: rgba(255,255,255,0.3);
    font-weight: 600;
  }

  .toolbar-btn {
    padding: 6px 10px;
    border-radius: 10px;
    font-size: 0.75rem;
    height: 32px;
    gap: 4px;
  }

  .toolbar-btn span {
    display: inline;
  }

  .sort-select {
    height: 32px;
    padding: 4px 10px;
    border-radius: 10px;
    font-size: 0.78rem;
    display: block;
  }

  /* ══════════════════════════════════════════════════════════════
     CARDS — الكروت
     ══════════════════════════════════════════════════════════════ */
  .dash-grid {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .card {
    border-radius: 18px;
    padding: 15px 15px 12px;
    /* تحسين shadow للهاتف */
    box-shadow: 0 4px 20px rgba(0,0,0,0.25),
                0 1px 3px rgba(0,0,0,0.3);
  }

  /* أظهر أزرار الكرت دائماً على الهاتف */
  .card-actions {
    opacity: 1 !important;
    transform: translateY(0) !important;
    pointer-events: auto !important;
  }

  .card-title {
    font-size: 0.97rem;
  }

  /* أزرار الكرت أكبر للضغط */
  .card-edit-btn,
  .card-copy-btn,
  .card-del-btn,
  .card-pin-btn,
  .card-archive-btn,
  .card-text-copy {
    padding: 6px 10px !important;
    min-height: 30px;
    font-size: 0.8rem;
  }

  /* ══════════════════════════════════════════════════════════════
     NOTIFICATIONS DRAWER — درج التنبيهات
     ══════════════════════════════════════════════════════════════ */
  .notifications-drawer {
    width: 100%;
    max-width: 380px;
  }

  /* ══════════════════════════════════════════════════════════════
     MODALS — النوافذ (تصميم Bottom Sheet)
     ══════════════════════════════════════════════════════════════ */
  .modal-overlay {
    align-items: flex-end !important;
    padding: 0 !important;
    background: rgba(0,0,0,0.72) !important;
    backdrop-filter: blur(10px) !important;
  }

  .modal-box {
    max-width: 100% !important;
    width: 100% !important;
    margin: 0 !important;
    border-radius: 26px 26px 0 0 !important;
    max-height: 93dvh !important;
    overflow-y: auto;
    border: none !important;
    border-top: 1px solid rgba(255,255,255,0.1) !important;
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 8px);
    animation: slideUpSheet 0.32s cubic-bezier(0.16, 1, 0.3, 1) !important;
  }

  @keyframes slideUpSheet {
    from { transform: translateY(60px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
  }

  /* Handle bar فوق المودال */
  .modal-box::before {
    content: '';
    display: block;
    width: 44px;
    height: 4px;
    background: rgba(255,255,255,0.14);
    border-radius: 99px;
    margin: 12px auto 4px;
    flex-shrink: 0;
  }

  .modal-header {
    padding: 12px 18px 16px;
  }

  .modal-title {
    font-size: 1.1rem;
  }

  /* محتوى المودال */
  .modal-body {
    padding: 0 18px 16px;
  }

  /* Note modal */
  .note-modal-box {
    max-width: 100% !important;
  }

  /* ══════════════════════════════════════════════════════════════
     QUICK ADD PANEL — لوحة الإضافة السريعة
     ══════════════════════════════════════════════════════════════ */
  .quick-add-panel {
    right: 0 !important;
    left: 0 !important;
    bottom: 0 !important;
    top: auto !important;
    width: 100% !important;
    border-radius: 24px 24px 0 0 !important;
    border: none !important;
    border-top: 1px solid rgba(255,255,255,0.1) !important;
    padding-bottom: calc(env(safe-area-inset-bottom, 0px) + 12px);
    max-height: 85dvh;
    overflow-y: auto;
    box-shadow: 0 -20px 60px rgba(0,0,0,0.5);
    animation: slideUpSheet 0.3s cubic-bezier(0.16, 1, 0.3, 1);
  }

  /* ══════════════════════════════════════════════════════════════
     PAGE VIEW — عرض الصفحة
     ══════════════════════════════════════════════════════════════ */
  .page-header {
    padding: 14px 16px;
  }

  .page-content {
    padding: 14px 12px 96px;
  }

  /* ══════════════════════════════════════════════════════════════
     FAB — زر الإضافة العائم (مخفي على الهاتف)
     ══════════════════════════════════════════════════════════════ */
  .fab {
    display: none !important;
  }

  /* ══════════════════════════════════════════════════════════════
     MOBILE BOTTOM NAVIGATION — شريط التنقل السفلي
     ══════════════════════════════════════════════════════════════ */
  .mobile-bottom-nav {
    display: flex;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: 68px;
    z-index: 150;
    background: rgba(12, 12, 17, 0.98);
    border-top: 1px solid rgba(255,255,255,0.08);
    backdrop-filter: blur(28px);
    -webkit-backdrop-filter: blur(28px);
    align-items: center;
    padding: 0 10px;
    padding-bottom: env(safe-area-inset-bottom, 0px);
    gap: 0;
  }

  /* زر التنقل الأساسي */
  .mob-nav-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    background: none;
    border: none;
    color: rgba(255,255,255,0.3);
    font-family: var(--font-ar);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: color 0.2s ease, transform 0.15s ease;
    padding: 8px 4px;
    border-radius: 14px;
    position: relative;
    -webkit-tap-highlight-color: transparent;
  }

  .mob-nav-btn svg {
    width: 22px;
    height: 22px;
    transition: transform 0.2s cubic-bezier(0.34, 1.56, 0.64, 1);
  }

  /* حالة hover */
  .mob-nav-btn:hover {
    color: rgba(255,255,255,0.6);
  }

  /* حالة الضغط */
  .mob-nav-btn:active svg {
    transform: scale(0.88);
  }

  /* الزر المفعّل */
  .mob-nav-btn.active {
    color: var(--accent2);
  }

  .mob-nav-btn.active svg {
    transform: translateY(-1px) scale(1.08);
    filter: drop-shadow(0 0 8px rgba(79,172,254,0.45));
  }

  /* نقطة المؤشر للزر المفعّل */
  .mob-nav-btn.active::after {
    content: '';
    position: absolute;
    bottom: 5px;
    left: 50%;
    transform: translateX(-50%);
    width: 18px;
    height: 3px;
    background: var(--accent2);
    border-radius: 99px;
    opacity: 0.8;
    animation: navDotIn 0.25s cubic-bezier(0.34,1.56,0.64,1) both;
  }

  @keyframes navDotIn {
    from { width: 6px; opacity: 0; }
    to   { width: 18px; opacity: 0.8; }
  }

  /* ─── BENTO MOBILE RESETS ──────────────────────── */
  .card-wide { grid-column: span 1 !important; }
  .card-tall { grid-row: auto !important; min-height: auto !important; }
  .card-wide .subs-preview-list, 
  .card-wide .card-checklist-preview {
    grid-template-columns: 1fr !important;
  }
  .card-compact { padding: 12px 14px !important; gap: 10px !important; }
  .card-compact .card-icon { width: 38px !important; height: 38px !important; font-size: 1.2rem !important; }

  /* ── زر الإضافة المميز في المنتصف ──────────────── */
  .mob-nav-add {
    flex: 0 0 auto;
    width: 54px;
    height: 54px;
    background: var(--accent) !important;
    color: #0a0e0a !important;
    border-radius: 18px !important;
    margin: 0 8px;
    box-shadow: 0 6px 24px rgba(34,211,117,0.38),
                0 2px 8px rgba(0,0,0,0.3);
    transition: transform 0.18s cubic-bezier(0.34,1.56,0.64,1),
                box-shadow 0.18s ease !important;
    font-size: 0 !important; /* أخفِ النص */
    padding: 0 !important;
    gap: 0 !important;
  }

  .mob-nav-add:hover {
    transform: scale(1.06) translateY(-1px) !important;
    box-shadow: 0 8px 28px rgba(34,211,117,0.5),
                0 2px 8px rgba(0,0,0,0.3) !important;
    color: #0a0e0a !important;
  }

  .mob-nav-add:active {
    transform: scale(0.93) !important;
    box-shadow: 0 3px 14px rgba(34,211,117,0.3) !important;
  }

  .mob-nav-add svg {
    width: 26px;
    height: 26px;
    stroke-width: 2.8;
    transition: transform 0.18s cubic-bezier(0.34,1.56,0.64,1) !important;
    filter: none !important;
  }

  /* Hide the bottom navigation securely when modals, panels, or sidebars are open (prevents keyboards overlap issue) */
  body:has(.modal-overlay:not(.hidden)) .mobile-bottom-nav,
  body:has(.quick-add-panel:not(.hidden)) .mobile-bottom-nav,
  body:has(.sidebar-overlay.show) .mobile-bottom-nav,
  body:has(.notifications-drawer.open) .mobile-bottom-nav,
  body.nav-hidden .mobile-bottom-nav {
    display: none !important;
  }
  
  /* Forcefully kill any cached old button */
  #mob-btn-add {
    display: none !important;
  }

  .mob-nav-add::after {
    display: none !important;
  }

  /* ══════════════════════════════════════════════════════════════
     SIDEBAR OVERLAY — خلفية القائمة الجانبية
     ══════════════════════════════════════════════════════════════ */
  .sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    cursor: pointer;
    background: rgba(0,0,0,0.65);
    z-index: 199;
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
    animation: fadeOverlay 0.25s ease;
  }

  @keyframes fadeOverlay {
    from { opacity: 0; }
    to   { opacity: 1; }
  }

  .sidebar-overlay.show {
    display: block;
  }

  /* ══════════════════════════════════════════════════════════════
     PASSKEY BANNER — شريط البصمة
     ══════════════════════════════════════════════════════════════ */
  .passkey-banner {
    padding: 12px 14px;
    font-size: 0.8rem;
    gap: 8px;
    flex-wrap: wrap;
  }

  /* ══════════════════════════════════════════════════════════════
     SETTINGS DRAWER — replaced by .settings-page (full screen)
     ══════════════════════════════════════════════════════════════ */
  /* .settings-drawer { width: 100%; max-width: 320px; } — no longer needed */

  /* ══════════════════════════════════════════════════════════════
     EMPTY STATE — حالة الفراغ
     ══════════════════════════════════════════════════════════════ */
  .empty-quick-create {
    gap: 8px;
    justify-content: flex-start;
    padding: 0 2px;
  }

  .empty-quick-btn {
    font-size: 0.82rem;
    padding: 9px 14px;
    border-radius: 14px;
  }

  /* ══════════════════════════════════════════════════════════════
     PINNED SEPARATOR — فاصل المثبّت
     ══════════════════════════════════════════════════════════════ */
  .pinned-section-sep {
    margin: 6px 0;
  }

  /* ══════════════════════════════════════════════════════════════
     SEARCH HISTORY — سجل البحث
     ══════════════════════════════════════════════════════════════ */
  .search-history-drop {
    border-radius: 16px;
    box-shadow: 0 12px 40px rgba(0,0,0,0.6);
  }

  .search-hist-item {
    padding: 9px 12px;
    font-size: 0.85rem;
  }

  /* ══════════════════════════════════════════════════════════════
     MOVE TO PAGE MODAL — نافذة النقل
     ══════════════════════════════════════════════════════════════ */
  .move-page-btn {
    padding: 14px 16px;
    font-size: 0.9rem;
  }

  /* ══════════════════════════════════════════════════════════════
     APPROVAL POPUP — نافذة الموافقة
     ══════════════════════════════════════════════════════════════ */
  .approval-popup-inner {
    border-radius: 20px;
    padding: 24px 20px;
    margin: 16px;
    max-width: calc(100vw - 32px);
  }

} /* END @media (max-width: 768px) */


/* ══════════════════════════════════════════════════════════════════
   TABLET — شاشة بين 480px و768px: عمودان
   ══════════════════════════════════════════════════════════════════ */
@media (min-width: 480px) and (max-width: 768px) {
  .dash-grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
  }
}


/* ══════════════════════════════════════════════════════════════════
   SMALL PHONES — هواتف صغيرة (أقل من 400px)
   ══════════════════════════════════════════════════════════════════ */
@media (max-width: 400px) {
  .dash-header {
    padding: 0 10px;
  }

  .toolbar-btn span {
    display: none;
  }

  .sort-select {
    display: none;
  }

  .mob-nav-add {
    width: 48px;
    height: 48px;
    border-radius: 16px !important;
    margin: 0 4px;
  }

  .mob-nav-add svg {
    width: 24px;
    height: 24px;
  }

  .mob-nav-btn {
    font-size: 0.55rem;
  }

  .mob-nav-btn svg {
    width: 20px;
    height: 20px;
  }

  .sidebar {
    width: 240px;
    right: -250px;
  }
}

/* ─────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
  html,
  body {
    overscroll-behavior-y: auto !important;
    width: 100%;
    max-width: 100vw;
    overflow-x: hidden !important;
  }

  body.mobile-sidebar-open { overflow: hidden; }

  .dashboard,
  .dash-body,
  .main-content,
  .dash-header,
  .dash-header-right,
  .header-search-wrap,
  .dash-grid,
  .tags-bar,
  .page-content {
    width: 100%;
    max-width: 100vw;
    overflow-x: hidden;
  }

  .dash-header {
    height: auto !important;
    min-height: 0 !important;
    padding: calc(env(safe-area-inset-top, 0px) + 10px) 12px 12px !important;
    gap: 10px;
    background: rgba(9,9,14,0.94) !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
  }

  .dash-header-right { gap: 10px !important; flex: 1; min-width: 0; }
  .dash-header-left { gap: 8px !important; flex-shrink: 0; }

  .header-section-label,
  .header-section-label + .header-divider,
  .header-date,
  .header-time-pill,
  .header-time-pill + div,
  #edit-order-btn,
  #quick-add-btn,
  .dash-header-left button[onclick="openCmdPalette()"] { display: none !important; }

  .mobile-menu-btn {
    display: flex !important;
    width: 42px !important;
    height: 42px !important;
    border-radius: 16px !important;
    background: rgba(255,255,255,0.06) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    color: var(--text) !important;
  }

  .dash-logo { font-size: 1.32rem !important; letter-spacing: 1.2px !important; }

  .header-search-wrap {
    flex: 1;
    min-width: 0;
    height: 42px !important;
    border-radius: 16px !important;
    padding: 0 14px !important;
    gap: 8px !important;
    background: rgba(255,255,255,0.05) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
  }

  .header-icon-btn,
  .header-alert-badge {
    width: 40px !important;
    height: 40px !important;
    border-radius: 14px !important;
    padding: 0 !important;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.08);
  }

  .header-icon-btn::before { display: none !important; }
  #settings-btn { margin-right: 0 !important; }

  .sidebar {
    position: fixed !important;
    top: 0 !important;
    right: 0 !important;
    width: min(88vw, 320px) !important;
    height: 100dvh !important;
    padding: calc(env(safe-area-inset-top, 0px) + 14px) 12px calc(env(safe-area-inset-bottom, 0px) + 18px) !important;
    background: linear-gradient(180deg, rgba(12,12,18,0.99), rgba(9,9,14,0.98)) !important;
    border-left: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: -28px 0 70px rgba(0,0,0,0.48) !important;
    transform: translateX(108%) !important;
    opacity: 0;
    pointer-events: none;
    overflow-y: auto;
    z-index: 220 !important;
    visibility: hidden;
    display: none !important;
  }

  .sidebar.mobile-open { transform: translateX(0) !important; opacity: 1; pointer-events: auto; visibility: visible; display: flex !important; }
  .sidebar.expanded { width: min(88vw, 320px) !important; }
  .mobile-sidebar-head { display: flex !important; }
  .sidebar-top { display: none !important; }
  .sidebar-filters,
  .sidebar-bottom { width: 100%; align-items: stretch; padding: 0 !important; gap: 8px !important; }
  .sidebar-stats { display: flex !important; width: 100%; }
  .sidebar-nav-btn,
  .sidebar-icon-btn { width: 100% !important; min-height: 50px; justify-content: flex-start !important; gap: 12px !important; padding: 0 14px !important; border-radius: 14px !important; }
  .sidebar-label { display: block !important; font-size: 0.92rem !important; font-weight: 700; }
  .sidebar .sidebar-count { margin-inline-start: auto; }
  .sidebar .sidebar-icon-btn::before,
  .sidebar .sidebar-nav-btn::before { display: none !important; }
  .sidebar-overlay { z-index: 210 !important; background: rgba(3,3,5,0.72) !important; backdrop-filter: blur(6px) !important; }

  .notifications-drawer {
    top: auto !important;
    right: 12px !important;
    left: 12px !important;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 12px) !important;
    width: auto !important;
    max-width: none !important;
    height: min(68dvh, 560px) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    border-radius: 28px !important;
    background: linear-gradient(180deg, rgba(13,13,18,0.98), rgba(9,9,14,0.98)) !important;
    box-shadow: 0 24px 60px rgba(0,0,0,0.5) !important;
    z-index: 230 !important;
    transform: translateY(calc(100% + 24px));
    opacity: 0;
    transition: transform .28s cubic-bezier(0.16,1,0.3,1), opacity .2s ease !important;
    overflow: hidden;
    display: none !important;
  }

  .notifications-drawer.open {
    right: 12px !important;
    transform: translateY(0);
    opacity: 1;
    display: flex !important;
  }

  .notifications-header {
    padding: 16px 16px 12px !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
    background: rgba(255,255,255,0.02);
  }

  .notifications-body {
    padding: 14px !important;
    gap: 10px !important;
    overscroll-behavior: contain;
  }

  .drawer-crit-item {
    width: 100% !important;
    border-radius: 16px !important;
    padding: 12px 14px !important;
    background: rgba(255,255,255,0.04) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
  }

  /* .settings-overlay / .settings-drawer mobile overrides — replaced by .settings-page */

  .settings-header {
    position: sticky;
    top: 0;
    z-index: 3;
    margin: 0 !important;
    padding: calc(env(safe-area-inset-top, 0px) + 12px) 16px 14px;
    background: rgba(10,10,15,0.92);
    backdrop-filter: blur(18px);
    border-bottom: 1px solid rgba(255,255,255,0.06);
  }

  .settings-header span {
    font-size: 1rem;
    font-weight: 800;
  }

  .settings-header button {
    width: 40px;
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 14px;
    background: rgba(255,255,255,0.04);
  }

  .settings-list {
    flex: none !important;
    padding: 12px 12px 4px;
    gap: 8px;
  }

  .settings-item {
    min-height: 52px;
    padding: 14px 16px;
    border-radius: 16px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.06);
  }

  .settings-section-title {
    padding: 16px 16px 8px;
    margin-top: 8px;
  }

  .autolock-row {
    padding: 0 12px 12px;
    flex-wrap: wrap;
    gap: 8px;
  }

  .autolock-opt {
    min-height: 42px;
    border-radius: 14px;
    padding: 0 14px;
  }

  .settings-accent-row {
    padding: 8px 16px 14px;
  }

  .settings-tags-list,
  .trusted-devices-list {
    padding: 0 12px 12px;
  }

  .settings-footer {
    margin-top: 10px;
    padding: 16px;
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  }

  .dash-body { display: block !important; }
  .main-content {
    padding: 14px 12px calc(104px + env(safe-area-inset-bottom, 0px)) !important;
    margin-right: 0 !important;
    overflow-y: visible !important;
  }

  .cards-toolbar {
    position: static !important;
    top: auto !important;
    z-index: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    display: none !important;
    background: transparent !important;
    backdrop-filter: none !important;
  }

  .cards-toolbar-right { display: none !important; }
  .cards-toolbar-left { display: none !important; }
  .cards-toolbar-left::-webkit-scrollbar { display: none; }
  .toolbar-btn,
  .sort-select {
    flex: 0 0 auto;
    height: 40px !important;
    padding: 0 12px !important;
    border-radius: 14px !important;
    border: 1px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.05);
    color: var(--text);
  }

  .toolbar-btn span { display: inline !important; }
  .dash-grid { grid-template-columns: 1fr !important; gap: 14px !important; }

  .card,
  .card-compact,
  .card-wide,
  .card-tall,
  .card-auto-height {
    grid-column: span 1 !important;
    grid-row: auto !important;
    min-height: 0 !important;
    height: auto !important;
    display: grid !important;
    grid-template-columns: 44px minmax(0, 1fr);
    grid-auto-rows: min-content;
    align-items: start;
    gap: 8px 12px !important;
    padding: 16px !important;
    border-radius: 22px !important;
    background: linear-gradient(180deg, rgba(13,13,18,0.96), rgba(10,10,15,0.92)) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    box-shadow: 0 14px 28px rgba(0,0,0,0.34), 0 0 0 1px rgba(255,255,255,0.02) inset !important;
    transform: none !important;
  }

  .card-icon,
  .card-compact .card-icon,
  .card-tall .card-icon {
    grid-column: 1;
    grid-row: 1 / span 3;
    width: 44px !important;
    height: 44px !important;
    margin: 0 !important;
    border-radius: 16px !important;
    font-size: 1.35rem !important;
    align-self: start;
  }

  .card-type-badge { position: static !important; grid-column: 2; grid-row: 1; justify-self: start; font-size: 0.64rem !important; }
  .card-title,
  .card-compact .card-title,
  .card-tall .card-title { grid-column: 2; grid-row: 2; font-size: 0.98rem !important; line-height: 1.3 !important; margin: -2px 0 0 !important; }
  .card-meta,
  .card-compact .card-meta,
  .card-tall .card-meta { grid-column: 2; grid-row: 3; flex: none !important; padding: 0 !important; font-size: 0.8rem !important; line-height: 1.55 !important; max-height: none !important; overflow: visible !important; }

  /* Hide wifi/server large icons on mobile — card-icon col handles it */
  .wifi-signal-icon { display: none !important; }
  .server-terminal-header { padding: 2px 0 !important; }
  /* Compact type-specific bodies on mobile */
  .wifi-ssid-big { font-size: 0.95rem !important; }
  .tracker-num-huge { font-size: 1.6rem !important; }
  .counter-big-num { font-size: 2rem !important; }
  .countdown-ring-svg { width: 52px !important; height: 52px !important; }
  .counter-tap-area { width: 72px !important; height: 72px !important; }

  .card-actions,
  .card-compact .card-actions {
    position: static !important;
    grid-column: 1 / -1;
    opacity: 1 !important;
    transform: none !important;
    pointer-events: auto !important;
    justify-content: flex-start !important;
    flex-wrap: wrap;
    gap: 8px;
    width: 100%;
    margin-top: 4px;
    padding: 10px 0 0 !important;
    background: none !important;
  }

  .card-actions > :not(.card-more-btn),
  .card-compact .card-actions > :not(.card-more-btn) {
    display: none !important;
  }

  .card-compact .card-actions button { opacity: 1 !important; }
  .card-actions button,
  .card-delete,
  .card-edit,
  .card-reset,
  .card-copy,
  .card-pin-btn,
  .card-text-copy,
  .card-archive-btn,
  .card-move-btn {
    min-width: 38px;
    min-height: 38px;
    padding: 0 12px !important;
    border-radius: 12px !important;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem !important;
    border: 1px solid rgba(255,255,255,0.06);
    background: rgba(255,255,255,0.05);
  }

  .card-more-btn {
    display: inline-flex !important;
    min-width: 44px !important;
    min-height: 44px !important;
    padding: 0 !important;
    border-radius: 14px !important;
    font-size: 1.2rem !important;
    line-height: 1 !important;
    color: rgba(255,255,255,0.94) !important;
    background: rgba(255,255,255,0.08) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: 0 14px 28px rgba(0,0,0,0.22);
  }

  .card-context-menu.mobile-sheet {
    left: 12px !important;
    right: 12px !important;
    top: auto !important;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 12px) !important;
    width: auto !important;
    min-width: 0 !important;
    border-radius: 22px !important;
    padding: 8px !important;
    background: rgba(15,16,24,0.96) !important;
    border-color: rgba(255,255,255,0.08) !important;
    box-shadow: 0 24px 54px rgba(0,0,0,0.5) !important;
    backdrop-filter: blur(20px);
    animation: ctx-sheet-in .18s ease !important;
  }

  .card-context-menu.mobile-sheet .ctx-item {
    min-height: 48px;
    padding: 12px 14px;
    border-radius: 14px;
    font-size: 0.94rem;
  }

  .card-delete { background: rgba(239,68,68,0.1) !important; border-color: rgba(239,68,68,0.16) !important; }
  .card-hover-preview { display: none !important; }
  .card-wide .subs-preview-list,
  .card-wide .card-checklist-preview { grid-template-columns: 1fr !important; }
  .tracker-value-big,
  .counter-number { font-size: 2.4rem !important; }

  .mobile-bottom-nav {
    display: flex !important;
    position: fixed !important;
    left: 12px !important;
    right: 12px !important;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 10px) !important;
    height: 72px !important;
    padding: 8px !important;
    border-radius: 24px !important;
    background: rgba(12,12,18,0.92) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    box-shadow: 0 20px 50px rgba(0,0,0,0.45) !important;
    gap: 4px !important;
    z-index: 180 !important;
    transition: transform 0.24s ease, opacity 0.24s ease !important;
  }

  .mob-nav-btn { gap: 4px !important; padding: 8px 2px !important; border-radius: 18px !important; color: rgba(255,255,255,0.42) !important; font-size: 0.63rem !important; }
  .mob-nav-btn svg { width: 21px !important; height: 21px !important; }
  .mob-nav-btn.active { color: #f3efff !important; background: linear-gradient(180deg, rgba(139,92,246,0.24), rgba(139,92,246,0.08)); }
  .mob-nav-btn.active::after { bottom: 8px !important; width: 16px !important; background: var(--accent) !important; }
  .mob-nav-add { width: 56px !important; height: 56px !important; margin: 0 6px !important; border-radius: 20px !important; background: linear-gradient(180deg, #2ddb78, #1fcb68) !important; color: #09110d !important; box-shadow: 0 14px 32px rgba(45,219,120,0.32) !important; }
  .mob-nav-add svg { width: 24px !important; height: 24px !important; }

  body:has(.modal-overlay:not(.hidden)) .mobile-bottom-nav,
  body:has(.quick-add-panel:not(.hidden)) .mobile-bottom-nav,
  body:has(.sidebar-overlay.show) .mobile-bottom-nav,
  body:has(.notifications-drawer.open) .mobile-bottom-nav,
  body:has(.settings-page:not(.hidden)) .mobile-bottom-nav,
  body.nav-hidden .mobile-bottom-nav {
    display: flex !important;
    opacity: 0;
    pointer-events: none;
    transform: translateY(24px);
  }
}

@media (max-width: 400px) {
  .notifications-drawer {
    left: 10px !important;
    right: 10px !important;
    bottom: calc(env(safe-area-inset-bottom, 0px) + 10px) !important;
    height: min(72dvh, 520px) !important;
  }

  .mobile-bottom-nav { left: 10px !important; right: 10px !important; height: 68px !important; }
  .mob-nav-btn { font-size: 0.58rem !important; }
  .mob-nav-add { width: 50px !important; height: 50px !important; margin: 0 4px !important; }
}

@media (max-width: 768px) {
  .card,
  .card-compact,
  .card-wide,
  .card-tall,
  .card-auto-height {
    grid-template-columns: 36px minmax(0, 1fr) 44px !important;
    gap: 4px 8px !important;
    padding: 12px 12px 10px !important;
  }

  .card-icon,
  .card-compact .card-icon,
  .card-tall .card-icon {
    grid-column: 3 !important;
    grid-row: 1 / span 3 !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 14px !important;
    font-size: 0.98rem !important;
  }

  .card-type-badge {
    grid-column: 2 !important;
    grid-row: 1 !important;
    align-self: start;
    justify-self: start;
    margin: 1px 0 0 !important;
    font-size: 0.68rem !important;
  }

  .card-title,
  .card-compact .card-title,
  .card-tall .card-title {
    grid-column: 2 !important;
    grid-row: 2 !important;
    margin: 0 !important;
    font-size: 1.03rem !important;
    line-height: 1.24 !important;
    min-width: 0;
  }

  .card-meta,
  .card-compact .card-meta,
  .card-tall .card-meta {
    grid-column: 2 !important;
    grid-row: 3 !important;
    min-width: 0;
    font-size: 0.8rem !important;
    line-height: 1.5 !important;
  }

  .card[data-type="note"] .card-meta,
  .card[data-type="quicktext"] .card-meta,
  .card[data-type="markdown"] .card-meta {
    display: -webkit-box !important;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    overflow: hidden !important;
  }

  .card-tags-row {
    grid-column: 2 / 4 !important;
    grid-row: 4 !important;
    margin-top: 4px !important;
  }

  .card-actions,
  .card-compact .card-actions {
    grid-column: 1 !important;
    grid-row: 1 / span 3 !important;
    align-self: start !important;
    justify-self: start !important;
    width: auto !important;
    margin: 0 !important;
    padding: 0 !important;
  }

  .card-more-btn {
    min-width: 34px !important;
    min-height: 34px !important;
    border-radius: 11px !important;
    font-size: 0.92rem !important;
    background: rgba(255,255,255,0.06) !important;
    box-shadow: none !important;
  }

  .card-more-btn.active {
    background: rgba(255,255,255,0.12) !important;
    border-color: rgba(255,255,255,0.16) !important;
  }

  .reminder-done-row {
    grid-column: 2 / 4 !important;
    margin-top: 6px !important;
    padding-top: 0 !important;
    justify-content: flex-start !important;
  }

  .card-timestamp {
    grid-column: 2 / 4 !important;
    padding: 0 !important;
    margin-top: 8px !important;
    font-size: 0.68rem !important;
    text-align: right !important;
    color: rgba(255,255,255,0.24) !important;
  }

  .card.pinned-card::after,
  .card-hidden-all::after {
    display: none !important;
  }

  .card.pinned-card .card-type-badge::before {
    content: '📌 ';
    opacity: 0.9;
  }

  .docs-preview-compact {
    gap: 4px !important;
    margin-top: 2px !important;
    padding-top: 6px !important;
  }

  .docs-preview-compact .doc-summary-badge {
    font-size: 0.62rem !important;
    padding: 2px 7px !important;
    margin-bottom: 0 !important;
  }

  .docs-preview-compact .doc-item-preview {
    padding: 4px 0 !important;
    border-radius: 0 !important;
    background: none !important;
    border-bottom: 1px solid rgba(255,255,255,0.04) !important;
  }

  .docs-preview-compact .doc-item-preview:last-child {
    border-bottom: none !important;
  }

  .docs-preview-compact .doc-name {
    font-size: 0.74rem !important;
    font-weight: 600 !important;
  }

  .docs-preview-compact .doc-urgency {
    font-size: 0.58rem !important;
    padding: 1px 5px !important;
    border-radius: 999px !important;
  }

  .docs-preview-compact .doc-expiry-date {
    display: none !important;
  }

  .doc-item-more {
    justify-content: center !important;
    color: rgba(255,255,255,0.46) !important;
    font-size: 0.68rem !important;
    border-bottom: none !important;
  }

  .card-context-menu.mobile-sheet {
    padding: 10px 8px 8px !important;
  }

  .card-context-menu.mobile-sheet .ctx-sheet-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 2px 6px 10px;
  }

  .card-context-menu.mobile-sheet .ctx-sheet-title {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: rgba(255,255,255,0.8);
  }

  .card-context-menu.mobile-sheet .ctx-item {
    justify-content: space-between;
  }

  .dash-grid.compact-mode {
    gap: 10px !important;
  }

  .dash-grid.compact-mode .card,
  .dash-grid.compact-mode .card-compact,
  .dash-grid.compact-mode .card-wide,
  .dash-grid.compact-mode .card-tall,
  .dash-grid.compact-mode .card-auto-height {
    grid-template-columns: 30px minmax(0, 1fr) 38px !important;
    gap: 2px 7px !important;
    padding: 10px 10px 9px !important;
    border-radius: 16px !important;
  }

  .dash-grid.compact-mode .card-icon,
  .dash-grid.compact-mode .card-compact .card-icon,
  .dash-grid.compact-mode .card-tall .card-icon {
    width: 34px !important;
    height: 34px !important;
    border-radius: 12px !important;
    font-size: 0.9rem !important;
  }

  .dash-grid.compact-mode .card-type-badge {
    font-size: 0.6rem !important;
    opacity: 0.74 !important;
  }

  .dash-grid.compact-mode .card-title,
  .dash-grid.compact-mode .card-compact .card-title,
  .dash-grid.compact-mode .card-tall .card-title {
    font-size: 0.94rem !important;
    line-height: 1.16 !important;
  }

  .dash-grid.compact-mode .card-meta,
  .dash-grid.compact-mode .card-compact .card-meta,
  .dash-grid.compact-mode .card-tall .card-meta {
    font-size: 0.72rem !important;
    line-height: 1.3 !important;
  }

  .dash-grid.compact-mode .card[data-type="note"] .card-meta,
  .dash-grid.compact-mode .card[data-type="quicktext"] .card-meta,
  .dash-grid.compact-mode .card[data-type="markdown"] .card-meta {
    -webkit-line-clamp: 1;
  }

  .dash-grid.compact-mode .card-more-btn {
    min-width: 30px !important;
    min-height: 30px !important;
    border-radius: 10px !important;
    font-size: 0.82rem !important;
  }

  .dash-grid.compact-mode .card-tags-row,
  .dash-grid.compact-mode .card-timestamp {
    display: none !important;
  }

  .dash-grid.compact-mode .docs-preview-list {
    gap: 3px !important;
    margin-top: 1px !important;
    padding-top: 4px !important;
  }

  .dash-grid.compact-mode .doc-summary-badge {
    font-size: 0.58rem !important;
    padding: 1px 6px !important;
  }

  .dash-grid.compact-mode .doc-item-preview {
    padding: 3px 0 !important;
  }

  .dash-grid.compact-mode .doc-name {
    font-size: 0.7rem !important;
  }

  .dash-grid.compact-mode .doc-urgency {
    font-size: 0.54rem !important;
    padding: 1px 5px !important;
  }

  .dash-grid.compact-mode .doc-expiry-date {
    display: none !important;
  }

  .dash-grid.compact-mode .reminder-done-row {
    margin-top: 4px !important;
  }

  .dash-grid.compact-mode .tracker-value-big,
  .dash-grid.compact-mode .counter-number {
    font-size: 1.8rem !important;
  }
}

@media (max-width: 768px) {
  html,
  body {
    height: 100%;
    overflow: hidden !important;
  }

  #dashboard.dashboard.hidden {
    display: none !important;
  }

  #dashboard.dashboard:not(.hidden) {
    height: 100dvh !important;
    min-height: 100dvh !important;
    max-height: 100dvh !important;
    overflow: hidden !important;
    display: flex !important;
    flex-direction: column !important;
  }

  #dashboard.dashboard:not(.hidden) .dash-header {
    position: relative !important;
    flex: 0 0 auto !important;
    z-index: 185 !important;
  }

  #dashboard.dashboard:not(.hidden) .dash-body {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow: hidden !important;
    display: block !important;
  }

  #dashboard.dashboard:not(.hidden) .main-content {
    height: 100% !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain !important;
    padding-top: 10px !important;
    padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px)) !important;
  }

  #dashboard .main-content::-webkit-scrollbar,
  #page-view .page-content::-webkit-scrollbar {
    display: none;
  }

  #page-view.page-view {
    height: 100dvh !important;
    max-height: 100dvh !important;
    overflow: hidden !important;
  }

  #page-view .page-header {
    flex: 0 0 auto !important;
  }

  #page-view .page-content {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain !important;
    padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

@media (min-width: 769px) {
  .dash-grid {
    grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)) !important;
    grid-auto-flow: dense !important;
    grid-auto-rows: auto !important;
    align-items: start !important;
    align-content: start !important;
    gap: 18px !important;
  }

  .dash-grid.compact-mode {
    grid-template-columns: repeat(auto-fit, minmax(285px, 1fr)) !important;
    gap: 14px !important;
  }

  .dash-grid .card,
  .dash-grid .card-compact,
  .dash-grid .card-wide,
  .dash-grid .card-tall,
  .dash-grid .card-auto-height,
  .dash-grid .card-phantom {
    grid-column: span 1 !important;
    grid-row: span 1 !important;
  }

  .dash-grid .card,
  .dash-grid .card-compact,
  .dash-grid .card-wide,
  .dash-grid .card-tall,
  .dash-grid .card-auto-height {
    display: flex !important;
    flex-direction: column !important;
    gap: 6px !important;
    grid-column: span 1 !important;
    grid-row: span 1 !important;
    height: auto !important;
    min-height: 190px !important;
    max-height: none !important;
    padding: 18px 18px 20px !important;
    overflow: hidden !important;
    border-radius: 24px !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,0.028), rgba(255,255,255,0.012)),
      linear-gradient(135deg, rgba(var(--card-color,255,255,255),0.085), transparent 52%),
      rgba(12, 14, 22, 0.94) !important;
    border: 1px solid rgba(255,255,255,0.075) !important;
    box-shadow:
      0 18px 44px rgba(0,0,0,0.34),
      inset 0 1px 0 rgba(255,255,255,0.04) !important;
    text-align: right !important;
  }

  /* Phantom card fixed height */
  .dash-grid .card-phantom {
    height: 190px !important;
    min-height: 190px !important;
    max-height: 190px !important;
  }

  .dash-grid.compact-mode .card,
  .dash-grid.compact-mode .card-compact,
  .dash-grid.compact-mode .card-wide,
  .dash-grid.compact-mode .card-tall,
  .dash-grid.compact-mode .card-auto-height {
    min-height: 198px !important;
    padding: 18px 18px 16px !important;
    gap: 8px 14px !important;
    border-radius: 22px !important;
  }

  .dash-grid .card::before {
    background: radial-gradient(circle at top right, rgba(var(--card-color,255,255,255), 0.16), transparent 62%) !important;
    opacity: 0.34 !important;
  }

  .dash-grid .card:hover {
    transform: translateY(-3px) !important;
    border-color: rgba(var(--card-color,255,255,255), 0.18) !important;
    box-shadow:
      0 24px 56px rgba(0,0,0,0.4),
      0 0 0 1px rgba(var(--card-color,255,255,255),0.08),
      inset 0 1px 0 rgba(255,255,255,0.05) !important;
  }

  .dash-grid .bento-glow-bg {
    position: absolute;
    inset: auto auto -28% -18%;
    width: 180px;
    height: 180px;
    border-radius: 999px;
    opacity: 0.08;
    filter: blur(42px);
    pointer-events: none;
  }

  .dash-grid .card-type-badge {
    font-size: 0.68rem !important;
    letter-spacing: 0.08em;
    opacity: 0.78;
  }

  .dash-grid .card.pinned-card::after,
  .dash-grid .card-hidden-all::after {
    display: none !important;
  }

  .dash-grid .card.pinned-card .card-type-badge::before {
    content: '📌';
    opacity: 0.92;
  }

  .dash-grid .card-icon,
  .dash-grid .card-compact .card-icon,
  .dash-grid .card-tall .card-icon {
    width: 34px !important;
    height: 34px !important;
    border-radius: 10px !important;
    font-size: 1.1rem !important;
  }

  .dash-grid.compact-mode .card-icon,
  .dash-grid.compact-mode .card-compact .card-icon,
  .dash-grid.compact-mode .card-tall .card-icon {
    width: 52px !important;
    height: 52px !important;
    border-radius: 16px !important;
    font-size: 1.15rem !important;
  }

  .dash-grid .card-title,
  .dash-grid .card-compact .card-title,
  .dash-grid .card-tall .card-title {
    font-size: 1.05rem !important;
    line-height: 1.2 !important;
    font-weight: 700 !important;
  }

  .dash-grid.compact-mode .card-title,
  .dash-grid.compact-mode .card-compact .card-title,
  .dash-grid.compact-mode .card-tall .card-title {
    font-size: 1.08rem !important;
  }

  .dash-grid .card-meta,
  .dash-grid .card-compact .card-meta,
  .dash-grid .card-tall .card-meta {
    display: block !important;
    flex: none !important;
    min-width: 0;
    padding: 0 !important;
    overflow: visible !important;
    color: rgba(241, 245, 249, 0.72) !important;
    font-size: 0.88rem !important;
    line-height: 1.6 !important;
    width: 100% !important;
  }

  /* Text-heavy types: clamp long content so cards don't get excessively tall */
  .dash-grid .card[data-type="note"] .card-meta,
  .dash-grid .card[data-type="quicktext"] .card-meta,
  .dash-grid .card[data-type="markdown"] .card-meta,
  .dash-grid .card[data-type="command"] .card-meta {
    display: -webkit-box !important;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 7;
    overflow: hidden !important;
    max-height: none !important;
  }

  .dash-grid .card[data-type="tracker"],
  .dash-grid .card[data-type="counter"],
  .dash-grid .card[data-type="expense"] {
    text-align: right !important;
    justify-content: initial !important;
    align-items: stretch !important;
  }

  .dash-grid .card-tall .card-meta {
    display: flex !important;
    flex-direction: column;
    gap: 12px;
    justify-content: flex-start !important;
    width: 100%;
  }

  .dash-grid .tracker-value-big,
  .dash-grid .counter-number {
    font-size: 2.7rem !important;
    text-shadow: none !important;
  }

  .dash-grid.compact-mode .tracker-value-big,
  .dash-grid.compact-mode .counter-number {
    font-size: 2.1rem !important;
  }

  .dash-grid .counter-display {
    justify-content: flex-start !important;
    padding: 0 !important;
  }

  .dash-grid .tracker-controls {
    margin-top: auto;
    padding-top: 12px;
  }

  .dash-grid .card-checklist-preview,
  .dash-grid .card-wide .card-checklist-preview {
    display: flex !important;
    flex-direction: column;
    gap: 8px !important;
    width: 100%;
  }

  .dash-grid .preview-item {
    padding: 10px 12px;
    border-radius: 12px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.05);
  }

  .dash-grid .subs-preview-list,
  .dash-grid .card-wide .subs-preview-list {
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    width: 100%;
    margin-top: 8px !important;
    padding-top: 12px !important;
    border-top: 1px solid rgba(255,255,255,0.06) !important;
  }

  .dash-grid .sub-item-preview {
    padding: 12px 14px !important;
    border-radius: 16px !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    background: rgba(255,255,255,0.03) !important;
    gap: 12px !important;
  }

  .dash-grid .sub-preview-icon {
    width: 40px !important;
    height: 40px !important;
    border-radius: 12px !important;
    font-size: 1.05rem !important;
  }

  .dash-grid .sub-name {
    font-size: 0.95rem !important;
  }

  .dash-grid .sub-price {
    font-size: 0.84rem !important;
    color: #c4b5fd !important;
  }

  .dash-grid .sub-urgency {
    border-radius: 999px !important;
    padding: 3px 10px !important;
    font-size: 0.68rem !important;
    white-space: nowrap;
  }

  .dash-grid .docs-preview-list {
    gap: 10px !important;
    width: 100%;
    margin-top: 8px !important;
    padding-top: 12px !important;
    border-top: 1px solid rgba(255,255,255,0.06) !important;
  }

  .dash-grid .docs-preview-desktop .doc-summary-badge,
  .dash-grid .docs-preview-compact .doc-summary-badge {
    margin-bottom: 2px !important;
    border-radius: 999px !important;
  }

  .dash-grid .docs-preview-desktop .doc-item-preview,
  .dash-grid .docs-preview-compact .doc-item-preview {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 10px !important;
    padding: 12px 14px !important;
    border-radius: 16px !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    background: rgba(255,255,255,0.03) !important;
  }

  .dash-grid .docs-preview-desktop .doc-name,
  .dash-grid .docs-preview-compact .doc-name {
    flex: 1;
    min-width: 0;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    line-height: 1.35 !important;
  }

  .dash-grid .docs-preview-desktop .doc-item-right,
  .dash-grid .docs-preview-compact .doc-item-right {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    gap: 8px !important;
  }

  .dash-grid .docs-preview-desktop .doc-urgency,
  .dash-grid .docs-preview-compact .doc-urgency {
    font-size: 0.7rem !important;
    padding: 3px 10px !important;
    border-radius: 999px !important;
  }

  .dash-grid .docs-preview-desktop .doc-item-more,
  .dash-grid .docs-preview-compact .doc-item-more {
    justify-content: center !important;
    padding: 10px 14px !important;
    border-radius: 14px !important;
    border: 1px dashed rgba(255,255,255,0.08) !important;
    background: rgba(255,255,255,0.02) !important;
    color: rgba(255,255,255,0.48) !important;
  }

  .dash-grid .card-tags-row {
    gap: 6px !important;
    margin-top: 2px !important;
  }

  .dash-grid .card-tag {
    padding: 4px 10px !important;
    border-radius: 999px !important;
    background: rgba(255,255,255,0.045) !important;
  }

  .dash-grid .card-timestamp {
    align-self: end !important;
    padding: 0 !important;
    margin-top: auto !important;
    color: rgba(255,255,255,0.24) !important;
    text-align: right !important;
    font-size: 0.68rem !important;
  }

  .dash-grid .card-actions {
    position: absolute !important;
    top: 12px !important;
    left: 12px !important;
    right: auto !important;
    bottom: auto !important;
    display: flex !important;
    justify-content: flex-start !important;
    align-items: center;
    gap: 5px;
    padding: 5px 7px !important;
    border-radius: 12px !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    background: rgba(8, 10, 18, 0.88) !important;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: 0 4px 16px rgba(0,0,0,0.3);
    opacity: 0;
    transform: translateY(-4px) scale(0.96) !important;
    transform-origin: top left;
    pointer-events: none;
    z-index: 14;
  }

  .dash-grid .card:hover .card-actions,
  .dash-grid .card.card-expanded .card-actions {
    opacity: 1;
    transform: translateY(0) scale(1) !important;
    pointer-events: auto;
  }

  /* hide badge when actions are visible so they don't overlap */
  .dash-grid .card:hover .card-type-badge {
    opacity: 0 !important;
    pointer-events: none;
  }

  .dash-grid .card-actions button,
  .dash-grid .card-compact .card-actions button {
    opacity: 1 !important;
    background: rgba(255,255,255,0.05) !important;
    padding: 5px 9px !important;
    border-radius: 8px !important;
    white-space: nowrap;
    font-size: 0.78rem !important;
  }

  .dash-grid .card-phantom {
    min-height: 220px !important;
    border-radius: 24px !important;
    border: 1.5px dashed rgba(255,255,255,0.12) !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01)),
      rgba(12, 14, 22, 0.7) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.04) !important;
  }

  .dash-grid .card-phantom::before {
    display: none !important;
  }

  .dash-grid .phantom-inner {
    gap: 10px !important;
    color: rgba(255,255,255,0.36) !important;
  }

  .dash-grid .phantom-inner span {
    font-size: 0.92rem !important;
    font-weight: 700;
  }

  .dash-grid .card-phantom:hover {
    border-color: rgba(255,255,255,0.2) !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,0.028), rgba(255,255,255,0.015)),
      rgba(16, 18, 28, 0.82) !important;
  }
}

/* ─── REFERENCE-INSPIRED TECH SKIN ───────────────────────── */
:root {
  --bg: #050a12;
  --surface: #0b1119;
  --border: rgba(111, 142, 181, 0.09);
  --border2: rgba(141, 179, 225, 0.15);
  --accent: #59d8ff;
  --accent-rgb: 89, 216, 255;
  --accent2: #59d8ff;
  --accent3: #ff4faa;
  --text: #f4f7fb;
  --muted: #8b95a7;
  --c-link: 87, 198, 255;
  --c-note: 87, 180, 255;
  --c-checklist: 255, 176, 72;
  --c-page: 245, 88, 178;
  --c-server: 255, 101, 86;
  --c-command: 255, 78, 145;
  --c-quicktext: 255, 76, 112;
  --c-countdown: 255, 182, 76;
  --c-status: 90, 217, 255;
  --c-linkgroup: 94, 196, 255;
  --c-markdown: 213, 113, 255;
  --c-reminder: 255, 77, 95;
  --c-subscription: 255, 92, 143;
  --c-document: 255, 157, 73;
  --c-fields: 111, 171, 255;
  --c-tracker: 89, 214, 255;
  --c-wifi: 80, 225, 167;
  --c-counter: 255, 178, 59;
  --c-contact: 255, 112, 188;
  --c-expense: 80, 225, 167;
  --c-routine: 255, 92, 122;
}

html,
body {
  background-color: var(--bg) !important;
  background-image:
    radial-gradient(circle at 12% 100%, rgba(72, 180, 255, 0.14), transparent 24%),
    radial-gradient(circle at 100% 0%, rgba(255, 76, 165, 0.13), transparent 26%),
    linear-gradient(to right, rgba(108, 140, 180, 0.09) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(108, 140, 180, 0.09) 1px, transparent 1px) !important;
  background-size: auto, auto, 56px 56px, 56px 56px !important;
  background-position: center center !important;
}

.dashboard,
.login-screen {
  position: relative;
  isolation: isolate;
}


.login-screen {
  background:
    linear-gradient(180deg, rgba(5,10,18,0.9), rgba(5,10,18,0.98)) !important;
}

.login-box {
  background:
    linear-gradient(90deg, rgba(89,216,255,0.8), rgba(255,79,170,0.3)) top/100% 2px no-repeat,
    linear-gradient(180deg, rgba(255,255,255,0.024), rgba(255,255,255,0.01)),
    rgba(10, 14, 22, 0.94) !important;
  border-color: rgba(125, 164, 212, 0.12) !important;
  box-shadow:
    0 26px 70px rgba(0,0,0,0.62),
    inset 0 1px 0 rgba(255,255,255,0.05) !important;
}

@media (min-width: 769px) {
  .dashboard {
    background:
      linear-gradient(180deg, rgba(4,8,14,0.92), rgba(5,9,15,0.98)) !important;
  }

  .dash-header {
    height: 74px !important;
    min-height: 74px !important;
    background: rgba(5, 9, 15, 0.82) !important;
    border-bottom: 1px solid rgba(118, 149, 188, 0.12) !important;
    box-shadow: 0 14px 34px rgba(0,0,0,0.24);
    backdrop-filter: blur(20px) saturate(120%) !important;
  }

  .dash-header-right,
  .dash-header-left {
    gap: 10px !important;
  }

  .header-divider {
    background: rgba(118, 149, 188, 0.18) !important;
  }

  .header-section-label,
  .search-count,
  .toolbar-label,
  .tags-bar-label {
    font-family: var(--font-mono) !important;
    letter-spacing: 0.08em;
  }

  .header-section-label,
  .search-count {
    color: rgba(196, 208, 224, 0.72) !important;
    font-size: 0.72rem !important;
  }

  .header-clock {
    font-family: var(--font-mono) !important;
    font-size: 1.02rem !important;
    color: var(--text) !important;
    font-weight: 700 !important;
    letter-spacing: 0.4px !important;
  }

  .header-date {
    font-family: var(--font-ar) !important;
    font-size: 0.66rem !important;
    color: rgba(232, 238, 247, 0.5) !important;
    font-weight: 500 !important;
    letter-spacing: 0.02em;
  }

  .header-search-wrap {
    min-width: 260px !important;
    height: 40px !important;
    border-radius: 16px !important;
    background: rgba(10, 14, 22, 0.84) !important;
    border: 1px solid rgba(118, 149, 188, 0.12) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.03) !important;
  }

  .header-search-wrap:focus-within {
    border-color: rgba(89,216,255,0.24) !important;
    box-shadow:
      0 0 0 1px rgba(89,216,255,0.08),
      inset 0 1px 0 rgba(255,255,255,0.04) !important;
    background: rgba(8, 17, 28, 0.95) !important;
  }

  .header-search-input,
  .search-hist-item,
  .search-hist-clear {
    font-family: var(--font-mono) !important;
  }

  .header-icon-btn,
  .header-alert-badge {
    width: 38px !important;
    height: 38px !important;
    border-radius: 14px !important;
    background: rgba(255,255,255,0.02) !important;
    border: 1px solid rgba(118, 149, 188, 0.1) !important;
    color: rgba(188, 200, 217, 0.7) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.02);
  }

  .header-icon-btn:hover,
  .header-alert-badge:hover,
  .header-icon-btn.active {
    color: var(--text) !important;
    border-color: rgba(89,216,255,0.2) !important;
    background: rgba(11, 24, 36, 0.92) !important;
  }

  .header-time-pill {
    background:
      linear-gradient(135deg, rgba(89,216,255,0.06), rgba(255,255,255,0.02)) !important;
    border: 1px solid rgba(118, 149, 188, 0.14) !important;
    border-radius: 14px !important;
    padding: 7px 14px 7px 12px !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
  }
  .header-time-pill:hover {
    background:
      linear-gradient(135deg, rgba(89,216,255,0.10), rgba(255,255,255,0.04)) !important;
    border-color: rgba(89,216,255,0.25) !important;
  }
  .header-time-icon {
    color: var(--accent) !important;
  }

  .sidebar {
    background:
      linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01)),
      rgba(7, 11, 18, 0.92) !important;
    border-left: 1px solid rgba(118, 149, 188, 0.12) !important;
    box-shadow:
      inset 1px 0 0 rgba(255,255,255,0.03),
      18px 0 32px rgba(0,0,0,0.16) !important;
  }

  .sidebar-top,
  .sidebar-bottom {
    border-color: rgba(118, 149, 188, 0.1) !important;
  }

  .sidebar-nav,
  .sidebar-bottom,
  .sidebar-bottom-group {
    gap: 6px !important;
  }

  .sidebar-nav-btn,
  .sidebar-icon-btn,
  .toolbar-btn,
  .tag-filter-chip,
  .tag-filter-clear {
    background: rgba(255,255,255,0.018) !important;
    border: 1px solid rgba(118, 149, 188, 0.1) !important;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.025);
  }

  .sidebar-nav-btn,
  .sidebar-icon-btn {
    border-radius: 12px !important;
  }

  .sidebar-nav-btn.active,
  .sidebar-icon-btn.active,
  .toolbar-btn.active,
  .tag-filter-chip.active,
  .search-archive-toggle.active {
    border-color: rgba(89,216,255,0.22) !important;
    background: rgba(10, 33, 47, 0.7) !important;
    color: #75ddff !important;
    box-shadow: inset 0 0 0 1px rgba(89,216,255,0.05) !important;
  }

  .sidebar-nav-btn:hover,
  .sidebar-icon-btn:hover,
  .toolbar-btn:hover,
  .tag-filter-chip:hover,
  .tag-filter-clear:hover {
    border-color: rgba(118, 149, 188, 0.18) !important;
    background: rgba(255,255,255,0.04) !important;
  }

  .sidebar-stats {
    gap: 8px !important;
  }

  .sidebar-stat-row {
    border-radius: 14px !important;
    border: 1px solid rgba(118, 149, 188, 0.08);
    background: rgba(255,255,255,0.018) !important;
  }

  .sidebar-stat-label {
    color: rgba(196, 208, 224, 0.68) !important;
  }

  .sidebar-stat-val {
    font-family: var(--font-mono) !important;
    color: var(--text) !important;
  }

  .main-content {
    padding: 26px 30px 36px !important;
  }

  .cards-toolbar {
    padding: 0 2px 10px !important;
  }

  .toolbar-label,
  .tags-bar-label {
    color: rgba(190, 201, 218, 0.52) !important;
    text-transform: uppercase;
    font-size: 0.68rem !important;
  }

  .toolbar-btn,
  .tag-filter-chip,
  .tag-filter-clear {
    border-radius: 999px !important;
    min-height: 36px;
    padding-inline: 14px !important;
    color: rgba(191, 202, 219, 0.74) !important;
  }

  .dash-grid {
    gap: 20px !important;
  }

  .dash-grid .card,
  .dash-grid .card-compact,
  .dash-grid .card-wide,
  .dash-grid .card-tall,
  .dash-grid .card-auto-height {
    border-radius: 26px !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.008)),
      linear-gradient(180deg, rgba(10,14,22,0.98), rgba(8,12,18,0.97)) !important;
    border: 1px solid rgba(118, 149, 188, 0.11) !important;
    box-shadow:
      0 18px 40px rgba(0,0,0,0.34),
      inset 0 1px 0 rgba(255,255,255,0.04) !important;
  }

  .dash-grid .card::before {
    background:
      radial-gradient(circle at 78% 18%, rgba(var(--card-color), 0.12), transparent 24%),
      radial-gradient(circle at 14% 100%, rgba(var(--card-color), 0.07), transparent 20%) !important;
    opacity: 0.8 !important;
  }

  .dash-grid .card:hover {
    border-color: rgba(var(--card-color), 0.22) !important;
    box-shadow:
      0 22px 54px rgba(0,0,0,0.4),
      inset 0 1px 0 rgba(255,255,255,0.05),
      0 0 0 1px rgba(var(--card-color),0.08) !important;
  }

  .dash-grid .card-type-badge,
  .dash-grid .card-meta-mono,
  .dash-grid .card-word-count,
  .dash-grid .card-tag,
  .dash-grid .card-timestamp,
  .dash-grid .sub-price,
  .dash-grid .sub-urgency,
  .dash-grid .doc-urgency,
  .dash-grid .doc-expiry-date {
    font-family: var(--font-mono) !important;
  }

  .dash-grid .card-type-badge {
    color: rgba(var(--card-color), 0.92) !important;
    opacity: 0.84 !important;
    font-size: 0.66rem !important;
  }

  .dash-grid .card-icon,
  .dash-grid .card-compact .card-icon,
  .dash-grid .card-tall .card-icon {
    background:
      linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015)),
      rgba(11, 16, 24, 0.9) !important;
    border: 1px solid rgba(118, 149, 188, 0.12) !important;
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.04),
      0 10px 20px rgba(0,0,0,0.18) !important;
  }

  .dash-grid .card-title,
  .dash-grid .card-compact .card-title,
  .dash-grid .card-tall .card-title {
    font-size: 1.26rem !important;
    line-height: 1.14 !important;
  }

  .dash-grid .card-meta,
  .dash-grid .card-compact .card-meta,
  .dash-grid .card-tall .card-meta {
    padding-top: 14px !important;
    border-top: 1px solid rgba(118, 149, 188, 0.09) !important;
    color: rgba(215, 223, 235, 0.7) !important;
  }

  .dash-grid .card-word-count {
    color: rgba(198, 208, 221, 0.36) !important;
    border-color: rgba(118, 149, 188, 0.12) !important;
    border-radius: 999px !important;
    padding: 1px 8px !important;
    margin-right: 8px !important;
  }

  .dash-grid .preview-item,
  .dash-grid .sub-item-preview,
  .dash-grid .docs-preview-desktop .doc-item-preview,
  .dash-grid .docs-preview-compact .doc-item-preview {
    background:
      linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.012)) !important;
    border-color: rgba(118, 149, 188, 0.08) !important;
  }

  .dash-grid .sub-price {
    color: rgba(255,255,255,0.78) !important;
  }

  .dash-grid .sub-urgency,
  .dash-grid .doc-urgency,
  .dash-grid .doc-summary-badge {
    border-radius: 999px !important;
    letter-spacing: 0.04em;
  }

  .dash-grid .doc-expiry-date {
    color: rgba(186, 197, 212, 0.46) !important;
  }

  .dash-grid .card-tag {
    color: rgba(191, 202, 219, 0.74) !important;
    border-color: rgba(118, 149, 188, 0.1) !important;
    background: rgba(255,255,255,0.02) !important;
  }

  .dash-grid .card-actions {
    background: rgba(8, 13, 20, 0.88) !important;
    border-color: rgba(118, 149, 188, 0.12) !important;
  }

  .dash-grid .card-actions button,
  .dash-grid .card-compact .card-actions button {
    color: rgba(198, 207, 220, 0.76) !important;
    border: 1px solid rgba(118, 149, 188, 0.08) !important;
  }

.dash-grid .card-actions button:hover {
    color: var(--text) !important;
    border-color: rgba(var(--card-color), 0.16) !important;
    background: rgba(255,255,255,0.06) !important;
  }
}

/* ─── LINKS VIEW MODE ─────────────────────────────────────── */
@media (min-width: 769px) {
  .dashboard.filter-links .dash-grid {
    grid-template-columns: repeat(auto-fill, minmax(360px, 420px)) !important;
    justify-content: start !important;
    align-content: start !important;
    gap: 18px !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] {
    width: 100% !important;
    max-width: 420px !important;
    min-height: 136px !important;
    grid-template-columns: 56px minmax(0, 1fr) auto !important;
    grid-template-rows: auto auto !important;
    gap: 10px 16px !important;
    align-items: center !important;
    padding: 20px 22px !important;
    border-radius: 24px !important;
    background:
      linear-gradient(180deg, rgba(255,255,255,0.018), rgba(255,255,255,0.008)),
      rgba(9, 14, 22, 0.96) !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-type-badge {
    display: none !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-icon {
    grid-column: 1 !important;
    grid-row: 1 / span 2 !important;
    width: 56px !important;
    height: 56px !important;
    border-radius: 18px !important;
    font-size: 1.2rem !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-title {
    grid-column: 2 !important;
    grid-row: 1 !important;
    font-size: 1.06rem !important;
    line-height: 1.2 !important;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-meta {
    grid-column: 2 !important;
    grid-row: 2 !important;
    border-top: none !important;
    padding-top: 0 !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-meta-card {
    gap: 8px !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-domain-chip {
    background: rgba(11, 26, 34, 0.95) !important;
    border-color: rgba(89,216,255,0.14) !important;
    color: #79ddff !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-meta-row {
    min-width: 0;
    gap: 10px !important;
    padding: 12px 14px;
    border-radius: 14px;
    border: 1px solid rgba(118, 149, 188, 0.08);
    background: rgba(255,255,255,0.024);
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-favicon {
    width: 18px !important;
    height: 18px !important;
    border-radius: 4px !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-url-text {
    font-family: var(--font-mono) !important;
    font-size: 0.78rem !important;
    color: rgba(191, 202, 219, 0.66) !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-actions {
    grid-column: 3 !important;
    grid-row: 1 / span 2 !important;
    position: static !important;
    opacity: 1 !important;
    transform: none !important;
    pointer-events: auto !important;
    padding: 0 !important;
    background: none !important;
    border: none !important;
    box-shadow: none !important;
    justify-self: end;
    align-self: center;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-actions button {
    opacity: 0.9 !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-tags-row,
  .dashboard.filter-links .dash-grid .card[data-type="link"] .card-timestamp {
    display: none !important;
  }
}

@media (max-width: 768px) {
  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-domain-chip {
    font-size: 0.62rem !important;
    padding: 3px 8px !important;
  }

  .dashboard.filter-links .dash-grid .card[data-type="link"] .link-meta-row {
    padding: 8px 10px;
    border-radius: 12px;
    border: 1px solid rgba(118, 149, 188, 0.08);
    background: rgba(255,255,255,0.02);
  }
}

/* ─── LOGIN / AUTH VISUAL UNIFICATION ────────────────────── */
.login-screen.hidden {
  display: none !important;
}

.login-screen {
  display: grid !important;
  place-items: center !important;
  align-content: center !important;
  justify-content: center !important;
  width: 100% !important;
  height: 100dvh !important;
  min-height: 100dvh !important;
  padding: 24px;
  overflow: auto !important;
}

.login-grid,
.login-noise {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.login-grid {
  background-image:
    linear-gradient(to right, rgba(108, 140, 180, 0.1) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(108, 140, 180, 0.1) 1px, transparent 1px);
  background-size: 56px 56px;
  opacity: 0.22;
  mask-image: linear-gradient(180deg, rgba(0,0,0,0.34), rgba(0,0,0,0.78));
}

.login-noise {
  opacity: 0.05;
  background-image:
    radial-gradient(circle at 20% 20%, rgba(255,255,255,0.8) 0 0.6px, transparent 0.8px),
    radial-gradient(circle at 80% 30%, rgba(255,255,255,0.6) 0 0.7px, transparent 0.9px),
    radial-gradient(circle at 35% 75%, rgba(255,255,255,0.5) 0 0.6px, transparent 0.8px);
  background-size: 160px 160px, 220px 220px, 190px 190px;
}

.login-box {
  width: min(100%, 460px) !important;
  margin: auto !important;
  gap: 16px !important;
  padding: 28px 28px 24px !important;
  border-radius: 28px !important;
  overflow: hidden;
}

.login-box::before {
  content: '';
  position: absolute;
  top: 88px;
  left: 0;
  right: 0;
  height: 1px;
  background: rgba(118, 149, 188, 0.09);
  pointer-events: none;
}

.login-box::after {
  content: '';
  position: absolute;
  width: 220px;
  height: 220px;
  left: -80px;
  bottom: -110px;
  border-radius: 999px;
  background: radial-gradient(circle, rgba(89,216,255,0.22), transparent 70%);
  filter: blur(38px);
  pointer-events: none;
}

.login-logo {
  font-size: clamp(2.5rem, 5vw, 3.2rem) !important;
  margin-bottom: 2px;
}

#request-access-wrap,
#waiting-approval {
  width: min(100%, 360px);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
  padding: 18px;
  border-radius: 22px;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.018), rgba(255,255,255,0.008)),
    rgba(6, 12, 20, 0.72);
  border: 1px solid rgba(118, 149, 188, 0.1);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}

.login-sub,
.pin-or-divider {
  font-family: var(--font-mono) !important;
  font-size: 0.74rem !important;
  letter-spacing: 0.08em;
  color: rgba(191, 202, 219, 0.62) !important;
  text-align: center;
}

.pin-or-divider {
  margin: 0 !important;
}

.device-name-input {
  min-height: 56px;
  margin-bottom: 0 !important;
  border-radius: 18px !important;
  background: rgba(4, 10, 18, 0.78) !important;
  border: 1px solid rgba(118, 149, 188, 0.12) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
  font-family: var(--font-mono) !important;
  font-size: 0.95rem !important;
  letter-spacing: 0.02em;
}

.device-name-input:focus {
  border-color: rgba(89,216,255,0.28) !important;
  box-shadow:
    0 0 0 3px rgba(89,216,255,0.07),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}

.biometric-btn,
.request-access-btn {
  width: min(100%, 360px);
  min-height: 56px;
  justify-content: center;
  gap: 10px;
  margin: 0 auto;
  padding: 0 24px !important;
  border-radius: 18px !important;
  border: 1px solid rgba(103, 215, 255, 0.22) !important;
  background: linear-gradient(180deg, #77e0ff 0%, #58d7ff 100%) !important;
  color: #03111b !important;
  box-shadow:
    0 12px 30px rgba(43, 145, 255, 0.24),
    inset 0 1px 0 rgba(255,255,255,0.34) !important;
  font-family: var(--font-ar) !important;
  font-size: 1rem !important;
  font-weight: 800 !important;
}

.biometric-btn:hover,
.request-access-btn:hover {
  transform: translateY(-2px) !important;
  opacity: 1 !important;
  box-shadow:
    0 16px 38px rgba(43, 145, 255, 0.3),
    inset 0 1px 0 rgba(255,255,255,0.34) !important;
}

.pin-fallback-link {
  width: fit-content;
  padding: 0 0 2px !important;
  margin-top: 2px !important;
  border-radius: 0 !important;
  color: rgba(191, 202, 219, 0.66) !important;
  font-family: var(--font-mono) !important;
  font-size: 0.74rem !important;
  letter-spacing: 0.04em;
  text-decoration: none !important;
  border-bottom: 1px dashed rgba(118, 149, 188, 0.34);
}

.pin-fallback-link:hover {
  color: var(--text) !important;
  border-bottom-color: rgba(89,216,255,0.42);
}

#waiting-approval {
  align-items: center;
  text-align: center;
}

.approval-waiting-icon {
  width: 80px !important;
  height: 80px !important;
  border-radius: 24px !important;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.025), rgba(255,255,255,0.01)),
    rgba(7, 18, 29, 0.95) !important;
  border: 1px solid rgba(118, 149, 188, 0.14) !important;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.04),
    0 14px 28px rgba(0,0,0,0.22) !important;
  color: var(--accent) !important;
}

.approval-waiting-title {
  font-size: 1.08rem !important;
  font-weight: 800 !important;
}

.approval-waiting-sub {
  font-size: 0.8rem !important;
  line-height: 1.7;
  color: rgba(191, 202, 219, 0.62) !important;
}

.approval-dots {
  gap: 8px !important;
  margin: 2px 0 4px !important;
}

.approval-dots span {
  width: 8px !important;
  height: 8px !important;
  background: linear-gradient(180deg, #77e0ff, #58d7ff) !important;
  box-shadow: 0 0 12px rgba(89,216,255,0.34);
}

.approval-popup-inner {
  background:
    linear-gradient(90deg, rgba(89,216,255,0.8), rgba(255,79,170,0.24)) top/100% 2px no-repeat,
    linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.008)),
    rgba(10, 14, 22, 0.96) !important;
  border-color: rgba(118, 149, 188, 0.12) !important;
  box-shadow:
    0 26px 60px rgba(0,0,0,0.56),
    inset 0 1px 0 rgba(255,255,255,0.04) !important;
}

.approval-popup-device {
  font-family: var(--font-mono) !important;
  border-radius: 14px !important;
}

@media (max-width: 768px) {
  .login-screen {
    padding: 18px 16px;
  }

  .login-box {
    width: 100% !important;
    max-width: 380px;
    padding: 24px 18px 18px !important;
    border-radius: 24px !important;
  }

  .login-box::before {
    top: 78px;
  }

  #request-access-wrap,
  #waiting-approval,
  .biometric-btn,
  .request-access-btn {
    width: 100% !important;
  }

  #request-access-wrap,
  #waiting-approval {
    padding: 16px;
    border-radius: 18px;
  }

  .device-name-input,
  .biometric-btn,
  .request-access-btn {
    min-height: 54px;
  }

  .login-sub,
  .pin-or-divider,
  .pin-fallback-link {
    font-size: 0.72rem !important;
  }
}

/* ─── CARD SHELL SYSTEM ───────────────────────────────────── */
.dash-grid .card,
#page-grid .card {
  height: 320px !important;
  min-height: 320px !important;
  padding: 18px !important;
  display: block !important;
}

.dash-grid .card.card-tall,
#page-grid .card.card-tall {
  height: 320px !important;
  min-height: 320px !important;
}

.dash-grid .card.card-wide,
#page-grid .card.card-wide {
  height: 320px !important;
  min-height: 320px !important;
}

.dash-grid .card-shell,
#page-grid .card-shell {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  gap: 10px;
}

.dash-grid .card-header,
#page-grid .card-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  min-height: 40px;
}

.dash-grid .card-header .card-type-badge,
#page-grid .card-header .card-type-badge {
  position: static !important;
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0;
  margin: 0;
}

.dash-grid .card-header .card-icon,
#page-grid .card-header .card-icon {
  flex-shrink: 0;
  width: 42px;
  height: 42px;
  border-radius: 14px;
}

.dash-grid .card-body,
#page-grid .card-body {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 10px;
  padding: 4px 0 0;
  overflow: visible;
  clip-path: inset(-40px -20px 0 -20px);
}

.dash-grid .card-title,
.dash-grid .card-compact .card-title,
.dash-grid .card-tall .card-title,
#page-grid .card-title {
  display: -webkit-box !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: visible !important;
  text-overflow: ellipsis;
  line-height: 1.5 !important;
  min-height: 0;
  padding: 6px 0 4px !important;
  margin: 0 !important;
  color: #f5f7fb !important;
  font-weight: 700 !important;
  letter-spacing: 0.01em;
}

.dash-grid .card-meta,
.dash-grid .card-compact .card-meta,
.dash-grid .card-tall .card-meta,
#page-grid .card-meta {
  flex: 1 1 auto !important;
  min-height: 0;
  display: block !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  scrollbar-width: none !important;
  line-height: 1.65 !important;
  padding: 0 !important;
  margin: 0 !important;
  color: rgba(225, 232, 243, 0.82) !important;
  font-size: 0.82rem !important;
}

.dash-grid .card-meta::-webkit-scrollbar,
#page-grid .card-meta::-webkit-scrollbar {
  display: none !important;
}

/* Text cards: clamp to avoid wall of text */
.dash-grid .card[data-type="note"] .card-meta,
.dash-grid .card[data-type="quicktext"] .card-meta,
.dash-grid .card[data-type="markdown"] .card-meta,
.dash-grid .card[data-type="command"] .card-meta,
#page-grid .card[data-type="note"] .card-meta,
#page-grid .card[data-type="quicktext"] .card-meta,
#page-grid .card[data-type="markdown"] .card-meta,
#page-grid .card[data-type="command"] .card-meta {
  display: -webkit-box !important;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
  overflow: hidden !important;
}

/* ── Note paper texture: subtle ruled lines + warm paper hue (respects dark theme) ── */
.card[data-type="note"] .card-meta {
  position: relative;
}
.card[data-type="note"] .card-meta::before {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: repeating-linear-gradient(
    to bottom,
    transparent 0,
    transparent 23px,
    rgba(255, 206, 145, 0.045) 23px,
    rgba(255, 206, 145, 0.045) 24px
  );
  border-radius: inherit;
  opacity: 0.9;
}
.card[data-type="note"]::after {
  /* Faint left margin line like a real notebook */
  content: '';
  position: absolute;
  top: 56px; bottom: 16px;
  inset-inline-start: 22px;
  width: 1px;
  background: linear-gradient(to bottom, transparent, rgba(239, 68, 68, 0.22), transparent);
  pointer-events: none;
  opacity: 0.6;
}

.dash-grid .card-footer,
#page-grid .card-footer {
  margin-top: auto;
  padding-top: 10px;
  border-top: 1px solid rgba(255,255,255,0.05);
  min-height: 50px;
  display: flex;
  align-items: stretch;
}

.dash-grid .card-footer-main,
#page-grid .card-footer-main {
  width: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: 10px;
}

.dash-grid .card-footer-meta,
#page-grid .card-footer-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  min-height: 24px;
}

.dash-grid .card-footer-meta-empty,
#page-grid .card-footer-meta-empty {
  min-height: 24px;
}

.dash-grid .card-footer-chip,
#page-grid .card-footer-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 22px;
  max-width: 100%;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(255,255,255,0.035);
  border: 1px solid rgba(255,255,255,0.06);
  color: rgba(229, 234, 243, 0.68);
  font-size: 0.68rem;
  font-weight: 700;
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.dash-grid .card-footer-bottom,
#page-grid .card-footer-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.dash-grid .card-footer-action,
#page-grid .card-footer-action {
  display: flex;
  align-items: center;
}

.dash-grid .card-timestamp,
#page-grid .card-timestamp {
  padding: 0 !important;
  margin: 0 !important;
  color: rgba(255,255,255,0.34) !important;
  font-size: 0.68rem !important;
  flex-shrink: 0;
}

.dash-grid .card-actions,
.dash-grid .card-compact .card-actions,
#page-grid .card-actions {
  position: absolute !important;
  left: 10px !important;
  right: auto !important;
  bottom: auto !important;
  top: 10px !important;
  padding: 0 !important;
  background: none !important;
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
}

.dash-grid .card:hover .card-actions,
.dash-grid .card.card-expanded .card-actions,
#page-grid .card:hover .card-actions {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.dash-grid .card-actions button,
.dash-grid .card-compact .card-actions button,
#page-grid .card-actions button {
  min-width: 30px;
  min-height: 30px;
  padding: 0 10px !important;
}

.dash-grid .reminder-done-row,
.dash-grid .card-tags-row,
#page-grid .reminder-done-row,
#page-grid .card-tags-row {
  display: none !important;
}

.dash-grid .card[data-type="document"] .card-meta,
.dash-grid .card[data-type="subscription"] .card-meta,
.dash-grid .card[data-type="routine"] .card-meta,
#page-grid .card[data-type="document"] .card-meta,
#page-grid .card[data-type="subscription"] .card-meta,
#page-grid .card[data-type="routine"] .card-meta {
  -webkit-line-clamp: unset;
  display: block;
}

.dash-grid .card[data-type="document"] .card-body,
.dash-grid .card[data-type="subscription"] .card-body,
.dash-grid .card[data-type="routine"] .card-body,
.dash-grid .card[data-type="checklist"] .card-body,
#page-grid .card[data-type="document"] .card-body,
#page-grid .card[data-type="subscription"] .card-body,
#page-grid .card[data-type="routine"] .card-body,
#page-grid .card[data-type="checklist"] .card-body {
  gap: 14px;
}

/* Reminder cards should stay aligned with the normal desktop grid height,
   so compact the inner layout instead of enlarging the whole card. */
.dash-grid .card[data-type="reminder"],
#page-grid .card[data-type="reminder"] {
  height: 320px !important;
  min-height: 320px !important;
}

.dash-grid .card[data-type="reminder"] .card-body,
#page-grid .card[data-type="reminder"] .card-body {
  gap: 8px !important;
}

.dash-grid .card[data-type="reminder"] .card-title,
#page-grid .card[data-type="reminder"] .card-title {
  padding: 2px 0 !important;
  line-height: 1.35 !important;
}

.dash-grid .card[data-type="reminder"] .reminder-card-body,
#page-grid .card[data-type="reminder"] .reminder-card-body {
  gap: 6px;
  padding-top: 0;
}

.dash-grid .card[data-type="reminder"] .reminder-countdown,
#page-grid .card[data-type="reminder"] .reminder-countdown {
  padding: 10px 10px 8px;
  margin-bottom: 0;
}

.dash-grid .card[data-type="reminder"] .reminder-countdown .rc-big,
#page-grid .card[data-type="reminder"] .reminder-countdown .rc-big {
  font-size: 1.95rem;
}

.dash-grid .card[data-type="reminder"] .reminder-countdown .rc-lbl,
#page-grid .card[data-type="reminder"] .reminder-countdown .rc-lbl {
  font-size: 0.68rem;
}

.dash-grid .card[data-type="reminder"] .reminder-date-row,
#page-grid .card[data-type="reminder"] .reminder-date-row {
  padding: 5px 10px;
  font-size: 0.76rem;
}

.dash-grid .card[data-type="reminder"] .reminder-badges-row,
#page-grid .card[data-type="reminder"] .reminder-badges-row {
  gap: 3px;
}

.dash-grid .card[data-type="reminder"] .reminder-details-preview,
#page-grid .card[data-type="reminder"] .reminder-details-preview {
  display: none !important;
}

.dash-grid .card[data-type="reminder"] .card-footer,
#page-grid .card[data-type="reminder"] .card-footer {
  min-height: 42px;
  padding-top: 8px;
}

.dash-grid .card[data-type="reminder"] .card-footer-main,
#page-grid .card[data-type="reminder"] .card-footer-main {
  justify-content: flex-end;
  gap: 6px;
}

.dash-grid .card[data-type="reminder"] .card-footer-meta,
#page-grid .card[data-type="reminder"] .card-footer-meta {
  gap: 5px;
}

.dash-grid .card[data-type="reminder"] .card-footer-bottom,
#page-grid .card[data-type="reminder"] .card-footer-bottom {
  min-height: 34px;
}

.dash-grid .card[data-type="reminder"] .card-footer-chip,
#page-grid .card[data-type="reminder"] .card-footer-chip {
  padding: 3px 8px;
  font-size: 0.66rem;
}

.dash-grid .card[data-type="reminder"] .card-done-btn,
.dash-grid .card[data-type="reminder"] .card-undone-btn,
#page-grid .card[data-type="reminder"] .card-done-btn,
#page-grid .card[data-type="reminder"] .card-undone-btn {
  padding: 4px 12px;
}

.dash-grid .card[data-type="reminder"] .card-actions,
#page-grid .card[data-type="reminder"] .card-actions {
  position: absolute !important;
  top: 10px !important;
  left: 10px !important;
  right: auto !important;
  bottom: auto !important;
  z-index: 12 !important;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
  transform: none !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
  padding: 0 !important;
  pointer-events: none;
}
.dash-grid .card[data-type="reminder"]:hover .card-actions,
.dash-grid .card[data-type="reminder"].card-expanded .card-actions,
#page-grid .card[data-type="reminder"]:hover .card-actions {
  opacity: 1;
  pointer-events: auto;
}
.dash-grid .card[data-type="reminder"] .card-actions .card-more-btn,
.dash-grid .card[data-type="reminder"] .card-actions .card-move-btn,
#page-grid .card[data-type="reminder"] .card-actions .card-more-btn,
#page-grid .card[data-type="reminder"] .card-actions .card-move-btn {
  letter-spacing: 0;
}

.dash-grid .card[data-type="reminder"] .card-actions button,
#page-grid .card[data-type="reminder"] .card-actions button {
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  border-radius: 10px !important;
}

.dash-grid .card[data-type="document"] .card-meta > *,
.dash-grid .card[data-type="subscription"] .card-meta > *,
.dash-grid .card[data-type="routine"] .card-meta > *,
#page-grid .card[data-type="document"] .card-meta > *,
#page-grid .card[data-type="subscription"] .card-meta > *,
#page-grid .card[data-type="routine"] .card-meta > * {
  max-height: 100%;
}

.dash-grid .card .card-checklist-preview,
.dash-grid .card .subs-preview-list,
.dash-grid .card .link-meta-card,
.dash-grid .card .contact-meta,
.dash-grid .card .expense-summary-meta,
.dash-grid .card .code-preview-wrap,
#page-grid .card .card-checklist-preview,
#page-grid .card .subs-preview-list,
#page-grid .card .link-meta-card,
#page-grid .card .contact-meta,
#page-grid .card .expense-summary-meta,
#page-grid .card .code-preview-wrap {
  background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015));
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 14px;
  padding: 12px 12px 10px;
}

.dash-grid .card .tracker-value-big,
.dash-grid .card .counter-number,
#page-grid .card .tracker-value-big,
#page-grid .card .counter-number {
  text-shadow: 0 0 20px rgba(var(--card-color,255,255,255),0.24);
}

.dash-grid .card .sub-name,
.dash-grid .card .contact-phone-meta,
.dash-grid .card .contact-email-meta,
#page-grid .card .sub-name,
#page-grid .card .contact-phone-meta,
#page-grid .card .contact-email-meta {
  color: #f1f5fb;
}

.dash-grid .card .link-url-text,
.dash-grid .card .card-meta-mono,
#page-grid .card .link-url-text,
#page-grid .card .card-meta-mono {
  color: rgba(214, 223, 238, 0.8);
}

.dash-grid .card-phantom,
#page-grid .card-phantom {
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.dash-grid .card-phantom .phantom-inner,
#page-grid .card-phantom .phantom-inner {
  width: 100%;
  height: 100%;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 12px !important;
  margin: 0 auto;
}

.header-date,
.header-section-label,
.header-search-input,
.modal-input,
.card-title,
.card-meta {
  font-family: var(--font-ar) !important;
}

.header-date {
  font-weight: 500 !important;
  font-size: 0.66rem !important;
  letter-spacing: 0.02em !important;
  color: rgba(232, 238, 247, 0.5) !important;
}

/* ── Subscription & Document scroll-snap ────────────────────── */
/* card-meta becomes flex column so inner list can fill it */
.dash-grid .card[data-type="subscription"] .card-meta,
.dash-grid .card[data-type="document"] .card-meta,
#page-grid .card[data-type="subscription"] .card-meta,
#page-grid .card[data-type="document"] .card-meta {
  display: flex !important;
  flex-direction: column !important;
  overflow: hidden !important;
  padding: 0 !important;
}

/* the list = the scroll-snap container, fills all available meta space */
.dash-grid .card .subs-preview-list,
#page-grid .card .subs-preview-list {
  flex: 0 0 auto !important;
  height: 120px !important;
  min-height: 120px !important;
  max-height: 120px !important;
  /* reset conflicting styles */
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
  padding: 4px 0 !important;
  margin: 0 !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 12px !important;
  background: rgba(255,255,255,0.03) !important;
  /* scroll-snap */
  overflow-y: scroll !important;
  overflow-x: hidden !important;
  scroll-snap-type: y mandatory !important;
  scroll-padding-top: 0px !important;
  scrollbar-width: none !important;
  -webkit-overflow-scrolling: touch !important;
}

.dash-grid .card .subs-preview-list::-webkit-scrollbar,
#page-grid .card .subs-preview-list::-webkit-scrollbar {
  display: none !important;
}

/* each item = fixed height, snaps to start */
.dash-grid .card .sub-item-preview,
#page-grid .card .sub-item-preview {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 10px !important;
  flex-shrink: 0 !important;
  height: 56px !important;
  min-height: 56px !important;
  max-height: 56px !important;
  padding: 0 12px !important;
  border-radius: 0 !important;
  background: none !important;
  border: none !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
  scroll-snap-align: start !important;
  scroll-snap-stop: always !important;
}

.dash-grid .card .sub-item-preview:first-child,
#page-grid .card .sub-item-preview:first-child {
  border-radius: 10px 10px 0 0 !important;
}

.dash-grid .card .sub-item-preview:last-child,
#page-grid .card .sub-item-preview:last-child {
  border-radius: 0 0 10px 10px !important;
}

.dash-grid .card .sub-item-preview:only-child,
#page-grid .card .sub-item-preview:only-child {
  border-radius: 10px !important;
}

.dash-grid .card .sub-item-preview:last-child,
#page-grid .card .sub-item-preview:last-child {
  border-bottom: none !important;
}

.dash-grid .card .sub-preview-icon,
#page-grid .card .sub-preview-icon {
  width: 28px !important;
  height: 28px !important;
  font-size: 1rem !important;
  flex-shrink: 0 !important;
}

.dash-grid .card .sub-item-preview-content,
#page-grid .card .sub-item-preview-content {
  flex: 1 !important;
  min-width: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 2px !important;
}

.dash-grid .card .sub-name,
#page-grid .card .sub-name {
  font-size: 0.84rem !important;
  font-weight: 700 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
}

.dash-grid .card .sub-price,
#page-grid .card .sub-price {
  font-size: 0.74rem !important;
  white-space: nowrap !important;
}

.dash-grid .card .sub-urgency,
#page-grid .card .sub-urgency {
  font-size: 0.66rem !important;
  padding: 2px 7px !important;
  flex-shrink: 0 !important;
  white-space: nowrap !important;
}

/* ── Document scroll-snap ────────────────────────────────────── */
/* Document list scroll-snap container */
.dash-grid .card .docs-preview-list,
.dash-grid .card .docs-preview-desktop,
.dash-grid .card .docs-preview-compact,
#page-grid .card .docs-preview-list,
#page-grid .card .docs-preview-desktop,
#page-grid .card .docs-preview-compact {
  flex: 0 0 auto !important;
  height: 120px !important;
  min-height: 120px !important;
  max-height: 120px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0 !important;
  padding: 4px 0 !important;
  margin: 0 !important;
  border: 1px solid rgba(255,255,255,0.06) !important;
  border-radius: 12px !important;
  background: rgba(255,255,255,0.03) !important;
  overflow-y: scroll !important;
  overflow-x: hidden !important;
  scroll-snap-type: y mandatory !important;
  scroll-padding-top: 4px !important;
  scrollbar-width: none !important;
  -webkit-overflow-scrolling: touch !important;
}

.dash-grid .card .docs-preview-list::-webkit-scrollbar,
.dash-grid .card .docs-preview-desktop::-webkit-scrollbar,
.dash-grid .card .docs-preview-compact::-webkit-scrollbar,
#page-grid .card .docs-preview-list::-webkit-scrollbar {
  display: none !important;
}

/* each doc item = fixed height, snaps to start */
.dash-grid .card .doc-item-preview,
#page-grid .card .doc-item-preview {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  justify-content: space-between !important;
  gap: 8px !important;
  flex-shrink: 0 !important;
  height: 56px !important;
  min-height: 56px !important;
  max-height: 56px !important;
  padding: 0 12px !important;
  border-radius: 0 !important;
  background: none !important;
  border: none !important;
  border-bottom: 1px solid rgba(255,255,255,0.04) !important;
  scroll-snap-align: start !important;
  scroll-snap-stop: always !important;
}

.dash-grid .card .doc-item-preview:first-child,
#page-grid .card .doc-item-preview:first-child {
  border-radius: 10px 10px 0 0 !important;
}

.dash-grid .card .doc-item-preview:last-child,
#page-grid .card .doc-item-preview:last-child {
  border-radius: 0 0 10px 10px !important;
  border-bottom: none !important;
}

.dash-grid .card .doc-item-preview:only-child,
#page-grid .card .doc-item-preview:only-child {
  border-radius: 10px !important;
}

.dash-grid .card .doc-name,
#page-grid .card .doc-name {
  font-size: 0.84rem !important;
  font-weight: 700 !important;
  white-space: nowrap !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  flex: 1 !important;
  min-width: 0 !important;
}

.dash-grid .card .doc-item-right,
#page-grid .card .doc-item-right {
  display: flex !important;
  align-items: center !important;
  gap: 6px !important;
  flex-shrink: 0 !important;
}

.dash-grid .card .doc-urgency,
#page-grid .card .doc-urgency {
  font-size: 0.66rem !important;
  padding: 2px 7px !important;
  white-space: nowrap !important;
}

/* ═══════════════════════════════════════════════════════════
   ─── SMART RADAR BAR ──────────────────────────────────────
   ═══════════════════════════════════════════════════════════ */
.smart-radar {
  display: flex;
  align-items: center;
  gap: 0;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 16px;
  padding: 12px 18px;
  margin: 0 0 14px;
  backdrop-filter: blur(16px);
  -webkit-backdrop-filter: blur(16px);
  animation: radarIn 0.4s cubic-bezier(0.16,1,0.3,1) both;
  overflow: hidden;
  position: relative;
}
.smart-radar::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg,
    rgba(99,102,241,0.05) 0%,
    transparent 50%,
    rgba(245,158,11,0.04) 100%);
  pointer-events: none;
}
@keyframes radarIn {
  from { opacity: 0; transform: translateY(-8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.sr-tile {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  padding: 2px 14px;
  min-width: 0;
  cursor: default;
  transition: background 0.2s;
  border-radius: 10px;
}
.sr-tile:hover { background: rgba(255,255,255,0.04); }
.sr-icon {
  font-size: 1.4rem;
  line-height: 1;
  flex-shrink: 0;
  filter: drop-shadow(0 0 6px rgba(255,255,255,0.15));
}
.sr-content {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.sr-value {
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--text);
  font-family: var(--font-mono);
  letter-spacing: -0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  transition: color 0.35s;
}
.sr-label {
  font-size: 0.68rem;
  color: rgba(200,210,240,0.45);
  font-family: var(--font-ar);
  white-space: nowrap;
}
.sr-sep {
  width: 1px;
  height: 30px;
  background: rgba(255,255,255,0.06);
  flex-shrink: 0;
}
.sr-value.sr-danger { color: #f87171; }
.sr-value.sr-warn   { color: #fbbf24; }
.sr-value.sr-ok     { color: #4ade80; }

/* Hide tiles + separators with no data */
#smart-radar .sr-tile.sr-hidden,
#smart-radar .sr-sep.sr-hidden { display: none !important; }

.sr-future-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 14px;
  border-radius: 10px;
  background: rgba(99,102,241,0.12);
  border: 1px solid rgba(99,102,241,0.25);
  color: rgba(180,185,250,0.9);
  font-size: 0.78rem;
  font-family: var(--font-ar);
  cursor: pointer;
  transition: all 0.2s;
  white-space: nowrap;
  flex-shrink: 0;
  margin-inline-start: auto;
}
.sr-future-btn:hover {
  background: rgba(99,102,241,0.22);
  color: #c7d2fe;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(99,102,241,0.2);
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.sr-value.animating { animation: countUp 0.35s cubic-bezier(0.16,1,0.3,1) both; }


/* ═══════════════════════════════════════════════════════════
   ─── FUTURE PANEL MODAL ───────────────────────────────────
   ═══════════════════════════════════════════════════════════ */
.future-panel {
  position: fixed;
  inset: 0;
  z-index: 9998;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  align-items: center;
}
.future-panel.hidden { display: none; }
.fp-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.65);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  cursor: pointer;
}
.fp-sheet {
  position: relative;
  width: 100%;
  max-width: 860px;
  max-height: 82vh;
  background: rgba(13,14,22,0.98);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 24px 24px 0 0;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  animation: fpSlideUp 0.4s cubic-bezier(0.16,1,0.3,1) both;
  box-shadow: 0 -20px 60px rgba(0,0,0,0.5);
}
@keyframes fpSlideUp {
  from { transform: translateY(60px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}
.fp-header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 22px 24px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}
.fp-header-info { flex: 1; }
.fp-title {
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--text);
  font-family: var(--font-ar);
  margin: 0 0 3px;
}
.fp-subtitle {
  font-size: 0.78rem;
  color: rgba(200,210,240,0.45);
  font-family: var(--font-ar);
  margin: 0;
}
.fp-header-stats {
  display: flex;
  gap: 10px;
  align-items: center;
  flex-shrink: 0;
}
.fp-stat-pill {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1px;
  padding: 6px 14px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.03);
  min-width: 64px;
}
.fp-stat-num {
  font-size: 1rem;
  font-weight: 800;
  font-family: var(--font-mono);
  color: var(--text);
  letter-spacing: -0.02em;
}
.fp-stat-lbl {
  font-size: 0.64rem;
  color: rgba(200,210,240,0.4);
  font-family: var(--font-ar);
  white-space: nowrap;
}
.fp-close {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: rgba(255,255,255,0.07);
  border: none;
  color: rgba(200,210,240,0.6);
  font-size: 0.85rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: all 0.2s;
  margin-top: 2px;
}
.fp-close:hover { background: rgba(255,255,255,0.14); color: white; }

.fp-body {
  flex: 1;
  overflow-y: auto;
  padding: 18px 24px 24px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.1) transparent;
  direction: rtl;
}

/* ── Timeline groups ── */
.fp-group {
  margin-bottom: 28px;
}
.fp-group-label {
  font-size: 0.72rem;
  font-weight: 700;
  color: rgba(200,210,240,0.35);
  font-family: var(--font-ar);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0 4px 8px;
  border-bottom: 1px solid rgba(255,255,255,0.04);
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.fp-group-label::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  opacity: 0.6;
}

/* ── Event cards ── */
.fp-events {
  display: flex;
  flex-direction: column;
  gap: 8px;
  position: relative;
  padding-right: 20px;
}
.fp-events::before {
  content: '';
  position: absolute;
  right: 7px;
  top: 8px;
  bottom: 8px;
  width: 2px;
  background: linear-gradient(to bottom,
    rgba(255,255,255,0.08) 0%,
    rgba(255,255,255,0.03) 100%);
  border-radius: 2px;
}
.fp-event {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 12px 14px;
  border-radius: 14px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  cursor: pointer;
  transition: all 0.2s;
  position: relative;
  animation: fpEventIn 0.3s ease both;
  animation-delay: calc(var(--fp-i, 0) * 0.04s);
}
.fp-event::before {
  content: '';
  position: absolute;
  right: -18px;
  top: 50%;
  transform: translateY(-50%);
  width: 10px;
  height: 10px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.15);
  background: rgba(13,14,22,0.98);
  z-index: 1;
}
@keyframes fpEventIn {
  from { opacity: 0; transform: translateX(10px); }
  to   { opacity: 1; transform: translateX(0); }
}
.fp-event:hover {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.1);
  transform: translateX(-3px);
}
.fp-event.fp-danger  { border-color: rgba(239,68,68,0.25); }
.fp-event.fp-danger::before { border-color: var(--danger); background: rgba(239,68,68,0.2); }
.fp-event.fp-warn    { border-color: rgba(245,158,11,0.25); }
.fp-event.fp-warn::before   { border-color: #f59e0b; background: rgba(245,158,11,0.15); }
.fp-event.fp-info    { border-color: rgba(59,130,246,0.2); }
.fp-event.fp-info::before   { border-color: #3b82f6; background: rgba(59,130,246,0.12); }
.fp-event.fp-ok      { border-color: rgba(255,255,255,0.07); }

.fp-event-icon {
  font-size: 1.6rem;
  line-height: 1;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 12px;
  background: rgba(255,255,255,0.05);
}
.fp-event-body { flex: 1; min-width: 0; }
.fp-event-name {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text);
  font-family: var(--font-ar);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  margin-bottom: 3px;
}
.fp-event-meta {
  font-size: 0.72rem;
  color: rgba(200,210,240,0.5);
  font-family: var(--font-ar);
}
.fp-event-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}
.fp-event-countdown {
  font-size: 0.85rem;
  font-weight: 800;
  font-family: var(--font-mono);
  letter-spacing: -0.02em;
  white-space: nowrap;
}
.fp-event-countdown.danger { color: #f87171; }
.fp-event-countdown.warn   { color: #fbbf24; }
.fp-event-countdown.info   { color: #60a5fa; }
.fp-event-countdown.ok     { color: rgba(200,210,240,0.7); }
.fp-event-type-badge {
  font-size: 0.62rem;
  padding: 2px 7px;
  border-radius: 6px;
  font-family: var(--font-ar);
  opacity: 0.8;
}
.fp-event-type-badge.sub  { background: rgba(139,92,246,0.2); color: rgb(167,139,250); }
.fp-event-type-badge.doc  { background: rgba(245,158,11,0.2); color: rgb(252,196,80);  }
.fp-event-type-badge.rem  { background: rgba(59,130,246,0.2);  color: rgb(96,165,250);  }

.fp-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 60px 24px;
  color: rgba(200,210,240,0.35);
  font-family: var(--font-ar);
  font-size: 0.88rem;
  text-align: center;
}
.fp-empty-icon { font-size: 3rem; opacity: 0.4; }

/* mobile */
@media (max-width: 768px) {
  .smart-radar {
    flex-wrap: wrap;
    gap: 8px;
    padding: 12px;
  }
  .sr-sep { display: none; }
  .sr-tile {
    flex: 1 1 40%;
    padding: 6px 10px;
    background: rgba(255,255,255,0.03);
    border-radius: 10px;
  }
  .sr-future-btn { flex: 0 0 100%; justify-content: center; margin-right: 0; }
  .fp-header-stats { display: none; }
}

/* ─── QUICK RENEW BUTTON ─────────────────────────────────── */
.sub-renew-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border-radius: 8px;
  background: rgba(74,222,128,0.15);
  border: 1px solid rgba(74,222,128,0.3);
  color: #4ade80;
  font-size: 0.72rem;
  font-family: var(--font-ar);
  font-weight: 700;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  transition: all 0.2s;
}
.sub-renew-btn:hover {
  background: rgba(74,222,128,0.25);
  transform: scale(1.05);
}

.fab,
.fab:hover,
.fab:focus-visible {
  background: var(--accent2) !important;
}

.btn-save,
.btn-save:hover,
.btn-save:focus-visible {
  background: var(--accent2) !important;
}

/* ─── LINK CARD ALIGNMENT WITH GLOBAL CARD SYSTEM ────────── */
.dashboard.filter-links .dash-grid .card[data-type="link"] {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01)),
    rgba(12, 14, 22, 0.94) !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-type-badge {
  display: inline-flex !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-icon {
  grid-column: auto !important;
  grid-row: auto !important;
  width: 42px !important;
  height: 42px !important;
  border-radius: 14px !important;
  font-size: 1rem !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-title {
  grid-column: auto !important;
  grid-row: auto !important;
  white-space: normal !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  line-height: 1.35 !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-meta {
  grid-column: auto !important;
  grid-row: auto !important;
  padding-top: 0 !important;
  border-top: none !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .link-meta-card {
  gap: 10px !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .link-domain-chip {
  background: rgba(255,255,255,0.03) !important;
  border-color: rgba(118, 149, 188, 0.12) !important;
  color: rgba(191, 202, 219, 0.8) !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .link-meta-row {
  min-width: 0;
  gap: 8px !important;
  padding: 12px 12px 10px !important;
  border-radius: 14px !important;
  border: 1px solid rgba(255,255,255,0.05) !important;
  background: linear-gradient(180deg, rgba(255,255,255,0.03), rgba(255,255,255,0.015)) !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .link-favicon {
  width: 16px !important;
  height: 16px !important;
  border-radius: 3px !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .link-url-text {
  font-family: var(--font-mono) !important;
  font-size: 0.78rem !important;
  color: rgba(214, 223, 238, 0.8) !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-actions {
  position: absolute !important;
  top: 10px !important;
  left: 10px !important;
  right: auto !important;
  opacity: 0 !important;
  transform: translateY(-4px) !important;
  pointer-events: none !important;
  padding: 0 !important;
  background: none !important;
  border: none !important;
  box-shadow: none !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"]:hover .card-actions,
.dashboard.filter-links .dash-grid .card[data-type="link"].card-expanded .card-actions {
  opacity: 1 !important;
  transform: translateY(0) !important;
  pointer-events: auto !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-actions button {
  opacity: 1 !important;
}

.dashboard.filter-links .dash-grid .card[data-type="link"] .card-timestamp {
  display: block !important;
}

button,
.fab,
.btn-save,
.header-icon-btn,
.header-alert-badge,
.mob-nav-btn,
.card-actions button,
.card-more-btn {
  -webkit-touch-callout: none;
  -webkit-user-select: none;
  user-select: none;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  -webkit-user-drag: none;
}

.fab svg,
.fab svg * {
  pointer-events: none;
  -webkit-user-select: none;
  user-select: none;
  -webkit-user-drag: none;
}

/* ─── NOTES VIEW CARD SIZING ─────────────────────────────── */
@media (min-width: 769px) {
  .dashboard.filter-notes .dash-grid {
    grid-template-columns: repeat(auto-fill, minmax(360px, 520px)) !important;
    justify-content: start !important;
    align-content: start !important;
  }

  .dashboard.filter-notes .dash-grid .card[data-type="note"],
  .dashboard.filter-notes .dash-grid .card[data-type="quicktext"],
  .dashboard.filter-notes .dash-grid .card[data-type="markdown"],
  .dashboard.filter-notes .dash-grid .card[data-type="code"] {
    width: 100% !important;
    max-width: 520px !important;
  }

  .dashboard.filter-notes .dash-grid .card[data-type="note"] .card-meta,
  .dashboard.filter-notes .dash-grid .card[data-type="quicktext"] .card-meta,
  .dashboard.filter-notes .dash-grid .card[data-type="markdown"] .card-meta,
  .dashboard.filter-notes .dash-grid .card[data-type="code"] .card-meta {
    -webkit-line-clamp: 6;
  }
}

/* ─── PAGES VIEW CARD SIZING ─────────────────────────────── */
@media (min-width: 769px) {
  .dashboard.filter-pages .dash-grid {
    grid-template-columns: repeat(auto-fill, minmax(340px, 420px)) !important;
    justify-content: start !important;
    align-content: start !important;
    gap: 18px !important;
  }

  .dashboard.filter-pages .dash-grid .card[data-type="page"] {
    width: 100% !important;
    max-width: 420px !important;
    min-height: 220px !important;
  }
}

/* ─── UNIFIED FILTER/PAGE CARD SIZING ───────────────────── */
@media (min-width: 769px) {
  .dashboard.filtered-cards-view .dash-grid,
  #page-grid {
    grid-template-columns: repeat(auto-fill, minmax(320px, 452px)) !important;
    justify-content: start !important;
    align-content: start !important;
    gap: 18px !important;
  }

  .dashboard.filtered-cards-view .dash-grid .card,
  .dashboard.filtered-cards-view .dash-grid .card-compact,
  .dashboard.filtered-cards-view .dash-grid .card-wide,
  .dashboard.filtered-cards-view .dash-grid .card-tall,
  .dashboard.filtered-cards-view .dash-grid .card-auto-height,
  #page-grid .card,
  #page-grid .card-compact,
  #page-grid .card-wide,
  #page-grid .card-tall,
  #page-grid .card-auto-height {
    width: 100% !important;
    max-width: none !important;
    grid-column: span 1 !important;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── MOBILE iOS-NATIVE REDESIGN — v124 ────────────────────
   ═══════════════════════════════════════════════════════════

   COMPLETE REBUILD from scratch — new philosophy:
   • iOS-native feel: deep dark bg, gradient cards, soft shadows
   • Generous spacing: 18px card padding, 14px gap between cards
   • Large touch targets: 56px list rows (Apple HIG compliant)
   • Breathable typography: 1.05rem titles, 0.9rem body text
   • Flat stack layout: no nested "box in box" feel
   • Safe-area: 44px fallback when env() returns 0 (iOS edge case)
   • Row-reverse header for RTL: icon visually on the right
   • Dark theme: #07080c base, gradient cards, soft dividers only
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ─── DESIGN TOKENS — single source of truth ───────────
     44px fallback covers iOS cases where env() returns 0
     max() picks whichever is larger                        */
  :root {
    --m-safe-top: max(env(safe-area-inset-top, 0px), 44px);
    --m-safe-bot: max(env(safe-area-inset-bottom, 0px), 0px);
    --m-gap: 14px;
    --m-card-pad: 18px;
    --m-radius: 22px;
    --m-radius-inner: 14px;
    --m-touch: 56px;
    --m-border: rgba(255,255,255,0.06);
    --m-divider: rgba(255,255,255,0.05);
    --m-bg: #07080c;
    --m-text: #f4f5f8;
    --m-text-dim: rgba(230,232,240,0.72);
    --m-text-faint: rgba(200,205,220,0.5);
    --m-card-grad: linear-gradient(180deg, rgba(20,22,30,0.98) 0%, rgba(13,15,22,0.98) 100%);
    --m-inner-bg: rgba(0,0,0,0.24);
  }

  /* deep iOS dark background */
  body { background: var(--m-bg) !important; }

  /* ─── DASH HEADER — real gap from notch/Dynamic Island ─ */
  .dash-header {
    height: auto !important;
    min-height: 0 !important;
    padding: calc(var(--m-safe-top) + 14px) 18px 18px !important;
    gap: 12px !important;
  }
  .dash-header h1,
  .dash-header .greeting {
    font-size: 1.4rem !important;
    font-weight: 800 !important;
    letter-spacing: -0.01em !important;
  }
  .dash-header .header-subtitle,
  .dash-header .dash-subtitle {
    font-size: 0.8rem !important;
    color: var(--m-text-dim) !important;
  }
  .dash-header .header-icon-btn,
  .dash-header .header-btn,
  .dash-header button {
    min-width: 44px !important;
    min-height: 44px !important;
    border-radius: 14px !important;
  }

  /* ─── GRID — single column, generous breathing room ──── */
  .dash-grid,
  #page-grid {
    grid-template-columns: 1fr !important;
    gap: var(--m-gap) !important;
    padding: 0 14px !important;
    padding-bottom: calc(84px + var(--m-safe-bot) + 16px) !important;
  }

  /* ─── CARD — iOS-native gradient block ────────────────── */
  .dash-grid .card,
  .dash-grid .card.card-tall,
  .dash-grid .card.card-wide,
  #page-grid .card {
    display: block !important;
    height: auto !important;
    min-height: unset !important;
    max-height: none !important;
    padding: var(--m-card-pad) !important;
    border-radius: var(--m-radius) !important;
    background: var(--m-card-grad) !important;
    border: 1px solid var(--m-border) !important;
    box-shadow:
      0 10px 28px rgba(0,0,0,0.4),
      0 1px 0 rgba(255,255,255,0.04) inset !important;
  }

  /* ─── CARD SHELL — flat stack (no nested flex stretch) ── */
  .dash-grid .card-shell,
  #page-grid .card-shell {
    display: flex !important;
    flex-direction: column !important;
    height: auto !important;
    gap: 14px !important;
  }

  /* ─── HEADER — row-reverse: icon on visual right (RTL) ── */
  .dash-grid .card-header,
  #page-grid .card-header {
    display: flex !important;
    flex-direction: row-reverse !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 12px !important;
    padding: 0 !important;
    margin: 0 !important;
    min-height: unset !important;
  }
  .dash-grid .card-header .card-icon,
  #page-grid .card-header .card-icon {
    width: 44px !important;
    height: 44px !important;
    border-radius: 13px !important;
    font-size: 1.3rem !important;
    flex-shrink: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: rgba(255,255,255,0.05) !important;
    border: 1px solid rgba(255,255,255,0.04) !important;
  }
  .dash-grid .card-header .card-type-badge,
  #page-grid .card-header .card-type-badge {
    font-size: 0.62rem !important;
    padding: 4px 10px !important;
    border-radius: 8px !important;
    letter-spacing: 0.04em !important;
    font-weight: 700 !important;
  }

  /* ─── BODY — natural height, no forced stretch ────────── */
  .dash-grid .card-body,
  #page-grid .card-body {
    flex: 0 0 auto !important;
    min-height: unset !important;
    gap: 6px !important;
    padding: 0 !important;
    overflow: visible !important;
    clip-path: none !important;
  }

  /* ─── TITLE — larger, bolder, iOS weight ─────────────── */
  .dash-grid .card-title,
  .dash-grid .card-compact .card-title,
  #page-grid .card-title {
    font-size: 1.05rem !important;
    font-weight: 800 !important;
    line-height: 1.35 !important;
    letter-spacing: -0.01em !important;
    padding: 0 !important;
    margin: 0 !important;
    color: var(--m-text) !important;
  }

  /* ─── META — 2 lines, readable body text ─────────────── */
  .dash-grid .card-meta,
  .dash-grid .card-compact .card-meta,
  .dash-grid .card-tall .card-meta,
  #page-grid .card-meta {
    flex: 0 0 auto !important;
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 2 !important;
    overflow: hidden !important;
    font-size: 0.88rem !important;
    line-height: 1.55 !important;
    max-height: 2.75em !important;
    color: var(--m-text-dim) !important;
    padding: 0 !important;
    margin: 0 !important;
  }
  /* note/text cards: allow 3 lines */
  .dash-grid .card[data-type="note"] .card-meta,
  .dash-grid .card[data-type="quicktext"] .card-meta,
  .dash-grid .card[data-type="markdown"] .card-meta {
    -webkit-line-clamp: 3 !important;
    max-height: 4.1em !important;
  }

  /* ─── SUB/DOC META — no clamp (contains full list) ──── */
  body .dash-grid .card[data-type="subscription"] .card-meta,
  body .dash-grid .card[data-type="document"] .card-meta,
  body #page-grid .card[data-type="subscription"] .card-meta,
  body #page-grid .card[data-type="document"] .card-meta {
    max-height: none !important;
    -webkit-line-clamp: unset !important;
    display: flex !important;
    flex-direction: column !important;
    overflow: visible !important;
    padding: 0 !important;
    flex: 0 0 auto !important;
  }

  /* ─── FOOTER — minimal, integrated, no wasted space ─── */
  .dash-grid .card-footer,
  #page-grid .card-footer {
    flex: 0 0 auto !important;
    margin-top: 2px !important;
    min-height: 0 !important;
    padding: 12px 0 0 !important;
    border-top: 1px solid var(--m-divider) !important;
    gap: 0 !important;
  }
  .dash-grid .card-footer-main,
  #page-grid .card-footer-main {
    gap: 0 !important;
    display: flex !important;
    flex-direction: column !important;
  }
  /* empty meta row: hide completely */
  .dash-grid .card-footer-meta-empty,
  #page-grid .card-footer-meta-empty {
    display: none !important;
    min-height: 0 !important;
  }
  .dash-grid .card-footer-meta,
  #page-grid .card-footer-meta {
    min-height: 0 !important;
    gap: 6px !important;
    padding: 0 !important;
    margin: 0 0 8px !important;
  }
  .dash-grid .card-footer-bottom,
  #page-grid .card-footer-bottom {
    gap: 10px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
  }
  .dash-grid .card-timestamp,
  #page-grid .card-timestamp {
    font-size: 0.7rem !important;
    color: var(--m-text-faint) !important;
    font-weight: 500 !important;
  }
  .dash-grid .card-footer-chip,
  #page-grid .card-footer-chip {
    font-size: 0.7rem !important;
    padding: 5px 11px !important;
    border-radius: 9px !important;
    font-weight: 600 !important;
  }

  /* ─── ACTIONS — visible on mobile (tap + long-press both work) ── */
  .dash-grid .card-actions,
  .dash-grid .card-compact .card-actions,
  #page-grid .card-actions {
    display: flex !important;
    opacity: 1 !important;
    pointer-events: auto !important;
    position: static !important;
    transform: none !important;
    background: none !important;
    padding: 10px 0 0 !important;
    justify-content: flex-end !important;
    gap: 6px !important;
  }
  /* Dash-card variants keep absolute positioning but still visible + clickable */
  .dash-grid .card.page-dash-card .card-actions,
  .dash-grid .card.trip-dash-card .card-actions,
  .dash-grid .card.status-dash-card .card-actions,
  .dash-grid .card.doc-dash-card .card-actions,
  .dash-grid .card.sub-dash-card .card-actions,
  .dash-grid .card.checklist-dash-card .card-actions,
  .dash-grid .card.note-dash-card .card-actions,
  .dash-grid .card.wifi-dash-card .card-actions,
  .dash-grid .card.link-dash-card .card-actions,
  .dash-grid .card[data-type="reminder"]:not(.nc-dash-card) .card-actions,
  .dash-grid .card.stocks-dash-card .card-actions,
  .dash-grid .card.vehicle-dash-card .card-actions,
  .dash-grid .card.medicine-dash-card .card-actions,
  #page-grid .card.page-dash-card .card-actions,
  #page-grid .card.trip-dash-card .card-actions,
  #page-grid .card.status-dash-card .card-actions,
  #page-grid .card.link-dash-card .card-actions,
  #page-grid .card[data-type="reminder"]:not(.nc-dash-card) .card-actions,
  #page-grid .card.stocks-dash-card .card-actions {
    position: absolute !important;
    top: 10px !important;
    left: 10px !important;
    right: auto !important;
    bottom: auto !important;
    z-index: 6 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity .18s ease !important;
    background: none !important;
    padding: 0 !important;
  }

  .dash-grid .card.nc-dash-card .card-actions,
  #page-grid .card.nc-dash-card .card-actions {
    position: absolute !important;
    top: 10px !important;
    left: 10px !important;
    right: auto !important;
    bottom: auto !important;
    z-index: 8 !important;
    opacity: 0 !important;
    pointer-events: none !important;
    transition: opacity .18s ease !important;
    background: none !important;
    padding: 0 !important;
    justify-content: flex-end !important;
  }

  /* Dash-card variants: action row reveals on hover/focus only */
  .dash-grid .card:hover .card-actions,
  .dash-grid .card:focus-within .card-actions,
  .dash-grid .card.card-expanded .card-actions,
  #page-grid .card:hover .card-actions,
  #page-grid .card:focus-within .card-actions {
    opacity: 1 !important;
    pointer-events: auto !important;
  }

  /* ─── SUBSCRIPTION LIST — 56px rows, soft divider lines ─
     iOS Contacts/Reminders pattern: one container, soft
     dividers between rows, no harsh inner borders.
     specificity 0,3,1 beats CARD SHELL 0,3,0              */
  body .dash-grid .card .subs-preview-list,
  body #page-grid .card .subs-preview-list {
    height: auto !important;
    min-height: var(--m-touch) !important;
    max-height: calc(var(--m-touch) * 3) !important;
    overflow-y: auto !important;
    scroll-snap-type: none !important;
    flex: 0 0 auto !important;
    padding: 0 !important;
    gap: 0 !important;
    background: var(--m-inner-bg) !important;
    border-radius: var(--m-radius-inner) !important;
    border: 1px solid rgba(255,255,255,0.04) !important;
    -webkit-overflow-scrolling: touch !important;
  }
  body .dash-grid .card .sub-item-preview,
  body #page-grid .card .sub-item-preview {
    height: var(--m-touch) !important;
    min-height: var(--m-touch) !important;
    max-height: var(--m-touch) !important;
    padding: 0 14px !important;
    gap: 12px !important;
    scroll-snap-align: none !important;
    border-bottom: 1px solid var(--m-divider) !important;
    background: transparent !important;
    display: flex !important;
    align-items: center !important;
  }
  body .dash-grid .card .sub-item-preview:last-child {
    border-bottom: 0 !important;
  }
  body .dash-grid .card .sub-name {
    font-size: 0.92rem !important;
    font-weight: 700 !important;
    color: var(--m-text) !important;
    line-height: 1.3 !important;
  }
  body .dash-grid .card .sub-price {
    font-size: 0.78rem !important;
    color: var(--m-text-dim) !important;
    font-weight: 500 !important;
  }
  body .dash-grid .card .sub-urgency {
    font-size: 0.66rem !important;
    padding: 3px 9px !important;
    border-radius: 7px !important;
    font-weight: 700 !important;
  }
  body .dash-grid .card .sub-preview-icon {
    font-size: 1.25rem !important;
    width: 36px !important;
    height: 36px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    background: rgba(255,255,255,0.06) !important;
    border-radius: 10px !important;
    flex-shrink: 0 !important;
  }
  body .sub-renew-btn {
    font-size: 0.74rem !important;
    padding: 6px 12px !important;
    border-radius: 9px !important;
    min-height: 34px !important;
  }

  /* ─── DOCUMENT LIST — same iOS-native row pattern ────── */
  body .dash-grid .card .docs-preview-list,
  body .dash-grid .card .docs-preview-desktop,
  body .dash-grid .card .docs-preview-compact,
  body #page-grid .card .docs-preview-list,
  body #page-grid .card .docs-preview-desktop,
  body #page-grid .card .docs-preview-compact {
    height: auto !important;
    min-height: var(--m-touch) !important;
    max-height: calc(var(--m-touch) * 3) !important;
    overflow-y: auto !important;
    scroll-snap-type: none !important;
    flex: 0 0 auto !important;
    padding: 0 !important;
    gap: 0 !important;
    background: var(--m-inner-bg) !important;
    border-radius: var(--m-radius-inner) !important;
    border: 1px solid rgba(255,255,255,0.04) !important;
    -webkit-overflow-scrolling: touch !important;
  }
  body .dash-grid .card .doc-item-preview,
  body #page-grid .card .doc-item-preview {
    height: var(--m-touch) !important;
    min-height: var(--m-touch) !important;
    max-height: var(--m-touch) !important;
    padding: 0 14px !important;
    gap: 12px !important;
    scroll-snap-align: none !important;
    border-bottom: 1px solid var(--m-divider) !important;
    background: transparent !important;
    display: flex !important;
    align-items: center !important;
  }
  body .dash-grid .card .doc-item-preview:last-child {
    border-bottom: 0 !important;
  }
  body .dash-grid .card .doc-name {
    font-size: 0.92rem !important;
    font-weight: 700 !important;
    color: var(--m-text) !important;
    line-height: 1.3 !important;
  }
  body .dash-grid .card .doc-urgency {
    font-size: 0.66rem !important;
    padding: 3px 9px !important;
    border-radius: 7px !important;
    font-weight: 700 !important;
  }

  /* ─── SMART RADAR — iOS hero card feel ─────────────── */
  .smart-radar {
    border-radius: var(--m-radius) !important;
    margin: 0 0 var(--m-gap) !important;
    padding: 18px !important;
    background: var(--m-card-grad) !important;
    border: 1px solid var(--m-border) !important;
    box-shadow: 0 10px 28px rgba(0,0,0,0.4) !important;
  }
  .sr-value      { font-size: 1rem !important; font-weight: 800 !important; }
  .sr-icon       { font-size: 1.3rem !important; }
  .sr-label      { font-size: 0.7rem !important; color: var(--m-text-dim) !important; }
  .sr-future-btn {
    font-size: 0.84rem !important;
    padding: 11px 18px !important;
    border-radius: 12px !important;
    min-height: 44px !important;
    font-weight: 700 !important;
  }

  /* ─── FUTURE PANEL — iOS bottom sheet ─────────────── */
  .fp-sheet {
    max-width: 100% !important;
    max-height: 88dvh !important;
    border-radius: 24px 24px 0 0 !important;
    padding-bottom: var(--m-safe-bot) !important;
  }
  .fp-header      { padding: 18px 18px 14px !important; gap: 14px !important; }
  .fp-title       { font-size: 1.05rem !important; font-weight: 800 !important; }
  .fp-subtitle    { font-size: 0.78rem !important; }
  .fp-close       { width: 36px !important; height: 36px !important; border-radius: 11px !important; }
  .fp-body        { padding: 16px 18px 28px !important; }
  .fp-events      { padding-right: 18px !important; }
  .fp-event       { padding: 14px !important; gap: 12px !important; border-radius: var(--m-radius-inner) !important; }
  .fp-event-icon  { width: 42px !important; height: 42px !important; font-size: 1.35rem !important; border-radius: 12px !important; flex-shrink: 0 !important; }
  .fp-event-name        { font-size: 0.92rem !important; font-weight: 700 !important; }
  .fp-event-meta        { font-size: 0.72rem !important; }
  .fp-event-countdown   { font-size: 0.86rem !important; font-weight: 700 !important; }
  .fp-event-type-badge  { font-size: 0.62rem !important; padding: 3px 8px !important; border-radius: 7px !important; }
  .fp-group-label       { font-size: 0.74rem !important; }
  .fp-stat-pill         { padding: 8px 14px !important; min-width: 60px !important; border-radius: 11px !important; }
  .fp-stat-num          { font-size: 1rem !important; font-weight: 800 !important; }
  .fp-stat-lbl          { font-size: 0.62rem !important; }

  /* ─── TOOLBAR & TAGS — breathable chips ─────────────── */
  .cards-toolbar {
    padding: 0 0 10px !important;
    gap: 8px !important;
  }
  .tags-bar {
    gap: 8px !important;
    margin-bottom: var(--m-gap) !important;
    padding: 0 !important;
  }
  .tags-bar .tag-chip,
  .tag-chip {
    padding: 8px 14px !important;
    font-size: 0.78rem !important;
    border-radius: 11px !important;
    min-height: 36px !important;
    font-weight: 600 !important;
  }
}

/* ── Extra-small phones (< 360px) — slight shrink only ── */
@media (max-width: 359px) {
  :root {
    --m-card-pad: 16px;
    --m-radius: 20px;
    --m-touch: 52px;
    --m-gap: 12px;
  }
  .dash-grid .card-title,
  #page-grid .card-title { font-size: 0.98rem !important; }
  .dash-grid .card-header .card-icon,
  #page-grid .card-header .card-icon {
    width: 40px !important;
    height: 40px !important;
  }
  body .dash-grid .card .sub-name,
  body .dash-grid .card .doc-name {
    font-size: 0.88rem !important;
  }
}

/* ─── Long-press pulse (mobile card feedback) ─────────────── */
@keyframes lp-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(139,92,246,0.5); }
  60%  { box-shadow: 0 0 0 10px rgba(139,92,246,0); }
  100% { box-shadow: 0 0 0 0 rgba(139,92,246,0); }
}
.card.lp-pulse {
  animation: lp-pulse 0.4s ease-out !important;
}
@media (prefers-reduced-motion: reduce) {
  .card.lp-pulse { animation: none !important; }
}

/* ─── MOBILE POLISH — header, search, inner card density ─── */
@media (max-width: 768px) {
  :root {
    --m-safe-top: max(env(safe-area-inset-top, 0px), 14px);
    --m-card-pad: 20px;
    --m-gap: 16px;
    --m-touch: 62px;
    --m-card-height: 196px;
  }

  .dash-header {
    padding: calc(var(--m-safe-top) + 6px) 14px 14px !important;
    gap: 10px !important;
  }

  .dash-header-right {
    position: relative !important;
    gap: 8px !important;
    overflow: visible !important;
  }

  .dash-header-left {
    gap: 6px !important;
  }

  .dash-logo {
    font-size: 1.28rem !important;
    letter-spacing: 0.08em !important;
  }

  .header-search-wrap {
    position: relative !important;
    flex: 0 0 44px !important;
    width: 44px !important;
    min-width: 44px !important;
    height: 44px !important;
    padding: 0 !important;
    justify-content: center !important;
    gap: 0 !important;
    overflow: hidden !important;
    cursor: pointer;
    transition: width .22s ease, min-width .22s ease, box-shadow .22s ease, background .22s ease !important;
  }

  .header-search-wrap .header-search-icon {
    margin: 0 !important;
    color: rgba(230, 236, 245, 0.78) !important;
  }

  .header-search-wrap .header-search-input,
  .header-search-wrap .search-clear-btn,
  .header-search-wrap .search-archive-toggle,
  .header-search-wrap #search-count {
    opacity: 0;
    pointer-events: none;
  }

  .header-search-wrap .header-search-input {
    width: 0 !important;
    min-width: 0 !important;
    padding: 0 !important;
  }

  .header-search-wrap .search-archive-toggle,
  .header-search-wrap #search-count {
    display: none !important;
  }

  .header-search-wrap.mobile-active {
    position: absolute !important;
    left: 14px !important;
    right: 14px !important;
    top: calc(100% - 2px) !important;
    width: auto !important;
    min-width: 0 !important;
    height: 48px !important;
    padding: 0 14px !important;
    gap: 10px !important;
    justify-content: flex-start !important;
    background: rgba(16, 18, 26, 0.98) !important;
    border-color: rgba(255,255,255,0.1) !important;
    box-shadow: 0 18px 36px rgba(0,0,0,0.38) !important;
    z-index: 35 !important;
  }

  .header-search-wrap.mobile-active .header-search-input,
  .header-search-wrap.mobile-active .search-clear-btn {
    opacity: 1;
    pointer-events: auto;
  }

  .header-search-wrap.mobile-active .header-search-input {
    width: 100% !important;
    font-size: 0.9rem !important;
  }

  .header-search-wrap.mobile-active .search-clear-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 28px;
    min-height: 28px;
  }

  .search-history-drop {
    top: calc(100% + 10px) !important;
    left: 0 !important;
    right: 0 !important;
    border-radius: 16px !important;
  }

  .dash-grid,
  #page-grid {
    gap: 16px !important;
    padding: 0 12px !important;
  }

  .dash-grid .card,
  .dash-grid .card.card-tall,
  .dash-grid .card.card-wide,
  .dash-grid .card.card-compact,
  .dash-grid .card.card-auto-height,
  #page-grid .card {
    height: var(--m-card-height) !important;
    min-height: var(--m-card-height) !important;
    max-height: var(--m-card-height) !important;
    overflow: hidden !important;
  }

  .dash-grid .card-shell,
  #page-grid .card-shell {
    gap: 16px !important;
    height: 100% !important;
    min-height: 0 !important;
  }

  .dash-grid .card-header,
  #page-grid .card-header {
    align-items: flex-start !important;
    justify-content: space-between !important;
    gap: 14px !important;
  }

  .dash-grid .card-body,
  #page-grid .card-body {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    width: 100% !important;
    gap: 10px !important;
    overflow: hidden !important;
  }

  .dash-grid .card-title,
  .dash-grid .card-compact .card-title,
  #page-grid .card-title {
    font-size: 1.08rem !important;
    line-height: 1.4 !important;
  }

  .dash-grid .card-meta,
  .dash-grid .card-compact .card-meta,
  .dash-grid .card-tall .card-meta,
  #page-grid .card-meta {
    flex: 1 1 auto !important;
    width: 100% !important;
    max-height: none !important;
    overflow-x: hidden !important;
    overflow-y: auto !important;
    scrollbar-width: none !important;
    font-size: 0.9rem !important;
    line-height: 1.6 !important;
  }

  .dash-grid .card-meta::-webkit-scrollbar,
  #page-grid .card-meta::-webkit-scrollbar {
    display: none !important;
  }

  .dash-grid .card[data-type="note"] .card-meta,
  .dash-grid .card[data-type="quicktext"] .card-meta,
  .dash-grid .card[data-type="markdown"] .card-meta,
  #page-grid .card[data-type="note"] .card-meta,
  #page-grid .card[data-type="quicktext"] .card-meta,
  #page-grid .card[data-type="markdown"] .card-meta {
    display: -webkit-box !important;
    -webkit-box-orient: vertical !important;
    -webkit-line-clamp: 4 !important;
    overflow: hidden !important;
    max-height: 6.4em !important;
  }

  body .dash-grid .card .subs-preview-list,
  body .dash-grid .card .docs-preview-list,
  body .dash-grid .card .docs-preview-desktop,
  body .dash-grid .card .docs-preview-compact,
  body #page-grid .card .subs-preview-list,
  body #page-grid .card .docs-preview-list,
  body #page-grid .card .docs-preview-desktop,
  body #page-grid .card .docs-preview-compact {
    width: 100% !important;
    max-height: calc(var(--m-touch) * 1.95) !important;
    border-radius: 16px !important;
  }

  body .dash-grid .card .sub-item-preview,
  body .dash-grid .card .doc-item-preview,
  body #page-grid .card .sub-item-preview,
  body #page-grid .card .doc-item-preview {
    height: var(--m-touch) !important;
    min-height: var(--m-touch) !important;
    max-height: var(--m-touch) !important;
    width: 100% !important;
    padding: 0 16px !important;
    gap: 14px !important;
  }

  body .dash-grid .card .sub-item-preview-content,
  body #page-grid .card .sub-item-preview-content {
    min-width: 0 !important;
    gap: 4px !important;
  }

  body .dash-grid .card .sub-name,
  body .dash-grid .card .doc-name,
  body #page-grid .card .sub-name,
  body #page-grid .card .doc-name {
    font-size: 0.94rem !important;
    line-height: 1.35 !important;
  }

  body .dash-grid .card .doc-item-right,
  body #page-grid .card .doc-item-right {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    flex-shrink: 0 !important;
  }

  body .dash-grid .card .doc-item-preview,
  body #page-grid .card .doc-item-preview {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto !important;
    align-items: center !important;
  }

  body .dash-grid .card .sub-item-preview,
  body #page-grid .card .sub-item-preview {
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) auto !important;
    align-items: center !important;
  }

  .dash-grid .card-footer,
  #page-grid .card-footer {
    flex: 0 0 auto !important;
    margin-top: auto !important;
  }

  .dash-grid .card[data-type="document"] .card-meta::after,
  .dash-grid .card[data-type="subscription"] .card-meta::after,
  #page-grid .card[data-type="document"] .card-meta::after,
  #page-grid .card[data-type="subscription"] .card-meta::after {
    content: '';
    position: sticky;
    inset-inline-start: 0;
    right: 0;
    bottom: 0;
    display: block;
    width: 100%;
    height: 18px;
    background: linear-gradient(180deg, rgba(10,12,18,0), rgba(10,12,18,0.92));
    pointer-events: none;
  }

  .smart-radar {
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
    padding: 16px !important;
  }

  .sr-tile {
    flex: 1 1 calc(50% - 5px) !important;
    min-height: 76px !important;
    padding: 12px 14px !important;
    background: rgba(255,255,255,0.03) !important;
    border: 1px solid rgba(255,255,255,0.05) !important;
    border-radius: 14px !important;
    align-items: center !important;
  }

  .sr-content {
    gap: 4px !important;
  }

  .sr-value {
    font-size: 1.02rem !important;
    line-height: 1.2 !important;
  }

  .sr-label {
    font-size: 0.72rem !important;
  }

  .sr-future-btn {
    flex: 1 1 100% !important;
    min-height: 48px !important;
    justify-content: center !important;
  }
}

/* ─── PAGE MODE SELECTOR BUTTONS ─────────────────────────────── */
.page-mode-selector {
  display: none;
  align-items: center;
  gap: 2px;
}

.page-mode-btn {
  background: none;
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 5px 8px;
  cursor: pointer;
  font-size: 16px;
  opacity: 0.45;
  transition: all 0.18s ease;
  color: var(--fg);
  line-height: 1;
}

.page-mode-btn:hover {
  opacity: 0.85;
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.1);
}

.page-mode-btn.active {
  opacity: 1;
  background: rgba(139,92,246,0.2);
  border-color: rgba(139,92,246,0.45);
}

/* ═══════════════════════════════════════════════════════════
   ─── MOBILE OVERHAUL v2 — iOS Premium Feel ─────────────────
   ═══════════════════════════════════════════════════════════ */

/* ─── 1. Mobile Header ─────────────────────────────────────── */
@media (max-width: 768px) {
  /* Hide clutter elements */
  .smart-feed-btn { display: none !important; }
  .header-time-pill { display: none !important; }
  #header-date { display: none !important; }
  .header-alert-badge { display: none !important; }
  #edit-order-btn { display: none !important; }
  #quick-add-btn { display: none !important; }
  #search-wrap .search-archive-toggle { display: none !important; }
  .cloud-dot { display: none !important; }
  #page-mode-selector { display: none !important; }

  /* Clean header */
  .dash-header {
    padding: calc(max(env(safe-area-inset-top,0px), 50px) + 8px) 16px 12px !important;
    height: auto !important;
    min-height: 0 !important;
    justify-content: space-between !important;
    align-items: center !important;
    background: rgba(7,8,12,0.95) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border-bottom: 1px solid rgba(255,255,255,0.05) !important;
    position: sticky !important;
    top: 0 !important;
    z-index: 40 !important;
  }

  /* Hide right section overflow */
  .dash-header-right {
    flex: 1 !important;
    gap: 10px !important;
    overflow: hidden !important;
    min-width: 0 !important;
  }

  /* Section label - prominent */
  #header-section-label {
    font-size: 1.15rem !important;
    font-weight: 800 !important;
    color: var(--text) !important;
    letter-spacing: -0.02em !important;
    flex: 1 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  /* Search bar - hidden by default on mobile */
  .header-search-wrap {
    display: none !important;
  }

  /* Settings button stays */
  #settings-btn {
    display: flex !important;
    min-width: 40px !important;
    min-height: 40px !important;
  }

  /* Left side compact */
  .dash-header-left {
    gap: 6px !important;
    flex-shrink: 0 !important;
  }

  /* Header buttons - smaller on mobile */
  .header-icon-btn {
    min-width: 40px !important;
    min-height: 40px !important;
    border-radius: 12px !important;
  }
}

/* ─── 2. Bottom Navigation ──────────────────────────────────── */
@media (max-width: 768px) {
  .mobile-bottom-nav {
    height: calc(62px + max(env(safe-area-inset-bottom,0px), 0px)) !important;
    padding: 0 16px !important;
    padding-bottom: max(env(safe-area-inset-bottom,0px), 0px) !important;
    background: rgba(10,11,18,0.97) !important;
    backdrop-filter: blur(24px) !important;
    -webkit-backdrop-filter: blur(24px) !important;
    border-top: 1px solid rgba(255,255,255,0.06) !important;
    display: grid !important;
    grid-template-columns: 1fr 1fr 72px 1fr 1fr !important;
    align-items: center !important;
    gap: 0 !important;
  }

  .mob-nav-btn {
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 4px !important;
    height: 62px !important;
    border: none !important;
    background: transparent !important;
    cursor: pointer !important;
    position: relative !important;
    color: rgba(200,205,220,0.45) !important;
    transition: color 0.2s !important;
    padding: 0 !important;
  }

  .mob-nav-btn svg {
    width: 22px !important;
    height: 22px !important;
    stroke-width: 2 !important;
    transition: all 0.2s !important;
  }

  .mob-nav-btn span {
    font-size: 0.62rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.02em !important;
    transition: all 0.2s !important;
  }

  .mob-nav-btn.active {
    color: #a78bfa !important;
  }

  .mob-nav-btn.active svg {
    stroke-width: 2.5 !important;
    filter: drop-shadow(0 0 6px rgba(167,139,250,0.5)) !important;
  }

  /* Center ADD button - premium feel */
  .mob-nav-btn.mob-nav-add {
    background: linear-gradient(135deg, #7c3aed, #8b5cf6) !important;
    border-radius: 20px !important;
    width: 52px !important;
    height: 52px !important;
    margin: 0 auto !important;
    box-shadow: 0 4px 20px rgba(139,92,246,0.5), 0 0 0 1px rgba(255,255,255,0.1) inset !important;
    color: white !important;
    transition: all 0.2s cubic-bezier(0.34,1.56,0.64,1) !important;
  }

  .mob-nav-btn.mob-nav-add:active {
    transform: scale(0.92) !important;
    box-shadow: 0 2px 12px rgba(139,92,246,0.4) !important;
  }

  .mob-nav-btn.mob-nav-add svg {
    width: 24px !important;
    height: 24px !important;
    stroke-width: 2.8 !important;
  }

  /* Active indicator dot */
  .mob-nav-btn.active::after {
    content: '' !important;
    position: absolute !important;
    bottom: 6px !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    width: 4px !important;
    height: 4px !important;
    background: #a78bfa !important;
    border-radius: 50% !important;
    opacity: 1 !important;
  }

  .mob-nav-btn.mob-nav-add::after {
    display: none !important;
  }
}

/* ─── 3. Cards - Visual Overhaul ───────────────────────────── */
@media (max-width: 768px) {
  /* Card container */
  .dash-grid,
  #page-grid {
    padding: 0 14px !important;
    gap: 14px !important;
    padding-bottom: calc(82px + max(env(safe-area-inset-bottom,0px), 12px) + 12px) !important;
  }

  /* Cards - gradient & glow */
  .dash-grid .card,
  #page-grid .card {
    border-radius: 24px !important;
    padding: 20px !important;
    background: linear-gradient(160deg, rgba(22,24,34,1) 0%, rgba(14,15,24,1) 100%) !important;
    border: 1px solid rgba(255,255,255,0.07) !important;
    box-shadow:
      0 2px 0 rgba(255,255,255,0.04) inset,
      0 12px 32px rgba(0,0,0,0.5) !important;
    overflow: hidden !important;
    position: relative !important;
    transition: transform 0.15s ease, box-shadow 0.15s ease !important;
  }

  /* Subtle top highlight */
  .dash-grid .card::before,
  #page-grid .card::before {
    content: '' !important;
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    height: 1px !important;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.1), transparent) !important;
    pointer-events: none !important;
  }

  /* Card press effect */
  .dash-grid .card:active,
  #page-grid .card:active {
    transform: scale(0.985) !important;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4) !important;
  }

  /* Icon - bigger, more prominent */
  .dash-grid .card-header .card-icon,
  #page-grid .card-header .card-icon {
    width: 48px !important;
    height: 48px !important;
    border-radius: 14px !important;
    font-size: 1.4rem !important;
    background: rgba(255,255,255,0.07) !important;
    border: 1px solid rgba(255,255,255,0.06) !important;
    flex-shrink: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  /* Title - iOS weight & size */
  .dash-grid .card-title,
  #page-grid .card-title {
    font-size: 1.08rem !important;
    font-weight: 700 !important;
    line-height: 1.3 !important;
    color: var(--text) !important;
    letter-spacing: -0.01em !important;
  }

  /* Type badge - refined */
  .dash-grid .card-type-badge,
  #page-grid .card-type-badge {
    font-size: 0.6rem !important;
    font-weight: 700 !important;
    padding: 4px 10px !important;
    border-radius: 8px !important;
    letter-spacing: 0.05em !important;
    text-transform: uppercase !important;
    opacity: 0.85 !important;
  }

  /* Pinned indicator */
  .dash-grid .card[data-pinned="true"]::after,
  .dash-grid .card.card-pinned::after {
    content: '📌' !important;
    position: absolute !important;
    top: 14px !important;
    left: 14px !important;
    font-size: 0.7rem !important;
    opacity: 0.6 !important;
  }
}

/* ─── 4. Cards Toolbar ──────────────────────────────────────── */
@media (max-width: 768px) {
  .cards-toolbar {
    padding: 10px 14px !important;
    margin: 0 !important;
    gap: 8px !important;
  }

  #cards-count-label {
    font-size: 0.75rem !important;
    font-weight: 600 !important;
    color: rgba(200,205,220,0.5) !important;
  }

  .toolbar-btn {
    font-size: 0.75rem !important;
    padding: 6px 12px !important;
    border-radius: 10px !important;
    min-height: 34px !important;
  }

  .sort-select {
    font-size: 0.75rem !important;
    padding: 6px 10px !important;
    border-radius: 10px !important;
    min-height: 34px !important;
  }
}

/* ─── 5. Empty State ────────────────────────────────────────── */
@media (max-width: 768px) {
  .empty-state,
  .smart-empty-state {
    padding: 60px 24px 40px !important;
    text-align: center !important;
    display: flex !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 10px !important;
  }

  .empty-icon,
  .smart-empty-icon {
    font-size: 3rem !important;
    margin-bottom: 8px !important;
    filter: drop-shadow(0 4px 12px rgba(139,92,246,0.3)) !important;
  }

  .empty-title,
  .smart-empty-title {
    font-size: 1.2rem !important;
    font-weight: 800 !important;
    color: var(--text) !important;
    letter-spacing: -0.02em !important;
  }

  .empty-sub,
  .smart-empty-sub {
    font-size: 0.85rem !important;
    color: rgba(200,205,220,0.55) !important;
    line-height: 1.6 !important;
    max-width: 240px !important;
  }

  .smart-show-all-btn {
    margin-top: 8px !important;
    padding: 12px 24px !important;
    border-radius: 14px !important;
    font-size: 0.9rem !important;
    font-weight: 700 !important;
    background: rgba(139,92,246,0.15) !important;
    border: 1px solid rgba(139,92,246,0.3) !important;
    color: #a78bfa !important;
    min-height: 46px !important;
  }
}

/* ─── 6. Page Mode Selector (toolbar context) ───────────────── */
@media (max-width: 768px) {
  /* Page mode selector hidden from header; will be placed in toolbar */
  #page-mode-selector {
    /* Managed via display:none above; JS can re-insert into toolbar */
  }
}

/* ─── 7. Card Entrance Animations (global) ──────────────────── */
@keyframes cardSlideIn {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 768px) {
  .dash-grid .card,
  #page-grid .card {
    animation: cardSlideIn 0.3s cubic-bezier(0.16,1,0.3,1) both !important;
  }

  .dash-grid .card:nth-child(1),
  #page-grid .card:nth-child(1) { animation-delay: 0.02s !important; }
  .dash-grid .card:nth-child(2),
  #page-grid .card:nth-child(2) { animation-delay: 0.05s !important; }
  .dash-grid .card:nth-child(3),
  #page-grid .card:nth-child(3) { animation-delay: 0.08s !important; }
  .dash-grid .card:nth-child(4),
  #page-grid .card:nth-child(4) { animation-delay: 0.11s !important; }
  .dash-grid .card:nth-child(5),
  #page-grid .card:nth-child(5) { animation-delay: 0.14s !important; }
  .dash-grid .card:nth-child(n+6),
  #page-grid .card:nth-child(n+6) { animation-delay: 0.17s !important; }
}

/* ─── 8. Login Screen ───────────────────────────────────────── */
@media (max-width: 768px) {
  .login-screen {
    background: radial-gradient(ellipse at 30% 20%, rgba(139,92,246,0.12) 0%, transparent 60%),
                radial-gradient(ellipse at 80% 80%, rgba(59,130,246,0.08) 0%, transparent 60%),
                #07080c !important;
  }

  .login-box {
    width: calc(100% - 32px) !important;
    max-width: 380px !important;
    padding: 36px 28px !important;
    border-radius: 28px !important;
    background: rgba(18,19,28,0.95) !important;
    border: 1px solid rgba(255,255,255,0.07) !important;
    box-shadow: 0 24px 64px rgba(0,0,0,0.7) !important;
  }

  .login-logo {
    font-size: 2.2rem !important;
    margin-bottom: 24px !important;
    letter-spacing: 0.12em !important;
  }

  .device-name-input {
    padding: 16px 20px !important;
    border-radius: 16px !important;
    font-size: 1rem !important;
    min-height: 52px !important;
    background: rgba(255,255,255,0.05) !important;
    border: 1px solid rgba(255,255,255,0.1) !important;
    color: var(--text) !important;
    width: 100% !important;
    box-sizing: border-box !important;
    margin-bottom: 12px !important;
  }

  .device-name-input:focus {
    /* Removed outline-killer; the broadened :focus-visible rule above handles keyboard focus,
       while non-keyboard focus still gets the border-color highlight below. */
    border-color: rgba(139,92,246,0.5) !important;
    background: rgba(255,255,255,0.07) !important;
  }

  .request-access-btn {
    width: 100% !important;
    padding: 16px !important;
    border-radius: 16px !important;
    font-size: 1rem !important;
    font-weight: 700 !important;
    min-height: 52px !important;
    background: linear-gradient(135deg, #7c3aed, #8b5cf6) !important;
    border: none !important;
    color: white !important;
    cursor: pointer !important;
    box-shadow: 0 4px 20px rgba(139,92,246,0.4) !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
  }

  .biometric-btn {
    width: 100% !important;
    padding: 16px !important;
    border-radius: 16px !important;
    font-size: 1rem !important;
    font-weight: 700 !important;
    min-height: 52px !important;
  }
}

/* ─── 9. Smart Radar ────────────────────────────────────────── */
@media (max-width: 768px) {
  .smart-radar {
    margin: 0 0 14px !important;
    border-radius: 24px !important;
    padding: 16px !important;
    background: linear-gradient(160deg, rgba(22,24,34,1) 0%, rgba(14,15,24,1) 100%) !important;
    border: 1px solid rgba(255,255,255,0.07) !important;
    box-shadow: 0 12px 32px rgba(0,0,0,0.5) !important;
    display: flex !important;
    flex-wrap: wrap !important;
    gap: 10px !important;
  }

  .sr-tile {
    flex: 1 1 calc(50% - 5px) !important;
    background: rgba(0,0,0,0.2) !important;
    border-radius: 16px !important;
    padding: 14px !important;
    border: 1px solid rgba(255,255,255,0.04) !important;
    min-height: 72px !important;
    display: flex !important;
    align-items: center !important;
    gap: 12px !important;
  }

  .sr-icon {
    font-size: 1.4rem !important;
    flex-shrink: 0 !important;
  }

  .sr-value {
    font-size: 1rem !important;
    font-weight: 800 !important;
    color: var(--text) !important;
    line-height: 1.2 !important;
  }

  .sr-label {
    font-size: 0.68rem !important;
    color: rgba(200,205,220,0.55) !important;
    font-weight: 500 !important;
    margin-top: 2px !important;
  }

  .sr-future-btn {
    flex: 1 1 100% !important;
    min-height: 46px !important;
    border-radius: 14px !important;
    font-size: 0.88rem !important;
    font-weight: 700 !important;
    background: rgba(139,92,246,0.12) !important;
    border: 1px solid rgba(139,92,246,0.25) !important;
    color: #c4b5fd !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 8px !important;
  }
}

/* ─── 10. Sidebar Overlay ───────────────────────────────────── */
@media (max-width: 768px) {
  .sidebar {
    border-radius: 0 !important;
    width: min(85vw, 300px) !important;
    padding-top: max(env(safe-area-inset-top, 0px), 44px) !important;
  }

  .mobile-sidebar-head {
    padding: 20px 20px 16px !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
    margin-bottom: 12px !important;
  }

  .mobile-sidebar-title {
    font-size: 1.1rem !important;
    font-weight: 800 !important;
    color: var(--text) !important;
  }

  .sidebar-nav-btn {
    padding: 12px 16px !important;
    border-radius: 14px !important;
    font-size: 0.9rem !important;
    min-height: 48px !important;
    transition: background 0.15s, color 0.15s !important;
  }

  .sidebar-nav,
  .sidebar-filters {
    gap: 10px !important;
    padding: 4px 16px 10px !important;
  }

  .sidebar-bottom {
    gap: 14px !important;
    padding: 10px 16px 18px !important;
  }

  .sidebar-bottom-group {
    gap: 12px !important;
  }

  .sidebar-bottom-divider {
    width: 44px !important;
    margin: 2px auto 6px !important;
    background: rgba(255,255,255,0.09) !important;
  }

  .sidebar-bottom .sidebar-icon-btn,
  .sidebar-bottom .sidebar-nav-btn {
    display: grid !important;
    grid-template-columns: auto minmax(0, 1fr) !important;
    align-items: center !important;
    column-gap: 16px !important;
    justify-content: initial !important;
    min-height: 56px !important;
    padding: 0 18px !important;
  }

  .sidebar-bottom .sidebar-icon-btn svg,
  .sidebar-bottom .sidebar-nav-btn svg {
    width: 22px !important;
    height: 22px !important;
    flex-shrink: 0 !important;
  }

  .sidebar-bottom .sidebar-icon-btn .sidebar-label,
  .sidebar-bottom .sidebar-nav-btn .sidebar-label {
    min-width: 0 !important;
    text-align: right !important;
    padding-inline-start: 2px !important;
  }

  .sidebar-nav-btn.active {
    background: rgba(139,92,246,0.15) !important;
    color: #c4b5fd !important;
  }

  .sidebar-nav-btn svg {
    width: 20px !important;
    height: 20px !important;
    flex-shrink: 0 !important;
  }
}

/* ═══════════════════════════════════════════════════════════
   END MOBILE OVERHAUL v2
   ═══════════════════════════════════════════════════════════ */

/* ─── MOBILE SEARCH BUTTON (visible only on mobile) ───────── */
.mobile-search-btn {
  display: none;
}
@media (max-width: 768px) {
  .mobile-search-btn {
    display: flex !important;
    min-width: 40px !important;
    min-height: 40px !important;
    border-radius: 12px !important;
    align-items: center !important;
    justify-content: center !important;
  }
  /* Search wrap — hidden by default on mobile, shown when active */
  #search-wrap {
    position: fixed !important;
    top: max(env(safe-area-inset-top,0px), 50px) !important;
    left: 0 !important;
    right: 0 !important;
    padding: 10px 14px !important;
    background: rgba(7,8,12,0.97) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
    border-bottom: 1px solid rgba(255,255,255,0.07) !important;
    z-index: 50 !important;
    display: none !important;
    box-shadow: 0 8px 24px rgba(0,0,0,0.5) !important;
  }
  #search-wrap.mobile-active {
    display: flex !important;
    animation: slideDownSubtle 0.22s cubic-bezier(0.16,1,0.3,1) !important;
  }
  #search-wrap .header-search-input {
    font-size: 0.95rem !important;
    padding: 12px 14px !important;
    min-height: 44px !important;
    border-radius: 14px !important;
    width: 100% !important;
  }
  @keyframes slideDownSubtle {
    from { opacity: 0; transform: translateY(-8px); }
    to   { opacity: 1; transform: translateY(0); }
  }
}

/* ─── PAGE MODE SELECTOR — shown in toolbar on mobile ─────── */
@media (max-width: 768px) {
  /* Show page mode selector at top of content area, not in header */
  #page-mode-selector {
    display: none !important; /* handled by JS per filter */
  }

  /* When shown as toolbar row */
  .page-mode-toolbar {
    display: flex;
    gap: 8px;
    padding: 6px 14px 10px;
    align-items: center;
  }

  .page-mode-toolbar .page-mode-btn {
    padding: 8px 16px !important;
    border-radius: 12px !important;
    font-size: 0.82rem !important;
    font-weight: 700 !important;
    border: 1px solid rgba(255,255,255,0.1) !important;
    background: rgba(255,255,255,0.04) !important;
    color: rgba(200,205,220,0.7) !important;
    height: 36px !important;
    min-height: 36px !important;
    display: flex !important;
    align-items: center !important;
    gap: 6px !important;
  }

  .page-mode-toolbar .page-mode-btn.active {
    background: rgba(139,92,246,0.18) !important;
    border-color: rgba(139,92,246,0.4) !important;
    color: #c4b5fd !important;
  }
}

/* ─── GLOBAL IMPROVEMENTS — both mobile & desktop ─────────── */

/* Smoother card hover on desktop */
@media (min-width: 769px) {
  .card {
    transition: transform 0.18s cubic-bezier(0.34,1.56,0.64,1), box-shadow 0.18s ease !important;
  }
  .card:hover {
    transform: translateY(-2px) scale(1.005) !important;
  }
}

/* Improved focus rings — broadened to all interactive elements */
:where(
  button,
  [role="button"],
  a,
  input,
  select,
  textarea,
  [tabindex]:not([tabindex="-1"])
):focus-visible {
  outline: 2px solid rgba(var(--accent-rgb),0.75) !important;
  outline-offset: 2px !important;
  border-radius: 4px;
}

/* Tag chips - nicer */
.card-footer-tag {
  transition: background 0.15s, color 0.15s !important;
}
.card-footer-tag:hover {
  background: rgba(139,92,246,0.2) !important;
  color: #c4b5fd !important;
}

/* Toast - better mobile positioning handled */
@media (max-width: 768px) {
  .toast {
    bottom: calc(74px + max(env(safe-area-inset-bottom,0px), 0px) + 8px) !important;
    left: 14px !important;
    right: 14px !important;
    top: auto !important;
    border-radius: 16px !important;
    text-align: center !important;
    font-size: 0.88rem !important;
  }
}

/* ─── MODAL IMPROVEMENTS ON MOBILE ────────────────────────── */
@media (max-width: 768px) {
  /* Modal handle bar */
  .modal-box::before {
    content: '';
    display: block;
    width: 36px;
    height: 4px;
    background: rgba(255,255,255,0.15);
    border-radius: 99px;
    margin: 0 auto 16px;
    flex-shrink: 0;
  }

  /* Modal title */
  .modal-title {
    font-size: 1.1rem !important;
    font-weight: 800 !important;
    letter-spacing: -0.02em !important;
  }

  /* Type tabs scrollable row */
  .type-tabs-bar {
    overflow-x: auto !important;
    scrollbar-width: none !important;
    -webkit-overflow-scrolling: touch !important;
    padding-bottom: 4px !important;
    flex-wrap: nowrap !important;
  }
  .type-tabs-bar::-webkit-scrollbar { display: none !important; }

  /* Form inputs */
  .modal-input {
    min-height: 44px !important;
    border-radius: 16px !important;
    font-size: 0.95rem !important;
    padding: 14px 16px !important;
  }

  /* Save button full-width */
  .btn-save {
    min-height: 52px !important;
    border-radius: 16px !important;
    font-size: 1rem !important;
    font-weight: 800 !important;
    letter-spacing: 0.01em !important;
  }
}

/* ─── SETTINGS PANEL ON MOBILE ─────────────────────────────── */
@media (max-width: 768px) {
  .settings-panel {
    border-radius: 28px 28px 0 0 !important;
    padding-bottom: max(env(safe-area-inset-bottom,0px), 0px) !important;
    max-height: 92dvh !important;
  }

  .settings-section {
    border-radius: 20px !important;
    padding: 18px !important;
    margin-bottom: 12px !important;
  }

  .settings-section h3 {
    font-size: 0.85rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.06em !important;
    text-transform: uppercase !important;
    color: rgba(200,205,220,0.55) !important;
    margin-bottom: 14px !important;
  }
}

/* ─── CARDS TOOLBAR HIDE ON MOBILE (minimal) ───────────────── */
@media (max-width: 768px) {
  /* Hide density and focus mode buttons on mobile — they don't fit */
  #density-btn,
  #focus-btn,
  #bulk-toggle-btn {
    display: none !important;
  }

  /* Sort select - compact */
  #sort-select {
    background: rgba(255,255,255,0.05) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    border-radius: 12px !important;
    color: rgba(200,205,220,0.7) !important;
    font-size: 0.78rem !important;
    padding: 6px 10px !important;
    min-height: 34px !important;
    cursor: pointer !important;
  }
}

/* ─── SMART RADAR SEPARATOR HIDE ON MOBILE ──────────────────── */
@media (max-width: 768px) {
  .sr-sep {
    display: none !important;
  }
}

/* ─── PINNED BADGE ON MOBILE CARDS ─────────────────────────── */
@media (max-width: 768px) {
  .pinned-card .card-type-badge::before {
    content: '📌 ' !important;
  }
}

/* ─── IMPROVE CARD COLORS PER TYPE ─────────────────────────── */
@media (max-width: 768px) {
  .dash-grid .card[data-type="reminder"] {
    border-inline-end: 3px solid rgba(251,146,60,0.4) !important;
  }
  .dash-grid .card[data-type="note"],
  .dash-grid .card[data-type="markdown"] {
    border-inline-end: 3px solid rgba(59,130,246,0.4) !important;
  }
  .dash-grid .card[data-type="link"] {
    border-inline-end: 3px solid rgba(34,197,94,0.4) !important;
  }
  .dash-grid .card[data-type="subscription"] {
    border-inline-end: 3px solid rgba(168,85,247,0.4) !important;
  }
  .dash-grid .card[data-type="document"] {
    border-inline-end: 3px solid rgba(245,158,11,0.4) !important;
  }
  .dash-grid .card[data-type="page"] {
    border-inline-end: 3px solid rgba(139,92,246,0.5) !important;
    background: linear-gradient(160deg, rgba(26,22,45,1) 0%, rgba(16,13,28,1) 100%) !important;
  }
  .dash-grid .card[data-type="routine"] {
    border-inline-end: 3px solid rgba(20,184,166,0.4) !important;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── POMODORO TIMER ─────────────────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.pomodoro-modal {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.pomodoro-modal.hidden { display: none !important; }

.pomodoro-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.6);
  backdrop-filter: blur(4px);
}

.pomodoro-sheet {
  position: relative;
  z-index: 1;
  width: min(100%, 420px);
  background: linear-gradient(180deg, rgba(18,20,32,0.99) 0%, rgba(10,11,18,0.99) 100%);
  border-radius: 28px 28px 0 0;
  padding: 12px 24px 40px;
  animation: mobileSlideUp 0.35s cubic-bezier(0.16,1,0.3,1);
  border: 1px solid rgba(255,255,255,0.07);
  border-bottom: none;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
}

.pomodoro-handle {
  width: 36px;
  height: 4px;
  background: rgba(255,255,255,0.12);
  border-radius: 99px;
  margin-bottom: 4px;
  flex-shrink: 0;
}

.pomodoro-header {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.pomodoro-mode-tabs {
  display: flex;
  gap: 6px;
  background: rgba(255,255,255,0.04);
  padding: 4px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.06);
}

.pomo-mode-btn {
  padding: 7px 14px;
  border-radius: 10px;
  border: none;
  background: transparent;
  color: rgba(200,205,220,0.5);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
  font-family: var(--font-ar);
}

.pomo-mode-btn.active {
  background: rgba(255,255,255,0.1);
  color: var(--text);
}

.pomodoro-close {
  background: rgba(255,255,255,0.06);
  border: none;
  width: 32px;
  height: 32px;
  border-radius: 10px;
  color: rgba(200,205,220,0.6);
  cursor: pointer;
  font-size: 0.85rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
  flex-shrink: 0;
}

.pomodoro-close:hover { background: rgba(255,255,255,0.1); }

/* Ring */
.pomodoro-ring-wrap {
  position: relative;
  width: 200px;
  height: 200px;
  flex-shrink: 0;
}

.pomodoro-ring {
  width: 200px;
  height: 200px;
  transform: rotate(-90deg);
}

.pomo-ring-bg {
  fill: none;
  stroke: rgba(255,255,255,0.06);
  stroke-width: 8;
}

.pomo-ring-fill {
  fill: none;
  stroke: var(--danger);
  stroke-width: 8;
  stroke-linecap: round;
  stroke-dasharray: 552.92 552.92; /* full circumference */
  transition: stroke-dasharray 1s linear, stroke 0.4s ease;
}

.pomodoro-time-display {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: 2.8rem;
  font-weight: 700;
  color: var(--text);
  letter-spacing: 0.02em;
  gap: 2px;
}

.pomo-colon {
  opacity: 0.5;
  font-size: 2.2rem;
  animation: pomoBlink 1s step-end infinite;
}

@keyframes pomoBlink {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 0.15; }
}
@media (prefers-reduced-motion: reduce) {
  .pomo-colon { animation: none; opacity: 0.5; }
}

/* Task label */
.pomodoro-task-label {
  font-size: 0.88rem;
  color: rgba(200,205,220,0.55);
  font-weight: 500;
  text-align: center;
}

/* Controls */
.pomodoro-controls {
  display: flex;
  align-items: center;
  gap: 20px;
}

.pomo-ctrl-btn {
  border: none;
  background: rgba(255,255,255,0.06);
  border-radius: 50%;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  color: rgba(200,205,220,0.7);
}

.pomo-ctrl-btn:hover { background: rgba(255,255,255,0.1); }

.pomo-reset, .pomo-skip {
  width: 48px;
  height: 48px;
}

.pomo-play {
  width: 72px;
  height: 72px;
  background: var(--danger) !important;
  color: white !important;
  box-shadow: 0 6px 24px rgba(239,68,68,0.4);
  transition: all 0.2s cubic-bezier(0.34,1.56,0.64,1) !important;
}

.pomo-play:active {
  transform: scale(0.92) !important;
}

/* Sessions dots */
.pomodoro-sessions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.pomo-session-dots {
  display: flex;
  gap: 8px;
}

.pomo-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: rgba(255,255,255,0.12);
  transition: all 0.3s;
}

.pomo-dot.active {
  background: var(--danger);
  box-shadow: 0 0 8px rgba(239,68,68,0.5);
}

.pomo-dot.done {
  background: rgba(34,211,117,0.7);
}

.pomo-session-label {
  font-size: 0.78rem;
  color: rgba(200,205,220,0.5);
  font-weight: 600;
}

/* Stats row */
.pomodoro-stats-row {
  display: flex;
  gap: 24px;
  width: 100%;
  justify-content: center;
}

.pomo-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}

.pomo-stat span:first-child {
  font-size: 1.4rem;
  font-weight: 800;
  color: var(--text);
  font-family: var(--font-mono);
}

.pomo-stat span:last-child {
  font-size: 0.72rem;
  color: rgba(200,205,220,0.5);
  font-weight: 500;
}

/* Mobile adjustments */
@media (max-width: 768px) {
  .pomodoro-sheet {
    padding-bottom: calc(32px + max(env(safe-area-inset-bottom,0px), 0px));
    border-radius: 32px 32px 0 0;
  }

  .pomodoro-ring-wrap {
    width: 180px;
    height: 180px;
  }

  .pomodoro-ring {
    width: 180px;
    height: 180px;
  }

  .pomodoro-time-display {
    font-size: 2.4rem;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── THEME COLOR SWATCHES ───────────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.theme-swatches-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  padding: 4px 16px 12px;
}

.theme-swatch {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 2px solid transparent;
  cursor: pointer;
  transition: all 0.2s cubic-bezier(0.34,1.56,0.64,1);
  position: relative;
  outline: none;
  background: var(--swatch-color, var(--accent));
  box-shadow: 0 0 0 0px var(--swatch-color, var(--accent));
}

.theme-swatch:hover {
  transform: scale(1.18);
  box-shadow: 0 4px 16px rgba(0,0,0,0.4) !important;
}

.theme-swatch.active {
  border-color: white !important;
  transform: scale(1.12);
  box-shadow: 0 0 0 3px rgba(255,255,255,0.2) !important;
}

.theme-swatch.active::after {
  content: '✓';
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: white;
  font-size: 0.85rem;
  font-weight: 800;
}

@media (max-width: 768px) {
  .theme-swatch {
    width: 42px;
    height: 42px;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── PULL TO REFRESH INDICATOR ──────────────────────────────
   ═══════════════════════════════════════════════════════════ */

#ptr-indicator {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 10px 16px;
  opacity: 0;
  transform: translateY(-20px);
  transition: transform 0.2s ease, opacity 0.2s ease;
  color: rgba(200,205,220,0.6);
  font-size: 0.82rem;
  font-weight: 600;
  pointer-events: none;
}

#ptr-indicator svg {
  transition: transform 0.1s ease;
}

#ptr-indicator.ready {
  color: #a78bfa;
}

#ptr-indicator.ready svg {
  stroke: #a78bfa;
}

.ptr-spin {
  animation: spin 0.8s linear infinite;
}

@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* ═══════════════════════════════════════════════════════════
   ─── CARD QUICK PREVIEW TOOLTIP (Desktop) ──────────────────
   ═══════════════════════════════════════════════════════════ */

.card-preview-tooltip {
  position: fixed;
  z-index: 500;
  width: 260px;
  background: rgba(18,20,32,0.98);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 18px;
  padding: 14px 16px;
  box-shadow: 0 16px 48px rgba(0,0,0,0.7), 0 0 0 1px rgba(255,255,255,0.04) inset;
  backdrop-filter: blur(20px);
  animation: previewFadeIn 0.15s ease;
  pointer-events: none;
}

@keyframes previewFadeIn {
  from { opacity: 0; transform: translateX(-6px) scale(0.97); }
  to   { opacity: 1; transform: translateX(0) scale(1); }
}

.cprev-header {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 8px;
}

.cprev-icon {
  font-size: 1.2rem;
  flex-shrink: 0;
}

.cprev-title {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.cprev-body {
  margin-bottom: 8px;
}

.cprev-note {
  font-size: 0.78rem;
  color: rgba(200,205,220,0.65);
  line-height: 1.55;
  margin: 0;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 4;
  overflow: hidden;
}

.cprev-url {
  font-size: 0.72rem;
  color: #60a5fa;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.cprev-meta {
  font-size: 0.78rem;
  color: rgba(200,205,220,0.65);
  margin: 0;
}

.cprev-sub-item {
  display: flex;
  justify-content: space-between;
  font-size: 0.78rem;
  color: rgba(200,205,220,0.7);
  padding: 3px 0;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}

.cprev-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  margin-bottom: 8px;
}

.cprev-tag {
  font-size: 0.68rem;
  font-weight: 600;
  color: #a78bfa;
  background: rgba(139,92,246,0.12);
  padding: 3px 8px;
  border-radius: 7px;
  border: 1px solid rgba(139,92,246,0.2);
}

.cprev-hint {
  font-size: 0.68rem;
  color: rgba(200,205,220,0.3);
  text-align: center;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.04);
  margin-top: 4px;
}

/* ═══════════════════════════════════════════════════════════
   ─── CARD NEW HIGHLIGHT ─────────────────────────────────────
   ═══════════════════════════════════════════════════════════ */

@keyframes cardNewPulse {
  0%   { box-shadow: 0 0 0 0 rgba(139,92,246,0.5); }
  50%  { box-shadow: 0 0 0 8px rgba(139,92,246,0); }
  100% { box-shadow: 0 0 0 0 rgba(139,92,246,0); }
}

.card-new-highlight {
  animation: cardNewPulse 1.2s ease !important;
}

/* ═══════════════════════════════════════════════════════════
   ─── SIDEBAR STATS IMPROVEMENTS ─────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.sidebar-stats {
  padding: 8px 12px;
}

.sidebar-stat-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 10px;
  border-radius: 10px;
  font-size: 0.78rem;
  font-weight: 600;
  color: rgba(200,205,220,0.6);
  transition: background 0.15s;
}

.sidebar-stat-item:hover {
  background: rgba(255,255,255,0.04);
  color: rgba(200,205,220,0.9);
}

.sidebar-stat-item .stat-count {
  font-weight: 700;
  color: rgba(200,205,220,0.85);
  font-family: var(--font-mono);
  font-size: 0.82rem;
}

.sidebar-stat-item.danger .stat-count {
  color: #f87171;
}

.sidebar-stat-item.success .stat-count {
  color: #4ade80;
}

/* ═══════════════════════════════════════════════════════════
   ─── IMPROVED CARD TYPE BADGES ──────────────────────────────
   ═══════════════════════════════════════════════════════════ */

/* Ensure bento-glow has higher opacity on desktop hover */
@media (min-width: 769px) {
  .card:hover .bento-glow-bg {
    opacity: 0.14 !important;
    transition: opacity 0.3s ease;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── BETTER TAGS BAR ────────────────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.tag-chip {
  transition: all 0.18s !important;
}

.tag-chip:hover {
  background: rgba(139,92,246,0.18) !important;
  border-color: rgba(139,92,246,0.35) !important;
  color: #c4b5fd !important;
  transform: translateY(-1px) !important;
}

/* ═══════════════════════════════════════════════════════════
   ─── FILTER HIGHLIGHT ON MOBILE ─────────────────────────────
   ═══════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* Pill for section label */
  #header-section-label {
    background: rgba(139,92,246,0.12);
    border: 1px solid rgba(139,92,246,0.2);
    border-radius: 10px;
    padding: 4px 12px;
    font-size: 0.9rem !important;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── ACTIVITY FEED ──────────────────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.activity-feed-modal {
  position: fixed;
  inset: 0;
  z-index: 180;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}

.activity-feed-modal.hidden { display: none !important; }

.act-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(4px);
}

.act-sheet {
  position: relative;
  z-index: 1;
  width: min(100%, 460px);
  max-height: 80dvh;
  background: linear-gradient(180deg, rgba(18,20,32,0.99) 0%, rgba(10,11,18,0.99) 100%);
  border-radius: 28px 28px 0 0;
  border: 1px solid rgba(255,255,255,0.07);
  border-bottom: none;
  display: flex;
  flex-direction: column;
  animation: mobileSlideUp 0.3s cubic-bezier(0.16,1,0.3,1);
  overflow: hidden;
}

.act-handle {
  width: 36px;
  height: 4px;
  background: rgba(255,255,255,0.12);
  border-radius: 99px;
  margin: 12px auto 0;
  flex-shrink: 0;
}

.act-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px 12px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}

.act-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.02em;
}

.act-close {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  border: none;
  background: rgba(255,255,255,0.06);
  color: rgba(200,205,220,0.6);
  cursor: pointer;
  font-size: 0.8rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}

.act-close:hover { background: rgba(255,255,255,0.1); }

.act-body {
  flex: 1;
  overflow-y: auto;
  padding: 12px 20px 24px;
  -webkit-overflow-scrolling: touch;
}

.act-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 40px 20px;
  text-align: center;
}

.act-group {
  margin-bottom: 16px;
}

.act-day-label {
  font-size: 0.72rem;
  font-weight: 700;
  color: rgba(200,205,220,0.4);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 6px 0;
  margin-bottom: 6px;
}

.act-entry {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid rgba(255,255,255,0.04);
}

.act-entry:last-child { border-bottom: none; }

.act-dot {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  font-weight: 800;
  flex-shrink: 0;
  background: color-mix(in srgb, var(--act-c, var(--accent)) 13%, transparent);
  color: var(--act-c, var(--accent));
}

.act-content {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  font-size: 0.85rem;
  color: rgba(200,205,220,0.8);
  overflow: hidden;
}

.act-card-icon {
  font-size: 1rem;
  flex-shrink: 0;
}

.act-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.act-text b {
  color: var(--text);
  font-weight: 700;
  margin-left: 2px;
}

.act-time {
  font-size: 0.72rem;
  color: rgba(200,205,220,0.35);
  font-family: var(--font-mono);
  flex-shrink: 0;
}

@media (max-width: 768px) {
  .act-sheet {
    max-height: 88dvh;
    padding-bottom: max(env(safe-area-inset-bottom,0px), 0px);
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── GOALS TRACKER ──────────────────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.goals-modal {
  position: fixed;
  inset: 0;
  z-index: 190;
  display: flex;
  align-items: flex-end;
  justify-content: center;
}
.goals-modal.hidden { display: none !important; }

@media (max-width: 768px) {
  #stats-modal.modal-overlay,
  #calendar-modal.modal-overlay,
  .pomodoro-modal,
  .activity-feed-modal,
  .goals-modal {
    z-index: 260 !important;
  }
}

.goals-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(4px);
}

.goals-sheet {
  position: relative;
  z-index: 1;
  width: min(100%, 460px);
  max-height: 85dvh;
  background: linear-gradient(180deg, rgba(18,20,32,0.99) 0%, rgba(10,11,18,0.99) 100%);
  border-radius: 28px 28px 0 0;
  border: 1px solid rgba(255,255,255,0.07);
  border-bottom: none;
  display: flex;
  flex-direction: column;
  animation: mobileSlideUp 0.3s cubic-bezier(0.16,1,0.3,1);
  overflow: hidden;
  padding-bottom: max(env(safe-area-inset-bottom,0px), 0px);
}

.goals-handle {
  width: 36px;
  height: 4px;
  background: rgba(255,255,255,0.12);
  border-radius: 99px;
  margin: 12px auto 0;
  flex-shrink: 0;
}

.goals-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 20px 12px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}

.goals-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 1rem;
  font-weight: 800;
  color: var(--text);
}

.goals-close {
  width: 30px;
  height: 30px;
  border-radius: 9px;
  border: none;
  background: rgba(255,255,255,0.06);
  color: rgba(200,205,220,0.6);
  cursor: pointer;
  font-size: 0.8rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s;
}

.goals-close:hover { background: rgba(255,255,255,0.1); }

.goals-body {
  flex: 1;
  overflow-y: auto;
  padding: 16px 20px;
  -webkit-overflow-scrolling: touch;
}

.goals-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 30px 20px;
  text-align: center;
}

.goals-progress-wrap {
  margin-bottom: 16px;
  background: rgba(255,255,255,0.03);
  border-radius: 16px;
  padding: 14px 16px;
  border: 1px solid rgba(255,255,255,0.05);
}

.goals-progress-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.goals-progress-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: rgba(200,205,220,0.6);
}

.goals-progress-pct {
  font-size: 1.1rem;
  font-weight: 800;
  color: #a78bfa;
  font-family: var(--font-mono);
}

.goals-progress-track {
  height: 6px;
  background: rgba(255,255,255,0.07);
  border-radius: 99px;
  overflow: hidden;
  margin-bottom: 8px;
}

.goals-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, #7c3aed, #a78bfa);
  border-radius: 99px;
  transition: width 0.5s cubic-bezier(0.34,1.56,0.64,1);
}

.goals-progress-sub {
  font-size: 0.74rem;
  color: rgba(200,205,220,0.45);
  text-align: center;
}

.goals-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.goal-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  background: rgba(255,255,255,0.03);
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.05);
  transition: all 0.2s;
}

.goal-item.done {
  opacity: 0.55;
  background: rgba(34,197,94,0.04);
  border-color: rgba(34,197,94,0.1);
}

.goal-check {
  width: 26px;
  height: 26px;
  border-radius: 8px;
  border: 2px solid rgba(255,255,255,0.15);
  background: transparent;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #4ade80;
  flex-shrink: 0;
  transition: all 0.2s;
}

.goal-item.done .goal-check {
  background: rgba(34,197,94,0.15);
  border-color: rgba(34,197,94,0.3);
}

.goal-text {
  flex: 1;
  font-size: 0.88rem;
  font-weight: 600;
  color: var(--text);
  transition: all 0.2s;
}

.goal-item.done .goal-text {
  text-decoration: line-through;
  color: rgba(200,205,220,0.5);
}

.goal-delete {
  width: 26px;
  height: 26px;
  border-radius: 7px;
  border: none;
  background: transparent;
  color: rgba(200,205,220,0.25);
  cursor: pointer;
  font-size: 0.78rem;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
  flex-shrink: 0;
}

.goal-delete:hover {
  background: rgba(239,68,68,0.12);
  color: #f87171;
}

.goals-add-wrap {
  display: flex;
  gap: 10px;
  padding: 12px 20px 16px;
  border-top: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}

.goals-input {
  flex: 1;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 14px;
  padding: 12px 16px;
  color: var(--text);
  font-size: 0.9rem;
  font-family: var(--font-ar);
  outline: none;
  transition: border-color 0.15s;
}

.goals-input:focus {
  border-color: rgba(139,92,246,0.4);
  background: rgba(255,255,255,0.07);
}

.goals-add-btn {
  width: 46px;
  height: 46px;
  border-radius: 14px;
  border: none;
  background: rgba(139,92,246,0.2);
  color: #a78bfa;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.2s;
  flex-shrink: 0;
}

.goals-add-btn:hover {
  background: rgba(139,92,246,0.3);
  transform: scale(1.05);
}

@media (max-width: 768px) {
  .sidebar.mobile-open {
    z-index: 320 !important;
    isolation: isolate;
  }

  .sidebar.mobile-open .sidebar-bottom,
  .sidebar.mobile-open .sidebar-bottom-group,
  .sidebar.mobile-open .sidebar-icon-btn,
  .sidebar.mobile-open .sidebar-nav-btn {
    position: relative;
    z-index: 1;
    pointer-events: auto !important;
  }

  .sidebar.mobile-open ~ .mobile-bottom-nav,
  body.mobile-sidebar-open .mobile-bottom-nav {
    display: none !important;
    opacity: 0 !important;
    visibility: hidden !important;
    pointer-events: none !important;
    transform: translateY(24px) !important;
  }
}

/* ─── BOTTOM NAV: 6 items now ───────────────────────────────── */
@media (max-width: 768px) {
  .mobile-bottom-nav {
    grid-template-columns: 1fr 1fr 1fr 60px 1fr 1fr !important;
  }
}

/* ═══════════════════════════════════════════════════════════
   ─── SPEED DIAL (Mobile FAB) ───────────────────────────────
   ═══════════════════════════════════════════════════════════ */

.speed-dial-overlay {
  position: fixed;
  inset: 0;
  z-index: 59;
  pointer-events: none;
}

.speed-dial-overlay:not(.hidden) {
  pointer-events: all;
}

.speed-dial-overlay.hidden { display: none !important; }

.speed-dial-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0.35);
  backdrop-filter: blur(2px);
}

.speed-dial-actions {
  position: absolute;
  bottom: calc(74px + max(env(safe-area-inset-bottom,0px), 0px) + 80px);
  left: 14px;
  display: flex;
  flex-direction: column;
  gap: 12px;
  align-items: flex-start;
}

.speed-dial-item {
  display: flex;
  align-items: center;
  gap: 12px;
  animation: sdItemIn 0.2s cubic-bezier(0.34,1.56,0.64,1) both;
  cursor: pointer;
}

.speed-dial-item:nth-child(1) { animation-delay: 0.05s; }
.speed-dial-item:nth-child(2) { animation-delay: 0.08s; }
.speed-dial-item:nth-child(3) { animation-delay: 0.11s; }
.speed-dial-item:nth-child(4) { animation-delay: 0.14s; }

@keyframes sdItemIn {
  from { opacity: 0; transform: translateY(12px) scale(0.9); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.sd-label {
  background: rgba(10,11,18,0.92);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  padding: 6px 14px;
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  box-shadow: 0 4px 12px rgba(0,0,0,0.4);
}

.sd-btn {
  width: 50px;
  height: 50px;
  border-radius: 16px;
  border: none;
  font-size: 1.3rem;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0,0,0,0.4);
  transition: transform 0.15s;
  flex-shrink: 0;
}

.sd-btn:active { transform: scale(0.9); }

.sd-goals    { background: linear-gradient(135deg, #7c3aed, #8b5cf6); color: white; }
.sd-pomo     { background: linear-gradient(135deg, #dc2626, #ef4444); color: white; }
.sd-add      { background: linear-gradient(135deg, #059669, #10b981); color: white; font-size: 1.4rem; font-weight: 800; }
.sd-activity { background: linear-gradient(135deg, #0369a1, #3b82f6); color: white; }

/* ═══════════════════════════════════════════════════
   FOCUS / ZEN MODE
═══════════════════════════════════════════════════ */
body.focus-mode .sidebar,
body.focus-mode #mobile-sidebar-overlay {
  display: none !important;
}

body.focus-mode .dash-header {
  padding: 6px 20px !important;
  height: 44px !important;
  min-height: 44px !important;
}

body.focus-mode .dash-header .dash-header-right > *:not(.dash-logo):not(.mobile-menu-btn) {
  display: none !important;
}

body.focus-mode .dash-header .dash-header-left > *:not(#focus-mode-btn) {
  display: none !important;
}

body.focus-mode .dash-body {
  margin-right: 0 !important;
  padding-right: 0 !important;
}

body.focus-mode .main-content {
  padding-top: 4px !important;
}

/* Focus mode subtle indicator */
body.focus-mode::after {
  content: 'فوكس';
  position: fixed;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  background: rgba(139, 92, 246, 0.25);
  border: 1px solid rgba(139, 92, 246, 0.4);
  color: #a78bfa;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  padding: 4px 12px;
  border-radius: 20px;
  pointer-events: none;
  z-index: 9999;
  animation: focusBadgeIn 0.3s ease;
}

@keyframes focusBadgeIn {
  from { opacity: 0; transform: translateX(-50%) translateY(8px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

#focus-mode-btn.active {
  color: #a78bfa;
  background: rgba(139, 92, 246, 0.15);
  border-color: rgba(139, 92, 246, 0.3);
}

/* ═══════════════════════════════════════════════════
   AMOLED DARK THEME
═══════════════════════════════════════════════════ */
body.amoled-mode {
  --bg: #000000;
  --surface: #080808;
  --surface2: #101010;
  --border: rgba(255,255,255,0.06);
}

body.amoled-mode .card {
  background: #0c0c0c !important;
  border-color: rgba(255,255,255,0.07) !important;
}

body.amoled-mode .sidebar {
  background: #060606 !important;
  border-color: rgba(255,255,255,0.05) !important;
}

body.amoled-mode .dash-header {
  background: rgba(0,0,0,0.95) !important;
  border-color: rgba(255,255,255,0.06) !important;
}

body.amoled-mode .modal-box {
  background: #0a0a0a !important;
}


/* ═══════════════════════════════════════════════════
   CALENDAR MODAL
═══════════════════════════════════════════════════ */
.calendar-modal-box {
  width: calc(100vw - 24px);
  max-width: 620px;
  box-sizing: border-box;
}

.calendar-modal-header {
  display: grid;
  grid-template-columns: 132px minmax(0, 1fr) 132px;
  align-items: center;
  column-gap: 18px;
  min-height: 72px;
  padding-bottom: 12px;
}

.cal-header-side {
  display: flex;
  align-items: center;
  gap: 10px;
  justify-self: start;
}

.cal-header-spacer {
  width: 132px;
  height: 1px;
  justify-self: end;
}

.cal-month-nav {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 14px;
  min-width: 0;
  width: 100%;
  justify-self: center;
  flex-wrap: nowrap;
  direction: ltr;
}

.cal-nav-btn {
  width: 44px;
  height: 44px;
  border-radius: 14px;
  border: 1px solid rgba(255,255,255,0.11);
  background: rgba(255,255,255,0.045);
  color: var(--text);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04);
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.cal-nav-btn:hover {
  background: rgba(89, 216, 255, 0.10);
  border-color: rgba(89, 216, 255, 0.28);
  transform: translateY(-1px);
}

.cal-today-btn {
  min-height: 44px;
  padding: 0 18px;
  border-radius: 14px;
  border: 1px solid rgba(89, 216, 255, 0.26);
  background: rgba(89, 216, 255, 0.10);
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.98rem;
  font-weight: 700;
  cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
  transition: background 0.15s, border-color 0.15s, transform 0.15s;
}
.cal-today-btn:hover {
  background: rgba(89, 216, 255, 0.16);
  border-color: rgba(89, 216, 255, 0.38);
  transform: translateY(-1px);
}

.calendar-modal-header .modal-title {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 800;
  white-space: nowrap;
  min-width: 0;
  flex: 0 1 auto;
  direction: rtl;
}

.calendar-modal-header .close-btn {
  min-width: 44px;
  min-height: 44px;
}

@media (max-width: 640px) {
  .calendar-modal-header {
    grid-template-columns: 1fr;
    row-gap: 14px;
    min-height: auto;
    padding-bottom: 12px;
  }

  .cal-month-nav {
    order: 1;
  }

  .cal-header-spacer {
    display: none;
  }

  .cal-header-side {
    order: 2;
    justify-self: start;
  }
}

.cal-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  padding: 12px 16px 4px;
  gap: 2px;
}
.cal-weekday {
  text-align: center;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.05em;
  padding: 4px 0;
}

.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 3px;
  padding: 4px 16px 12px;
}

.cal-cell {
  aspect-ratio: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  cursor: pointer;
  position: relative;
  transition: background 0.15s, transform 0.1s;
  background: transparent;
  gap: 2px;
}
.cal-cell:hover { background: rgba(255,255,255,0.07); }
.cal-cell:active { transform: scale(0.9); }
.cal-cell-empty { pointer-events: none; }

.cal-day-num {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  line-height: 1;
}

.cal-today {
  background: rgba(139, 92, 246, 0.18) !important;
  box-shadow: 0 0 0 1.5px rgba(139, 92, 246, 0.5);
}
.cal-today .cal-day-num {
  color: #a78bfa;
  font-weight: 800;
}

.cal-selected {
  background: rgba(139, 92, 246, 0.3) !important;
  box-shadow: 0 0 0 2px rgba(139, 92, 246, 0.7);
}
.cal-selected .cal-day-num { color: #c4b5fd; font-weight: 800; }

.cal-dots {
  display: flex;
  gap: 2px;
  align-items: center;
  justify-content: center;
}
.cal-dot {
  width: 4px; height: 4px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--cal-dot-c, var(--muted));
}

.cal-day-detail {
  border-top: 1px solid rgba(255,255,255,0.07);
  padding: 14px 16px;
  max-height: 220px;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cal-detail-header {
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.05em;
  margin-bottom: 4px;
}
.cal-detail-empty {
  font-size: 0.82rem;
  color: var(--muted);
  text-align: center;
  padding: 16px 0;
}

.cal-detail-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 10px;
  background: rgba(255,255,255,0.04);
  border-radius: 10px;
  border-inline-start: 3px solid var(--cal-item-color, #6366f1);
  animation: calItemIn 0.2s ease;
}
@keyframes calItemIn {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .cal-detail-item { animation: none; }
}
.cal-detail-icon { font-size: 1.1rem; flex-shrink: 0; }
.cal-detail-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cal-detail-title { font-size: 0.85rem; font-weight: 600; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cal-detail-sub { font-size: 0.73rem; color: var(--muted); }

@media (max-width: 600px) {
  .cal-day-num { font-size: 0.78rem; }
  .cal-cell { border-radius: 8px; }
  .calendar-modal-box { max-height: 90vh; overflow-y: auto; }
}

/* ═══════════════════════════════════════════════════
   SMART BAR (unified: stats + events in one row)
═══════════════════════════════════════════════════ */
.smart-bar-wrap {
  margin-bottom: 6px;
}

.smart-bar {
  display: flex;
  align-items: center;
  gap: 0;
  overflow: hidden;
  transition: max-height 0.35s cubic-bezier(0.4,0,0.2,1), opacity 0.25s ease, margin 0.3s ease;
  max-height: 80px;
}

.smart-bar.collapsed {
  max-height: 0;
  opacity: 0;
  pointer-events: none;
  margin: 0;
}

/* Left: stat chips (goals + productivity) */
.sb-stats {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}

.sb-stat {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
  white-space: nowrap;
}
.sb-stat:hover { background: rgba(255,255,255,0.07); transform: translateY(-1px); }
.sb-stat:active { transform: scale(0.96); }

.sb-stat-icon { font-size: 1.05rem; line-height: 1; }

.sb-stat-body { display: flex; flex-direction: column; gap: 1px; }

.sb-stat-val {
  font-size: 1rem;
  font-weight: 800;
  color: var(--text);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.sb-stat-total { font-size: 0.68em; color: var(--muted); font-weight: 500; }
.sb-stat-label { font-size: 0.68rem; color: var(--muted); font-weight: 600; }

.sb-goal-bar {
  width: 44px; height: 3px;
  background: rgba(255,255,255,0.1);
  border-radius: 2px;
  overflow: hidden;
  margin-top: 3px;
}
.sb-goal-fill {
  height: 100%;
  background: linear-gradient(90deg, #7c3aed, #a78bfa);
  border-radius: 2px;
  transition: width 0.5s ease;
}

/* Divider between stats and events */
.sb-divider {
  width: 1px; height: 28px;
  background: rgba(255,255,255,0.1);
  margin: 0 8px;
  flex-shrink: 0;
}

/* Right: scrollable event pills */
.sb-events {
  display: flex;
  align-items: center;
  gap: 6px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  flex: 1;
  min-width: 0;
}
.sb-events::-webkit-scrollbar { display: none; }

/* Collapse toggle */
.smart-bar-toggle {
  display: block;
  margin: 2px auto 8px;
  width: 44px;
  height: 16px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  transition: background 0.15s;
}
.smart-bar-toggle:hover { background: rgba(255,255,255,0.1); }
.smart-bar-toggle svg { transition: transform 0.3s ease; }

@media (max-width: 600px) {
  .sb-stat { padding: 6px 10px; }
  .sb-stat-val { font-size: 0.9rem; }
  .sb-stat-icon { font-size: 0.95rem; }
  .smart-bar { max-height: 120px; flex-wrap: nowrap; }
}

/* ═══════════════════════════════════════════════════
   UPCOMING EVENTS RIBBON
═══════════════════════════════════════════════════ */
.events-ribbon {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  overflow: hidden;
}

.events-ribbon-label {
  font-size: 0.72rem;
  font-weight: 800;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  white-space: nowrap;
  flex-shrink: 0;
}

.events-ribbon-scroll {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  -ms-overflow-style: none;
  padding-bottom: 2px;
}
.events-ribbon-scroll::-webkit-scrollbar { display: none; }

.event-pill {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 20px;
  white-space: nowrap;
  cursor: default;
  flex-shrink: 0;
  border: 1px solid transparent;
  transition: transform 0.15s;
  animation: pillIn 0.3s ease both;
}

.event-pill:hover { transform: translateY(-2px); }

@keyframes pillIn {
  from { opacity: 0; transform: scale(0.85) translateY(4px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

.event-pill-icon { font-size: 0.9rem; }
.event-pill-title { font-size: 0.78rem; font-weight: 600; color: var(--text); }
.event-pill-badge {
  font-size: 0.68rem;
  font-weight: 800;
  padding: 1px 6px;
  border-radius: 8px;
  letter-spacing: 0.02em;
}

/* Color variants */
.ev-overdue {
  background: rgba(239, 68, 68, 0.1);
  border-color: rgba(239, 68, 68, 0.25);
}
.ev-overdue .event-pill-badge { background: rgba(239,68,68,0.2); color: #f87171; }

.ev-today {
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.3);
}
.ev-today .event-pill-badge { background: rgba(245,158,11,0.2); color: #fbbf24; }

.ev-tomorrow {
  background: rgba(59, 130, 246, 0.1);
  border-color: rgba(59, 130, 246, 0.25);
}
.ev-tomorrow .event-pill-badge { background: rgba(59,130,246,0.2); color: #60a5fa; }

.ev-soon {
  background: rgba(99, 102, 241, 0.1);
  border-color: rgba(99, 102, 241, 0.25);
}
.ev-soon .event-pill-badge { background: rgba(99,102,241,0.2); color: #818cf8; }

.ev-later {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.08);
}
.ev-later .event-pill-badge { background: rgba(255,255,255,0.08); color: var(--muted); }

.ev-far { background: rgba(255,255,255,0.03); border-color: rgba(255,255,255,0.06); opacity: 0.75; }
.ev-far .event-pill-badge { background: rgba(255,255,255,0.06); color: var(--muted); }

@media (max-width: 600px) {
  .events-ribbon-label { display: none; }
  .event-pill { padding: 5px 10px; }
  .event-pill-title { font-size: 0.75rem; }
}

/* ═══════════════════════════════════════════════════
   STATS CANVAS CHART
═══════════════════════════════════════════════════ */
.stat-canvas-wrap {
  width: 100%;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
  padding: 12px 10px 6px;
  margin-bottom: 4px;
}
.stat-activity-canvas {
  width: 100%;
  height: 110px;
  display: block;
}

/* ═══════════════════════════════════════════════════
   EXPORT / IMPORT BUTTONS
═══════════════════════════════════════════════════ */
.settings-export-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 12px;
  color: var(--text);
  font-size: 0.82rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
  flex: 1;
  justify-content: center;
  font-family: var(--font-ar);
}
.settings-export-btn:hover {
  background: rgba(255,255,255,0.09);
  transform: translateY(-1px);
}
.settings-export-btn:active { transform: scale(0.97); }

.settings-import-btn {
  background: rgba(139,92,246,0.08);
  border-color: rgba(139,92,246,0.2);
  color: #a78bfa;
}
.settings-import-btn:hover {
  background: rgba(139,92,246,0.15);
}

/* ═══════════════════════════════════════════════════
   CONTENT HEADER — unified bar above cards grid
═══════════════════════════════════════════════════ */
.content-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 4px 0 12px;
  min-height: 38px;
  direction: rtl;
}

/* Left side: stats + sep + controls */
.ch-left {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1;
  min-width: 0;
  direction: rtl;
}

.ch-controls {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-inline-start: auto;
  flex-shrink: 0;
}

/* ── Stat chips row ── */
.ch-stats-row {
  display: flex;
  align-items: center;
  gap: 4px;
}

.ch-stat {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px 4px 8px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.04);
  font-size: 0.72rem;
  cursor: default;
  transition: border-color 0.2s, background 0.2s;
  white-space: nowrap;
}
.ch-stat svg { opacity: 0.55; flex-shrink: 0; }
.ch-stat-val {
  font-family: var(--font-mono);
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--text);
  line-height: 1;
}
.ch-stat-lbl {
  font-size: 0.68rem;
  color: var(--muted);
  font-weight: 500;
}

/* zero state — dim everything */
.ch-stat.cs-zero {
  opacity: 0.45;
}

/* pinned — purple */
.ch-stat.cs-accent {
  border-color: rgba(139,92,246,0.3);
  background: rgba(139,92,246,0.07);
}
.ch-stat.cs-accent .ch-stat-val { color: #c4b5fd; }
.ch-stat.cs-accent svg { opacity: 0.8; }

/* due today — red */
.ch-stat.cs-danger {
  border-color: rgba(239,68,68,0.35);
  background: rgba(239,68,68,0.07);
}
.ch-stat.cs-danger .ch-stat-val { color: #f87171; }
.ch-stat.cs-danger svg { opacity: 0.8; }

/* upcoming — blue */
.ch-stat.cs-info {
  border-color: rgba(59,130,246,0.3);
  background: rgba(59,130,246,0.07);
}
.ch-stat.cs-info .ch-stat-val { color: #93c5fd; }
.ch-stat.cs-info svg { opacity: 0.8; }

/* legacy count span — kept for compat, now hidden */
.ch-count { display: none; }

.ch-sep {
  width: 1px;
  height: 14px;
  background: rgba(255,255,255,0.12);
  flex-shrink: 0;
}

.ch-sort {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  color: var(--text);
  font-size: 0.75rem;
  font-family: var(--font-ar);
  padding: 4px 8px;
  cursor: pointer;
  outline: none;
  transition: background 0.15s, border-color 0.15s;
  -webkit-appearance: none;
  appearance: none;
}
.ch-sort:hover,
.ch-sort:focus {
  background: rgba(255,255,255,0.09);
  border-color: rgba(255,255,255,0.2);
}
.ch-sort option {
  background: #1a1a2e;
  color: var(--text);
}

.ch-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  color: var(--muted);
  font-size: 0.74rem;
  font-family: var(--font-ar);
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.1s;
  white-space: nowrap;
}
.ch-btn:hover {
  background: rgba(255,255,255,0.1);
  color: var(--text);
  border-color: rgba(255,255,255,0.2);
}
.ch-btn:active { transform: scale(0.95); }
.ch-btn.active {
  background: rgba(139,92,246,0.18);
  border-color: rgba(139,92,246,0.4);
  color: #c4b5fd;
}

/* Right side: event pills — scrollable */
.ch-right {
  display: flex;
  align-items: center;
  gap: 6px;
  overflow-x: auto;
  flex: 0 1 auto;
  max-width: 48%;
  min-width: 0;
  scrollbar-width: none;
  -ms-overflow-style: none;
  justify-content: flex-end;
  direction: rtl;
}
.ch-right::-webkit-scrollbar { display: none; }

/* ── Mobile: content-header 2-row layout ── */
@media (max-width: 768px) {
  .content-header {
    flex-direction: column;
    align-items: stretch;
    gap: 5px;
    padding: 4px 0 8px;
  }

  /* Outer ch-left: column layout = chips on top, controls below */
  .ch-left {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 5px;
    width: 100%;
    flex: unset;
  }

  /* Row 1: stat chips — horizontal scroll */
  .ch-stats-row {
    display: flex;
    flex-direction: row;
    gap: 5px;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    padding-bottom: 1px;
  }
  .ch-stats-row::-webkit-scrollbar { display: none; }
  .ch-stat {
    flex-shrink: 0;
    padding: 5px 10px;
    font-size: 0.72rem;
  }
  .ch-stat-lbl { display: inline; }

  /* Row 2: controls — sort compact, right-aligned in RTL */
  .ch-controls {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 6px;
    width: 100%;
    margin-right: 0;
    justify-content: flex-start; /* RTL: flex-start = right side */
  }
  .ch-sep { display: none; }
  .ch-sort {
    flex: unset;
    width: auto;
    font-size: 0.75rem;
    padding: 5px 10px;
  }
  .ch-btn { font-size: 0.75rem; padding: 5px 10px; flex-shrink: 0; }

  /* Hide event pills on mobile */
  .ch-right { display: none; }

  /* Tags bar — horizontal scroll, no wrap */
  .type-filters-bar {
    overflow-x: auto;
    scrollbar-width: none;
    padding: 0 0 8px;
    gap: 6px;
  }
  .type-filters-bar::-webkit-scrollbar { display: none; }
  .type-filter-chip {
    padding: 7px 12px;
    min-height: 36px;
    font-size: 0.76rem;
  }
  .type-filter-count { min-width: 20px; font-size: 0.66rem; }

  .tags-bar {
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
    padding: 0 0 6px;
    gap: 5px;
  }
  .tags-bar::-webkit-scrollbar { display: none; }
  .tags-bar-label { display: none; }

  /* Phantom card — smaller on mobile */
  .card-phantom {
    min-height: 72px !important;
    height: 72px !important;
  }
  .phantom-inner { gap: 5px; }
  .phantom-inner svg { width: 18px; height: 18px; }
  .phantom-inner span { font-size: 0.72rem; }
}

/* ═══════════════════════════════════════════════════
   CARD TYPE REDESIGNS — GROUP D (contact/code/document/linkgroup)
═══════════════════════════════════════════════════ */

/* ── CONTACT CARD ── */
.contact-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  direction: rtl;
}
.contact-avatar-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.contact-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
  letter-spacing: 0;
  position: relative;
  overflow: hidden;
  text-shadow: 0 1px 3px rgba(0,0,0,0.3);
  transition: transform .2s cubic-bezier(.2,.8,.25,1);
}
.contact-avatar-gradient {
  background: var(--ct-avatar-bg, var(--accent));
  box-shadow:
    0 4px 12px -2px rgba(0,0,0,0.35),
    inset 0 0 0 1px rgba(255,255,255,0.12);
}
.contact-avatar-gradient::after {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(circle at 30% 20%, rgba(255,255,255,0.22) 0%, transparent 55%);
  pointer-events: none;
  border-radius: 50%;
}
.card-container:hover .contact-avatar {
  transform: scale(1.06) rotate(-3deg);
}
.contact-name-label {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--text);
  opacity: 0.9;
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.contact-info-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.contact-info-row {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 0.78rem;
  color: var(--muted);
  direction: rtl;
}
.contact-info-icon {
  width: 13px;
  height: 13px;
  flex-shrink: 0;
  color: rgba(var(--c-contact), 0.8);
}
.contact-info-val {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
  opacity: 0.8;
}
.contact-email-truncate {
  max-width: 140px;
  display: inline-block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.contact-copy-btn {
  background: rgba(255,255,255,0.07);
  border: 1px solid var(--border2);
  color: var(--muted);
  border-radius: 4px;
  padding: 1px 5px;
  font-size: 0.72rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}
.contact-copy-btn:hover {
  background: rgba(var(--c-contact), 0.2);
  color: rgb(var(--c-contact));
}
.contact-note {
  font-size: 0.72rem;
  color: var(--muted);
  margin-top: 2px;
  line-height: 1.4;
}

/* ── CODE CARD ── */
.code-card-body {
  position: relative;
  direction: ltr;
}
.code-lang-badge {
  position: absolute;
  top: 0;
  left: 0;
  background: rgba(var(--c-code), 0.18);
  color: rgb(var(--c-code));
  border: 1px solid rgba(var(--c-code), 0.3);
  font-size: 0.65rem;
  font-family: var(--font-mono);
  font-weight: 600;
  padding: 1px 7px;
  border-radius: 4px;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  line-height: 1.6;
  z-index: 1;
}
.code-inner-block {
  background: rgba(0,0,0,0.35);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 8px;
  padding: 8px 8px 6px;
  margin-top: 22px;
  overflow: hidden;
}
.code-line-row {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  min-height: 1.4em;
  direction: ltr;
}
.code-line-num {
  color: rgba(255,255,255,0.2);
  font-family: var(--font-mono);
  font-size: 0.67rem;
  min-width: 14px;
  text-align: right;
  user-select: none;
  padding-top: 1px;
  flex-shrink: 0;
}
.code-line-text {
  font-family: var(--font-mono);
  font-size: 0.71rem;
  color: rgba(255,255,255,0.78);
  white-space: pre;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  line-height: 1.5;
}
.code-more-badge {
  font-family: var(--font-mono);
  font-size: 0.65rem;
  color: rgba(var(--c-code), 0.7);
  margin-top: 4px;
  padding: 1px 0;
}

/* ── LINKGROUP CARD ── */
.linkgroup-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  direction: rtl;
}
.lg-links-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  direction: rtl;
}
.lg-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border2);
  border-radius: 20px;
  padding: 2px 8px 2px 4px;
  font-size: 0.72rem;
  color: var(--text);
  opacity: 0.9;
  max-width: 110px;
  overflow: hidden;
  white-space: nowrap;
}
.lg-chip-icon {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.7rem;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
  background: var(--lg-chip-bg, var(--accent));
}
.lg-chip-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  flex: 1;
  font-size: 0.71rem;
}
.lg-overflow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(var(--c-linkgroup), 0.15);
  border: 1px solid rgba(var(--c-linkgroup), 0.3);
  color: rgb(var(--c-linkgroup));
  border-radius: 20px;
  padding: 2px 9px;
  font-size: 0.71rem;
  font-weight: 600;
}
.lg-count {
  font-size: 0.7rem;
  color: var(--muted);
  padding-right: 2px;
}

/* ── DOCUMENT CARD (redesign classes) ── */
.docs-preview-redesign {
  display: flex;
  flex-direction: column;
  gap: 5px;
  direction: rtl;
}
.card-documents-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
  max-height: 132px;
  overflow-y: auto;
  padding-inline-end: 2px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.card-documents-list::-webkit-scrollbar { width: 6px; }
.card-documents-list::-webkit-scrollbar-track { background: transparent; }
.card-documents-list::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 3px;
}
.doc-summary-row {
  margin-bottom: 2px;
}
.doc-summary-next {
  font-size: 0.68rem;
  color: var(--muted);
  background: rgba(255,255,255,0.04);
  border-radius: 5px;
  padding: 1px 6px;
}
.doc-summary-badge.expired {
  background: rgba(239,68,68,0.15);
  color: #f87171;
  border: 1px solid rgba(239,68,68,0.3);
  font-size: 0.68rem;
  border-radius: 5px;
  padding: 1px 6px;
}
.doc-row-redesign {
  display: flex;
  align-items: center;
  gap: 7px;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 5px 8px;
  direction: rtl;
}
.doc-row-icon {
  font-size: 0.95rem;
  flex-shrink: 0;
}
.doc-row-info {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 1px;
  overflow: hidden;
}
.doc-row-holder {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.doc-row-date {
  font-size: 0.65rem;
  color: var(--muted);
}
.doc-urgency-badge {
  font-size: 0.65rem;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 12px;
  flex-shrink: 0;
  white-space: nowrap;
}
.doc-urg-expired {
  background: rgba(239,68,68,0.18);
  color: #f87171;
  border: 1px solid rgba(239,68,68,0.35);
}
.doc-urg-soon {
  background: rgba(251,146,60,0.18);
  color: #fb923c;
  border: 1px solid rgba(251,146,60,0.35);
}
.doc-urg-safe {
  background: rgba(16,185,129,0.13);
  color: #34d399;
  border: 1px solid rgba(16,185,129,0.28);
  font-weight: 400;
  font-size: 0.62rem;
}

/* ═══════════════════════════════════════════════════
   CARD TYPE REDESIGNS — GROUP A (status/wifi/server/command)
═══════════════════════════════════════════════════ */

/* ── Status card ───────────────────────────────── */
@keyframes status-pulse {
  0%, 100% { box-shadow: 0 0 0 0 currentColor; opacity: 1; }
  50%       { box-shadow: 0 0 0 5px transparent; opacity: 0.7; }
}

.status-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  font-family: var(--font-ar);
}

.status-indicator-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.status-indicator-main {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-wrap: wrap;
  min-width: 0;
}

.status-inline-action {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.status-dot-big {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  flex-shrink: 0;
  animation: status-pulse 2s ease-in-out infinite;
}
.status-dot-big.online  { background: #22c55e; color: #22c55e; }
.status-dot-big.offline { background: var(--danger); color: var(--danger); }
.status-dot-big.unknown { background: #6b7280; color: #6b7280; animation: none; }

.ping-bars {
  display: flex;
  align-items: flex-end;
  gap: 2px;
  height: 13px;
}
.ping-bar {
  width: 4px;
  border-radius: 1px;
  background: rgba(255,255,255,0.15);
  transition: background 0.3s;
}
.ping-bar.filled { background: #22c55e; }
.pb-sm { height: 5px; }
.pb-md { height: 8px; }
.pb-lg { height: 11px; }
.pg-bar-full { height: 100%; }

.status-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--text);
}

.status-latency {
  font-size: 0.7rem;
  font-family: var(--font-mono);
  color: rgb(var(--c-status));
  background: rgba(20,184,166,0.1);
  padding: 1px 5px;
  border-radius: 4px;
  margin-right: 0;
}

.status-url {
  font-family: var(--font-mono);
  font-size: 0.7rem;
  color: var(--muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  direction: ltr;
  text-align: right;
}

/* ── WiFi card ─────────────────────────────────── */
.wifi-card-body {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.wifi-signal-icon {
  width: 48px;
  height: 32px;
  margin-bottom: 2px;
}
.wifi-signal-icon svg {
  width: 100%;
  height: 100%;
}
/* Animated WiFi waves: 3 arcs pulse outward sequentially */
.wifi-signal-icon svg path:nth-of-type(2),
.wifi-signal-icon svg path:nth-of-type(3),
.wifi-signal-icon svg path:nth-of-type(4) {
  transform-origin: 24px 30px;
  animation: wifiWavePulse 2.2s ease-in-out infinite;
}
.wifi-signal-icon svg path:nth-of-type(2) { animation-delay: 0s; }
.wifi-signal-icon svg path:nth-of-type(3) { animation-delay: 0.35s; }
.wifi-signal-icon svg path:nth-of-type(4) { animation-delay: 0.7s; }
@keyframes wifiWavePulse {
  0%   { opacity: 0.25; }
  40%  { opacity: 1; }
  70%  { opacity: 0.55; }
  100% { opacity: 0.25; }
}
@media (prefers-reduced-motion: reduce) {
  .wifi-signal-icon svg path { animation: none !important; opacity: 1 !important; }
}

.wifi-ssid-big {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
  font-family: var(--font-ar);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  text-shadow: 0 2px 8px rgba(0,0,0,0.18);
}

.wifi-pass-row {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: nowrap;
}
.wifi-pass-row .wifi-password-dots {
  font-family: var(--font-mono);
  font-size: 0.78rem;
  color: var(--muted);
  letter-spacing: 2px;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.wifi-note {
  font-size: 0.7rem;
  color: var(--muted);
  font-family: var(--font-ar);
}

/* ── Server card ───────────────────────────────── */
.server-card-body {
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-family: var(--font-mono);
}

.server-terminal-header {
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(255,255,255,0.04);
  border-radius: 6px 6px 0 0;
  padding: 3px 7px;
  margin-bottom: 2px;
}

.server-terminal-dots {
  display: flex;
  gap: 4px;
  align-items: center;
}
.server-terminal-dots span {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  opacity: 0.85;
}
.server-terminal-dots span:nth-child(1) { background: #ff5f57; }
.server-terminal-dots span:nth-child(2) { background: #febc2e; }
.server-terminal-dots span:nth-child(3) { background: #28c840; }

.server-terminal-title {
  font-size: 0.65rem;
  font-family: var(--font-mono);
  color: var(--muted);
  margin-inline-start: auto;
  letter-spacing: 0.05em;
}

.server-host-display {
  font-size: 0.9rem;
  font-weight: 700;
  color: rgb(var(--c-server));
  font-family: var(--font-mono);
  direction: ltr;
  text-align: right;
  letter-spacing: -0.01em;
  line-height: 1.3;
}

.server-user-display {
  font-size: 0.72rem;
  color: var(--muted);
  font-family: var(--font-mono);
  direction: ltr;
  text-align: right;
}

/* ── Command card ──────────────────────────────── */
.cmd-block {
  display: flex;
  align-items: baseline;
  gap: 6px;
  background: rgba(139,92,246,0.06);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 7px;
  padding: 6px 9px;
  font-family: var(--font-mono);
  direction: ltr;
  text-align: left;
  overflow: hidden;
}

.cmd-prompt {
  color: var(--accent);
  font-weight: 700;
  font-size: 0.85rem;
  flex-shrink: 0;
  user-select: none;
}

.cmd-text {
  font-size: 0.78rem;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
}

.cmd-linecount {
  font-size: 0.65rem;
  color: var(--muted);
  flex-shrink: 0;
  background: rgba(255,255,255,0.06);
  padding: 1px 5px;
  border-radius: 4px;
}

/* ═══════════════════════════════════════════════════
   CARD TYPE REDESIGNS — GROUP C (checklist/routine/expense/subscription)
═══════════════════════════════════════════════════ */

/* ── Checklist ─────────────────────────────────── */
.checklist-card-body {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  width: 100%;
  direction: rtl;
}
.checklist-items-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 5px;
  min-width: 0;
}
.checklist-item-row {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 7px;
  font-size: 0.78rem;
  color: var(--text);
}
.checklist-item-dot {
  flex-shrink: 0;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: 2px solid rgba(255,255,255,0.25);
  background: transparent;
  transition: background 0.2s, border-color 0.2s;
}
.checklist-item-dot.done {
  background: #22c55e;
  border-color: #22c55e;
}
.checklist-item-text {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
}
.checklist-item-text.done {
  text-decoration: line-through;
  color: var(--muted);
}
.checklist-ring-col {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  position: relative;
}
.checklist-ring-svg {
  display: block;
  transform: rotate(-90deg);
}
.checklist-ring-track {
  fill: none;
  stroke: rgba(255,255,255,0.08);
  stroke-width: 4;
}
.checklist-ring-fill {
  fill: none;
  stroke-width: 4;
  stroke-linecap: round;
  transition: stroke-dasharray 0.4s ease;
}
.checklist-ring-pct {
  position: absolute;
  font-size: 0.62rem;
  font-weight: 700;
  line-height: 1;
  pointer-events: none;
  color: var(--ring-c, var(--accent));
}
.checklist-ring-col .checklist-ring-fill,
.ring-wrap .checklist-ring-fill { stroke: var(--ring-c, var(--accent)); }
.ring-wrap { position: relative; display: inline-flex; align-items: center; justify-content: center; }
.ring-pct-label { position: absolute; font-size: 0.6rem; font-weight: 700; color: var(--ring-c, var(--accent)); }
.mob-quote-body { font-style: italic; border-inline-start: 3px solid var(--accent2); padding-inline-start: 10px; }
.mob-quote-attr { text-align: end; opacity: 0.7; }

/* ── Routine ────────────────────────────────────── */
.routine-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  width: 100%;
  direction: rtl;
}
.routine-habits-grid {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: 6px;
}
.routine-habit-dot {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 2px solid rgba(251,113,133,0.35);
  background: transparent;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.72rem;
  cursor: pointer;
  color: var(--muted);
  transition: background 0.18s, border-color 0.18s, color 0.18s;
  user-select: none;
}
.routine-habit-dot.done {
  background: rgba(251,113,133,0.8);
  border-color: rgba(251,113,133,0.9);
  color: #fff;
}
.routine-habit-dot.more {
  border-style: dashed;
  font-size: 0.65rem;
  cursor: default;
}
.routine-progress-row {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  justify-content: flex-end;
}
.routine-streak-badge {
  font-size: 0.85rem;
  font-weight: 700;
  color: #f97316;
  letter-spacing: 0.02em;
}

/* Routine heatmap: 14 tiny cells showing recent days */
.routine-heat-row {
  display: flex; gap: 2px;
  padding: 2px 0;
  direction: ltr; /* oldest → newest left to right */
}
.routine-heat-cell {
  flex: 1;
  height: 12px;
  border-radius: 2px;
  background: rgba(255,255,255,0.04);
  transition: transform .15s, background .15s;
}
.routine-heat-cell:hover { transform: scaleY(1.3); }
.routine-heat-lvl-0 { background: rgba(255,255,255,0.04); }
.routine-heat-lvl-1 { background: rgba(251,113,133,0.25); }
.routine-heat-lvl-2 { background: rgba(251,113,133,0.5); }
.routine-heat-lvl-3 { background: rgba(251,113,133,0.75); }
.routine-heat-lvl-4 {
  background: #fb7185;
  box-shadow: 0 0 4px rgba(251,113,133,0.45);
}

/* ── Expense ────────────────────────────────────── */
.expense-card-body {
  display: flex;
  flex-direction: column;
  gap: 7px;
  width: 100%;
  direction: rtl;
}

/* Expense donut chart (category breakdown) */
.expense-donut-row {
  display: flex; align-items: center; gap: 10px;
  padding: 4px 0;
}
.expense-donut {
  flex-shrink: 0;
  color: var(--text);
}
.expense-donut-arc {
  transition: stroke-dasharray .8s cubic-bezier(.2,.8,.25,1);
  animation: expenseDonutDraw .8s cubic-bezier(.2,.8,.25,1);
}
@keyframes expenseDonutDraw {
  from { stroke-dasharray: 0 999; }
}
.expense-donut-legend {
  flex: 1; min-width: 0;
  display: flex; flex-direction: column; gap: 2px;
}
.expense-donut-leg {
  display: flex; align-items: center; gap: 6px;
  font-size: 0.7rem;
  color: var(--muted);
}
.expense-donut-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--dot-c, var(--muted));
}
.expense-donut-name {
  flex: 1; min-width: 0;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  color: var(--text);
  font-weight: 500;
}
.expense-donut-pct {
  font-weight: 700;
  color: var(--muted);
  font-size: 0.65rem;
}
.expense-amounts-row {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  gap: 5px;
}
.expense-spent-big {
  font-size: 1.15rem;
  font-weight: 800;
  color: var(--text);
  line-height: 1;
}
.expense-sep {
  font-size: 0.85rem;
  color: var(--muted);
}
.expense-budget-big {
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--muted);
}
.expense-currency-badge {
  font-size: 0.7rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 5px;
  background: rgba(255,255,255,0.07);
  color: var(--muted);
  margin-right: 2px;
}
.expense-meter {
  width: 100%;
  height: 7px;
  border-radius: 99px;
  background: rgba(255,255,255,0.07);
  overflow: hidden;
}
.expense-meter-fill {
  height: 100%;
  border-radius: 99px;
  transition: width 0.4s ease, background 0.3s;
}
.expense-meter-fill.green  { background: #22c55e; }
.expense-meter-fill.orange { background: #f97316; }
.expense-meter-fill.red    { background: var(--danger); }
.expense-warning {
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--danger);
  background: rgba(239,68,68,0.1);
  border-radius: 6px;
  padding: 2px 8px;
  display: inline-block;
}

/* ── Subscription total row ─────────────────────── */
.subs-total-row {
  font-size: 0.75rem;
  font-weight: 700;
  color: rgba(52,211,153,0.9);
  background: rgba(52,211,153,0.07);
  border-radius: 7px;
  padding: 4px 10px;
  margin-bottom: 4px;
  direction: rtl;
  text-align: right;
}

/* ═══════════════════════════════════════════════════
   CARD TYPE REDESIGNS — GROUP B (reminder/countdown/tracker/counter)
═══════════════════════════════════════════════════ */

/* ── REMINDER ── */
.reminder-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-top: 4px;
  position: relative;
  overflow: hidden;
}
.reminder-card-body {
  display: flex;
  flex-direction: column;
  gap: 9px;
  flex: 1;
  min-height: 0;
  padding-top: 2px;
}

/* Big countdown hero block — dominant visual element */
.reminder-countdown {
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 8px;
  padding: 14px 10px 10px;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(255,255,255,0.04), rgba(255,255,255,0.01));
  border: 1px solid rgba(255,255,255,0.06);
  font-family: var(--font-ar);
  line-height: 1;
  margin-bottom: 2px;
  position: relative;
  overflow: hidden;
}
.reminder-countdown::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at center top, var(--rc-glow, rgba(139,92,246,0.15)) 0%, transparent 65%);
  opacity: 0.8;
  pointer-events: none;
}
.reminder-countdown .rc-big {
  font-size: 2.2rem;
  font-weight: 800;
  font-family: var(--font-mono, 'IBM Plex Mono', monospace);
  letter-spacing: -0.02em;
  color: var(--rc-color, #fff);
  text-shadow: 0 2px 12px var(--rc-glow, rgba(139,92,246,0.35));
  position: relative;
  z-index: 1;
}
.reminder-countdown .rc-lbl {
  font-size: 0.72rem;
  color: rgba(255,255,255,0.7);
  font-weight: 600;
  position: relative;
  z-index: 1;
}
.reminder-countdown.rc-overdue {
  --rc-color: #fca5a5;
  --rc-glow: rgba(239,68,68,0.3);
  background: linear-gradient(135deg, rgba(239,68,68,0.1), rgba(239,68,68,0.02));
  border-color: rgba(239,68,68,0.2);
  animation: rcPulseOverdue 2s ease-in-out infinite;
}
.reminder-countdown.rc-today {
  --rc-color: #fde68a;
  --rc-glow: rgba(245,158,11,0.28);
  background: linear-gradient(135deg, rgba(245,158,11,0.1), rgba(245,158,11,0.02));
  border-color: rgba(245,158,11,0.2);
}
.reminder-countdown.rc-soon {
  --rc-color: #c4b5fd;
  --rc-glow: rgba(139,92,246,0.25);
  background: linear-gradient(135deg, rgba(139,92,246,0.1), rgba(139,92,246,0.02));
  border-color: rgba(139,92,246,0.2);
}
.reminder-countdown.rc-far {
  --rc-color: #86efac;
  --rc-glow: rgba(34,197,94,0.22);
  background: linear-gradient(135deg, rgba(34,197,94,0.08), rgba(34,197,94,0.02));
  border-color: rgba(34,197,94,0.18);
}
.reminder-countdown.rc-done {
  --rc-color: #86efac;
  --rc-glow: rgba(34,197,94,0.3);
  background: linear-gradient(135deg, rgba(34,197,94,0.14), rgba(34,197,94,0.04));
  border-color: rgba(34,197,94,0.3);
}
.reminder-countdown.rc-done .rc-big {
  font-size: 1.8rem;
  font-family: var(--font-ar);
}
@keyframes rcPulseOverdue {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.35); }
  50%      { box-shadow: 0 0 0 6px rgba(239,68,68,0); }
}
@media (prefers-reduced-motion: reduce) {
  .reminder-countdown.rc-overdue { animation: none; }
}

.reminder-strip {
  height: 5px;
  border-radius: 3px;
  width: 100%;
  margin-bottom: 2px;
  background: rgba(255,255,255,0.08);
  overflow: hidden;
  position: relative;
}
.reminder-strip-fill {
  height: 100%;
  width: 0;
  border-radius: inherit;
  transition: width 0.5s ease, background 0.3s;
  background: var(--rem-color, rgba(255,255,255,0.35));
  box-shadow: 0 0 8px color-mix(in srgb, var(--rem-color, transparent) 47%, transparent);
}
.reminder-strip.rs-overdue .reminder-strip-fill { background: var(--rem-color, var(--danger)); }
.reminder-strip.rs-soon    .reminder-strip-fill { background: var(--rem-color, rgb(var(--c-reminder))); }
.reminder-strip.rs-done    .reminder-strip-fill { background: #22c55e; box-shadow: none; }
.reminder-strip.rs-normal  .reminder-strip-fill { background: var(--rem-color, rgba(255,255,255,0.35)); }
.reminder-date-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.8rem;
  color: rgba(255,255,255,0.82);
  direction: rtl;
  padding: 6px 10px;
  background: rgba(255,255,255,0.03);
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.05);
}
.reminder-date-row svg {
  opacity: 0.7;
  flex-shrink: 0;
  color: var(--accent2, #a78bfa);
}
.reminder-date-row .rdr-date {
  font-family: var(--font-mono, monospace);
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.02em;
}
.reminder-badges-row {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
}
.reminder-done-overlay {
  font-size: 0.72rem;
  color: #22c55e;
  font-weight: 600;
  letter-spacing: 0.03em;
}

/* ── COUNTDOWN ── */
.countdown-card-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 4px 0;
}
.countdown-ring {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
}
.countdown-ring-svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transform: rotate(-90deg);
}
.countdown-ring-track {
  fill: none;
  stroke: rgba(255,255,255,0.08);
  stroke-width: 4;
}
.countdown-ring-fill {
  fill: none;
  stroke: rgb(var(--c-countdown));
  stroke-width: 4;
  stroke-linecap: round;
  transition: stroke-dashoffset 0.6s ease;
}
.countdown-remaining-big {
  position: relative;
  z-index: 1;
  font-size: 0.78rem;
  font-weight: 700;
  color: var(--text);
  text-align: center;
  line-height: 1.2;
  max-width: 60px;
  word-break: break-all;
}
.countdown-target-date {
  font-size: 0.68rem;
  color: var(--muted);
  text-align: center;
}
.countdown-expired-big {
  font-size: 2rem;
  line-height: 1;
}

/* ── TRACKER ── */
.tracker-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  align-items: center;
  padding: 2px 0;
}
.tracker-main-row {
  display: flex;
  align-items: baseline;
  gap: 5px;
  justify-content: center;
}
.tracker-num-huge {
  font-size: 2.2rem;
  font-weight: 800;
  color: rgb(var(--c-tracker));
  line-height: 1;
  letter-spacing: -0.02em;
}
.tracker-unit-small {
  font-size: 0.8rem;
  color: var(--muted);
  font-weight: 500;
}
.tracker-note-text {
  font-size: 0.7rem;
  color: var(--muted);
  text-align: center;
}
.tracker-btn-row {
  display: flex;
  gap: 14px;
  align-items: center;
  justify-content: center;
  margin-top: 4px;
}
.tracker-btn-circle {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  border: 2px solid rgba(var(--c-tracker), 0.5);
  background: rgba(var(--c-tracker), 0.1);
  color: rgb(var(--c-tracker));
  font-size: 1.3rem;
  font-weight: 700;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s, transform 0.1s;
  line-height: 1;
}
.tracker-btn-circle:active {
  transform: scale(0.9);
  background: rgba(var(--c-tracker), 0.25);
}

/* Sparkline inside tracker card body */
.tracker-spark {
  display: flex; align-items: center; gap: 6px;
  justify-content: center;
  margin: 2px 0;
}
.spark-svg {
  display: block;
  filter: drop-shadow(0 1px 3px rgba(6,182,212,0.25));
}
.tracker-spark-trend {
  font-size: 0.7rem;
  font-weight: 700;
  padding: 1px 6px;
  border-radius: 6px;
  line-height: 1.2;
}
.tracker-trend-up {
  color: #22c55e;
  background: rgba(34,197,94,0.12);
}
.tracker-trend-down {
  color: var(--danger);
  background: rgba(239,68,68,0.12);
}
.tracker-trend-flat {
  color: #06b6d4;
  background: rgba(6,182,212,0.1);
}
.spark-empty {
  background: linear-gradient(90deg, rgba(255,255,255,0.03), rgba(255,255,255,0.06), rgba(255,255,255,0.03));
  border-radius: 4px;
  width: var(--spark-w, 100%);
  height: var(--spark-h, 40px);
}

/* ── COUNTER ── */
.counter-card-body {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 2px 0;
}
.counter-tap-area {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  width: 80px;
  height: 80px;
  border-radius: 50%;
  background: rgba(var(--c-counter), 0.08);
  border: 2px solid rgba(var(--c-counter), 0.25);
  transition: background 0.15s, transform 0.1s;
  user-select: none;
  -webkit-user-select: none;
}
.counter-tap-area:active {
  transform: scale(0.93);
  background: rgba(var(--c-counter), 0.2);
}
.counter-tap-area .countdown-ring-svg {
  position: absolute;
  inset: -6px;
  width: calc(100% + 12px);
  height: calc(100% + 12px);
}
.counter-tap-area .countdown-ring-fill {
  stroke: rgb(var(--c-counter));
}
.counter-big-num {
  font-size: 1.9rem;
  font-weight: 800;
  color: rgb(var(--c-counter));
  line-height: 1;
  position: relative;
  z-index: 1;
  font-variant-numeric: tabular-nums;
  transition: color .2s;
}
.counter-big-num.counter-bump {
  animation: counterBump .4s cubic-bezier(.25,1.5,.5,1);
}
@keyframes counterBump {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.22); color: #fde68a; }
  100% { transform: scale(1); }
}
.counter-max-frac {
  font-size: 0.65rem;
  color: var(--muted);
  position: relative;
  z-index: 1;
  margin-top: 1px;
}

/* ═══════════════════════════════════════════════════
   CARD TYPE REDESIGNS — GROUP E (note/page/quicktext/markdown/fields)
═══════════════════════════════════════════════════ */

/* ── NOTE CARD ── */
.note-card-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.note-line {
  font-size: 0.8rem;
  color: var(--text);
  opacity: 0.85;
  line-height: 1.55;
  white-space: pre-wrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
}
.note-more-lines {
  font-size: 0.7rem;
  color: var(--muted);
  margin-top: 2px;
}
.note-wordcount-badge {
  display: inline-block;
  margin-top: 6px;
  font-size: 0.68rem;
  font-family: var(--font-mono);
  color: var(--muted);
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 6px;
  padding: 2px 7px;
}

/* ── PAGE CARD ── */
.page-card-body {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 4px 0;
}
.page-folder-svg {
  width: 32px;
  height: 32px;
  color: rgba(var(--card-color, 209,97,255), 0.7);
  flex-shrink: 0;
}
.page-info-col {
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.page-name-display {
  font-family: var(--font-mono);
  font-size: 0.82rem;
  font-weight: 700;
  color: var(--text);
  letter-spacing: 0.3px;
}
.page-card-count {
  font-size: 0.69rem;
  color: var(--muted);
}

/* ── QUICKTEXT CARD ── */
.quicktext-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.qt-preview {
  font-size: 0.78rem;
  color: var(--text);
  opacity: 0.8;
  line-height: 1.5;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  border-inline-start: 2px solid rgba(var(--card-color, 236,72,153), 0.5);
  padding-inline-start: 8px;
}
.qt-meta-row {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
}
.qt-badge {
  font-size: 0.68rem;
  font-family: var(--font-mono);
  padding: 2px 7px;
  border-radius: 6px;
  background: rgba(var(--card-color, 236,72,153), 0.1);
  border: 1px solid rgba(var(--card-color, 236,72,153), 0.2);
  color: rgb(var(--card-color, 236,72,153));
}
.qt-badge-muted {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.08);
  color: var(--muted);
}
.qt-copy-btn {
  font-size: 0.72rem;
}

/* ── MARKDOWN CARD ── */
.markdown-card-body {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.md-type-badge {
  display: inline-block;
  font-size: 0.6rem;
  font-family: var(--font-mono);
  font-weight: 700;
  letter-spacing: 1px;
  padding: 1px 6px;
  border-radius: 4px;
  background: rgba(168,85,247,0.15);
  border: 1px solid rgba(168,85,247,0.3);
  color: #c084fc;
  align-self: flex-start;
  margin-bottom: 2px;
}
.md-title-line {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.md-preview-line {
  font-size: 0.74rem;
  color: var(--muted);
  line-height: 1.4;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.md-line-count {
  font-size: 0.65rem;
  font-family: var(--font-mono);
  color: var(--muted);
  margin-top: 2px;
}

/* ── FIELDS CARD ── */
.fields-card-body {
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: 132px;
  overflow-y: auto;
  padding-inline-end: 2px;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.fields-card-body::-webkit-scrollbar { width: 6px; }
.fields-card-body::-webkit-scrollbar-track { background: transparent; }
.fields-card-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 3px;
}
.fields-empty {
  font-size: 0.78rem;
  color: var(--muted);
}
.field-row-redesign {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 6px 8px;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.055);
  border-radius: 9px;
  min-width: 0;
}
.field-label-redesign {
  font-size: 0.68rem;
  color: var(--muted);
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
  min-width: 60px;
}
.field-value-redesign {
  font-size: 0.74rem;
  color: var(--text);
  font-family: var(--font-mono);
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.field-copy-btn-redesign {
  background: rgba(255,255,255,0.045);
  border: 1px solid rgba(255,255,255,0.06);
  color: var(--muted);
  cursor: pointer;
  font-size: 0.72rem;
  padding: 3px 6px;
  border-radius: 7px;
  opacity: 1;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
  flex-shrink: 0;
}
.field-copy-btn-redesign:hover {
  background: rgba(96,211,255,0.12);
  border-color: rgba(96,211,255,0.28);
  color: #7dd3fc;
}
.field-more-row {
  font-size: 0.68rem;
  color: var(--muted);
  text-align: center;
  padding-top: 4px;
}

/* ─── FLAT CARD LOOK — remove glow/effects ───────────────── */
.dash-grid .card::before,
#page-grid .card::before {
  display: none !important;
  background: none !important;
  opacity: 0 !important;
}

.dash-grid .bento-glow-bg,
#page-grid .bento-glow-bg {
  display: none !important;
  opacity: 0 !important;
}

.dash-grid .card,
#page-grid .card {
  box-shadow: 0 10px 24px rgba(0,0,0,0.22) !important;
}

.dash-grid .card:hover,
#page-grid .card:hover,
.dash-grid .card:active,
#page-grid .card:active {
  transform: none !important;
  box-shadow: 0 10px 24px rgba(0,0,0,0.22) !important;
  border-color: rgba(118, 149, 188, 0.11) !important;
}

@media (min-width: 769px) {
  .dash-grid .card,
  #page-grid .card {
    overflow: hidden !important;
  }

  .dash-grid .card-body,
  #page-grid .card-body,
  .dash-grid .card-meta,
  #page-grid .card-meta {
    overflow: hidden !important;
    clip-path: none !important;
  }

  .dash-grid .card[data-type="checklist"] .checklist-card-body,
  #page-grid .card[data-type="checklist"] .checklist-card-body {
    overflow: hidden !important;
  }
}

/* ═══════════════════════════════════════════════════
   SIDEBAR NAV EDITOR (Settings)
═══════════════════════════════════════════════════ */
.settings-hint {
  font-size: 0.75rem;
  color: var(--muted);
  margin: -6px 0 12px;
  line-height: 1.5;
  opacity: 0.8;
}

.sidebar-editor-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 12px;
}

.sn-item {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  padding: 10px 12px;
  transition: border-color 0.2s;
}
.sn-item:hover { border-color: rgba(255,255,255,0.12); }

.sn-item-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}

.sn-item-icon {
  opacity: 0.45;
  flex-shrink: 0;
  display: flex;
  align-items: center;
}

.sn-label-input {
  flex: 1;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 7px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.85rem;
  font-weight: 600;
  padding: 5px 9px;
  outline: none;
  transition: border-color 0.15s, background 0.15s;
  direction: rtl;
}
.sn-label-input:focus {
  border-color: var(--accent2);
  background: rgba(255,255,255,0.08);
}

.sn-delete-btn {
  background: none;
  border: none;
  color: rgba(239,68,68,0.5);
  cursor: pointer;
  padding: 4px;
  border-radius: 6px;
  display: flex;
  align-items: center;
  transition: color 0.15s, background 0.15s;
  flex-shrink: 0;
}
.sn-delete-btn:hover {
  color: var(--danger);
  background: rgba(239,68,68,0.1);
}

/* Sidebar item icon picker button (custom items) */
.sn-icon-btn {
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 8px;
  color: var(--text);
  cursor: pointer;
  padding: 4px 6px;
  font-size: 1rem;
  line-height: 1;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  min-width: 30px;
  min-height: 30px;
  transition: background 0.15s, border-color 0.15s;
}
.sn-icon-btn:hover {
  background: rgba(139,92,246,0.15);
  border-color: rgba(139,92,246,0.4);
}
.sn-icon-btn svg { opacity: 0.55; }
.sn-emoji-icon { font-size: 1.05rem; line-height: 1; }

/* Card type chips grid */
.sn-types-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.sn-type-chip {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 99px;
  color: rgba(255,255,255,0.35);
  font-size: 0.7rem;
  font-family: var(--font-ar);
  padding: 3px 9px;
  cursor: pointer;
  transition: all 0.15s;
  -webkit-tap-highlight-color: transparent;
}
.sn-type-chip:hover {
  border-color: var(--accent2);
  color: var(--accent2);
  background: rgba(139,92,246,0.08);
}
.sn-type-chip.assigned {
  background: rgba(139,92,246,0.15);
  border-color: var(--accent2);
  color: var(--accent2);
  font-weight: 700;
}
.sn-type-chip.assigned:hover {
  background: rgba(239,68,68,0.1);
  border-color: rgba(239,68,68,0.4);
  color: #f87171;
}
/* Orphan = type not in ANY category. Red highlight so user notices. */
.sn-type-chip.orphan {
  background: rgba(239, 68, 68, 0.10);
  border-color: rgba(239, 68, 68, 0.45);
  color: #fca5a5;
  animation: sn-orphan-pulse 2.4s ease-in-out infinite;
}
.sn-type-chip.orphan:hover {
  background: rgba(239, 68, 68, 0.22);
  border-color: rgba(239, 68, 68, 0.7);
  color: #fff;
}
.sn-type-chip.orphan.assigned {
  /* Should never happen logically (if assigned to current item, typeMap covers it),
     but if it does, prefer assigned look */
  background: rgba(139, 92, 246, 0.15);
  border-color: var(--accent2);
  color: var(--accent2);
  animation: none;
}
@keyframes sn-orphan-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
  50%      { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.15); }
}
@media (prefers-reduced-motion: reduce) {
  .sn-type-chip.orphan { animation: none; }
}

/* Banner alerting the user about orphan types */
.sn-orphan-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 14px;
  margin-bottom: 14px;
  background: linear-gradient(135deg, rgba(239, 68, 68, 0.10), rgba(239, 68, 68, 0.04));
  border: 1px solid rgba(239, 68, 68, 0.32);
  border-radius: 12px;
  font-family: var(--font-ar);
  font-size: 0.86rem;
  color: rgba(252, 165, 165, 0.92);
}
.sn-orphan-banner .sn-orphan-icon { font-size: 1.05rem; }
.sn-orphan-banner strong {
  color: #fca5a5;
  font-weight: 800;
  font-family: var(--font-mono, monospace);
  margin: 0 2px;
}

/* Action buttons row */
.sidebar-editor-actions {
  display: flex;
  gap: 8px;
  margin-bottom: 20px;
}

.sn-add-btn, .sn-reset-btn {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 7px 14px;
  border-radius: 8px;
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  border: 1px solid;
  transition: all 0.15s;
}
.sn-add-btn {
  background: rgba(139,92,246,0.1);
  border-color: rgba(139,92,246,0.3);
  color: var(--accent2);
}
.sn-add-btn:hover {
  background: rgba(139,92,246,0.2);
  border-color: var(--accent2);
}
.sn-reset-btn {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
  color: var(--muted);
}
.sn-reset-btn:hover {
  background: rgba(255,255,255,0.08);
  color: var(--text);
}


/* ═══════════════════════════════════════════════════════════════
   ✈️  TRAVEL PAGE — standalone trip planner
   ═══════════════════════════════════════════════════════════════ */

/* Backdrop overlay */
/* ═══════════════════════════════════════════════════════════
   TRAVEL PAGE — Full-page redesign (hero + list)
   ═══════════════════════════════════════════════════════════ */
.travel-page {
  position: fixed; inset: 0; z-index: 95;
  background: var(--bg, #0e0c15);
  display: flex; flex-direction: column;
  direction: rtl;
  animation: slideIn 0.32s cubic-bezier(0.16,1,0.3,1) both;
}
.travel-page.hidden { display: none !important; }
.tp-shell { display: flex; flex-direction: column; width: 100%; height: 100%; overflow: hidden; }

/* ── Header ── */
.tp-header {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 24px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
  flex-shrink: 0; gap: 12px;
}
.tp-header-right { display: flex; align-items: center; gap: 10px; }
.tp-header-icon  { font-size: 1.3rem; }
.tp-header-title { margin: 0; font-size: 1.1rem; font-weight: 700; color: var(--text); }
.tp-header-left  { display: flex; align-items: center; gap: 8px; margin-inline-start: auto; }
.tp-new-btn {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--accent2, #8b5cf6); color: #fff;
  border: none; border-radius: 9px; padding: 8px 14px;
  font-family: var(--font-ar); font-size: 0.84rem; font-weight: 700;
  cursor: pointer; transition: filter .15s, transform .15s;
}
.tp-new-btn:hover { filter: brightness(1.1); transform: translateY(-1px); }
.tp-back-btn {
  display: flex; align-items: center; gap: 5px;
  background: transparent; border: 1px solid rgba(255,255,255,0.09);
  color: var(--muted); font-family: var(--font-ar); font-size: 0.82rem;
  cursor: pointer; padding: 6px 12px; border-radius: 8px; transition: all .15s;
}
.tp-back-btn:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.tp-back-btn svg { transform: scaleX(-1); }

/* ── Scrollable body ── */
.tp-body { flex: 1; overflow-y: auto; }
.tp-body::-webkit-scrollbar { width: 5px; }
.tp-body::-webkit-scrollbar-track { background: transparent; }
.tp-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; }

/* ── Hero — next upcoming/ongoing trip ── */
.tp-hero {
  position: relative; width: 100%;
  height: clamp(200px, 32vh, 320px);
  background: linear-gradient(135deg, #1a1030, #2a1850);
  background-size: cover; background-position: center;
  flex-shrink: 0; overflow: hidden;
}
.tp-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.72) 100%);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 24px 28px; gap: 6px;
}
.tp-hero-top { display: flex; align-items: center; gap: 10px; margin-bottom: 4px; }
.tp-hero-countdown {
  font-size: 0.78rem; font-weight: 600; color: rgba(255,255,255,0.75);
  background: rgba(255,255,255,0.12); border-radius: 999px;
  padding: 3px 10px; backdrop-filter: blur(4px);
}
.tp-hero-title {
  margin: 0; font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: 800; color: #fff; line-height: 1.1;
  text-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.tp-hero-dest { color: rgba(255,255,255,0.75); font-size: 0.9rem; }
.tp-hero-dates { color: rgba(255,255,255,0.6); font-size: 0.82rem; }
.tp-hero-btn {
  margin-top: 10px; align-self: flex-start;
  background: rgba(255,255,255,0.15); border: 1px solid rgba(255,255,255,0.25);
  color: #fff; font-family: var(--font-ar); font-size: 0.84rem; font-weight: 600;
  padding: 8px 16px; border-radius: 10px; cursor: pointer;
  backdrop-filter: blur(6px); transition: background .15s;
}
.tp-hero-btn:hover { background: rgba(255,255,255,0.25); }

/* ─── Grand stats summary (top of travel page) ─────────────── */
.tp-grand-stats {
  padding: 22px 24px 6px;
}
.tp-grand-greeting {
  margin-bottom: 16px;
  opacity: 0; transform: translateY(8px);
  animation: tpFadeUp .55s cubic-bezier(.2,.8,.25,1) forwards;
}
.tp-grand-greeting-hi {
  font-size: 1.5rem; font-weight: 800;
  background: linear-gradient(135deg, #fff 0%, #a78bfa 50%, #38bdf8 100%);
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent;
  letter-spacing: -0.02em;
  margin: 0 0 4px;
}
.tp-grand-greeting-sub {
  font-size: 0.88rem; color: var(--muted);
  font-weight: 500;
}
.tp-grand-stats-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}
.tp-grand-stat {
  position: relative;
  padding: 18px 16px 16px;
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(255,255,255,0.04) 0%, rgba(255,255,255,0.01) 100%);
  border: 1px solid rgba(255,255,255,0.06);
  overflow: hidden;
  opacity: 0; transform: translateY(14px) scale(.96);
  animation: tpStatIn .6s cubic-bezier(.2,.8,.25,1) forwards;
  transition: transform .2s, border-color .2s, box-shadow .2s;
}
.tp-grand-stat:hover {
  transform: translateY(-3px);
  border-color: rgba(255,255,255,0.12);
  box-shadow: 0 10px 30px -10px rgba(0,0,0,0.5);
}
.tp-grand-stat::before {
  content: '';
  position: absolute; inset: 0;
  background: radial-gradient(circle at 100% 0%, var(--glow) 0%, transparent 60%);
  opacity: 0.18;
  pointer-events: none;
}
.tp-grand-stat-km        { --glow: #38bdf8; animation-delay:   0ms; }
.tp-grand-stat-countries { --glow: #a78bfa; animation-delay:  80ms; }
.tp-grand-stat-hotels    { --glow: #f59e0b; animation-delay: 160ms; }
.tp-grand-stat-trips     { --glow: #2dd4bf; animation-delay: 240ms; }
.tp-grand-stat-ico {
  font-size: 1.4rem; margin-bottom: 8px;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,0.4));
}
.tp-grand-stat-val {
  font-size: 1.85rem; font-weight: 800;
  color: var(--text); line-height: 1; margin-bottom: 4px;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
}
.tp-grand-stat-lbl {
  font-size: 0.78rem; color: var(--muted); font-weight: 600;
  margin-bottom: 4px;
}
.tp-grand-stat-sub {
  font-size: 0.7rem; color: rgba(255,255,255,0.4); font-weight: 500;
}
@keyframes tpFadeUp {
  to { opacity: 1; transform: translateY(0); }
}
@keyframes tpStatIn {
  to { opacity: 1; transform: translateY(0) scale(1); }
}

/* ─── Upcoming trips section ──────────────────────────────── */
.tp-upcoming-section {
  padding: 22px 24px 10px;
}
.tp-sect-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 14px;
  flex-wrap: wrap; gap: 10px;
}
.tp-sect-title {
  display: flex; align-items: center; gap: 8px;
  font-size: 1rem; font-weight: 700; color: var(--text);
}
.tp-sect-icon { font-size: 1.15rem; }
.tp-sect-count {
  background: rgba(139,92,246,0.15);
  color: #c4b5fd;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 0.72rem; font-weight: 700;
}
.tp-sect-action {
  background: linear-gradient(135deg, #8b5cf6, #6366f1);
  color: white; border: none;
  padding: 7px 14px; border-radius: 10px;
  font-family: var(--font-ar); font-size: 0.8rem; font-weight: 600;
  cursor: pointer;
  box-shadow: 0 4px 14px -4px rgba(139,92,246,0.5);
  transition: transform .15s, box-shadow .15s;
}
.tp-sect-action:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px -4px rgba(139,92,246,0.7);
}
.tp-upcoming-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 14px;
}
.tp-up-card {
  position: relative;
  aspect-ratio: 16 / 10;
  min-height: 200px;
  border-radius: 18px;
  background-size: cover; background-position: center;
  background-color: #1a1025;
  overflow: hidden;
  cursor: pointer;
  opacity: 0; transform: translateY(16px);
  animation: tpUpCardIn .55s cubic-bezier(.2,.8,.25,1) forwards;
  animation-delay: calc(var(--up-i, 0) * 100ms);
  transition: transform .25s;
  box-shadow: 0 8px 24px -8px rgba(0,0,0,0.6);
}
.tp-up-card:hover { transform: translateY(-4px) scale(1.02); }
.tp-up-card:hover .tp-up-title { transform: translateY(-2px); }
@keyframes tpUpCardIn {
  to { opacity: 1; transform: translateY(0); }
}
.tp-up-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(0deg,
    rgba(10,6,20,0.95) 0%,
    rgba(10,6,20,0.75) 30%,
    rgba(10,6,20,0.15) 60%,
    rgba(10,6,20,0.35) 100%);
}
.tp-up-inner {
  position: relative; height: 100%;
  display: flex; flex-direction: column; justify-content: space-between;
  padding: 16px;
  color: white;
}
.tp-up-top {
  display: flex; justify-content: space-between; align-items: flex-start;
}
.tp-up-flag {
  font-size: 2.2rem; line-height: 1;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,0.5));
}
.tp-up-countdown {
  background: rgba(255,255,255,0.18);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  padding: 5px 11px;
  border-radius: 999px;
  font-size: 0.72rem; font-weight: 700;
  color: white;
  white-space: nowrap;
}
.tp-up-ongoing .tp-up-countdown {
  background: linear-gradient(135deg, #10b981, #059669);
  box-shadow: 0 0 14px rgba(16,185,129,0.5);
  animation: tpOngoingPulse 2s ease-in-out infinite;
}
@keyframes tpOngoingPulse {
  0%,100% { box-shadow: 0 0 14px rgba(16,185,129,0.5); }
  50%     { box-shadow: 0 0 22px rgba(16,185,129,0.9); }
}
@media (prefers-reduced-motion: reduce) {
  .tp-upcoming-card.tp-ongoing { animation: none; }
}
.tp-up-bottom { display: flex; flex-direction: column; gap: 4px; }
.tp-up-title {
  font-size: 1.25rem; font-weight: 800;
  color: white; margin: 0;
  letter-spacing: -0.01em;
  line-height: 1.2;
  text-shadow: 0 2px 10px rgba(0,0,0,0.5);
  transition: transform .25s;
}
.tp-up-dest {
  font-size: 0.82rem; color: rgba(255,255,255,0.82);
  font-weight: 500;
}
.tp-up-meta {
  font-size: 0.75rem; color: rgba(255,255,255,0.7);
  display: flex; gap: 6px; align-items: center;
  margin-top: 4px;
}
.tp-up-dot { opacity: 0.5; }
.tp-up-icons {
  display: flex; gap: 10px;
  margin-top: 6px;
  font-size: 0.78rem; color: rgba(255,255,255,0.85);
  font-weight: 600;
}

.tp-upcoming-empty {
  padding: 40px 24px;
  text-align: center;
  border-radius: 18px;
  background: linear-gradient(145deg, rgba(139,92,246,0.06) 0%, rgba(139,92,246,0.02) 100%);
  border: 1px dashed rgba(139,92,246,0.25);
  margin: 22px 24px 0;
}
.tp-upcoming-empty-icon { font-size: 2.4rem; opacity: 0.55; margin-bottom: 10px; }
.tp-upcoming-empty-title { font-size: 1.05rem; font-weight: 700; color: var(--text); margin-bottom: 4px; }
.tp-upcoming-empty-sub { font-size: 0.85rem; color: var(--muted); margin-bottom: 14px; }
.tp-upcoming-empty-btn {
  background: linear-gradient(135deg, #8b5cf6, #6366f1);
  color: white; border: none;
  padding: 9px 20px; border-radius: 11px;
  font-family: var(--font-ar); font-size: 0.88rem; font-weight: 700;
  cursor: pointer;
  box-shadow: 0 6px 18px -4px rgba(139,92,246,0.5);
  transition: transform .15s;
}
.tp-upcoming-empty-btn:hover { transform: translateY(-1px); }

/* Mobile: stats strip becomes 2x2 */
@media (max-width: 720px) {
  .tp-grand-stats-grid { grid-template-columns: repeat(2, 1fr); }
  .tp-grand-stat-val { font-size: 1.55rem; }
  .tp-grand-greeting-hi { font-size: 1.25rem; }
  .tp-upcoming-grid { grid-template-columns: 1fr; }
  .tp-up-card { aspect-ratio: 16 / 9; }
}

/* ─── Per-trip dashboard page (overlay) ─────────────────── */
.trip-dashboard-page {
  position: fixed; inset: 0;
  background: var(--bg, #07070A);
  z-index: 9200;
  overflow: hidden;
  opacity: 0; transform: translateX(-20px);
  transition: opacity .24s ease, transform .3s cubic-bezier(.2,.8,.25,1);
  pointer-events: none;
}
.trip-dashboard-page.visible {
  opacity: 1; transform: translateX(0);
  pointer-events: auto;
}
.trip-dashboard-page.hidden { display: none; }
.tdp-shell {
  display: flex; flex-direction: column;
  width: 100%; height: 100%;
  overflow: hidden;
}
.tdp-header {
  flex-shrink: 0;
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 22px;
  background: linear-gradient(180deg, rgba(14,14,20,0.95), rgba(14,14,20,0.75));
  border-bottom: 1px solid rgba(255,255,255,0.06);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  z-index: 10;
}
.tdp-back {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,0.05);
  color: var(--text);
  border: 1px solid rgba(255,255,255,0.08);
  padding: 7px 13px; border-radius: 10px;
  font-family: var(--font-ar); font-size: 0.82rem; font-weight: 600;
  cursor: pointer; transition: all .13s;
}
.tdp-back:hover { background: rgba(255,255,255,0.1); transform: translateX(-2px); }
.tdp-back svg { transform: scaleX(-1); }
.tdp-header-title {
  font-size: 1rem; font-weight: 700; color: var(--text);
  flex: 1; text-align: center;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  padding: 0 14px;
}
.tdp-header-actions { display: flex; gap: 6px; }
.tdp-edit, .tdp-export {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(139,92,246,0.12);
  color: #c4b5fd;
  border: 1px solid rgba(139,92,246,0.2);
  padding: 7px 12px; border-radius: 10px;
  font-family: var(--font-ar); font-size: 0.8rem; font-weight: 600;
  cursor: pointer; transition: all .13s;
}
.tdp-edit:hover, .tdp-export:hover {
  background: rgba(139,92,246,0.22);
  border-color: rgba(139,92,246,0.35);
}
.tdp-body {
  flex: 1; overflow-y: auto; overflow-x: hidden;
  padding: 14px 20px 40px;
}
@media (max-width: 720px) {
  .tdp-header { padding: 10px 14px; }
  .tdp-header-title { display: none; }
  .tdp-body { padding: 8px 12px 30px; }
  .tdp-edit span, .tdp-back span { display: none; }
  .tdp-edit, .tdp-back, .tdp-export { padding: 7px 9px; }
}

/* ── List section ── */
.tp-list-section { padding: 0 0 40px; }
.tp-list-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 16px 24px 0; flex-wrap: wrap; gap: 8px;
}
.tp-list-head-title {
  font-size: 0.78rem; font-weight: 700; color: var(--muted);
  letter-spacing: 0.06em; text-transform: uppercase;
}
.tp-list-filters { display: flex; gap: 4px; }
.tp-list-filter {
  background: none; border: none; color: var(--muted);
  font-family: var(--font-ar); font-size: 0.78rem; font-weight: 600;
  padding: 5px 11px; border-radius: 999px; cursor: pointer; transition: all .15s;
}
.tp-list-filter:hover { color: var(--text); background: rgba(255,255,255,0.04); }
.tp-list-filter.active {
  color: var(--accent2, #8b5cf6);
  background: rgba(139,92,246,0.12);
}
.tp-list { display: flex; flex-direction: column; padding: 10px 16px 0; gap: 4px; }

/* ── Trip row ── */
.tp-row {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 10px; border-radius: 12px;
  cursor: pointer; transition: background .13s;
}
.tp-row:hover { background: rgba(255,255,255,0.04); }
.tp-row-thumb {
  width: 52px; height: 52px; border-radius: 10px;
  background: rgba(139,92,246,0.15);
  background-size: cover; background-position: center;
  flex-shrink: 0; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem; position: relative;
}
.tp-row-thumb-empty { background: linear-gradient(135deg, #2a1850, #1a0f3a); }
.tp-row-flag {
  position: absolute; bottom: 3px; left: 3px;
  font-size: 0.8rem; line-height: 1;
  filter: drop-shadow(0 1px 3px rgba(0,0,0,0.6));
}
.tp-row-info { flex: 1; min-width: 0; }
.tp-row-title {
  font-weight: 600; font-size: 0.92rem; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tp-row-meta { font-size: 0.75rem; color: var(--muted); margin-top: 3px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tp-row-right { text-align: left; flex-shrink: 0; }
.tp-row-dates { font-size: 0.75rem; color: var(--muted); white-space: nowrap; }
.tp-row-dur { font-size: 0.7rem; color: var(--muted); opacity: 0.7; margin-top: 2px; }
.tp-row-status {
  font-size: 0.68rem; font-weight: 600; white-space: nowrap;
  padding: 3px 9px; border-radius: 999px; flex-shrink: 0;
}
.tp-row-actions { display: flex; gap: 4px; flex-shrink: 0; }
.tp-row-btn {
  background: transparent; border: none; color: var(--muted);
  width: 30px; height: 30px; border-radius: 7px;
  font-size: 0.8rem; cursor: pointer; transition: all .13s;
  display: flex; align-items: center; justify-content: center;
}
.tp-row-btn:hover { background: rgba(255,255,255,0.07); color: var(--text); }
.tp-row-del:hover { background: rgba(239,68,68,0.12); color: #f87171; }

/* ── Divider between rows ── */
.tp-row + .tp-row { border-top: 1px solid rgba(255,255,255,0.04); }

/* ── Zero / Empty states ── */
.tp-zero-state {
  display: flex; flex-direction: column; align-items: center;
  padding: 80px 20px; text-align: center; color: var(--muted);
}
.tp-zero-icon { font-size: 3.5rem; opacity: 0.35; margin-bottom: 16px; }
.tp-zero-title { font-size: 1.1rem; font-weight: 700; color: var(--text); margin: 0 0 8px; }
.tp-zero-sub { font-size: 0.88rem; max-width: 380px; line-height: 1.6; margin: 0 0 20px; }
.tp-zero-btn {
  background: var(--accent2, #8b5cf6); color: #fff; border: none;
  padding: 10px 22px; border-radius: 10px;
  font-family: var(--font-ar); font-size: 0.9rem; font-weight: 700; cursor: pointer;
}
.tp-zero-btn:hover { filter: brightness(1.1); }
.tp-list-empty {
  padding: 30px 10px; text-align: center;
  color: var(--muted); font-size: 0.88rem;
}

/* ── Mobile ── */
@media (max-width: 700px) {
  .tp-header { padding: 12px 16px; }
  .tp-header-title { font-size: 1rem; }
  .tp-new-btn { padding: 7px 11px; font-size: 0.78rem; }
  .tp-hero { height: clamp(170px, 40vw, 220px); }
  .tp-hero-overlay { padding: 16px; }
  .tp-hero-title { font-size: 1.3rem; }
  .tp-list-head { padding: 14px 16px 0; }
  .tp-list { padding: 8px 6px 0; }
  .tp-row { gap: 10px; padding: 10px 6px; }
  .tp-row-thumb { width: 44px; height: 44px; }
  .tp-row-right, .tp-row-status { display: none; }   /* hide dates+status on narrow screens */
}

/* ═══════════════════════════════════════════════════════════
   TRAVEL DASHBOARD v3 — matches user reference design
   Layout: Hero · Stats (4) · Weather + Daily Plan + FlightMap
           · Quick Info · Boarding Passes (2-up)
   Palette: deep purple bg + teal accents
   ═══════════════════════════════════════════════════════════ */
.travel-page {
  --accent-teal: #2dd4bf;
  --accent-teal-glow: rgba(45,212,191,0.45);
  --accent-purple: #a78bfa;
  --accent-purple-glow: rgba(167,139,250,0.45);
  --accent-gold: #f59e0b;
  --accent-pink: #f472b6;
  --accent-green: #34d399;
  --panel-bg: rgba(255,255,255,0.035);
  --panel-bd: rgba(255,255,255,0.07);
}

.tp-dashboard {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 16px;
  padding: 16px 20px 10px;
}
.tp-widget {
  position: relative;
  background: var(--panel-bg);
  border: 1px solid var(--panel-bd);
  border-radius: 20px;
  overflow: hidden;
  opacity: 0;
  transform: translateY(14px);
  animation: widgetIn 0.55s cubic-bezier(0.16,1,0.3,1) forwards;
}
.tp-widget:nth-child(1) { animation-delay: 0.03s; }
.tp-widget:nth-child(2) { animation-delay: 0.09s; }
.tp-widget:nth-child(3) { animation-delay: 0.15s; }
.tp-widget:nth-child(4) { animation-delay: 0.21s; }
.tp-widget:nth-child(5) { animation-delay: 0.27s; }
.tp-widget:nth-child(6) { animation-delay: 0.33s; }
.tp-widget:nth-child(7) { animation-delay: 0.39s; }
@keyframes widgetIn { to { opacity: 1; transform: translateY(0); } }
.tp-w-title {
  font-size: 0.95rem; font-weight: 700; color: var(--text);
  margin-bottom: 14px;
  display: flex; align-items: center; gap: 8px;
}
.tp-w-title-icon { font-size: 1.05rem; }
@keyframes dashFlow { to { stroke-dashoffset: -30; } }

/* ══════ Hero (span 12) ══════ */
.tp-w-hero {
  grid-column: span 12;
  min-height: 280px;
  background: linear-gradient(135deg, #2a1850, #1a0f3a);
  background-size: cover; background-position: center;
  padding: 0;
}
.tp-w-hero-overlay {
  position: absolute; inset: 0;
  background:
    linear-gradient(90deg, rgba(12,8,24,0.72) 0%, rgba(12,8,24,0.3) 50%, rgba(12,8,24,0.15) 100%),
    linear-gradient(180deg, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.6) 100%);
}
.tp-w-hero-content {
  position: relative; z-index: 2;
  height: 100%;
  padding: 28px 32px;
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 20px; min-height: 280px;
}
.tp-w-hero-main { display: flex; flex-direction: column; gap: 10px; max-width: 520px; }
.tp-w-hero-badge {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(139,92,246,0.25);
  border: 1px solid rgba(139,92,246,0.5);
  color: #e9d5ff; font-size: 0.78rem; font-weight: 700;
  padding: 5px 12px; border-radius: 999px;
  backdrop-filter: blur(8px);
  margin-bottom: 4px;
}
.tp-w-hero-title {
  margin: 0; font-size: clamp(2.4rem, 5vw, 3.6rem);
  font-weight: 800; color: #fff; line-height: 1;
  letter-spacing: -0.01em;
  text-shadow: 0 4px 20px rgba(0,0,0,0.6);
}
.tp-w-hero-route {
  display: flex; align-items: center; gap: 10px;
  color: #fff; font-size: 1rem; font-weight: 600;
}
.tp-w-hero-flag { font-size: 1.6rem; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.6)); }
.tp-w-hero-arrow { color: var(--accent-purple); font-size: 1.1rem; }
.tp-w-hero-meta {
  display: inline-flex; align-items: center; gap: 6px;
  color: rgba(255,255,255,0.85); font-size: 0.9rem;
  font-weight: 500;
}
.tp-w-hero-meta span { opacity: 0.75; }
.tp-w-hero-actions {
  display: flex; flex-direction: column; gap: 10px;
  align-items: flex-end;
}
.tp-w-hero-btn {
  background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.25);
  color: #fff; font-family: var(--font-ar);
  font-size: 0.88rem; font-weight: 700;
  padding: 10px 18px; border-radius: 12px; cursor: pointer;
  backdrop-filter: blur(8px);
  display: inline-flex; align-items: center; gap: 8px;
  transition: transform .15s, background .15s;
  min-width: 150px; justify-content: center;
}
.tp-w-hero-btn:hover { background: rgba(255,255,255,0.2); transform: translateY(-1px); }
.tp-w-hero-btn.primary {
  background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 100%);
  border-color: transparent;
  box-shadow: 0 6px 20px rgba(139,92,246,0.45);
}
.tp-w-hero-btn.primary:hover { box-shadow: 0 10px 26px rgba(139,92,246,0.55); }
.tp-w-hero-btn-arrow { font-size: 1.05rem; }

/* ══════ Stats strip (4 pills, span 12) ══════ */
.tp-stats-strip {
  grid-column: span 12;
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 14px; padding: 0;
  background: transparent; border: 0;
  opacity: 1; transform: none; animation: none;
  overflow: visible;
}
.tp-stat-pill {
  position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 18px 20px;
  border-radius: 16px;
  background: var(--panel-bg);
  border: 1px solid var(--panel-bd);
  transition: transform .15s, border-color .15s;
}
.tp-stat-pill:hover { transform: translateY(-2px); border-color: rgba(255,255,255,0.15); }
.tp-stat-body { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 2px; }
.tp-stat-big {
  font-size: 1.9rem; font-weight: 800; color: var(--text);
  line-height: 1.05;
  font-family: var(--font-mono, monospace);
  letter-spacing: -0.02em;
  display: flex; align-items: baseline; gap: 6px; flex-wrap: wrap;
}
.tp-stat-unit {
  font-size: 0.72rem; color: var(--muted); font-weight: 700;
  letter-spacing: 0.06em;
}
.tp-stat-label {
  font-size: 0.82rem; color: rgba(255,255,255,0.6);
  font-weight: 500;
}
.tp-stat-icon {
  width: 44px; height: 44px; border-radius: 12px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1.4rem; flex-shrink: 0;
}
.tp-stat-teal .tp-stat-icon {
  background: rgba(45,212,191,0.14);
  box-shadow: 0 0 18px rgba(45,212,191,0.2);
}
.tp-stat-teal .tp-stat-big { color: var(--accent-teal); text-shadow: 0 0 20px rgba(45,212,191,0.35); }
.tp-stat-purple .tp-stat-icon {
  background: rgba(167,139,250,0.14);
  box-shadow: 0 0 18px rgba(167,139,250,0.2);
}
.tp-stat-purple .tp-stat-big { color: var(--accent-purple); text-shadow: 0 0 20px rgba(167,139,250,0.35); }

/* ══════ Weather (span 3) ══════ */
.tp-w-weather {
  grid-column: span 3;
  padding: 18px 20px;
  min-height: 300px;
}
.tp-wx-mount { display: flex; flex-direction: column; gap: 18px; }
.tp-wx-skeleton { display: flex; flex-direction: column; gap: 10px; }
.tp-wx-sk-big {
  height: 72px; border-radius: 12px;
  background: linear-gradient(90deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.03) 100%);
  background-size: 200% 100%; animation: skShimmer 1.6s linear infinite;
}
.tp-wx-sk-line {
  height: 50px; border-radius: 10px;
  background: linear-gradient(90deg, rgba(255,255,255,0.03) 0%, rgba(255,255,255,0.08) 50%, rgba(255,255,255,0.03) 100%);
  background-size: 200% 100%; animation: skShimmer 1.6s linear infinite 0.2s;
}
@keyframes skShimmer { to { background-position: -200% 0; } }
.tp-wx-current {
  display: flex; align-items: center; gap: 14px;
  padding: 8px 0 14px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.tp-wx-icon {
  font-size: 3.4rem; line-height: 1;
  filter: drop-shadow(0 0 14px rgba(45,212,191,0.25));
  animation: wxFloat 3.4s ease-in-out infinite;
}
@keyframes wxFloat {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-4px); }
}
@media (prefers-reduced-motion: reduce) {
  .tp-wx-icon { animation: none; }
}
.tp-wx-current-info { flex: 1; min-width: 0; }
.tp-wx-temp {
  font-size: 3.2rem; font-weight: 800;
  color: #fff; line-height: 1;
  font-family: var(--font-mono, monospace);
  display: inline-flex; align-items: baseline; gap: 2px;
}
.tp-wx-temp-unit {
  font-size: 1rem; color: var(--muted); margin-right: 2px;
}
.tp-wx-status {
  font-size: 0.82rem; color: rgba(255,255,255,0.7);
  margin-top: 4px; font-weight: 500;
}
.tp-wx-days {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
  padding-top: 4px;
}
.tp-wx-day {
  display: flex; flex-direction: column; align-items: center; gap: 4px;
  padding: 10px 6px; border-radius: 10px;
  background: rgba(255,255,255,0.03);
  transition: background .15s, transform .15s;
}
.tp-wx-day:hover { background: rgba(45,212,191,0.08); transform: translateY(-2px); }
.tp-wx-day-name {
  font-size: 0.78rem; color: rgba(255,255,255,0.7); font-weight: 600;
}
.tp-wx-day-icon { font-size: 1.4rem; line-height: 1; }
.tp-wx-day-temps {
  font-family: var(--font-mono, monospace); font-size: 0.76rem;
  display: flex; gap: 4px;
}
.tp-wx-hi { color: #fff; font-weight: 700; }
.tp-wx-lo { color: var(--muted); }

/* ══════ Daily Plan (span 4) ══════ */
.tp-w-dailyplan {
  grid-column: span 4;
  padding: 18px 20px;
  min-height: 300px;
}
.tp-dp-list {
  display: flex; flex-direction: column; gap: 10px;
}
.tp-dp-row {
  position: relative;
  display: grid;
  grid-template-columns: 40px 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 12px 14px;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(139,92,246,0.1) 0%, rgba(99,102,241,0.04) 100%);
  border: 1px solid rgba(139,92,246,0.2);
  border-inline-end: 3px solid var(--accent-purple);
  transition: transform .15s, background .15s;
  overflow: hidden;
}
.tp-dp-row:hover { transform: translateX(-2px); background: rgba(139,92,246,0.14); }
.tp-dp-num {
  width: 34px; height: 34px; border-radius: 50%;
  background: linear-gradient(135deg, #8b5cf6, #6366f1);
  color: #fff; font-weight: 800; font-size: 1rem;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono, monospace);
  box-shadow: 0 4px 12px rgba(139,92,246,0.4);
  flex-shrink: 0;
}
.tp-dp-body { min-width: 0; display: flex; flex-direction: column; gap: 2px; order: 2; }
.tp-dp-title {
  font-size: 0.92rem; font-weight: 700; color: var(--text);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  text-align: right;
}
.tp-dp-sub {
  font-size: 0.76rem; color: rgba(255,255,255,0.6);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  text-align: right;
}
.tp-dp-tag {
  display: inline-flex; align-items: center; gap: 4px;
  background: rgba(139,92,246,0.2);
  color: #c4b5fd;
  font-size: 0.7rem; font-weight: 700;
  padding: 4px 10px; border-radius: 999px;
  flex-shrink: 0; order: 3;
}
.tp-dp-arrow { opacity: 0.6; }

/* ══════ Flight Map (span 5) ══════ */
.tp-w-flightmap {
  grid-column: span 5;
  padding: 18px 20px;
  min-height: 300px;
  background:
    radial-gradient(ellipse at 50% 120%, rgba(167,139,250,0.1), transparent 60%),
    var(--panel-bg);
}
.tp-fm-head {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 10px; margin-bottom: 0;
}
.tp-fm-head-left { flex: 1; min-width: 0; }
.tp-fm-route {
  font-family: var(--font-mono, monospace);
  font-size: 0.88rem; font-weight: 700;
  color: var(--muted); letter-spacing: 0.04em;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-top: -8px;
}
.tp-fm-head-right { display: none; }
.tp-map {
  width: 100%; height: 230px; display: block;
  margin-top: 12px; border-radius: 14px;
  background: transparent;
}
.tp-map-bg { fill: transparent; }
.tp-map-dot { fill: rgba(167,139,250,0.28); }
.tp-map-land {
  fill: rgba(167,139,250,0.09);
  stroke: rgba(167,139,250,0.45);
  stroke-width: 0.8;
  stroke-linejoin: round;
}
.tp-map-route {
  stroke: var(--accent-teal);
  stroke-width: 2; fill: none;
  stroke-dasharray: none;
  filter: drop-shadow(0 0 8px var(--accent-teal-glow));
  stroke-linecap: round;
}
.tp-map-pin {
  fill: var(--accent-teal);
  stroke: #0e0c15; stroke-width: 1.5;
  filter: drop-shadow(0 0 10px var(--accent-teal-glow));
}
.tp-map-pin-halo {
  fill: rgba(45,212,191,0.4);
  animation: pinHaloPulse 2s ease-out infinite;
}
@keyframes pinHaloPulse {
  0%   { r: 5.5; opacity: 0.7; }
  100% { r: 16;  opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .tp-map-pin-halo { animation: none; opacity: 0; }
}
.tp-map-pin-label {
  fill: #e2e8f0; font-size: 10px; font-weight: 800;
  font-family: var(--font-mono, monospace);
  paint-order: stroke; stroke: rgba(0,0,0,0.85); stroke-width: 3; stroke-linejoin: round;
}
.tp-map-plane { filter: drop-shadow(0 0 8px rgba(255,255,255,0.9)); }
.tp-map-plane text { fill: #fff; }

/* ══════ Quick Info (span 12) ══════ */
.tp-w-quickinfo {
  grid-column: span 12;
  padding: 18px 20px 22px;
}
.tp-qi-grid {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-top: 12px;
}
.tp-qi-card {
  display: grid;
  grid-template-columns: 48px 1fr;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(255,255,255,0.025), rgba(255,255,255,0.01));
  border: 1px solid rgba(255,255,255,0.06);
  transition: transform .18s, border-color .18s, background .18s;
  min-height: 72px;
}
.tp-qi-card:hover {
  transform: translateY(-2px);
  border-color: rgba(255,255,255,0.14);
  background: linear-gradient(135deg, rgba(255,255,255,0.045), rgba(255,255,255,0.015));
}
.tp-qi-card .tp-qi-icon {
  width: 48px; height: 48px; border-radius: 12px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 1.4rem;
  flex-shrink: 0;
}
.tp-qi-card-teal .tp-qi-icon {
  background: linear-gradient(135deg, rgba(45,212,191,0.22), rgba(45,212,191,0.08));
  box-shadow: inset 0 0 0 1px rgba(45,212,191,0.28), 0 0 18px rgba(45,212,191,0.1);
}
.tp-qi-card-purple .tp-qi-icon {
  background: linear-gradient(135deg, rgba(167,139,250,0.25), rgba(139,92,246,0.08));
  box-shadow: inset 0 0 0 1px rgba(167,139,250,0.32), 0 0 18px rgba(167,139,250,0.12);
}
.tp-qi-meta { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.tp-qi-label {
  color: rgba(255,255,255,0.55); font-size: 0.72rem; font-weight: 600;
  letter-spacing: 0.02em;
}
.tp-qi-value {
  color: var(--text); font-weight: 700; font-size: 0.95rem;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tp-qi-card-teal  .tp-qi-value { color: #5eead4; }
.tp-qi-card-purple .tp-qi-value { color: #c4b5fd; }

/* ══════ Boarding Passes (span 12, 2-up grid) ══════ */
.tp-w-passes {
  grid-column: span 12;
  padding: 18px 20px 22px;
  background: transparent;
  border: 0;
}
.tp-passes-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 16px;
}

/* Ticket: main body (left) + perforated stub with barcode (right) */
.tp-pass {
  position: relative;
  display: flex;
  flex-direction: row-reverse; /* main on RIGHT visually in RTL, stub on LEFT */
  background: linear-gradient(135deg, #ffffff 0%, #f1f3f7 100%);
  color: #1a1a1a;
  border-radius: 18px;
  cursor: pointer;
  min-height: 230px;
  box-shadow: 0 10px 28px rgba(0,0,0,0.38), 0 2px 6px rgba(139,92,246,0.1);
  transition: transform .18s, box-shadow .18s;
  overflow: hidden;
  isolation: isolate;
}
.tp-pass:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 36px rgba(0,0,0,0.45), 0 2px 8px rgba(139,92,246,0.18);
}
.tp-pass-outbound { border-top: 3px solid #10b981; }
.tp-pass-return   { border-top: 3px solid #8b5cf6; }

.tp-pass-main {
  flex: 1; min-width: 0;
  padding: 18px 22px 16px;
  display: flex; flex-direction: column; gap: 16px;
}
.tp-pass-header {
  display: flex; justify-content: space-between; align-items: center;
  gap: 10px;
}
.tp-pass-airline {
  display: flex; align-items: center; gap: 10px; min-width: 0;
}
.tp-pass-logo {
  width: 42px; height: 30px; object-fit: contain;
  background: #fff; border-radius: 6px;
  border: 1px solid #e5e7eb;
  padding: 2px;
  flex-shrink: 0;
}
.tp-pass-airline-name {
  font-size: 0.92rem; font-weight: 800; color: #1a1a1a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tp-pass-kind {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 0.72rem; font-weight: 800;
  padding: 5px 12px; border-radius: 999px;
  flex-shrink: 0;
  white-space: nowrap;
}
.tp-pass-kind-outbound {
  background: rgba(16,185,129,0.14);
  color: #059669;
  border: 1px solid rgba(16,185,129,0.38);
}
.tp-pass-kind-return {
  background: rgba(139,92,246,0.14);
  color: #7c3aed;
  border: 1px solid rgba(139,92,246,0.4);
}

.tp-pass-route {
  display: grid;
  grid-template-columns: 1fr 80px 1fr;
  align-items: center; gap: 10px;
  padding: 8px 0 14px;
  border-bottom: 1px dashed #cbd5e1;
}
.tp-pass-point {
  display: flex; flex-direction: column; gap: 2px; min-width: 0;
}
.tp-pass-point-from { text-align: right; }
.tp-pass-point-to   { text-align: left; }
.tp-pass-label {
  font-size: 0.68rem; color: #6b7280;
  font-weight: 600;
}
.tp-pass-city {
  font-size: 1rem; font-weight: 800; color: #1a1a1a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tp-pass-iata {
  font-family: var(--font-mono, monospace);
  font-size: 1.4rem; font-weight: 900;
  color: #4f46e5; letter-spacing: 0.06em;
  line-height: 1.1;
}
.tp-pass-arrow {
  position: relative;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px;
}
.tp-pass-arrow-line { width: 100%; height: 6px; display: block; }
.tp-pass-plane {
  font-size: 1.4rem;
  animation: passPlaneBob 3s ease-in-out infinite;
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.1));
}
@keyframes passPlaneBob {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-3px); }
}
@media (prefers-reduced-motion: reduce) {
  .tp-pass-plane { animation: none; }
}

.tp-pass-foot {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-top: auto;
}
.tp-pass-field {
  display: flex; flex-direction: column; gap: 3px; min-width: 0;
  text-align: right;
}
.tp-pass-field-label {
  font-size: 0.66rem; color: #6b7280;
  font-weight: 600;
}
.tp-pass-field-value {
  font-size: 0.84rem; font-weight: 800; color: #1a1a1a;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.tp-pass-pnr {
  color: #4f46e5; letter-spacing: 0.05em;
  font-family: var(--font-mono, monospace);
}

/* Stub (left edge visually): perforated line + vertical barcode */
.tp-pass-stub {
  position: relative;
  flex: 0 0 72px;
  background: #fafbfc;
  border-inline-end: 2px dashed #d1d5db; /* perforation line between stub and main (RTL-aware) */
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  padding: 14px 6px;
  gap: 8px;
}
.tp-pass-stub::before,
.tp-pass-stub::after {
  content:''; position: absolute;
  width: 18px; height: 18px;
  background: var(--bg, #0f0a1f);
  border-radius: 50%;
  inset-inline-start: -10px; /* on the perforation side (inner edge of stub) */
  z-index: 3;
}
.tp-pass-stub::before { top: -9px; }
.tp-pass-stub::after  { bottom: -9px; }
.tp-pass-barcode {
  width: 30px; height: 100%; max-height: 170px;
  display: block;
}
.tp-pass-stub-code {
  position: absolute;
  bottom: 12px; inset-inline-start: 50%;
  transform: translateX(-50%) rotate(-90deg);
  transform-origin: center;
  font-family: var(--font-mono, monospace);
  font-size: 0.66rem; font-weight: 700;
  color: #6b7280;
  letter-spacing: 0.18em;
  white-space: nowrap;
  pointer-events: none;
}

/* Empty & inline states */
.tp-w-empty {
  padding: 18px 20px;
  min-height: 150px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 8px; text-align: center;
}
.tp-w-empty-icon { font-size: 2rem; opacity: 0.45; }
.tp-w-empty-msg { color: var(--muted); font-size: 0.85rem; }
.tp-w-empty-inline {
  text-align: center; color: var(--muted); opacity: 0.6;
  font-size: 0.82rem; padding: 30px 10px;
}

/* Empty-state spans */
.tp-w-empty.tp-w-flightmap { grid-column: span 5; }
.tp-w-empty.tp-w-weather   { grid-column: span 3; }
.tp-w-empty.tp-w-dailyplan { grid-column: span 4; }

/* ══════ Mobile (< 900px) ══════ */
@media (max-width: 900px) {
  .tp-dashboard { padding: 12px 12px 6px; gap: 12px; }
  .tp-w-hero, .tp-w-weather, .tp-w-dailyplan, .tp-w-flightmap,
  .tp-w-quickinfo, .tp-w-passes, .tp-w-empty {
    grid-column: span 12 !important;
  }
  .tp-stats-strip { grid-template-columns: repeat(2, 1fr); }
  .tp-w-hero-content { flex-direction: column; align-items: flex-start; padding: 20px; }
  .tp-w-hero-actions { flex-direction: row; align-self: stretch; }
  .tp-w-hero-btn { flex: 1; }
  .tp-w-hero-title { font-size: 2rem; }
  .tp-map { height: 220px; }
  .tp-qi-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .tp-qi-card { padding: 10px 12px; min-height: 64px; }
  .tp-passes-grid { grid-template-columns: 1fr; }
  .tp-pass { min-height: 210px; }
  .tp-pass-main { padding: 14px 16px; gap: 12px; }
  .tp-pass-stub { flex-basis: 60px; }
  .tp-pass-iata { font-size: 1.2rem; }
  .tp-pass-city { font-size: 0.9rem; }
  .tp-pass-route { grid-template-columns: 1fr 60px 1fr; }
}

/* ══════ Budget section in trip editor ══════ */
.te-section-budget {
  margin-top: 16px;
  padding: 14px 16px;
  background: rgba(245,158,11,0.04);
  border: 1px solid rgba(245,158,11,0.15);
  border-radius: 12px;
}
.te-section-budget .te-section-head {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin-bottom: 10px;
}
.te-section-title {
  font-weight: 700; color: var(--text); font-size: 0.95rem;
  display: flex; align-items: center; gap: 6px;
}
.te-section-icon { font-size: 1.05rem; }
.te-section-hint {
  font-size: 0.74rem; color: var(--muted); font-weight: 500;
}
.te-budget-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px;
}
.te-budget-label {
  display: flex; flex-direction: column; gap: 5px;
  font-size: 0.76rem; color: var(--muted); font-weight: 600;
}
.te-budget-label input {
  width: 100%;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 8px;
  padding: 8px 10px;
  color: var(--text);
  font-family: var(--font-mono, monospace);
  font-size: 0.9rem;
  transition: border-color .15s, background .15s;
}
.te-budget-label input:focus {
  outline: none;
  border-color: rgba(245,158,11,0.5);
  background: rgba(245,158,11,0.06);
}
@media (max-width: 900px) {
  .te-budget-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ══════ Booking form IATA row ══════ */
.te-booking-route-row {
  display: flex; align-items: center; gap: 10px;
}
.te-iata-input {
  flex: 1; min-width: 0;
  text-transform: uppercase;
  text-align: center;
  font-family: var(--font-mono, monospace);
  font-size: 1rem; font-weight: 700;
  letter-spacing: 0.1em;
}
.te-iata-arrow {
  color: var(--muted); font-size: 1.1rem; flex-shrink: 0;
}

/* Flight number + fetch button */
.te-booking-flightnum-row {
  display: flex; align-items: stretch; gap: 8px;
}
.te-flightnum-input {
  flex: 1; min-width: 0;
  text-transform: uppercase;
  font-family: var(--font-mono, monospace);
  letter-spacing: 0.08em;
}
.te-flight-fetch-btn {
  flex-shrink: 0;
  width: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(45,212,191,0.12), rgba(45,212,191,0.05));
  border: 1px solid rgba(45,212,191,0.35);
  border-radius: 9px;
  color: #2dd4bf;
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.18s;
}
.te-flight-fetch-btn:hover:not(:disabled) {
  background: rgba(45,212,191,0.2);
  transform: rotate(90deg);
}
.te-flight-fetch-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Trip card */
.trip-card {
  position: relative;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 14px;
  padding: 0;
  overflow: hidden;
  cursor: pointer;
  transition: all 0.15s;
  display: flex; flex-direction: column;
  min-height: 260px;
}
.trip-card:hover {
  transform: translateY(-2px);
  border-color: rgba(139,92,246,0.4);
  background: rgba(139,92,246,0.04);
}
/* Hero image */
.trip-card-hero {
  position: relative;
  height: 120px;
  flex-shrink: 0;
  background-color: #1a1525;
  overflow: hidden;
}
.trip-card-hero-img {
  background-size: cover;
  background-position: center;
}
.trip-card-hero-empty {
  background: linear-gradient(135deg, #2a2238 0%, #1a1525 55%, #231a33 100%);
}
.trip-card-hero-gradient {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.2) 55%, rgba(20,20,26,0.85) 100%);
  pointer-events: none;
}
.trip-card .trip-status-badge {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  background: rgba(0,0,0,0.45);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  color: #fff;
}
.trip-card .trip-status-upcoming { color: #4ade80; }
.trip-card .trip-status-ongoing  { color: #c4b5fd; }
.trip-card .trip-status-past     { color: rgba(255,255,255,0.75); }
.trip-card-flag {
  position: absolute; top: 10px; left: 12px; z-index: 2;
  font-size: 1.55rem;
  filter: drop-shadow(0 2px 6px rgba(0,0,0,0.6));
}
.trip-card-icon-big {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  font-size: 2.6rem; opacity: 0.55;
  filter: drop-shadow(0 2px 8px rgba(0,0,0,0.3));
}

/* Body */
.trip-card-body {
  padding: 13px 15px 11px;
  display: flex; flex-direction: column; gap: 7px;
  flex: 1;
}

.trip-card-head {
  display: flex; justify-content: space-between; align-items: flex-start;
}
.trip-card-icon { font-size: 1.35rem; }
.trip-status-badge {
  font-size: 0.7rem; font-weight: 700;
  padding: 3px 8px; border-radius: 99px;
  background: rgba(255,255,255,0.05);
}
.trip-status-upcoming { color: #22c55e; background: rgba(34,197,94,0.1); }
.trip-status-ongoing  { color: var(--accent2, #8b5cf6); background: rgba(139,92,246,0.13); }
.trip-status-past     { color: rgba(255,255,255,0.35); }
.trip-status-draft    { color: #f59e0b; background: rgba(245,158,11,0.1); }

.trip-card-title {
  margin: 0; font-size: 1rem; font-weight: 700; color: var(--text);
  line-height: 1.3;
  overflow: hidden; display: -webkit-box;
  -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.trip-card-dest { font-size: 0.82rem; color: var(--muted); }
.trip-card-dates {
  display: flex; align-items: center; gap: 6px;
  font-size: 0.78rem; color: var(--muted);
  font-family: var(--font-mono);
}
.trip-card-arrow { color: var(--accent2); opacity: 0.6; }
.trip-card-dur { color: rgba(255,255,255,0.4); }
.trip-card-hotel {
  font-size: 0.8rem; color: rgba(255,255,255,0.7);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.trip-card-more {
  font-size: 0.7rem; color: var(--muted);
  background: rgba(255,255,255,0.08);
  padding: 1px 6px; border-radius: 99px;
  margin-right: 4px;
}
.trip-card-foot {
  margin-top: auto;
  display: flex; justify-content: space-between; align-items: center;
  padding-top: 8px; border-top: 1px solid rgba(255,255,255,0.05);
  font-size: 0.78rem; color: var(--muted);
}
.trip-card-foot span { margin-left: 10px; }
.trip-card-del {
  background: none; border: none;
  color: rgba(255,255,255,0.25);
  cursor: pointer; font-size: 0.85rem;
  padding: 4px 8px; border-radius: 6px;
  transition: all 0.15s;
}
.trip-card-del:hover { color: var(--danger); background: rgba(239,68,68,0.1); }
.trip-card-export {
  background: none; border: none;
  color: rgba(255,255,255,0.3);
  cursor: pointer; font-size: 0.85rem;
  padding: 4px 8px; border-radius: 6px;
  transition: all 0.15s;
  margin-inline-start: auto;
}
.trip-card-export:hover { color: var(--accent2, #8b5cf6); background: rgba(139,92,246,0.12); }

/* ─── Trip Editor Modal ─── */
.trip-editor {
  position: fixed; inset: 0;
  z-index: 9495;
  display: flex; align-items: center; justify-content: center;
  background: rgba(0,0,0,0.6);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  padding: 16px; box-sizing: border-box;
}
.trip-editor.hidden { display: none !important; }
.te-shell {
  position: relative;
  display: flex; flex-direction: row; direction: rtl;
  width: 100%; max-width: 1120px;
  height: min(840px, 94dvh);
  background: var(--surface);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 32px 80px rgba(0,0,0,0.75);
  animation: tpShellIn 0.2s cubic-bezier(0.34, 1.3, 0.64, 1) both;
}
.te-sidebar {
  width: 200px; flex-shrink: 0;
  display: flex; flex-direction: column;
  border-left: 1px solid rgba(255,255,255,0.07);
  background: rgba(255,255,255,0.025);
}
.te-sidebar-top {
  display: flex; align-items: center; justify-content: flex-start;
  padding: 16px 14px 10px; flex-shrink: 0;
}
.te-sidebar-title { margin: 0; font-size: 0.9rem; font-weight: 700; color: var(--text); }
.te-close {
  background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.09);
  color: var(--muted); width: 26px; height: 26px; border-radius: 7px;
  display: flex; align-items: center; justify-content: center; cursor: pointer;
  transition: all 0.15s;
}
.te-close:hover { background: rgba(255,255,255,0.1); color: var(--text); }
.te-close-window {
  position: absolute;
  top: 16px;
  left: 16px;
  z-index: 8;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: rgba(20,24,34,0.82);
  border-color: rgba(255,255,255,0.12);
  box-shadow: 0 10px 24px rgba(0,0,0,0.28);
}
.te-tabs {
  display: flex; flex-direction: column; gap: 2px;
  padding: 4px 10px;
}
.te-tab {
  display: flex; align-items: center; gap: 9px;
  padding: 9px 11px;
  background: none; border: none; border-radius: 9px;
  color: var(--muted);
  font-family: var(--font-ar); font-size: 0.84rem; font-weight: 600;
  cursor: pointer; transition: all 0.12s;
  text-align: right; width: 100%;
}
.te-tab svg { opacity: 0.55; flex-shrink: 0; }
.te-tab:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.te-tab.active { background: rgba(139,92,246,0.13); color: var(--accent2, #8b5cf6); }
.te-tab.active svg { opacity: 1; }

.te-sidebar-footer {
  margin-top: auto;
  padding: 12px 10px 14px;
  border-top: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}
.te-export-btn {
  display: flex; align-items: center; justify-content: center;
  gap: 8px;
  width: 100%;
  padding: 10px 12px;
  background: linear-gradient(135deg, rgba(139,92,246,0.18), rgba(139,92,246,0.08));
  border: 1px solid rgba(139,92,246,0.3);
  color: var(--accent2, #8b5cf6);
  border-radius: 9px;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
}
.te-export-btn:hover {
  background: var(--accent2, #8b5cf6);
  color: #fff;
  border-color: var(--accent2, #8b5cf6);
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(139,92,246,0.35);
}
.te-export-btn svg { flex-shrink: 0; }

.te-content {
  flex: 1;
  overflow-y: auto;
  padding: 24px 26px;
  direction: rtl;
  min-width: 0;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.1) transparent;
}
.te-content::-webkit-scrollbar { width: 5px; }
.te-content::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 99px; }

.te-pane-title {
  margin: 0 0 18px; font-size: 1.1rem; font-weight: 700; color: var(--text);
}
.te-title-count { color: var(--muted); font-size: 0.85rem; font-weight: 500; }
.te-hint {
  font-size: 0.78rem; color: var(--muted);
  margin: -10px 0 14px; line-height: 1.5;
}
.te-hint-warn { color: #f59e0b; }
.te-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 14px; }
.te-field label { font-size: 0.78rem; color: var(--muted); font-weight: 600; }
.te-field input, .te-field select, .te-field textarea {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 9px;
  padding: 10px 12px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.92rem;
  outline: none;
  transition: border-color 0.15s;
  direction: rtl;
}
.te-field input:focus, .te-field select:focus, .te-field textarea:focus {
  border-color: var(--accent2, #8b5cf6);
  background: rgba(139,92,246,0.04);
}
.te-field input[type="date"] { font-family: var(--font-mono); font-size: 0.88rem; }
.te-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.te-summary {
  display: flex; gap: 18px; align-items: center;
  padding: 14px 16px; margin: 0 0 16px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
}
.te-summary > div { display: flex; flex-direction: column; align-items: flex-start; gap: 1px; }
.te-summary strong { font-size: 1.3rem; color: var(--text); font-family: var(--font-mono); }
.te-summary span { font-size: 0.72rem; color: var(--muted); }
.te-summary-status { margin-inline-start: auto; font-size: 0.8rem; font-weight: 700; padding: 4px 10px; border-radius: 99px; }

.te-actions { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.te-action-btn {
  display: inline-flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--text);
  border-radius: 9px;
  padding: 9px 14px;
  font-family: var(--font-ar); font-size: 0.82rem; font-weight: 600;
  cursor: pointer; transition: all 0.15s;
  position: relative;
}
.te-action-btn:hover { background: rgba(255,255,255,0.09); border-color: rgba(139,92,246,0.4); }
.te-action-btn.warn { color: #f59e0b; border-color: rgba(245,158,11,0.25); }
.te-action-btn.warn:hover { background: rgba(245,158,11,0.1); }
.te-upload-btn input[type="file"] { position: absolute; inset: 0; opacity: 0; cursor: pointer; }

/* Days table */
.trip-days-table { display: flex; flex-direction: column; gap: 10px; }
.trip-day-row {
  display: grid;
  grid-template-columns: 70px 1fr 1fr 2fr 34px;
  gap: 8px;
  padding: 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
  align-items: start;
}
.trip-day-num { display: flex; flex-direction: column; gap: 2px; padding: 8px 2px; }
.trip-day-idx {
  display: inline-block; width: 24px; height: 24px; line-height: 24px;
  text-align: center; background: rgba(139,92,246,0.15);
  color: var(--accent2, #8b5cf6); font-weight: 700; border-radius: 50%;
  font-size: 0.78rem; font-family: var(--font-mono);
}
.trip-day-date { font-size: 0.7rem; color: var(--muted); font-family: var(--font-mono); text-align: center; }
.trip-day-input {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 7px;
  padding: 8px 10px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.85rem;
  outline: none;
  direction: rtl;
  transition: border-color 0.15s;
  resize: vertical;
}
.trip-day-input:focus { border-color: var(--accent2, #8b5cf6); }
.trip-day-act { min-height: 54px; font-size: 0.82rem; line-height: 1.5; }
.trip-day-del {
  background: none; border: none; color: rgba(255,255,255,0.25);
  font-size: 0.95rem; cursor: pointer;
  padding: 8px; border-radius: 6px; transition: all 0.15s;
  align-self: start;
}
.trip-day-del:hover { color: var(--danger); background: rgba(239,68,68,0.08); }

/* Bookings */
.te-booking-add-form {
  display: flex; flex-direction: column; gap: 8px;
  padding: 14px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 12px;
  margin-bottom: 16px;
}
.te-booking-add-form input,
.te-booking-add-form select,
.te-select {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 8px; padding: 8px 10px;
  color: var(--text); font-family: var(--font-ar); font-size: 0.88rem;
  outline: none; direction: rtl;
}
.te-booking-add-form input:focus, .te-select:focus { border-color: var(--accent2, #8b5cf6); }
.te-input-error,
.input-error {
  border-color: var(--danger) !important;
  box-shadow: 0 0 0 3px rgba(239,68,68,0.18);
  animation: teShake 0.35s ease;
}
@keyframes teShake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}
.te-booking-add-buttons { display: flex; gap: 8px; flex-wrap: wrap; }
.te-upload-status { font-size: 0.78rem; color: var(--muted); min-height: 18px; }
.te-empty-msg { color: var(--muted); font-size: 0.85rem; text-align: center; padding: 20px; }
.te-empty-msg-padded { padding: 10px; }
.te-action-start { align-self: flex-start; }
.input-uppercase { text-transform: uppercase; }

.trip-booking-list { display: flex; flex-direction: column; gap: 8px; }
.trip-booking-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
}
.trip-booking-icon { font-size: 1.3rem; }
.trip-booking-body { flex: 1; min-width: 0; }
.trip-booking-title { font-weight: 700; font-size: 0.9rem; color: var(--text); margin-bottom: 2px; }
.trip-booking-meta { display: flex; gap: 10px; font-size: 0.74rem; color: var(--muted); flex-wrap: wrap; }
.trip-booking-type { padding: 1px 6px; background: rgba(255,255,255,0.06); border-radius: 99px; color: var(--booking-type-color, var(--muted)); }
.trip-booking-type-flight .trip-booking-title { color: #60a5fa; }
.trip-booking-type-hotel  .trip-booking-title { color: #f472b6; }
.trip-booking-open, .trip-booking-del {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--muted);
  width: 30px; height: 30px; border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all 0.15s; font-size: 0.9rem;
}
.trip-booking-open:hover { background: rgba(139,92,246,0.15); color: var(--accent2, #8b5cf6); border-color: rgba(139,92,246,0.3); }
.trip-booking-del:hover { background: rgba(239,68,68,0.12); color: var(--danger); border-color: rgba(239,68,68,0.3); }

/* Notes textarea */
.te-notes-area {
  width: 100%; box-sizing: border-box;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 10px;
  padding: 12px 14px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.9rem; line-height: 1.6;
  outline: none; resize: vertical;
  min-height: 320px; direction: rtl;
}
.te-notes-area:focus { border-color: var(--accent2, #8b5cf6); }

/* ─── Mobile ─── */
@media (max-width: 700px) {
  /* travel-page is already full-screen — nothing to override */
  .tp-header { padding: 14px 16px; }
  .tp-header-title { font-size: 1.05rem; }
  .tp-new-btn { padding: 7px 11px; font-size: 0.78rem; }
  .tp-stats { padding: 10px 14px; gap: 8px; overflow-x: auto; scrollbar-width: none; }
  .tp-stats::-webkit-scrollbar { display: none; }
  .tp-stat { padding: 5px 12px; min-width: 62px; flex-shrink: 0; }
  .tp-stat-num { font-size: 1.05rem; }
  .tp-filter-tabs { padding: 6px 14px 0; overflow-x: auto; scrollbar-width: none; }
  .tp-filter-tabs::-webkit-scrollbar { display: none; }
  .tp-filter-tab { padding: 8px 10px; font-size: 0.76rem; flex-shrink: 0; }
  .tp-trips-grid { grid-template-columns: 1fr; padding: 14px; gap: 10px; }
  .tp-upcoming-section { padding: 10px 14px 0; }
  .tp-upcoming-scroll .trip-card { flex: 0 0 200px; }

  /* Editor mobile */
  .trip-editor { padding: 0; align-items: flex-end; }
  .te-shell {
    flex-direction: column; max-width: 100%; height: 96dvh;
    border-radius: 20px 20px 0 0;
  }
  .te-close-window {
    top: 12px;
    left: 12px;
    width: 36px;
    height: 36px;
    border-radius: 12px;
  }
  .te-sidebar {
    width: 100%;
    border-left: none;
    border-bottom: 1px solid rgba(255,255,255,0.07);
    flex-direction: row;
    align-items: center;
    background: var(--surface);
  }
  .te-sidebar-top { padding: 12px 14px; flex-shrink: 0; }
  .te-sidebar-title { font-size: 0.82rem; }
  .te-sidebar-footer {
    margin-top: 0; margin-inline-start: auto;
    padding: 8px 10px;
    border-top: none;
    border-inline-start: 1px solid rgba(255,255,255,0.06);
  }
  .te-export-btn { padding: 7px 10px; font-size: 0.72rem; white-space: nowrap; }
  .te-export-btn span { display: none; }
  .te-tabs { flex-direction: row; padding: 4px 6px; gap: 2px; flex: 1; overflow-x: auto; scrollbar-width: none; }
  .te-tabs::-webkit-scrollbar { display: none; }
  .te-tab { flex-direction: column; gap: 3px; padding: 6px 10px; font-size: 0.68rem; white-space: nowrap; flex-shrink: 0; border-radius: 7px; }
  .te-content { padding: 16px; }
  .te-row { grid-template-columns: 1fr; }

  /* Day row stacks on mobile */
  .trip-day-row {
    grid-template-columns: 1fr 28px;
    grid-template-areas:
      "num del"
      "region region"
      "hotel hotel"
      "act act";
    gap: 7px;
  }
  .trip-day-row > .trip-day-num { grid-area: num; flex-direction: row; gap: 8px; align-items: center; padding: 2px 0; }
  .trip-day-row > .trip-day-input:nth-of-type(1) { grid-area: region; }
  .trip-day-row > .trip-day-input:nth-of-type(2) { grid-area: hotel; }
  .trip-day-row > .trip-day-act { grid-area: act; }
  .trip-day-row > .trip-day-del { grid-area: del; }
}


/* ═══ Travel v2: destinations + airline logos + new booking types ═══ */

/* Destination chips list */
.trip-dest-list {
  display: flex; flex-direction: column; gap: 6px;
  margin-bottom: 8px;
}
.trip-dest-chip {
  display: flex; align-items: center; gap: 8px;
  padding: 8px 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 9px;
  transition: border-color 0.15s;
}
.trip-dest-chip:focus-within { border-color: var(--accent2, #8b5cf6); }
.trip-dest-num {
  display: inline-block;
  min-width: 22px; height: 22px; line-height: 22px;
  text-align: center;
  background: rgba(139,92,246,0.15);
  color: var(--accent2, #8b5cf6);
  font-family: var(--font-mono);
  font-size: 0.72rem; font-weight: 700;
  border-radius: 50%;
  flex-shrink: 0;
}
.trip-dest-input {
  flex: 1;
  background: transparent;
  border: none; outline: none;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.92rem;
  direction: rtl;
}
.trip-icon-input { width: 70px; text-align: center; font-size: 1.3rem; }
.trip-dest-del {
  background: none; border: none;
  color: rgba(255,255,255,0.3);
  font-size: 0.85rem;
  cursor: pointer;
  padding: 4px 8px; border-radius: 6px;
  transition: all 0.15s;
}
.trip-dest-del:hover { color: var(--danger); background: rgba(239,68,68,0.08); }

/* Country button inside destination chip */
.trip-dest-country-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 6px 10px;
  background: rgba(139,92,246,0.08);
  border: 1px solid rgba(139,92,246,0.22);
  border-radius: 8px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
  white-space: nowrap;
  flex-shrink: 0;
}
.trip-dest-country-btn:hover {
  background: rgba(139,92,246,0.18);
  border-color: rgba(139,92,246,0.4);
}
.trip-dest-country-btn.placeholder {
  color: rgba(255,255,255,0.45);
  background: transparent;
  border-style: dashed;
  border-color: rgba(255,255,255,0.15);
  font-weight: 500;
}
.trip-dest-country-btn .tdp-caret {
  font-size: 0.68rem;
  opacity: 0.6;
}

/* Country picker popover */
#country-picker {
  position: fixed;
  z-index: 9520;
  width: 330px;
  max-height: 440px;
  background: var(--surface, #14141a);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 14px;
  box-shadow: 0 18px 48px rgba(0,0,0,0.7);
  padding: 10px;
  direction: rtl;
  display: flex; flex-direction: column;
  animation: tdpIn 0.14s ease-out both;
}
#country-picker.hidden { display: none !important; }
.cp-search {
  padding: 8px 11px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 8px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.86rem;
  width: 100%;
  margin-bottom: 8px;
  outline: none;
  direction: rtl;
}
.cp-search:focus { border-color: var(--accent2, #8b5cf6); }
.cp-list {
  flex: 1;
  overflow-y: auto;
  display: flex; flex-direction: column; gap: 2px;
  scrollbar-width: thin;
  scrollbar-color: rgba(139,92,246,0.3) transparent;
}
.cp-list::-webkit-scrollbar { width: 6px; }
.cp-list::-webkit-scrollbar-thumb { background: rgba(139,92,246,0.3); border-radius: 3px; }
.cp-item {
  display: flex; align-items: center; gap: 11px;
  padding: 8px 10px;
  background: transparent;
  border: none;
  border-radius: 8px;
  color: var(--text);
  cursor: pointer;
  text-align: right;
  direction: rtl;
  transition: background 0.1s;
  width: 100%;
}
.cp-item:hover { background: rgba(139,92,246,0.12); }
.cp-item.cp-selected {
  background: rgba(139,92,246,0.22);
  box-shadow: inset 0 0 0 1px rgba(139,92,246,0.45);
}
.cp-flag {
  font-size: 1.35rem;
  flex-shrink: 0;
  line-height: 1;
}
.cp-names {
  flex: 1;
  display: flex; flex-direction: column; gap: 1px;
  min-width: 0;
}
.cp-name-ar {
  font-weight: 700; font-size: 0.88rem;
  font-family: var(--font-ar);
  color: var(--text);
}
.cp-name-en {
  font-size: 0.68rem;
  color: var(--muted);
  font-family: var(--font-mono);
  opacity: 0.75;
}
.cp-empty {
  text-align: center;
  padding: 24px 10px;
  color: var(--muted);
  font-size: 0.85rem;
}
.cp-footer {
  display: flex; gap: 6px;
  padding-top: 8px; margin-top: 6px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.cp-footer > .tdp-footer-btn { flex: 1; }

/* Mobile tweaks */
@media (max-width: 640px) {
  .trip-card-hero { height: 100px; }
  .trip-card-flag { font-size: 1.35rem; }
  .trip-card-icon-big { font-size: 2.2rem; }
  .trip-card { min-height: 230px; }
  #country-picker {
    width: calc(100vw - 24px);
    max-width: 360px;
    max-height: 60vh;
  }
  .trip-dest-country-btn {
    max-width: 130px;
    overflow: hidden; text-overflow: ellipsis;
    font-size: 0.72rem;
  }
}

.te-field-hint {
  font-weight: 400;
  color: rgba(255,255,255,0.35);
  font-size: 0.72rem;
  margin-right: 4px;
}
.te-action-btn-sm {
  padding: 6px 12px !important;
  font-size: 0.78rem !important;
  margin-top: 4px;
}

/* Day region select */
.trip-day-select {
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat: no-repeat;
  background-position: left 10px center;
  padding-left: 28px !important;
}
.trip-day-select:focus { border-color: var(--accent2, #8b5cf6); }

/* Booking form rows */
.te-booking-row {
  display: flex; gap: 8px; align-items: center;
}
.te-booking-row > select { flex: 0 0 140px; }
.te-booking-row > input[type="text"] { flex: 1; }

/* Airline row + live preview */
.te-booking-airline-row {
  gap: 10px;
  padding: 4px 0;
}
.te-airline-input-wrap { position: relative; }
.te-airline-preview {
  display: flex; align-items: center; gap: 6px;
  min-width: 68px; height: 36px;
  padding: 3px 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 8px;
}
.te-airline-preview:empty {
  background: transparent;
  border-style: dashed;
  border-color: rgba(255,255,255,0.1);
}
.te-airline-preview img {
  max-width: 44px; max-height: 22px;
  object-fit: contain;
  display: block;
}
.te-airline-code {
  font-family: var(--font-mono);
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--accent2, #8b5cf6);
  background: rgba(139,92,246,0.12);
  padding: 1px 6px;
  border-radius: 4px;
}
.te-airline-miss {
  color: var(--muted);
  font-size: 0.95rem;
  font-weight: 700;
  opacity: 0.5;
}

/* Booking item — airline logo display */
.trip-booking-logo-wrap {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 50px; height: 32px;
  background: rgba(255,255,255,0.04);
  border-radius: 6px;
  padding: 2px 6px;
  flex-shrink: 0;
}
.trip-booking-logo {
  max-width: 44px; max-height: 24px;
  object-fit: contain;
  display: block;
}
.trip-booking-airline {
  color: rgba(255,255,255,0.75);
  font-weight: 600;
  font-size: 0.74rem;
}

/* Type badges — colored per booking type */
.trip-booking-type-flight .trip-booking-title,
.trip-booking-type-internal_flight .trip-booking-title { color: #60a5fa; }
.trip-booking-type-hotel .trip-booking-title  { color: #f472b6; }
.trip-booking-type-train .trip-booking-title  { color: #22c55e; }
.trip-booking-type-cruise .trip-booking-title { color: #06b6d4; }
.trip-booking-type-tour .trip-booking-title   { color: #f59e0b; }
.trip-booking-type-other .trip-booking-title  { color: var(--text); }

/* Mobile */
@media (max-width: 700px) {
  .te-booking-row { flex-direction: column; align-items: stretch; }
  .te-booking-row > select { flex: 1; }
  .te-booking-airline-row { flex-direction: row; }
  .te-airline-preview { flex-shrink: 0; }
}

/* ═══ Custom date picker (matches site calendar style) ═══ */
.te-date-trigger {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px;
  width: 100%;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.09);
  border-radius: 9px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.92rem;
  cursor: pointer;
  transition: all 0.15s;
  text-align: right;
  direction: rtl;
}
.te-date-trigger:hover { border-color: var(--accent2, #8b5cf6); background: rgba(255,255,255,0.05); }
.te-date-trigger.placeholder { color: rgba(255,255,255,0.4); }
.te-date-trigger .tdp-icon {
  flex-shrink: 0; color: var(--accent2, #8b5cf6); opacity: 0.75;
}

#trip-date-picker {
  position: fixed;
  z-index: 9510;
  width: 296px;
  background: var(--surface, #14141a);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 14px;
  box-shadow: 0 18px 48px rgba(0,0,0,0.7);
  padding: 12px;
  direction: rtl;
  animation: tdpIn 0.14s ease-out both;
}
#trip-date-picker.hidden { display: none !important; }
@keyframes tdpIn {
  from { opacity: 0; transform: translateY(-6px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.tdp-header {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
}
.tdp-nav {
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--text);
  width: 28px; height: 28px;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: all 0.12s;
  font-size: 0.9rem;
}
.tdp-nav:hover { background: rgba(139,92,246,0.15); border-color: var(--accent2, #8b5cf6); }
.tdp-title {
  font-family: var(--font-ar);
  font-size: 0.9rem; font-weight: 700;
  color: var(--text);
  cursor: pointer;
  padding: 4px 10px; border-radius: 7px;
  transition: background 0.12s;
}
.tdp-title:hover { background: rgba(255,255,255,0.05); }
.tdp-dow-row {
  display: grid; grid-template-columns: repeat(7, 1fr);
  gap: 2px; margin-bottom: 4px;
}
.tdp-dow {
  text-align: center;
  font-family: var(--font-ar);
  font-size: 0.66rem;
  font-weight: 700;
  color: var(--muted);
  padding: 4px 0;
}
.tdp-grid {
  display: grid; grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.tdp-cell {
  aspect-ratio: 1;
  display: flex; align-items: center; justify-content: center;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 8px;
  color: var(--text);
  font-family: var(--font-mono);
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.1s;
  padding: 0;
}
.tdp-cell:hover:not(.tdp-empty) {
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.3);
}
.tdp-cell.tdp-empty { cursor: default; opacity: 0; }
.tdp-cell.tdp-other { color: rgba(255,255,255,0.2); }
.tdp-cell.tdp-today {
  color: var(--accent2, #8b5cf6);
  font-weight: 700;
  border-color: rgba(139,92,246,0.3);
}
.tdp-cell.tdp-selected {
  background: var(--accent2, #8b5cf6);
  color: #fff;
  font-weight: 700;
  border-color: var(--accent2, #8b5cf6);
}
.tdp-footer {
  display: flex; justify-content: space-between; gap: 6px;
  margin-top: 10px; padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.tdp-footer-btn {
  flex: 1;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--text);
  padding: 6px 10px;
  border-radius: 7px;
  font-family: var(--font-ar);
  font-size: 0.76rem;
  cursor: pointer;
  transition: all 0.12s;
}
.tdp-footer-btn:hover { background: rgba(139,92,246,0.12); border-color: var(--accent2, #8b5cf6); }
.tdp-footer-btn.tdp-clear:hover { background: rgba(239,68,68,0.1); border-color: rgba(239,68,68,0.4); color: var(--danger); }

/* ═══ Booking form v3 — PNR + bottom-aligned action buttons ═══ */
.te-pane-head-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px;
  margin-bottom: 14px;
}
.te-pane-head-row .te-pane-title { margin: 0; }
.te-booking-new-btn {
  font-size: 0.82rem !important;
  padding: 8px 14px !important;
  white-space: nowrap;
}
.te-booking-form-head {
  display: flex; align-items: center; justify-content: space-between;
  padding-bottom: 8px;
  margin-bottom: 2px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
}
.te-booking-form-title {
  font-family: var(--font-ar);
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--accent2, #8b5cf6);
}
.te-booking-form-close {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  color: var(--muted);
  width: 26px; height: 26px;
  border-radius: 7px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: all 0.12s;
  font-size: 0.8rem;
}
.te-booking-form-close:hover {
  background: rgba(239,68,68,0.1); color: var(--danger);
  border-color: rgba(239,68,68,0.3);
}
.te-booking-add-form {
  gap: 10px;
}
.te-booking-pnr-row { display: flex; gap: 8px; }
.te-booking-pnr-row > input { flex: 1; }
.te-booking-actions-bar {
  display: flex; gap: 10px;
  padding-top: 8px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  margin-top: 4px;
}
.te-booking-actions-bar .te-action-btn {
  flex: 1;
  justify-content: center;
  padding: 11px 14px !important;
  font-size: 0.88rem !important;
  font-weight: 700;
}
.te-booking-actions-bar .te-action-btn.te-btn-primary {
  background: var(--accent2, #8b5cf6);
  border-color: var(--accent2, #8b5cf6);
  color: #fff;
}
.te-booking-actions-bar .te-action-btn.te-btn-primary:hover {
  background: #7c4ee6; border-color: #7c4ee6;
}
@media (max-width: 700px) {
  .te-booking-actions-bar { flex-direction: column; }
  #trip-date-picker { width: calc(100vw - 24px); max-width: 320px; }
}

/* ─── Trip dashboard card (hero-first immersive) ───────── */
.card.trip-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 280px;
  transition: transform 0.22s cubic-bezier(.2,.9,.3,1), box-shadow 0.22s;
}
.card.trip-dash-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 18px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.25);
}
.trip-dash-shell {
  display: flex;
  flex-direction: column;
  flex: 1;
  height: 100%;
}
.trip-dash-hero {
  position: relative;
  height: 160px;
  background-size: cover;
  background-position: center;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 12px 14px;
  transition: background-size 0.4s ease;
}
.trip-dash-hero-empty {
  background: linear-gradient(135deg, #6d45e6 0%, #8b5cf6 50%, #b490f2 100%);
}
.trip-dash-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.1) 35%, rgba(0,0,0,0.55) 75%, rgba(12,10,18,0.95) 100%);
  pointer-events: none;
  z-index: 1;
}
.trip-dash-hero-top,
.trip-dash-hero-bottom {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 8px;
}
.trip-dash-hero-top {
  justify-content: space-between;
}
.trip-dash-hero-bottom {
  gap: 10px;
}
.trip-dash-type-badge {
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  padding: 4px 9px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 999px;
  color: #fff;
  text-transform: uppercase;
}
.trip-dash-status {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.1);
  color: #fff;
  font-weight: 600;
}
.trip-dash-status.trip-status-upcoming { color: #fbbf24; border-color: rgba(251,191,36,0.35); }
.trip-dash-status.trip-status-ongoing  { color: #34d399; border-color: rgba(52,211,153,0.35); }
.trip-dash-status.trip-status-past     { color: #d1d5db; border-color: rgba(209,213,219,0.2); }
.trip-dash-status.trip-status-draft    { color: #c4b5fd; border-color: rgba(196,181,253,0.3); }
.trip-dash-flag {
  font-size: 2rem;
  filter: drop-shadow(0 3px 8px rgba(0,0,0,0.6));
  line-height: 1;
}
.trip-dash-title {
  flex: 1;
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.35rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
  line-height: 1.2;
  word-break: break-word;
}
.trip-dash-body {
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
  background: linear-gradient(180deg, rgba(139,92,246,0.05) 0%, transparent 60%);
}
.trip-dash-row {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  color: var(--text);
}
.trip-dash-icon {
  font-size: 0.9rem;
  opacity: 0.7;
  flex-shrink: 0;
}
.trip-dash-row-text {
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  color: rgba(255,255,255,0.85);
}
.trip-dash-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 4px;
}
.trip-dash-chip {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  padding: 3px 9px;
  background: rgba(139,92,246,0.12);
  border: 1px solid rgba(139,92,246,0.22);
  border-radius: 999px;
  color: rgba(255,255,255,0.85);
}
.trip-dash-chip strong {
  color: #c4b5fd;
  font-weight: 700;
  margin-left: 2px;
}
.trip-packing-chip { background: rgba(59,130,246,0.12) !important; border-color: rgba(59,130,246,0.22) !important; }
.trip-packing-chip strong { color: #93c5fd !important; }
.trip-packing-done { background: rgba(34,197,94,0.12) !important; border-color: rgba(34,197,94,0.22) !important; }
.trip-packing-done strong { color: #86efac !important; }
.trip-dash-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 14px 10px;
  border-top: 1px dashed rgba(255,255,255,0.06);
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  color: var(--muted);
}
.trip-dash-time { opacity: 0.7; }
.trip-dash-open {
  color: #c4b5fd;
  opacity: 0.8;
  transition: opacity 0.15s;
}
.card.trip-dash-card:hover .trip-dash-open { opacity: 1; }
.card.trip-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 3;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.trip-dash-card:hover .card-actions { opacity: 1; }
.card.trip-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.12);
  color: #fff;
  border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.trip-dash-card .card-actions button:hover {
  background: rgba(239,68,68,0.6);
}
.card.trip-dash-card .card-edit:hover {
  background: rgba(139,92,246,0.7) !important;
}
@media (max-width: 640px) {
  .card.trip-dash-card { min-height: 240px; }
  .trip-dash-hero { height: 130px; }
  .trip-dash-title { font-size: 1.15rem; }
  .trip-dash-flag { font-size: 1.6rem; }
}

/* ─── Status dashboard card (live hero) ─────────────────── */
.card.status-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 320px;
  transition: transform 0.22s cubic-bezier(.2,.9,.3,1), box-shadow 0.22s;
}
.card.status-dash-card:hover {
  transform: translateY(-3px);
}
.card.status-dash-card.status-state-online:hover {
  box-shadow: 0 18px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(16,185,129,0.4);
}
.card.status-dash-card.status-state-offline:hover {
  box-shadow: 0 18px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(239,68,68,0.4);
}
.card.status-dash-card.status-state-checking:hover {
  box-shadow: 0 18px 40px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.35);
}

.status-dash-shell {
  display: flex; flex-direction: column; flex: 1;
}

/* Hero band — gradient reflects state */
.status-dash-hero {
  position: relative;
  height: 140px;
  padding: 14px 16px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.status-state-online .status-dash-hero {
  background: linear-gradient(135deg, #0a2920 0%, #164030 60%, #1f5a45 100%);
  animation: sdPulseBg 3.5s ease-in-out infinite;
}
.status-state-offline .status-dash-hero {
  background: linear-gradient(135deg, #2a0808 0%, #5a1414 60%, #7a2525 100%);
  animation: sdShakeBg 6s ease-in-out infinite;
}
.status-state-checking .status-dash-hero {
  background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 50%, #3d3d44 100%);
  background-size: 200% 200%;
  animation: sdShimmer 2.2s ease-in-out infinite;
}
.sd-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.05) 0%, rgba(0,0,0,0.2) 60%, rgba(12,10,18,0.85) 100%);
  pointer-events: none;
  z-index: 1;
}
@keyframes sdPulseBg {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.12); }
}
@media (prefers-reduced-motion: reduce) {
  .status-state-warning .status-dash-hero,
  .status-state-offline .status-dash-hero,
  .status-state-checking .status-dash-hero { animation: none; }
}
@keyframes sdShakeBg {
  0%, 92%, 100% { transform: translateX(0); }
  93% { transform: translateX(-1.5px); }
  95% { transform: translateX(1.5px); }
  97% { transform: translateX(-1px); }
}
@keyframes sdShimmer {
  0% { background-position: 0% 0%; }
  50% { background-position: 100% 100%; }
  100% { background-position: 0% 0%; }
}

.sd-hero-top, .sd-hero-bottom {
  position: relative;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.sd-state-row {
  display: flex; align-items: center; gap: 8px;
}
.sd-dot {
  width: 12px; height: 12px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 0 0 0 rgba(255,255,255,0.7);
  animation: sdDotPulse 1.8s ease-out infinite;
}
.status-state-online .sd-dot { background: #d1fae5; }
.status-state-offline .sd-dot { background: #fecaca; }
.status-state-checking .sd-dot { background: #e4e4e7; animation-duration: 0.9s; }
@keyframes sdDotPulse {
  0%   { box-shadow: 0 0 0 0 rgba(255,255,255,0.7); }
  70%  { box-shadow: 0 0 0 10px rgba(255,255,255,0); }
  100% { box-shadow: 0 0 0 0 rgba(255,255,255,0); }
}
.sd-state-label {
  font-family: var(--font-ar);
  font-size: 0.95rem;
  font-weight: 700;
  color: #fff;
  text-shadow: 0 2px 8px rgba(0,0,0,0.8);
}

/* Latency glass chip */
.sd-latency-chip {
  display: inline-flex;
  align-items: baseline;
  gap: 3px;
  padding: 6px 12px;
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 999px;
  font-family: var(--font-mono, monospace);
  color: #fff;
}
.sd-lat-num {
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1;
}
.sd-lat-unit {
  font-size: 0.7rem;
  opacity: 0.7;
}
.sd-latency-chip.sd-lat-fast .sd-lat-num { color: #a7f3d0; }
.sd-latency-chip.sd-lat-med .sd-lat-num  { color: #fde68a; }
.sd-latency-chip.sd-lat-slow .sd-lat-num { color: #fca5a5; }
.sd-latency-chip.sd-lat-fail .sd-lat-num { color: #fca5a5; opacity: 0.7; }
.sd-latency-chip.sd-checking { padding: 8px 14px; }
.sd-spinner {
  width: 16px; height: 16px;
  border: 2px solid rgba(255,255,255,0.3);
  border-top-color: #fff;
  border-radius: 50%;
  animation: sdSpin 0.7s linear infinite;
}
@keyframes sdSpin { to { transform: rotate(360deg); } }

/* Sparkline */
.sd-spark {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 32px;
  width: 100%;
}
.sd-spark-bar {
  flex: 1;
  height: var(--h, 20%);
  border-radius: 2px;
  min-height: 4px;
  transition: opacity 0.2s, transform 0.2s;
  cursor: help;
}
.sd-spark-ok {
  background: linear-gradient(180deg, #34d399, #10b981);
  box-shadow: 0 0 6px rgba(52,211,153,0.4);
}
.sd-spark-fail {
  background: linear-gradient(180deg, #f87171, #dc2626);
  box-shadow: 0 0 6px rgba(239,68,68,0.4);
}
.sd-spark-empty {
  background: rgba(255,255,255,0.08);
  height: 18%;
}
.sd-spark-bar:hover {
  transform: scaleY(1.08);
  opacity: 0.9;
}

/* Body */
.status-dash-body {
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  gap: 7px;
  flex: 1;
}
.sd-title-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.sd-favicon {
  width: 22px; height: 22px;
  border-radius: 5px;
  background: rgba(255,255,255,0.06);
  padding: 2px;
  flex-shrink: 0;
}
.sd-favicon-fallback {
  width: 22px; height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.95rem;
  background: rgba(255,255,255,0.06);
  border-radius: 5px;
  flex-shrink: 0;
}
.sd-title {
  flex: 1;
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sd-url-row {
  display: flex; align-items: center; gap: 7px;
  font-family: var(--font-mono, monospace);
  font-size: 0.78rem;
  color: rgba(255,255,255,0.65);
}
.sd-url-icon { opacity: 0.6; font-size: 0.75rem; }
.sd-url-domain {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sd-credentials-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.sd-credential {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  padding: 5px 8px;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  background: rgba(255,255,255,0.035);
  color: rgba(255,255,255,0.78);
  font-family: var(--font-ar);
  font-size: 0.72rem;
}
.sd-credential-password {
  background: rgba(139,92,246,0.08);
  border-color: rgba(139,92,246,0.16);
}
.sd-cred-label {
  color: rgba(255,255,255,0.48);
  white-space: nowrap;
}
.sd-cred-value {
  max-width: 95px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--font-mono, monospace);
  color: rgba(255,255,255,0.88);
}
.sd-cred-btn {
  border: 0;
  border-radius: 999px;
  padding: 2px 7px;
  background: rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.86);
  font-family: var(--font-ar);
  font-size: 0.68rem;
  cursor: pointer;
}
.sd-cred-btn:hover {
  background: rgba(96,211,255,0.16);
  color: #7dd3fc;
}
.sd-chips {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-top: 3px;
}
.sd-chip {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  padding: 3px 9px;
  background: rgba(139,92,246,0.1);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 999px;
  color: rgba(255,255,255,0.85);
}
.sd-chip strong {
  color: #c4b5fd;
  font-weight: 700;
  margin: 0 2px;
  font-family: var(--font-mono, monospace);
}
.sd-chip-tag {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.1);
  font-family: var(--font-mono, monospace);
}
.status-state-online .sd-chip strong { color: #6ee7b7; }
.status-state-offline .sd-chip strong { color: #fca5a5; }

/* Footer */
.status-dash-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 14px 10px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
}
.sd-last-checked {
  color: var(--muted);
  opacity: 0.75;
}
.sd-recheck-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 12px;
  background: rgba(139,92,246,0.12);
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 999px;
  color: #c4b5fd;
  font-family: var(--font-ar);
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.sd-recheck-btn:hover {
  background: rgba(139,92,246,0.22);
  border-color: rgba(139,92,246,0.5);
  color: #fff;
}
.sd-recheck-ico {
  display: inline-block;
  font-size: 0.9rem;
  line-height: 1;
}
.sd-recheck-loading .sd-recheck-ico {
  animation: sdSpin 0.7s linear infinite;
}

/* Actions (hover) */
.card.status-dash-card .card-actions {
  position: absolute;
  top: 10px; left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.status-dash-card:hover .card-actions { opacity: 1; }
.card.status-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.status-dash-card .card-actions .card-delete:hover {
  background: rgba(239,68,68,0.6);
}
.card.status-dash-card .card-actions .card-edit:hover {
  background: rgba(139,92,246,0.7);
}

@media (max-width: 640px) {
  .card.status-dash-card { min-height: 240px; }
  .status-dash-hero { height: 120px; padding: 12px; }
  .sd-lat-num { font-size: 1.1rem; }
  .sd-state-label { font-size: 0.85rem; }
  .sd-recheck-label { display: none; }
  .sd-recheck-btn { padding: 5px 9px; }
}

/* ─── Document dashboard card (expiry hero) ─────────────── */
.card.doc-dash-card {
  padding: 0 !important;
  gap: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  transition: transform 0.22s cubic-bezier(.2,.9,.3,1), box-shadow 0.22s;
}
.card.doc-dash-card:hover {
  transform: none !important;
}
.card.doc-dash-card.doc-sev-expired:hover,
.card.doc-dash-card.doc-sev-critical:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(239,68,68,0.4);
}
.card.doc-dash-card.doc-sev-warning:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(245,158,11,0.4);
}
.card.doc-dash-card.doc-sev-caution:hover,
.card.doc-dash-card.doc-sev-safe:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(16,185,129,0.4);
}
.card.doc-dash-card.doc-sev-none:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.35);
}

.doc-dash-shell { display:flex; flex-direction:column; flex:1; min-height: 0; height: 100%; }

/* Hero — gradient color reflects severity */
.doc-dash-hero {
  position: relative;
  height: 150px;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.doc-sev-expired  .doc-dash-hero { background: linear-gradient(135deg, #2a0808 0%, #5a1414 60%, #7a2525 100%); animation: ddAlert 3.5s ease-in-out infinite; }
.doc-sev-critical .doc-dash-hero { background: linear-gradient(135deg, #2e1608 0%, #5a2d12 60%, #7a4520 100%); }
.doc-sev-warning  .doc-dash-hero { background: linear-gradient(135deg, #2a1e08 0%, #4d3810 60%, #6b5020 100%); }
.doc-sev-caution  .doc-dash-hero { background: linear-gradient(135deg, #0a2825 0%, #1a4540 60%, #276660 100%); }
.doc-sev-safe     .doc-dash-hero { background: linear-gradient(135deg, #0a2920 0%, #164030 60%, #1f5a45 100%); }
.doc-sev-none     .doc-dash-hero { background: linear-gradient(135deg, #1a1530 0%, #2d2450 60%, #3f3570 100%); }

@keyframes ddAlert {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.15) saturate(1.1); }
}
@media (prefers-reduced-motion: reduce) {
  .doc-sev-expired .doc-dash-hero { animation: none; }
}
.dd-hero-noise {
  position: absolute; inset: 0;
  background-image: radial-gradient(circle at 20% 30%, rgba(255,255,255,0.07) 0, transparent 40%),
                    radial-gradient(circle at 80% 70%, rgba(255,255,255,0.05) 0, transparent 45%);
  pointer-events: none;
  z-index: 1;
}
.dd-hero-overlay {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0) 75%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
  pointer-events: none;
  z-index: 1;
}
/* Decorative art layer — big emoji behind countdown + country flag corner */
.dd-hero-art {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}
.dd-art-emoji {
  position: absolute;
  top: 50%;
  left: 14px;
  transform: translateY(-50%) rotate(-12deg);
  font-size: 5.5rem;
  line-height: 1;
  opacity: 0.22;
  filter: drop-shadow(0 4px 18px rgba(0,0,0,0.55));
  user-select: none;
}
.dd-art-flag {
  position: absolute;
  top: 50%;
  right: 18px;
  transform: translateY(-50%);
  font-size: 4.2rem;
  line-height: 1;
  opacity: 0.28;
  filter: drop-shadow(0 4px 16px rgba(0,0,0,0.6)) saturate(1.1);
  user-select: none;
}

.dd-hero-top, .dd-hero-center, .dd-hero-bottom {
  position: relative;
  z-index: 2;
}
.dd-hero-top {
  display: flex; justify-content: space-between; align-items: center;
}
.dd-type-badge {
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  padding: 4px 9px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 999px;
  color: #fff;
  letter-spacing: 0.05em;
}
.dd-sev-badge {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
}
.dd-sev-expired  { color: #fecaca; border-color: rgba(239,68,68,0.5); }
.dd-sev-critical { color: #fed7aa; border-color: rgba(251,146,60,0.5); }
.dd-sev-warning  { color: #fde68a; border-color: rgba(251,191,36,0.5); }
.dd-sev-caution  { color: #99f6e4; border-color: rgba(45,212,191,0.5); }
.dd-sev-safe     { color: #bbf7d0; border-color: rgba(52,211,153,0.5); }
.dd-sev-none     { color: #ddd6fe; border-color: rgba(167,139,250,0.5); }

/* Countdown hero */
.dd-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
}
.dd-countdown {
  display: flex;
  align-items: baseline;
  gap: 8px;
  line-height: 1;
}
.dd-cd-num {
  font-family: var(--font-mono, monospace);
  font-size: 2.8rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0,0,0,0.85), 0 1px 3px rgba(0,0,0,0.75), 0 0 1px rgba(0,0,0,0.5);
  letter-spacing: -0.02em;
}
.dd-cd-unit {
  font-family: var(--font-ar);
  font-size: 1rem;
  font-weight: 600;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
}
.dd-cd-tail {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(255,255,255,0.9);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
  margin-top: 2px;
}

/* Hero bottom — title + count */
.dd-hero-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 10px;
}
.dd-title {
  margin: 0;
  flex: 1;
  font-family: var(--font-ar);
  font-size: 1.25rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.6);
  line-height: 1.15;
  word-break: break-word;
}
.dd-count-chip {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  padding: 4px 10px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.18);
  border-radius: 999px;
  color: rgba(255,255,255,0.95);
  white-space: nowrap;
  flex-shrink: 0;
}
.dd-count-chip strong {
  color: #fff;
  font-weight: 700;
  font-family: var(--font-mono, monospace);
  margin-left: 2px;
}
.dd-count-expired { color: #fca5a5; }

/* Body rows */
.doc-dash-body {
  padding: 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.doc-dash-body::-webkit-scrollbar { width: 6px; }
.doc-dash-body::-webkit-scrollbar-track { background: transparent; }
.doc-dash-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 3px;
}
.doc-dash-body::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.2); }
.dd-row {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 38px;
  padding: 6px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 9px;
  transition: background 0.15s, border-color 0.15s;
}
.dd-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
.dd-row-icon {
  font-size: 1rem;
  flex-shrink: 0;
  opacity: 0.85;
}
.dd-row-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.dd-row-holder {
  font-family: var(--font-ar);
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.dd-row-date {
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  color: var(--muted);
  opacity: 0.75;
}
.dd-row-badge {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
  flex-shrink: 0;
}
.dd-badge-expired  { background: rgba(220,38,38,0.18);  border-color: rgba(220,38,38,0.4);  color: #fca5a5; }
.dd-badge-critical { background: rgba(251,146,60,0.18); border-color: rgba(251,146,60,0.4); color: #fed7aa; }
.dd-badge-warning  { background: rgba(251,191,36,0.15); border-color: rgba(251,191,36,0.35); color: #fde68a; }
.dd-badge-caution  { background: rgba(45,212,191,0.15); border-color: rgba(45,212,191,0.35); color: #99f6e4; }
.dd-badge-safe     { background: rgba(52,211,153,0.15); border-color: rgba(52,211,153,0.35); color: #bbf7d0; }
.dd-badge-none     { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.3);  color: #ddd6fe; }

.dd-row-expired .dd-row-holder,
.dd-row-critical .dd-row-holder { color: #fff; }
.dd-row-expired  { border-inline-end: 3px solid #dc2626; }
.dd-row-critical { border-inline-end: 3px solid #fb923c; }
.dd-row-warning  { border-inline-end: 3px solid #fbbf24; }
.dd-row-caution  { border-inline-end: 3px solid #2dd4bf; }
.dd-row-safe     { border-inline-end: 3px solid #34d399; }
.dd-row-none     { border-inline-end: 3px solid #8b5cf6; }
[dir="rtl"] .dd-row-expired,
[dir="rtl"] .dd-row-critical,
[dir="rtl"] .dd-row-warning,
[dir="rtl"] .dd-row-caution,
[dir="rtl"] .dd-row-safe,
[dir="rtl"] .dd-row-none {
  border-left: none;
}
[dir="rtl"] .dd-row-expired  { border-inline-start: 3px solid #dc2626; }
[dir="rtl"] .dd-row-critical { border-inline-start: 3px solid #fb923c; }
[dir="rtl"] .dd-row-warning  { border-inline-start: 3px solid #fbbf24; }
[dir="rtl"] .dd-row-caution  { border-inline-start: 3px solid #2dd4bf; }
[dir="rtl"] .dd-row-safe     { border-inline-start: 3px solid #34d399; }
[dir="rtl"] .dd-row-none     { border-inline-start: 3px solid #8b5cf6; }

.dd-row-more {
  padding: 5px 10px;
  font-family: var(--font-ar);
  font-size: 0.72rem;
  color: var(--muted);
  text-align: center;
  opacity: 0.8;
}
.dd-empty {
  padding: 16px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}

/* Footer */
.doc-dash-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 8px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  flex-shrink: 0;
}
.dd-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.8;
}
.dd-foot-actions { display: flex; align-items: center; gap: 6px; }
.dd-foot-btn {
  padding: 5px 11px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.dd-foot-btn:hover {
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.35);
  color: #fff;
}

/* Hover actions */
.card.doc-dash-card .card-actions {
  position: absolute;
  top: 10px; left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.doc-dash-card:hover .card-actions { opacity: 1; }
.card.doc-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.doc-dash-card .card-actions .card-delete:hover { background: rgba(239,68,68,0.6); }
.card.doc-dash-card .card-actions .card-edit:hover   { background: rgba(139,92,246,0.7); }

@media (max-width: 640px) {
  .card.doc-dash-card { height: 340px !important; min-height: 340px !important; }
  .doc-dash-body { max-height: none; }
  .doc-dash-hero { height: 155px; padding: 11px 13px; }
  .dd-art-emoji { font-size: 4.4rem; left: 10px; }
  .dd-art-flag { font-size: 3.4rem; right: 12px; }
  .dd-cd-num { font-size: 2.2rem; }
  .dd-cd-unit { font-size: 0.85rem; }
  .dd-title { font-size: 1.1rem; }
  .dd-count-chip { font-size: 0.68rem; padding: 3px 8px; }
}

/* ─── Subscription dashboard card (cost hero) ───────────── */
.card.sub-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 360px;
  height: 360px;
  transition: box-shadow 0.22s, border-color 0.22s;
}
.card.sub-dash-card:hover { transform: none !important; }
.card.sub-dash-card.sub-sev-overdue:hover  { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(239,68,68,0.45); }
.card.sub-dash-card.sub-sev-urgent:hover   { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,146,60,0.45); }
.card.sub-dash-card.sub-sev-soon:hover     { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,191,36,0.45); }
.card.sub-dash-card.sub-sev-upcoming:hover { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.4); }
.card.sub-dash-card.sub-sev-ok:hover       { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(16,185,129,0.35); }
.card.sub-dash-card.sub-sev-none:hover     { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.3); }

.sub-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }

/* Hero — gradient reflects nearest renewal urgency */
.sub-dash-hero {
  position: relative;
  height: 160px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.sub-sev-overdue  .sub-dash-hero { background: linear-gradient(135deg, #2a0808 0%, #5a1414 60%, #7a2525 100%); animation: sd2Pulse 2.5s ease-in-out infinite; }
.sub-sev-urgent   .sub-dash-hero { background: linear-gradient(135deg, #2e1608 0%, #5a2d12 60%, #7a4520 100%); }
.sub-sev-soon     .sub-dash-hero { background: linear-gradient(135deg, #2a1e08 0%, #4d3810 60%, #6b5020 100%); }
.sub-sev-upcoming .sub-dash-hero { background: linear-gradient(135deg, #1a1530 0%, #2d2450 60%, #3f3570 100%); }
.sub-sev-ok       .sub-dash-hero { background: linear-gradient(135deg, #0a2920 0%, #164030 60%, #1f5a45 100%); }
.sub-sev-none     .sub-dash-hero { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }

@keyframes sd2Pulse {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.15); }
}
@media (prefers-reduced-motion: reduce) {
  .sub-sev-overdue .sub-dash-hero { animation: none; }
}

.sd2-hero-noise {
  position: absolute; inset: 0;
  background-image: radial-gradient(circle at 80% 20%, rgba(255,255,255,0.08) 0, transparent 40%),
                    radial-gradient(circle at 15% 80%, rgba(255,255,255,0.05) 0, transparent 45%);
  pointer-events: none; z-index: 1;
}
.sd2-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0.05) 35%, rgba(0,0,0,0.55) 85%, rgba(12,10,18,0.92) 100%);
  pointer-events: none; z-index: 1;
}

.sd2-hero-top, .sd2-hero-center, .sd2-hero-bottom {
  position: relative;
  z-index: 2;
}
.sd2-hero-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
}
.sd2-type-badge {
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  padding: 4px 10px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 999px;
  color: #fff;
  letter-spacing: 0.04em;
}
.sd2-sev-badge {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  font-weight: 700;
  padding: 4px 11px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 999px;
  color: #fff;
}
.sd2-sev-overdue  { color: #fecaca; border-color: rgba(239,68,68,0.55); }
.sd2-sev-urgent   { color: #fed7aa; border-color: rgba(251,146,60,0.55); }
.sd2-sev-soon     { color: #fde68a; border-color: rgba(251,191,36,0.5); }
.sd2-sev-upcoming { color: #ddd6fe; border-color: rgba(167,139,250,0.5); }
.sd2-sev-ok       { color: #99f6e4; border-color: rgba(45,212,191,0.45); }
.sd2-sev-none     { color: #d4d4d8; border-color: rgba(161,161,170,0.4); }

/* Hero center — total cost */
.sd2-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
}
.sd2-total-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  line-height: 1;
}
.sd2-total-num {
  font-family: var(--font-ar);
  font-size: 2.3rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 14px rgba(0,0,0,0.7), 0 1px 2px rgba(0,0,0,0.5);
  letter-spacing: -0.02em;
}
.sd2-total-cur {
  font-family: var(--font-mono, monospace);
  font-size: 1rem;
  font-weight: 700;
  color: rgba(255,255,255,0.88);
  text-shadow: 0 2px 8px rgba(0,0,0,0.6);
}
.sd2-total-period {
  font-family: var(--font-ar);
  font-size: 0.84rem;
  color: rgba(255,255,255,0.72);
  font-weight: 600;
}
.sd2-total-sub {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  color: rgba(255,255,255,0.7);
  text-shadow: 0 1px 4px rgba(0,0,0,0.5);
}

/* Hero bottom — title + next renewal */
.sd2-hero-bottom {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 10px;
}
.sd2-title-col {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.sd2-title {
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.14rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.6);
  line-height: 1.15;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sd2-count-line {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  color: rgba(255,255,255,0.7);
}
.sd2-next-chip {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  padding: 5px 10px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 10px;
  flex-shrink: 0;
}
.sd2-next-label {
  font-family: var(--font-ar);
  font-size: 0.74rem;
  font-weight: 700;
  color: #fff;
}
.sd2-next-sub {
  font-family: var(--font-ar);
  font-size: 0.65rem;
  color: rgba(255,255,255,0.7);
  max-width: 120px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Body rows */
.sub-dash-body {
  padding: 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.sub-dash-body::-webkit-scrollbar { width: 6px; }
.sub-dash-body::-webkit-scrollbar-track { background: transparent; }
.sub-dash-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 3px;
}
.sub-dash-body::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,0.2); }
.sd2-row {
  display: flex;
  align-items: center;
  gap: 10px;
  min-height: 52px;                /* ↑ from 38px — room for content + breathing space above bar */
  padding: 8px 10px 12px;          /* ↑ bottom padding reserves clear space for the burn-meter */
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
  transition: background 0.15s, border-color 0.15s;
  position: relative;
  overflow: hidden;
}
.sd2-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
/* Burn-meter bar (cycle elapsed) — sits in a dedicated 4px lane at the bottom edge,
   never overlaps content. Track stays visible at low opacity so the bar reads as a meter. */
.sd2-row::before {
  content: '';
  position: absolute;
  inset-inline: 0;
  bottom: 0;
  height: 3px;
  background: rgba(255,255,255,0.04);
  pointer-events: none;
}
.sd2-row::after {
  content: '';
  position: absolute;
  bottom: 0;
  inset-inline-start: 0;
  height: 3px;
  width: var(--burn-pct, 0%);
  background: linear-gradient(90deg, rgba(34,197,94,0.9), rgba(34,211,238,0.9));
  border-radius: 0;
  pointer-events: none;
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}
.sd2-row.sd2-burn-cool::after { background: linear-gradient(90deg, #22c55e, #22d3ee); }
.sd2-row.sd2-burn-warm::after { background: linear-gradient(90deg, #f59e0b, #f97316); }
.sd2-row.sd2-burn-hot::after  {
  background: linear-gradient(90deg, #ef4444, #f97316);
  box-shadow: 0 0 6px rgba(239,68,68,0.4);
  animation: burnMeterPulse 1.4s ease-in-out infinite;
}
@media (prefers-reduced-motion: reduce) {
  .sd2-row.sd2-burn-hot::after { animation: none; }
}
.sd2-row-icon {
  font-size: 1.1rem;
  flex-shrink: 0;
  width: 30px; height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255,255,255,0.05);
  border-radius: 8px;
}
.sd2-row-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.sd2-row-name {
  font-family: var(--font-ar);
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sd2-row-price {
  display: flex;
  align-items: baseline;
  gap: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 0.75rem;
  color: rgba(255,255,255,0.7);
}
.sd2-amt { color: rgba(255,255,255,0.9); font-weight: 700; }
.sd2-cur { color: rgba(255,255,255,0.7); }
.sd2-cyc { color: var(--muted); opacity: 0.8; font-family: var(--font-ar); }
.sd2-row-side {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.sd2-row-badge {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.sd2-badge-overdue  { background: rgba(220,38,38,0.18);  border-color: rgba(220,38,38,0.4);  color: #fca5a5; }
.sd2-badge-urgent   { background: rgba(251,146,60,0.18); border-color: rgba(251,146,60,0.4); color: #fed7aa; }
.sd2-badge-soon     { background: rgba(251,191,36,0.15); border-color: rgba(251,191,36,0.35); color: #fde68a; }
.sd2-badge-upcoming { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.3); color: #ddd6fe; }
.sd2-badge-ok       { background: rgba(45,212,191,0.12); border-color: rgba(45,212,191,0.3); color: #99f6e4; }
.sd2-badge-none     { background: rgba(255,255,255,0.05); border-color: rgba(255,255,255,0.08); color: var(--muted); }

.sd2-row-overdue  { border-color: rgba(220,38,38,0.25); background: rgba(220,38,38,0.04); }
.sd2-row-urgent   { border-color: rgba(251,146,60,0.2); }

.sd2-renew-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px; height: 26px;
  background: rgba(139,92,246,0.15);
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 7px;
  color: #c4b5fd;
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.15s;
}
.sd2-renew-btn:hover {
  background: rgba(139,92,246,0.3);
  color: #fff;
  transform: rotate(180deg);
}

.sd2-row-more {
  padding: 5px 10px;
  font-family: var(--font-ar);
  font-size: 0.72rem;
  color: var(--muted);
  text-align: center;
  opacity: 0.8;
}
.sd2-empty {
  padding: 16px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}

/* Footer */
.sub-dash-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  min-height: 50px;
  padding: 8px 14px 10px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  color: var(--muted);
}
.sd2-time { opacity: 0.75; }
.sd2-open {
  color: #c4b5fd;
  opacity: 0.85;
  transition: opacity 0.15s;
}
.card.sub-dash-card:hover .sd2-open { opacity: 1; }
.sub-sev-overdue .sd2-open  { color: #fca5a5; }
.sub-sev-urgent .sd2-open   { color: #fed7aa; }
.sub-sev-soon .sd2-open     { color: #fde68a; }
.sub-sev-ok .sd2-open       { color: #99f6e4; }

/* Hover actions */
.card.sub-dash-card .card-actions {
  position: absolute;
  top: 10px; left: 10px;
  z-index: 4;
  display: flex; gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.sub-dash-card:hover .card-actions { opacity: 1; }
.card.sub-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.sub-dash-card .card-actions .card-delete:hover { background: rgba(239,68,68,0.6); }
.card.sub-dash-card .card-actions .card-edit:hover   { background: rgba(139,92,246,0.7); }

@media (max-width: 640px) {
  .card.sub-dash-card { min-height: 340px; height: 340px; }
  .sub-dash-hero { height: 140px; padding: 11px 13px; }
  .sub-dash-body { max-height: none; }
  .sd2-total-num { font-size: 2.1rem; }
  .sd2-total-cur { font-size: 0.95rem; }
  .sd2-title { font-size: 1.08rem; }
  .sd2-next-chip { padding: 5px 9px; }
  .sd2-next-label { font-size: 0.72rem; }
  .sd2-next-sub { font-size: 0.6rem; max-width: 90px; }
}

/* ─── Checklist dashboard card (hero-first immersive) ───── */
.card.checklist-dash-card {
  padding: 0 !important;
  gap: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 360px;
  height: 360px;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.checklist-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.08);
}
.card.checklist-dash-card > .bento-glow-bg {
  display: none !important;
}
.card.checklist-dash-card.checklist-sev-critical:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,146,60,0.45);
}
.card.checklist-dash-card.checklist-sev-warning:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,191,36,0.42);
}
.card.checklist-dash-card.checklist-sev-caution:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(39,102,96,0.46);
}
.card.checklist-dash-card.checklist-sev-safe:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(52,211,153,0.42);
}
.card.checklist-dash-card.checklist-sev-none:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(167,139,250,0.4);
}

.checklist-dash-shell {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: 100%;
}
.checklist-dash-hero {
  position: relative;
  height: 172px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.checklist-sev-critical .checklist-dash-hero { background: linear-gradient(135deg, #2e1608 0%, #5a2d12 60%, #7a4520 100%); animation: cldAlertPulse 3.5s ease-in-out infinite; }
.checklist-sev-warning .checklist-dash-hero  { background: linear-gradient(135deg, #2a1e08 0%, #4d3810 60%, #6b5020 100%); }
.checklist-sev-caution .checklist-dash-hero  { background: linear-gradient(135deg, #0a2825 0%, #1a4540 60%, #276660 100%); }
.checklist-sev-safe .checklist-dash-hero     { background: linear-gradient(135deg, #0a2920 0%, #164030 60%, #1f5a45 100%); }
.checklist-sev-none .checklist-dash-hero     { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }

@keyframes cldAlertPulse {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.15) saturate(1.1); }
}
@media (prefers-reduced-motion: reduce) {
  .checklist-sev-critical .checklist-dash-hero { animation: none; }
}

.cld-hero-noise {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,0.07) 0, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(255,255,255,0.05) 0, transparent 45%);
  pointer-events: none;
  z-index: 1;
}
.cld-hero-overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0) 75%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
  pointer-events: none;
  z-index: 1;
}

.cld-hero-top,
.cld-hero-center,
.cld-hero-bottom {
  position: relative;
  z-index: 2;
}
.cld-hero-glyphs {
  position: absolute;
  inset-inline-start: 15px;
  inset-block-end: 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  opacity: 0.24;
  z-index: 2;
  pointer-events: none;
}
.cld-glyph-row {
  position: relative;
  display: block;
  width: 110px;
  height: 12px;
}
.cld-glyph-row::before,
.cld-glyph-row::after {
  content: "";
  position: absolute;
}
.cld-glyph-row::before {
  inset-inline-start: 0;
  inset-block-start: 1px;
  width: 10px;
  height: 10px;
  border-radius: 3px;
  border: 1px solid rgba(255,255,255,0.26);
  background: rgba(0,0,0,0.18);
}
.cld-glyph-row::after {
  inset-inline-start: 18px;
  inset-block-start: 4px;
  width: 72px;
  height: 2px;
  border-radius: 999px;
  background: rgba(255,255,255,0.2);
}
.cld-glyph-row-done::before {
  border-color: rgba(167,243,208,0.55);
  background: rgba(52,211,153,0.2);
}
.cld-glyph-row-done::after {
  background: linear-gradient(90deg, rgba(167,243,208,0.55), rgba(255,255,255,0.12));
}
.cld-glyph-row-pending::before {
  border-color: rgba(253,230,138,0.55);
  background: rgba(251,191,36,0.18);
}
.cld-glyph-row-pending::after {
  background: linear-gradient(90deg, rgba(251,191,36,0.45), rgba(255,255,255,0.1));
}
.cld-hero-top,
.cld-hero-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.cld-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  text-align: center;
}

.cld-top-badge {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2;
}
.cld-type-badge {
  font-family: var(--font-ar);
  font-weight: 700;
}
.cld-sev-badge {
  font-family: var(--font-ar);
  font-weight: 700;
}
.cld-sev-critical { color: #fed7aa; border-color: rgba(251,146,60,0.5); }
.cld-sev-warning  { color: #fde68a; border-color: rgba(251,191,36,0.5); }
.cld-sev-caution  { color: #99f6e4; border-color: rgba(39,102,96,0.55); }
.cld-sev-safe     { color: #a7f3d0; border-color: rgba(52,211,153,0.5); }
.cld-sev-none     { color: #ddd6fe; border-color: rgba(167,139,250,0.45); }

.cld-metric-row {
  display: flex;
  align-items: baseline;
  gap: 7px;
  line-height: 1;
}
.cld-metric-num {
  font-family: var(--font-ar);
  font-size: 2.65rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0,0,0,0.85), 0 1px 3px rgba(0,0,0,0.75), 0 0 1px rgba(0,0,0,0.5);
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}
.cld-metric-unit {
  font-family: var(--font-ar);
  font-size: 1rem;
  font-weight: 600;
  color: rgba(255,255,255,0.95);
  text-shadow: 0 2px 12px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
}
.cld-metric-tail {
  font-family: var(--font-ar);
  font-size: 0.76rem;
  font-weight: 400;
  color: rgba(255,255,255,0.9);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
}
.cld-progress-rail {
  width: min(100%, 220px);
  display: flex;
  align-items: center;
  gap: 4px;
  margin-top: 3px;
}
.cld-progress-seg {
  flex: 1 1 0;
  min-width: 0;
  height: 7px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.08);
  background: rgba(255,255,255,0.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.06);
}
.cld-progress-seg.is-done {
  background: linear-gradient(180deg, rgba(52,211,153,0.95), rgba(22,163,74,0.78));
  border-color: rgba(167,243,208,0.28);
  box-shadow: 0 0 10px rgba(52,211,153,0.18);
}
.cld-progress-seg.is-pending {
  background: linear-gradient(180deg, rgba(251,191,36,0.65), rgba(217,119,6,0.48));
  border-color: rgba(251,191,36,0.2);
}
.cld-progress-empty {
  display: block;
  width: 100%;
  height: 7px;
  border-radius: 999px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.08);
}
.cld-title-wrap {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.cld-title {
  margin: 0;
  min-width: 0;
  font-family: var(--font-ar);
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.2;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.6), 0 0 1px rgba(0,0,0,0.4);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.cld-summary-chips {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.cld-summary-chip {
  padding: 3px 7px;
  border-radius: 999px;
  background: rgba(0,0,0,0.36);
  border: 1px solid rgba(255,255,255,0.1);
  color: rgba(255,255,255,0.86);
  font-family: var(--font-ar);
  font-size: 0.7rem;
  line-height: 1.2;
}
.cld-summary-chip strong {
  font-family: var(--font-mono, monospace);
  font-weight: 700;
  margin-left: 2px;
}
.cld-summary-pending {
  color: #fed7aa;
  border-color: rgba(251,146,60,0.26);
}
.cld-summary-done {
  color: #bbf7d0;
  border-color: rgba(52,211,153,0.26);
}
.cld-summary-empty {
  color: rgba(255,255,255,0.62);
}
.cld-count-chip {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.95);
  font-family: var(--font-ar);
  font-size: 0.72rem;
  white-space: nowrap;
  flex-shrink: 0;
}
.cld-count-chip strong {
  color: #fff;
  font-family: var(--font-mono, monospace);
  font-weight: 700;
  margin-left: 2px;
}

.checklist-dash-body {
  padding: 10px 12px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.checklist-dash-body::-webkit-scrollbar { width: 6px; }
.checklist-dash-body::-webkit-scrollbar-track { background: transparent; }
.checklist-dash-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 3px;
}

.cld-row {
  min-height: 42px;
  padding: 7px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 9px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  cursor: pointer;
  user-select: none;
  transition: background 0.15s, border-color 0.15s, transform 0.08s;
}
.cld-row:hover {
  background: rgba(255,255,255,0.06);
  border-color: rgba(255,255,255,0.12);
}
.cld-row:active { transform: scale(0.985); }
.cld-row:focus-visible {
  outline: 2px solid rgba(139,92,246,0.55);
  outline-offset: -2px;
}
.cld-row.row-urgent {
  border-inline-start: 3px solid rgba(251,146,60,0.6);
}
.cld-row-main {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
}
.cld-row-order {
  min-width: 34px;
  height: 22px;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.66);
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  flex-shrink: 0;
}
.cld-row-pending .cld-row-order {
  color: #fed7aa;
  border-color: rgba(251,146,60,0.22);
  background: rgba(251,146,60,0.09);
}
.cld-row-done .cld-row-order {
  color: #bbf7d0;
  border-color: rgba(52,211,153,0.2);
  background: rgba(52,211,153,0.08);
}
.cld-row-side {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.cld-row-check {
  width: 16px;
  height: 16px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.84);
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  flex-shrink: 0;
}
.cld-row-pending .cld-row-check {
  color: #fed7aa;
  background: rgba(251,146,60,0.14);
}
.cld-row-done .cld-row-check {
  color: #bbf7d0;
  background: rgba(52,211,153,0.16);
}
.cld-row-text {
  min-width: 0;
  flex: 1;
  font-family: var(--font-ar);
  font-size: 0.81rem;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cld-row-empty-label {
  color: rgba(255,255,255,0.45);
  font-style: normal;
}
.cld-row-done .cld-row-text {
  color: rgba(255,255,255,0.5);
  text-decoration: line-through;
}
.cld-row-state {
  padding: 2px 8px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
  flex-shrink: 0;
  font-family: var(--font-ar);
  font-size: 0.66rem;
  font-weight: 600;
}
.cld-row-state-pending {
  background: rgba(251,146,60,0.14);
  border-color: rgba(251,146,60,0.32);
  color: #fed7aa;
}
.cld-row-state-done {
  background: rgba(52,211,153,0.14);
  border-color: rgba(52,211,153,0.3);
  color: #bbf7d0;
}
.cld-empty {
  padding: 16px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}

.checklist-dash-foot {
  min-height: 52px;
  padding: 8px 14px 10px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.cld-foot-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.8;
}
.cld-foot-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  direction: ltr;
}
.cld-foot-btn {
  padding: 5px 11px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.cld-foot-btn:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.18);
  color: #fff;
}

.card.checklist-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.checklist-dash-card:hover .card-actions { opacity: 1; }
.card.checklist-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.checklist-dash-card .card-actions .card-delete:hover {
  background: rgba(239,68,68,0.6);
}
.card.checklist-dash-card .card-actions .card-edit:hover {
  background: rgba(139,92,246,0.7);
}

@media (max-width: 640px) {
  .card.checklist-dash-card {
    min-height: 340px;
    height: 340px;
  }
  .checklist-dash-hero {
    height: 145px;
    padding: 11px 13px;
  }
  .cld-metric-num { font-size: 2.2rem; }
  .cld-metric-unit { font-size: 0.88rem; }
  .cld-title { font-size: 1.1rem; }
  .cld-hero-glyphs { inset-inline-start: 13px; inset-block-end: 16px; transform: scale(0.9); transform-origin: right bottom; }
  .cld-progress-rail { width: min(100%, 210px); }
  .checklist-dash-body { max-height: 125px; }
}

/* ─── Vehicle dashboard card (service / expiry hero) ────── */
.card.vehicle-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.vehicle-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.08);
}
.card.vehicle-dash-card.vehicle-sev-expired:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(239,68,68,0.42);
}
.card.vehicle-dash-card.vehicle-sev-critical:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,146,60,0.42);
}
.card.vehicle-dash-card.vehicle-sev-warning:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,191,36,0.42);
}
.card.vehicle-dash-card.vehicle-sev-caution:hover,
.card.vehicle-dash-card.vehicle-sev-safe:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(39,102,96,0.44);
}
.card.vehicle-dash-card.vehicle-sev-none:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(167,139,250,0.35);
}
.card.vehicle-dash-card > .bento-glow-bg { display: none !important; }
.vehicle-dash-shell { display:flex; flex-direction:column; flex:1; min-height:0; height:100%; }
.vehicle-dash-hero {
  position: relative;
  height: 150px;
  padding: 12px 14px 18px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.vehicle-sev-expired .vehicle-dash-hero { background: linear-gradient(135deg, #2a0808 0%, #5a1414 60%, #7a2525 100%); animation: vdAlertPulse 3.5s ease-in-out infinite; }
.vehicle-sev-critical .vehicle-dash-hero { background: linear-gradient(135deg, #2e1608 0%, #5a2d12 60%, #7a4520 100%); }
.vehicle-sev-warning .vehicle-dash-hero { background: linear-gradient(135deg, #2a1e08 0%, #4d3810 60%, #6b5020 100%); }
.vehicle-sev-caution .vehicle-dash-hero { background: linear-gradient(135deg, #0a2825 0%, #1a4540 60%, #276660 100%); }
.vehicle-sev-safe .vehicle-dash-hero { background: linear-gradient(135deg, #0a2920 0%, #164030 60%, #1f5a45 100%); }
.vehicle-sev-none .vehicle-dash-hero { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }
@keyframes vdAlertPulse {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.12) saturate(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .vehicle-sev-expired .vehicle-dash-hero { animation: none; }
}
.vd-hero-noise,
.vd-hero-overlay { position: absolute; inset: 0; }
.vd-hero-noise {
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,0.07) 0, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(255,255,255,0.05) 0, transparent 45%);
  pointer-events: none;
  z-index: 1;
}
.vd-hero-art {
  position: absolute;
  top: 50%;
  left: 14px;
  transform: translateY(-50%) rotate(-8deg);
  font-size: 5rem;
  opacity: 0.22;
  filter: drop-shadow(0 4px 18px rgba(0,0,0,0.55));
  pointer-events: none;
  z-index: 0;
  line-height: 1;
}
/* ─── Vehicle odometer + fuel gauge widget ────────────── */
.vd-odometer-widget {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: center;
  gap: 16px;
  padding: 14px 16px;
  margin: 6px 4px 10px;
  border-radius: 14px;
  background: linear-gradient(135deg, rgba(16,185,129,.07), rgba(59,130,246,.04));
  border: 1px solid rgba(255,255,255,.08);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.05), 0 2px 10px rgba(0,0,0,.15);
}
.vd-odom-label {
  grid-column: 1 / -1;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--muted);
  font-family: var(--font-mono, monospace);
  margin-bottom: -4px;
}
.vd-odom-digits {
  display: inline-flex;
  gap: 3px;
  align-items: center;
  font-family: var(--font-mono, monospace);
}
.vd-odom-digit {
  position: relative;
  display: inline-block;
  width: 1.1em;
  height: 1em;
  font-size: 2.4rem;
  line-height: 1;
  overflow: hidden;
  background: linear-gradient(180deg, #0f172a, #1e293b);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 4px;
  padding: 0 .18em;
  color: #f0f9ff;
  text-shadow: 0 0 8px rgba(255,255,255,.25);
  vertical-align: middle;
  box-shadow: inset 0 0 8px rgba(0,0,0,.6);
}
.vd-odom-digit::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.15) 0%, transparent 45%, transparent 55%, rgba(0,0,0,.2) 100%);
  pointer-events: none;
  z-index: 2;
}
.vd-odom-reel {
  display: inline-block;
  line-height: 1em;
  transition: transform .9s cubic-bezier(.45,.05,.15,1);
  animation: vdOdomRoll 1.2s cubic-bezier(.45,.05,.15,1) both;
  animation-delay: var(--digit-delay, 0ms);
}
@keyframes vdOdomRoll {
  0%   { transform: translateY(0); }
  100% { /* applied via inline style */ }
}
.vd-odom-unit {
  font-size: 0.85rem;
  color: var(--muted);
  font-family: var(--font-ar);
  margin-right: 6px;
}
.vd-gauge {
  position: relative;
  width: 88px;
}
.vd-gauge-svg {
  display: block;
  width: 100%;
  height: auto;
}
.vd-gauge-arc {
  transition: stroke-dashoffset 1s ease-out;
}
.vd-gauge-needle {
  transform-origin: 50px 50px;
  transition: transform .9s cubic-bezier(.6,-0.2,.4,1.2);
  animation: vdNeedleSwing 1.4s cubic-bezier(.6,-0.2,.4,1.2);
}
@keyframes vdNeedleSwing {
  0%   { transform: rotate(-90deg); }
  60%  { transform: rotate(var(--swing-to, 60deg)); }
  100% { /* applied via inline transform */ }
}
.vd-gauge-label {
  text-align: center;
  margin-top: 2px;
}
.vd-gauge-pct {
  display: block;
  font-family: var(--font-mono, monospace);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1;
}
.vd-gauge-txt {
  display: block;
  font-size: 0.62rem;
  color: var(--muted);
  letter-spacing: 0.05em;
  margin-top: 2px;
}
.vd-gauge-safe .vd-gauge-pct   { color: #10b981; }
.vd-gauge-soon .vd-gauge-pct   { color: #f59e0b; }
.vd-gauge-urgent .vd-gauge-pct { color: var(--danger); }
@media (prefers-reduced-motion: reduce) {
  .vd-odom-reel, .vd-gauge-needle, .vd-gauge-arc { animation: none; transition: none; }
}
.vehicle-brand-select {
  width: 100%;
  padding: 10px 12px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.9rem;
  cursor: pointer;
  appearance: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat: no-repeat;
  background-position: left 12px center;
  padding-left: 32px;
}
.vehicle-brand-select:focus { outline: none; border-color: rgba(139,92,246,0.5); background: rgba(255,255,255,0.06); }

.vd-brand-badge {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%);
  z-index: 2;
  pointer-events: none;
  font-family: var(--font-mono, monospace);
  font-size: 1rem;
  font-weight: 900;
  letter-spacing: 0.08em;
  color: #ffffff;
  background: var(--brand-color, rgba(139,92,246,0.9));
  padding: 6px 14px;
  border-radius: 999px;
  border: 1.5px solid rgba(255,255,255,0.25);
  box-shadow: 0 4px 14px rgba(0,0,0,0.45), 0 0 0 1px rgba(0,0,0,0.3);
  text-transform: uppercase;
  line-height: 1;
  white-space: nowrap;
  backdrop-filter: blur(4px);
}
@media (max-width: 640px) {
  .vd-brand-badge { font-size: 0.85rem; padding: 5px 11px; right: 12px; }
}
.vd-hero-overlay {
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0) 75%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
  pointer-events: none;
  z-index: 1;
}
.vd-hero-top,
.vd-hero-center,
.vd-hero-bottom {
  position: relative;
  z-index: 2;
}
.vd-hero-top,
.vd-hero-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.vd-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  text-align: center;
}
.vd-top-badge {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2;
}
.vd-type-badge { font-family: var(--font-ar); font-weight: 700; }
.vd-sev-badge { font-family: var(--font-ar); font-weight: 700; }
.vd-sev-expired { color: #fecaca; border-color: rgba(239,68,68,0.5); }
.vd-sev-critical { color: #fed7aa; border-color: rgba(251,146,60,0.5); }
.vd-sev-warning { color: #fde68a; border-color: rgba(251,191,36,0.5); }
.vd-sev-caution { color: #99f6e4; border-color: rgba(45,212,191,0.46); }
.vd-sev-safe { color: #a7f3d0; border-color: rgba(52,211,153,0.5); }
.vd-sev-none { color: #ddd6fe; border-color: rgba(167,139,250,0.45); }
.vd-metric-row {
  display: flex;
  align-items: baseline;
  gap: 7px;
  line-height: 1;
}
.vd-metric-num {
  font-family: var(--font-mono, monospace);
  font-size: 2.8rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0,0,0,0.85), 0 1px 3px rgba(0,0,0,0.75), 0 0 1px rgba(0,0,0,0.5);
  letter-spacing: -0.03em;
}
.vd-metric-unit {
  font-family: var(--font-ar);
  font-size: 1rem;
  font-weight: 600;
  color: rgba(255,255,255,0.95);
  text-shadow: 0 2px 12px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
}
.vd-metric-tail {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(255,255,255,0.9);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
}
.vd-title-wrap { flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; }
.vd-title {
  margin:0;
  font-family: var(--font-ar);
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.2;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.6), 0 0 1px rgba(0,0,0,0.4);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.vd-title mark { background: transparent; color: inherit; box-shadow: none; padding: 0; }
.vd-hero-sub {
  font-family: var(--font-ar);
  font-size: 0.74rem;
  color: rgba(255,255,255,0.78);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.vd-count-chip {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.95);
  font-family: var(--font-ar);
  font-size: 0.72rem;
  white-space: nowrap;
  flex-shrink: 0;
}
.vd-count-chip strong {
  font-family: var(--font-mono, monospace);
  font-weight: 700;
  color: #fff;
  margin-left: 2px;
}
.vehicle-dash-body {
  padding: 16px 12px 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.vehicle-dash-body::-webkit-scrollbar { width: 6px; }
.vehicle-dash-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; }
.vd-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  min-height: 38px;
  padding: 6px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
  transition: background 0.15s, border-color 0.15s;
}
.vd-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
.vd-row-expired { border-inline-start: 3px solid rgba(239,68,68,0.55); }
.vd-row-critical { border-inline-start: 3px solid rgba(251,146,60,0.55); }
.vd-row-warning { border-inline-start: 3px solid rgba(251,191,36,0.55); }
.vd-row-caution { border-inline-start: 3px solid rgba(45,212,191,0.55); }
.vd-row-safe { border-inline-start: 3px solid rgba(52,211,153,0.55); }
.vd-row-none { border-inline-start: 3px solid rgba(167,139,250,0.45); }
.vd-row-main { min-width:0; flex:1; display:flex; align-items:flex-start; gap:8px; }
.vd-row-order {
  min-width: 34px;
  height: 22px;
  padding: 0 8px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.66);
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  flex-shrink: 0;
}
.vd-row-copy { min-width:0; display:flex; flex-direction:column; gap:3px; flex:1; }
.vd-row-title {
  font-family: var(--font-ar);
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.vd-row-meta {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.vd-row-meta-sep {
  color: rgba(255,255,255,0.32);
  font-size: 0.68rem;
  line-height: 1;
}
.vd-row-date {
  font-family: var(--font-mono, monospace);
  font-size: 0.68rem;
  color: var(--muted);
  opacity: 0.8;
  white-space: nowrap;
}
.vd-row-side {
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:7px;
  flex-shrink:0;
  padding-top: 2px;
}
.vd-row-cat {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  color: rgba(255,255,255,0.78);
  white-space: nowrap;
  max-width: 100%;
}
.vd-row-badge {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.vd-badge-expired { background: rgba(220,38,38,0.18); border-color: rgba(220,38,38,0.4); color: #fca5a5; }
.vd-badge-critical { background: rgba(251,146,60,0.18); border-color: rgba(251,146,60,0.4); color: #fed7aa; }
.vd-badge-warning { background: rgba(251,191,36,0.15); border-color: rgba(251,191,36,0.35); color: #fde68a; }
.vd-badge-caution { background: rgba(45,212,191,0.15); border-color: rgba(45,212,191,0.35); color: #99f6e4; }
.vd-badge-safe { background: rgba(52,211,153,0.15); border-color: rgba(52,211,153,0.35); color: #bbf7d0; }
.vd-badge-none { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.3); color: #ddd6fe; }
.vd-empty {
  padding: 16px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}
.vehicle-dash-foot {
  min-height: 48px;
  padding: 8px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.vd-foot-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.8;
}
.vd-foot-actions { display:flex; align-items:center; gap:6px; }
.vd-foot-btn {
  padding: 5px 11px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.vd-foot-btn:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.18);
  color: #fff;
}
.card.vehicle-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.vehicle-dash-card:hover .card-actions { opacity: 1; }
.card.vehicle-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.vehicle-dash-card .card-actions .card-delete:hover { background: rgba(239,68,68,0.6); }
.card.vehicle-dash-card .card-actions .card-edit:hover { background: rgba(139,92,246,0.7); }

/* ─── Medicine dashboard card (therapy / refill hero) ───── */
.card.medicine-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.medicine-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.08);
}
.card.medicine-dash-card.medicine-sev-expired:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(239,68,68,0.42);
}
.card.medicine-dash-card.medicine-sev-critical:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,146,60,0.42);
}
.card.medicine-dash-card.medicine-sev-warning:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,191,36,0.42);
}
.card.medicine-dash-card.medicine-sev-caution:hover,
.card.medicine-dash-card.medicine-sev-safe:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(39,102,96,0.44);
}
.card.medicine-dash-card.medicine-sev-none:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(167,139,250,0.35);
}
.card.medicine-dash-card > .bento-glow-bg { display: none !important; }
.medicine-dash-shell { display:flex; flex-direction:column; flex:1; min-height:0; height:100%; }
.medicine-dash-hero {
  position: relative;
  height: 150px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.medicine-sev-expired .medicine-dash-hero { background: linear-gradient(135deg, #2a0808 0%, #5a1414 60%, #7a2525 100%); animation: medAlertPulse 3.5s ease-in-out infinite; }
.medicine-sev-critical .medicine-dash-hero { background: linear-gradient(135deg, #2e1608 0%, #5a2d12 60%, #7a4520 100%); }
.medicine-sev-warning .medicine-dash-hero { background: linear-gradient(135deg, #2a1e08 0%, #4d3810 60%, #6b5020 100%); }
.medicine-sev-caution .medicine-dash-hero { background: linear-gradient(135deg, #0a2825 0%, #1a4540 60%, #276660 100%); }
.medicine-sev-safe .medicine-dash-hero { background: linear-gradient(135deg, #0a2920 0%, #164030 60%, #1f5a45 100%); }
.medicine-sev-none .medicine-dash-hero { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }
@keyframes medAlertPulse {
  0%, 100% { filter: brightness(1); }
  50% { filter: brightness(1.12) saturate(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .medicine-sev-expired .medicine-dash-hero { animation: none; }
}
.med-hero-noise {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 18% 26%, rgba(255,255,255,0.08) 0, transparent 40%),
    radial-gradient(circle at 82% 72%, rgba(255,255,255,0.05) 0, transparent 46%);
  pointer-events: none;
  z-index: 1;
}
.med-hero-art {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%) rotate(-8deg);
  z-index: 0;
  pointer-events: none;
}
.med-art-pill {
  display: inline-flex;
  font-size: 4.4rem;
  opacity: 0.24;
  filter: drop-shadow(0 4px 16px rgba(0,0,0,0.55));
}
.med-art-pill-alt {
  position: absolute;
  left: 40px;
  top: -4px;
  font-size: 1.8rem;
  opacity: 0.18;
}
/* Animated pill capsules (svg-like via pseudo elements) */
.med-art-capsule {
  position: absolute;
  width: 34px;
  height: 14px;
  border-radius: 999px;
  overflow: hidden;
  opacity: 0.32;
  filter: drop-shadow(0 3px 8px rgba(0,0,0,.4));
  animation: medCapFloat 3.6s ease-in-out infinite;
}
.med-art-capsule::before,
.med-art-capsule::after {
  content: '';
  position: absolute;
  inset: 0;
  width: 50%;
}
.med-art-capsule::before { background: linear-gradient(180deg, #fef3c7, #fbbf24); }
.med-art-capsule::after  { background: linear-gradient(180deg, #dbeafe, #60a5fa); left: 50%; }
.med-cap-1 { left: 58px; top: 4px;  transform: rotate(18deg);  animation-delay: 0s; }
.med-cap-2 { left: 78px; top: 38px; transform: rotate(-12deg); animation-delay: 1s;
  width: 28px; height: 12px; opacity: 0.22;
}
.med-cap-2::before { background: linear-gradient(180deg, #fce7f3, #f472b6); }
.med-cap-2::after  { background: linear-gradient(180deg, #e0e7ff, #818cf8); }
.med-cap-3 { left: 10px; top: 44px; transform: rotate(32deg); animation-delay: 2s;
  width: 24px; height: 10px; opacity: 0.18;
}
.med-cap-3::before { background: linear-gradient(180deg, #d1fae5, #34d399); }
.med-cap-3::after  { background: linear-gradient(180deg, #fef3c7, #fbbf24); }
.med-art-dot {
  position: absolute;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: rgba(255,255,255,.3);
  animation: medDotBlink 2.8s ease-in-out infinite;
}
.med-dot-1 { left: 98px; top: 12px; animation-delay: .5s; }
.med-dot-2 { left: 48px; top: 54px; animation-delay: 1.5s; background: rgba(245,158,11,.4); }
.med-dot-3 { left: 88px; top: 56px; animation-delay: 2s; background: rgba(96,165,250,.4); }
@keyframes medCapFloat {
  0%, 100% { transform: translateY(0) rotate(var(--r, 0deg)); }
  50%      { transform: translateY(-4px) rotate(calc(var(--r, 0deg) + 8deg)); }
}
.med-cap-1 { --r: 18deg; }
.med-cap-2 { --r: -12deg; }
.med-cap-3 { --r: 32deg; }
@keyframes medDotBlink {
  0%, 100% { opacity: .2; transform: scale(1); }
  50%      { opacity: .7; transform: scale(1.4); }
}
@media (prefers-reduced-motion: reduce) {
  .med-art-capsule, .med-art-dot { animation: none; }
}
/* Pill inventory strip (at top of body) */
.med-pills-strip {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  padding: 10px 12px;
  margin: 6px 4px 8px;
  border-radius: 12px;
  background: linear-gradient(180deg, rgba(236,72,153,.06), rgba(236,72,153,.02));
  border: 1px solid rgba(236,72,153,.12);
}
.med-pill-capsule {
  position: relative;
  display: inline-block;
  width: 26px;
  height: 10px;
  border-radius: 999px;
  background: rgba(255,255,255,.08);
  overflow: hidden;
  cursor: default;
  transition: transform .2s ease;
}
.med-pill-capsule:hover { transform: scale(1.3); }
.med-pill-capsule::after {
  content: '';
  position: absolute;
  inset: 0;
  width: var(--pill-fill, 50%);
  border-radius: 999px;
}
.med-cap-safe::after     { background: linear-gradient(90deg, #10b981, #34d399); }
.med-cap-soon::after     { background: linear-gradient(90deg, #f59e0b, #fbbf24); }
.med-cap-urgent::after   { background: linear-gradient(90deg, #ef4444, #f87171); animation: medPillPulse 1.2s ease-in-out infinite; }
.med-cap-overdue::after  { background: linear-gradient(90deg, #dc2626, #ef4444); animation: medPillPulse 0.8s ease-in-out infinite; }
.med-cap-none::after     { background: linear-gradient(90deg, #64748b, #94a3b8); }
@keyframes medPillPulse {
  0%, 100% { opacity: 1; }
  50%      { opacity: .55; }
}
@media (prefers-reduced-motion: reduce) {
  .med-cap-urgent::after, .med-cap-overdue::after { animation: none; }
}
/* Urgency bar inside each row (uses --med-urgency) */
.med-row {
  position: relative;
  overflow: hidden;
}
.med-row::before {
  content: '';
  position: absolute;
  bottom: 0;
  right: 0;
  width: var(--med-urgency, 0%);
  height: 2px;
  background: linear-gradient(90deg, transparent, currentColor);
  opacity: .4;
  transition: width .4s ease;
  pointer-events: none;
}
.med-row-overdue::before { color: var(--danger); }
.med-row-urgent::before  { color: #f87171; }
.med-row-soon::before    { color: #f59e0b; }
.med-row-safe::before    { color: #10b981; }
.med-row-none::before    { color: #64748b; }
.med-hero-overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0) 75%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
  pointer-events: none;
  z-index: 1;
}
.med-hero-top,
.med-hero-center,
.med-hero-bottom { position: relative; z-index: 2; }
.med-hero-top,
.med-hero-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.med-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  text-align: center;
}
.med-top-badge {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2;
}
.med-type-badge { font-family: var(--font-ar); font-weight: 700; }
.med-sev-badge { font-family: var(--font-ar); font-weight: 700; }
.med-sev-expired { color: #fecaca; border-color: rgba(239,68,68,0.5); }
.med-sev-critical { color: #fed7aa; border-color: rgba(251,146,60,0.5); }
.med-sev-warning { color: #fde68a; border-color: rgba(251,191,36,0.5); }
.med-sev-caution { color: #99f6e4; border-color: rgba(45,212,191,0.46); }
.med-sev-safe { color: #a7f3d0; border-color: rgba(52,211,153,0.5); }
.med-sev-none { color: #ddd6fe; border-color: rgba(167,139,250,0.45); }
.med-metric-row {
  display: flex;
  align-items: baseline;
  gap: 7px;
  line-height: 1;
}
.med-metric-num {
  font-family: var(--font-mono, monospace);
  font-size: 2.8rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0,0,0,0.85), 0 1px 3px rgba(0,0,0,0.75), 0 0 1px rgba(0,0,0,0.5);
  letter-spacing: -0.03em;
}
.med-metric-unit {
  font-family: var(--font-ar);
  font-size: 1rem;
  font-weight: 600;
  color: rgba(255,255,255,0.95);
  text-shadow: 0 2px 12px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
}
.med-metric-tail {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(255,255,255,0.9);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
}
.med-title-wrap { flex:1; min-width:0; display:flex; flex-direction:column; gap:5px; }
.med-title {
  margin:0;
  font-family: var(--font-ar);
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.2;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.6), 0 0 1px rgba(0,0,0,0.4);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.med-title mark { background: transparent; color: inherit; box-shadow: none; padding: 0; }
.med-hero-sub {
  font-family: var(--font-ar);
  font-size: 0.74rem;
  color: rgba(255,255,255,0.78);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7), 0 0 1px rgba(0,0,0,0.45);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.med-count-chip {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.95);
  font-family: var(--font-ar);
  font-size: 0.72rem;
  white-space: nowrap;
  flex-shrink: 0;
}
.medicine-dash-body {
  padding: 8px 12px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  flex: 1 1 auto;
  min-height: 0;
  max-height: none;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.medicine-dash-body::-webkit-scrollbar { width: 6px; }
.medicine-dash-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; }
.medicine-dose-foot {
  min-height: 54px;
  padding: 8px 12px;
  border-top: 1px solid rgba(255,255,255,0.07);
  background:
    radial-gradient(circle at 90% 0%, rgba(16,185,129,0.14), transparent 40%),
    linear-gradient(180deg, rgba(7,11,18,0.82), rgba(5,8,12,0.96));
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-shrink: 0;
}
.medicine-dose-foot.is-done {
  background:
    radial-gradient(circle at 92% 0%, rgba(34,197,94,0.18), transparent 42%),
    linear-gradient(180deg, rgba(6,25,15,0.88), rgba(5,12,8,0.98));
}
.medicine-dose-meta {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.medicine-dose-status {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 800;
  color: rgba(236,253,245,0.94);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.medicine-dose-update {
  font-family: var(--font-ar);
  font-size: 0.68rem;
  color: rgba(148,163,184,0.78);
  white-space: nowrap;
}
.medicine-dose-actions {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-shrink: 0;
}
.medicine-dose-btn,
.medicine-dose-details {
  height: 32px;
  border-radius: 999px;
  padding: 0 13px;
  font-family: var(--font-ar);
  font-size: 0.76rem;
  font-weight: 900;
  cursor: pointer;
  transition: transform .12s ease, background .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.medicine-dose-btn {
  border: 1px solid rgba(74,222,128,0.45);
  color: #052e16;
  background: linear-gradient(135deg, #bbf7d0, #22c55e);
  box-shadow: 0 8px 20px rgba(34,197,94,0.22);
}
.medicine-dose-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 24px rgba(34,197,94,0.32);
}
.medicine-dose-btn.is-done {
  color: #dcfce7;
  background: rgba(34,197,94,0.17);
  border-color: rgba(74,222,128,0.30);
  box-shadow: none;
  cursor: default;
}
.medicine-dose-details {
  border: 1px solid rgba(148,163,184,0.20);
  color: rgba(226,232,240,0.88);
  background: rgba(15,23,42,0.72);
}
.medicine-dose-details:hover {
  border-color: rgba(226,232,240,0.28);
  background: rgba(30,41,59,0.92);
}
.medicine-dose-btn:active,
.medicine-dose-details:active { transform: scale(0.97); }
.med-dose-panel {
  margin: 0 12px 6px;
  padding: 7px 9px;
  border-radius: 12px;
  border: 1px solid rgba(16,185,129,0.18);
  background:
    radial-gradient(circle at 95% 0%, rgba(16,185,129,0.18), transparent 42%),
    linear-gradient(135deg, rgba(6,78,59,0.34), rgba(15,23,42,0.72));
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.05), 0 6px 16px rgba(0,0,0,0.18);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-shrink: 0;
}
.med-dose-panel.is-done {
  border-color: rgba(34,197,94,0.30);
  background:
    radial-gradient(circle at 96% 8%, rgba(34,197,94,0.22), transparent 42%),
    linear-gradient(135deg, rgba(20,83,45,0.42), rgba(5,46,22,0.52));
}
.med-dose-copy {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.med-dose-k {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  font-weight: 800;
  color: rgba(236,253,245,0.96);
}
.med-dose-v {
  font-family: var(--font-ar);
  font-size: 0.64rem;
  color: rgba(209,250,229,0.70);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.med-dose-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
}
.med-dose-btn,
.med-dose-secondary {
  height: 28px;
  border-radius: 999px;
  padding: 0 10px;
  font-family: var(--font-ar);
  font-size: 0.72rem;
  font-weight: 800;
  cursor: pointer;
  transition: transform .12s ease, border-color .14s ease, background .14s ease, box-shadow .14s ease;
}
.med-dose-btn {
  border: 0;
  color: #052e16;
  background: linear-gradient(135deg, #6ee7b7, #22c55e);
  box-shadow: 0 8px 18px rgba(34,197,94,0.24);
}
.med-dose-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 22px rgba(34,197,94,0.34);
}
.med-dose-btn:active,
.med-dose-secondary:active { transform: scale(0.97); }
.med-dose-btn:disabled {
  cursor: default;
  transform: none;
  color: #dcfce7;
  background: rgba(34,197,94,0.18);
  border: 1px solid rgba(34,197,94,0.28);
  box-shadow: none;
}
.med-dose-secondary {
  border: 1px solid rgba(255,255,255,0.12);
  color: rgba(226,232,240,0.86);
  background: rgba(15,23,42,0.46);
}
.med-dose-secondary:hover {
  border-color: rgba(255,255,255,0.24);
  background: rgba(255,255,255,0.07);
  color: #fff;
}
.med-dose-empty-action {
  border-color: rgba(148,163,184,0.16);
  background: linear-gradient(135deg, rgba(15,23,42,0.70), rgba(30,41,59,0.46));
}
.med-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 38px;
  padding: 6px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
  transition: background 0.15s, border-color 0.15s;
}
.med-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
.med-row-expired { border-inline-start: 3px solid rgba(239,68,68,0.55); }
.med-row-critical { border-inline-start: 3px solid rgba(251,146,60,0.55); }
.med-row-warning { border-inline-start: 3px solid rgba(251,191,36,0.55); }
.med-row-caution { border-inline-start: 3px solid rgba(45,212,191,0.55); }
.med-row-safe { border-inline-start: 3px solid rgba(52,211,153,0.55); }
.med-row-none { border-inline-start: 3px solid rgba(167,139,250,0.45); }
.med-row-main { min-width:0; flex:1; display:flex; align-items:center; gap:8px; }
.med-row-index {
  min-width: 34px;
  height: 22px;
  padding: 0 8px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.66);
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  flex-shrink: 0;
}
.med-row-copy { min-width:0; display:flex; flex-direction:column; gap:2px; }
.med-row-name {
  font-family: var(--font-ar);
  font-size: 0.84rem;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.med-row-dose {
  font-family: var(--font-ar);
  font-size: 0.68rem;
  color: rgba(255,255,255,0.68);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.med-row-side { display:flex; align-items:center; gap:7px; flex-shrink:0; }
.med-row-date {
  font-family: var(--font-mono, monospace);
  font-size: 0.68rem;
  color: var(--muted);
  opacity: 0.8;
}
.med-row-badge {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
}
.med-badge-expired { background: rgba(220,38,38,0.18); border-color: rgba(220,38,38,0.4); color: #fca5a5; }
.med-badge-critical { background: rgba(251,146,60,0.18); border-color: rgba(251,146,60,0.4); color: #fed7aa; }
.med-badge-warning { background: rgba(251,191,36,0.15); border-color: rgba(251,191,36,0.35); color: #fde68a; }
.med-badge-caution { background: rgba(45,212,191,0.15); border-color: rgba(45,212,191,0.35); color: #99f6e4; }
.med-badge-safe { background: rgba(52,211,153,0.15); border-color: rgba(52,211,153,0.35); color: #bbf7d0; }
.med-badge-none { background: rgba(139,92,246,0.12); border-color: rgba(139,92,246,0.3); color: #ddd6fe; }
.med-empty {
  padding: 16px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}
.medicine-dash-foot {
  min-height: 48px;
  padding: 8px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.med-foot-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.8;
}
.med-foot-actions { display:flex; align-items:center; gap:6px; }
.med-foot-btn {
  padding: 5px 11px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.med-foot-btn:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.18);
  color: #fff;
}
.card.medicine-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.medicine-dash-card:hover .card-actions { opacity: 1; }
.card.medicine-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.medicine-dash-card .card-actions .card-delete:hover { background: rgba(239,68,68,0.6); }
.card.medicine-dash-card .card-actions .card-edit:hover { background: rgba(139,92,246,0.7); }

@media (max-width: 640px) {
  .card.vehicle-dash-card,
  .card.medicine-dash-card {
    height: 340px !important;
    min-height: 340px !important;
  }
  .vehicle-dash-hero,
  .medicine-dash-hero {
    height: 155px;
    padding: 11px 13px;
  }
  .vd-metric-num,
  .med-metric-num { font-size: 2.2rem; }
  .vd-metric-unit,
  .med-metric-unit { font-size: 0.88rem; }
  .vd-title,
  .med-title { font-size: 1.1rem; }
  .vehicle-dash-body,
  .medicine-dash-body { max-height: none; }
  .vd-row,
  .med-row {
    padding: 7px 9px;
    gap: 8px;
  }
  .vd-row-side,
  .med-row-side {
    gap: 6px;
  }
  .medicine-dose-foot {
    min-height: 50px;
    padding: 7px 10px;
    gap: 8px;
  }
  .medicine-dose-update,
  .medicine-dose-actions .dash-foot-state {
    display: none;
  }
  .medicine-dose-status {
    font-size: 0.72rem;
  }
  .medicine-dose-btn,
  .medicine-dose-details {
    height: 29px;
    padding: 0 10px;
    font-size: 0.7rem;
  }
  .med-dose-panel {
    align-items: center;
    flex-direction: row;
    gap: 7px;
    margin: 0 10px 6px;
    padding: 7px 8px;
  }
  .med-dose-copy { flex: 1 1 auto; }
  .med-dose-v { display: none; }
  .med-dose-actions {
    width: auto;
  }
  .med-dose-btn,
  .med-dose-secondary {
    flex: 0 0 auto;
    height: 27px;
    padding: 0 9px;
    font-size: 0.7rem;
  }
}

/* ─── Stocks dashboard card (portfolio / quote hero) ────── */
.card.stocks-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.stocks-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.08);
}
.card.stocks-dash-card.stocks-sev-up:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(16,185,129,0.38);
}
.card.stocks-dash-card.stocks-sev-down:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(248,113,113,0.38);
}
.card.stocks-dash-card.stocks-sev-flat:hover,
.card.stocks-dash-card.stocks-sev-none:hover {
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(167,139,250,0.34);
}
.card.stocks-dash-card > .bento-glow-bg { display: none !important; }
.stocks-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }
.stocks-dash-hero {
  position: relative;
  height: 150px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.stocks-sev-up .stocks-dash-hero { background: linear-gradient(135deg, #082219 0%, #123a31 60%, #19614f 100%); }
.stocks-sev-down .stocks-dash-hero { background: linear-gradient(135deg, #2b0a10 0%, #55161c 60%, #7a262a 100%); }
.stocks-sev-flat .stocks-dash-hero { background: linear-gradient(135deg, #1a1530 0%, #2d2450 60%, #3f3570 100%); }
.stocks-sev-none .stocks-dash-hero { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }
.sd-hero-noise,
.sd-hero-overlay { position: absolute; inset: 0; }
.sd-hero-noise {
  background-image:
    radial-gradient(circle at 18% 26%, rgba(255,255,255,0.08) 0, transparent 38%),
    radial-gradient(circle at 82% 72%, rgba(255,255,255,0.05) 0, transparent 46%);
  pointer-events: none;
  z-index: 1;
}
.sd-hero-art {
  position: absolute;
  left: 14px;
  top: 50%;
  width: 126px;
  height: 86px;
  transform: translateY(-50%);
  opacity: 0.28;
  pointer-events: none;
  z-index: 0;
}
.sd-art-grid {
  position: absolute;
  inset: 0;
  border-radius: 18px;
  background:
    linear-gradient(transparent 95%, rgba(255,255,255,0.14) 95%),
    linear-gradient(90deg, transparent 95%, rgba(255,255,255,0.12) 95%);
  background-size: 100% 18px, 24px 100%;
  mask-image: linear-gradient(90deg, rgba(0,0,0,0.65), transparent 100%);
}
.sd-art-bar {
  position: absolute;
  bottom: 10px;
  width: 16px;
  border-radius: 8px 8px 3px 3px;
  background: linear-gradient(180deg, rgba(255,255,255,0.95), rgba(255,255,255,0.14));
  box-shadow: 0 0 18px rgba(255,255,255,0.18);
}
.sd-bar-1 { left: 12px; height: 42px; }
.sd-bar-2 { left: 40px; height: 28px; }
.sd-bar-3 { left: 68px; height: 54px; }
.sd-art-line {
  position: absolute;
  height: 3px;
  border-radius: 999px;
  background: rgba(255,255,255,0.82);
  box-shadow: 0 0 12px rgba(255,255,255,0.3);
}
.sd-line-a {
  left: 18px;
  top: 48px;
  width: 38px;
  transform: rotate(-18deg);
}
.sd-line-b {
  left: 50px;
  top: 35px;
  width: 44px;
  transform: rotate(14deg);
}
.sd-art-dot {
  position: absolute;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,0.92);
  box-shadow: 0 0 14px rgba(255,255,255,0.4);
}
.sd-dot-1 { left: 18px; top: 46px; }
.sd-dot-2 { left: 56px; top: 35px; }
.sd-dot-3 { left: 92px; top: 45px; }
.sd-hero-overlay {
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.24) 45%, rgba(0,0,0,0) 74%),
    linear-gradient(180deg, rgba(0,0,0,0.16) 0%, rgba(0,0,0,0.04) 42%, rgba(0,0,0,0.54) 82%, rgba(12,10,18,0.9) 100%);
  pointer-events: none;
  z-index: 1;
}
.sd-hero-top,
.sd-hero-center,
.sd-hero-bottom { position: relative; z-index: 2; }
.sd-hero-top,
.sd-hero-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.sd-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  text-align: center;
}
.sd-top-badge {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2;
}
.sd-type-badge,
.sd-sev-badge { font-family: var(--font-ar); font-weight: 700; }
.sd-sev-up { color: #a7f3d0; border-color: rgba(52,211,153,0.48); }
.sd-sev-down { color: #fecaca; border-color: rgba(248,113,113,0.46); }
.sd-sev-flat { color: #ddd6fe; border-color: rgba(167,139,250,0.42); }
.sd-sev-none { color: rgba(255,255,255,0.84); border-color: rgba(255,255,255,0.18); }
.sd-metric-row {
  display: flex;
  align-items: baseline;
  gap: 7px;
  line-height: 1;
}
.sd-metric-num {
  font-family: var(--font-mono, monospace);
  font-size: 2.75rem;
  font-weight: 800;
  color: #fff;
  text-shadow: 0 2px 20px rgba(0,0,0,0.84), 0 1px 3px rgba(0,0,0,0.72), 0 0 1px rgba(0,0,0,0.45);
  letter-spacing: -0.03em;
}
.stocks-sev-up .sd-metric-num,
.stocks-sev-up .sd-metric-unit { color: #a7f3d0; }
.stocks-sev-down .sd-metric-num,
.stocks-sev-down .sd-metric-unit { color: #fecaca; }
.stocks-sev-flat .sd-metric-num,
.stocks-sev-flat .sd-metric-unit { color: #ddd6fe; }
.sd-metric-unit {
  font-family: var(--font-mono, monospace);
  font-size: 1rem;
  font-weight: 700;
  color: rgba(255,255,255,0.94);
  text-shadow: 0 2px 12px rgba(0,0,0,0.82), 0 1px 2px rgba(0,0,0,0.68);
}
.sd-metric-tail {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(255,255,255,0.88);
  text-shadow: 0 2px 10px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.68);
}
.sd-title-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 5px; }
.sd-title {
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.25rem;
  font-weight: 800;
  line-height: 1.2;
  color: #fff;
  text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 2px rgba(0,0,0,0.58), 0 0 1px rgba(0,0,0,0.4);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.sd-title mark,
.sd-row-title mark {
  background: transparent;
  color: inherit;
  box-shadow: none;
  padding: 0;
}
.sd-hero-sub {
  font-family: var(--font-ar);
  font-size: 0.74rem;
  color: rgba(255,255,255,0.78);
  text-shadow: 0 2px 10px rgba(0,0,0,0.84), 0 1px 2px rgba(0,0,0,0.68);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sd-hero-sub-sep { opacity: 0.5; margin: 0 4px; }
.sd-hero-sub-more {
  font-family: var(--font-mono, monospace);
  color: rgba(255,255,255,0.92);
}
.sd-count-chip {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.18);
  color: rgba(255,255,255,0.95);
  font-family: var(--font-ar);
  font-size: 0.72rem;
  white-space: nowrap;
  flex-shrink: 0;
}
.stocks-dash-body {
  padding: 10px 12px 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.stocks-dash-body::-webkit-scrollbar { width: 6px; }
.stocks-dash-body::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.1); border-radius: 3px; }
.sd-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 40px;
  padding: 7px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
  transition: background 0.15s, border-color 0.15s;
}
.sd-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
.sd-row-up { border-inline-start: 3px solid rgba(52,211,153,0.55); }
.sd-row-down { border-inline-start: 3px solid rgba(248,113,113,0.55); }
.sd-row-flat { border-inline-start: 3px solid rgba(167,139,250,0.46); }
.sd-row-error { border-inline-start: 3px solid rgba(239,68,68,0.46); }
.sd-row-main { min-width: 0; flex: 1; display: flex; align-items: center; gap: 8px; }
.sd-row-order {
  min-width: 34px;
  height: 22px;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 999px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.08);
  color: rgba(255,255,255,0.66);
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  flex-shrink: 0;
}
.sd-row-copy { min-width: 0; display: flex; flex-direction: column; gap: 2px; flex: 1; }
.sd-row-title {
  font-family: var(--font-mono, monospace);
  font-size: 0.9rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sd-row-meta {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.sd-row-note {
  font-family: var(--font-ar);
  font-size: 0.68rem;
  color: rgba(255,255,255,0.66);
}
.sd-row-meta-sep {
  color: rgba(255,255,255,0.32);
  font-size: 0.68rem;
  line-height: 1;
}
.sd-row-price {
  font-family: var(--font-mono, monospace);
  font-size: 0.76rem;
  color: rgba(255,255,255,0.9);
  direction: ltr;
}
.sd-row-side { display: flex; align-items: center; gap: 7px; flex-shrink: 0; }
.sd-row-badge {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  border: 1px solid transparent;
  direction: ltr;
  white-space: nowrap;
}
.sd-badge-up { background: rgba(34,197,94,0.15); border-color: rgba(34,197,94,0.32); color: #86efac; }
.sd-badge-down { background: rgba(239,68,68,0.15); border-color: rgba(239,68,68,0.32); color: #fca5a5; }
.sd-badge-flat { background: rgba(139,92,246,0.14); border-color: rgba(139,92,246,0.3); color: #ddd6fe; }
.sd-badge-error { background: rgba(239,68,68,0.14); border-color: rgba(239,68,68,0.28); color: #fca5a5; font-family: var(--font-ar); }
.sd-row-error-note {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  color: rgba(255,255,255,0.62);
}
.sd-row-more {
  text-align: center;
  font-size: 0.78rem;
  color: var(--muted);
  padding: 8px;
  font-family: var(--font-ar);
}
.sd-empty {
  padding: 18px 14px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}
.stocks-dash-foot {
  min-height: 48px;
  padding: 8px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.sd-foot-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.82;
}
.sd-foot-actions { display: flex; align-items: center; gap: 6px; }
.sd-foot-btn {
  padding: 5px 11px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.sd-foot-btn:hover {
  background: rgba(255,255,255,0.05);
  border-color: rgba(255,255,255,0.18);
  color: #fff;
}
.sd-foot-btn-refresh {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(139,92,246,0.1);
  border-color: rgba(139,92,246,0.28);
}
.sd-foot-btn-refresh:hover {
  background: rgba(139,92,246,0.18);
  border-color: rgba(167,139,250,0.42);
}
.sd-foot-btn-refresh svg { transition: transform 0.35s ease; }
.sd-foot-btn-refresh:hover svg { transform: rotate(-180deg); }
.sd-foot-btn-refresh.is-fetching svg { animation: sdSpinReverse 0.9s linear infinite; }
@keyframes sdSpinReverse {
  from { transform: rotate(0deg); }
  to { transform: rotate(-360deg); }
}
.card.stocks-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
  background: none;
  padding: 0;
}
.card.stocks-dash-card:hover .card-actions { opacity: 1; }
.card.stocks-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.stocks-dash-card .card-actions .card-delete:hover { background: rgba(239,68,68,0.6); }
.card.stocks-dash-card .card-actions .card-edit:hover { background: rgba(139,92,246,0.7); }
@media (max-width: 640px) {
  .card.stocks-dash-card {
    height: 340px !important;
    min-height: 340px !important;
  }
  .stocks-dash-hero {
    height: 155px;
    padding: 11px 13px;
  }
  .sd-metric-num { font-size: 2.2rem; }
  .sd-metric-unit { font-size: 0.88rem; }
  .sd-title { font-size: 1.1rem; }
  .stocks-dash-body { max-height: none; }
  .sd-row { padding: 7px 9px; gap: 8px; }
  .sd-row-side { gap: 6px; }
}
@media (prefers-reduced-motion: reduce) {
  .sd-foot-btn-refresh svg,
  .sd-foot-btn-refresh:hover svg { transition: none; transform: none; }
  .sd-foot-btn-refresh.is-fetching svg { animation: none; }
}

/* ─── LOAN DASH CARD (desktop) ──────────────────────────────────────────────── */
.card.loan-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.loan-dash-card > .bento-glow-bg { display: none !important; }
.card.loan-dash-card:hover { transform: none !important; box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(239,68,68,0.3); }
.card.loan-dash-card.loan-sev-done:hover { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(34,197,94,0.3); }
.loan-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }
.loan-dash-hero {
  position: relative;
  height: 160px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.loan-sev-active .loan-dash-hero { background: linear-gradient(135deg, #2b0a10 0%, #55161c 58%, #7a262a 100%); }
.loan-sev-overdue .loan-dash-hero { background: linear-gradient(135deg, #3b0505 0%, #7a0808 58%, #9e1010 100%); }
.loan-sev-done .loan-dash-hero   { background: linear-gradient(135deg, #062212 0%, #0f3a28 58%, #1a5c3a 100%); }
.ld-hero-art { position: absolute; inset: 0; }
.ld-art-bars {
  position: absolute;
  bottom: 8px;
  left: 12px;
  display: flex;
  align-items: flex-end;
  gap: 5px;
  opacity: 0.55;
}
.ld-art-bar {
  width: 10px;
  border-radius: 3px 3px 1px 1px;
  background: rgba(255,255,255,0.18);
}
.ld-art-bar.ld-bar-filled {
  background: linear-gradient(180deg, rgba(255,255,255,0.75), rgba(255,255,255,0.18));
  box-shadow: 0 0 8px rgba(255,255,255,0.15);
}
.loan-dash-hero .ld-hero-overlay {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.15) 50%, transparent 75%),
    linear-gradient(180deg, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0) 40%, rgba(0,0,0,0.5) 82%, rgba(10,5,15,0.92) 100%);
  pointer-events: none; z-index: 1;
}
.ld-hero-top, .ld-hero-center, .ld-hero-bottom { position: relative; z-index: 2; }
.ld-hero-top, .ld-hero-bottom { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ld-hero-center { display: flex; flex-direction: column; align-items: center; gap: 3px; text-align: center; }
.ld-top-badge {
  padding: 4px 10px; border-radius: 999px;
  background: rgba(0,0,0,0.5); backdrop-filter: blur(4px);
  font-size: 0.7rem; font-weight: 600; color: rgba(255,255,255,0.9);
  font-family: var(--font-ar); white-space: nowrap;
}
.ld-status-badge.ld-sev-active  { color: #fca5a5; background: rgba(239,68,68,0.2); }
.ld-status-badge.ld-sev-overdue { color: #f87171; background: rgba(220,38,38,0.28); }
.ld-status-badge.ld-sev-done    { color: #86efac; background: rgba(34,197,94,0.2); }
.ld-metric-row { display: flex; align-items: baseline; gap: 6px; }
.ld-metric-num {
  font-size: 2rem; font-weight: 800; font-family: var(--font-en);
  letter-spacing: -0.03em; color: #fff; direction: ltr;
}
.loan-sev-active .ld-metric-num  { color: #fecaca; }
.loan-sev-overdue .ld-metric-num { color: #f87171; }
.loan-sev-done .ld-metric-num    { color: #86efac; }
.ld-metric-unit { font-size: 0.85rem; font-weight: 500; color: rgba(255,255,255,0.6); font-family: var(--font-ar); }
.ld-metric-tail { font-size: 0.68rem; color: rgba(255,255,255,0.45); font-family: var(--font-ar); }
.ld-progress-wrap { position: relative; z-index: 2; padding: 0 2px; }
.ld-progress-bar {
  width: 100%; height: 4px;
  background: rgba(255,255,255,0.12);
  border-radius: 999px; overflow: hidden;
}
.ld-progress-fill {
  height: 100%; border-radius: 999px;
  transition: width 0.5s ease;
}
.ld-fill-active  { background: linear-gradient(90deg, #f87171, #ef4444); box-shadow: 0 0 8px rgba(239,68,68,0.5); }
.ld-fill-overdue { background: linear-gradient(90deg, #dc2626, #b91c1c); box-shadow: 0 0 8px rgba(220,38,38,0.5); }
.ld-fill-done    { background: linear-gradient(90deg, #4ade80, #22c55e); box-shadow: 0 0 8px rgba(34,197,94,0.5); }
.ld-title { font-size: 0.95rem; font-weight: 700; color: rgba(255,255,255,0.92); margin: 0; font-family: var(--font-ar); }
.ld-hero-sub { font-size: 0.65rem; color: rgba(255,255,255,0.45); font-family: var(--font-mono); direction: ltr; }
.ld-count-chip {
  padding: 3px 9px; border-radius: 999px;
  background: rgba(0,0,0,0.45); font-size: 0.68rem; font-weight: 600;
  color: rgba(255,255,255,0.75); font-family: var(--font-ar); white-space: nowrap;
}
.loan-dash-body {
  flex: 1; padding: 14px 16px;
  display: flex; flex-direction: column; justify-content: center;
  background: rgba(10,5,15,0.97);
}
.ld-stat-row {
  display: flex;
  gap: 28px;
  justify-content: center;
  align-items: flex-start;
}
.ld-stat {
  display: flex;
  flex-direction: column;
  gap: 3px;
  align-items: center;
  text-align: center;
}
.ld-sk { font-size: 0.67rem; color: rgba(255,255,255,0.38); font-family: var(--font-ar); }
.ld-sv { font-size: 0.95rem; font-weight: 700; color: rgba(255,255,255,0.9); font-family: var(--font-ar); }
.loan-dash-foot {
  padding: 8px 16px; border-top: 1px solid rgba(255,255,255,0.05);
  display: flex; align-items: center; justify-content: flex-end;
  background: rgba(10,5,15,0.97);
}
.ld-foot-time { font-size: 0.65rem; color: rgba(255,255,255,0.28); font-family: var(--font-ar); }

/* ─── NET WORTH DASH CARD (desktop) ─────────────────────────────────────────── */
.card.nw-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.nw-dash-card > .bento-glow-bg { display: none !important; }
.card.nw-dash-card:hover { transform: none !important; box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(167,139,250,0.3); }
.card.nw-dash-card.nw-sev-positive:hover { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(34,197,94,0.3); }
.nw-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }
.nw-dash-hero {
  position: relative;
  height: 160px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.nw-sev-negative .nw-dash-hero { background: linear-gradient(135deg, #1a0a2e 0%, #2e1a54 58%, #1a0a3a 100%); }
.nw-sev-positive .nw-dash-hero { background: linear-gradient(135deg, #062212 0%, #0f3a28 58%, #1a5c3a 100%); }
.nw-hero-art { position: absolute; inset: 0; display: flex; align-items: flex-end; gap: 12px; padding: 0 16px 8px; opacity: 0.4; }
.nw-art-bar {
  width: 28px;
  border-radius: 3px 3px 0 0;
  min-height: 8px;
}
.nw-bar-assets { background: linear-gradient(180deg, rgba(34,197,94,0.9), rgba(34,197,94,0.25)); }
.nw-bar-liab   { background: linear-gradient(180deg, rgba(239,68,68,0.9), rgba(239,68,68,0.25)); }
.nw-dash-hero .nw-hero-overlay {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.15) 50%, transparent 75%),
    linear-gradient(180deg, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0) 40%, rgba(0,0,0,0.5) 82%, rgba(10,5,15,0.92) 100%);
  pointer-events: none; z-index: 1;
}
.nw-hero-top, .nw-hero-center, .nw-hero-bottom { position: relative; z-index: 2; }
.nw-hero-top, .nw-hero-bottom { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.nw-hero-center { display: flex; flex-direction: column; align-items: center; gap: 3px; text-align: center; }
.nw-top-badge {
  padding: 4px 10px; border-radius: 999px;
  background: rgba(0,0,0,0.5); backdrop-filter: blur(4px);
  font-size: 0.7rem; font-weight: 600; color: rgba(255,255,255,0.9);
  font-family: var(--font-ar); white-space: nowrap;
}
.nw-status-badge.nw-sev-negative { color: #c4b5fd; background: rgba(139,92,246,0.22); }
.nw-status-badge.nw-sev-positive { color: #86efac; background: rgba(34,197,94,0.2); }
.nw-metric-row { display: flex; align-items: baseline; gap: 6px; }
.nw-metric-num {
  font-size: 2rem; font-weight: 800; font-family: var(--font-en);
  letter-spacing: -0.03em; color: #fff; direction: ltr;
}
.nw-sev-negative .nw-metric-num { color: #c4b5fd; }
.nw-sev-positive .nw-metric-num { color: #86efac; }
.nw-metric-unit { font-size: 0.85rem; font-weight: 500; color: rgba(255,255,255,0.6); font-family: var(--font-ar); }
.nw-metric-tail { font-size: 0.68rem; color: rgba(255,255,255,0.45); font-family: var(--font-ar); }
.nw-title { font-size: 0.95rem; font-weight: 700; color: rgba(255,255,255,0.92); margin: 0; font-family: var(--font-ar); }
.nw-hero-sub { font-size: 0.65rem; color: rgba(255,255,255,0.45); font-family: var(--font-mono); }
.nw-count-chip {
  padding: 3px 9px; border-radius: 999px;
  background: rgba(0,0,0,0.45); font-size: 0.68rem; font-weight: 600;
  color: rgba(255,255,255,0.75); font-family: var(--font-ar); white-space: nowrap;
}
.nw-dash-body {
  flex: 1; padding: 14px 16px;
  display: flex; flex-direction: column; justify-content: center;
  background: rgba(10,5,15,0.97);
}
.nw-stat-row { display: flex; gap: 28px; }
.nw-stat { display: flex; flex-direction: column; gap: 3px; }
.nw-sk { font-size: 0.67rem; color: rgba(255,255,255,0.38); font-family: var(--font-ar); }
.nw-sv { font-size: 0.95rem; font-weight: 700; color: rgba(255,255,255,0.9); font-family: var(--font-ar); }
.nw-sv-up   { color: #4ade80 !important; }
.nw-sv-down { color: #f87171 !important; }
.nw-dash-foot {
  padding: 8px 16px; border-top: 1px solid rgba(255,255,255,0.05);
  display: flex; align-items: center; justify-content: flex-end;
  background: rgba(10,5,15,0.97);
}
.nw-foot-time { font-size: 0.65rem; color: rgba(255,255,255,0.28); font-family: var(--font-ar); }

/* ─── IOU DASH CARD (desktop) ───────────────────────────────────────────────── */
.card.iou-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex !important;
  flex-direction: column;
  height: 320px !important;
  min-height: 320px !important;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.iou-dash-card > .bento-glow-bg { display: none !important; }
.card.iou-dash-card:hover { transform: none !important; box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(249,115,22,0.3); }
.card.iou-dash-card.iou-sev-positive:hover { box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(34,197,94,0.3); }
.iou-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }
.iou-dash-hero {
  position: relative;
  height: 160px;
  padding: 12px 14px 10px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.iou-sev-positive .iou-dash-hero { background: linear-gradient(135deg, #062212 0%, #0f3a28 55%, #1a5c3a 100%); }
.iou-sev-negative .iou-dash-hero { background: linear-gradient(135deg, #1e0b04 0%, #5c2010 55%, #7a2a10 100%); }
.iou-sev-balanced .iou-dash-hero { background: linear-gradient(135deg, #0a0a1e 0%, #1a1a4a 55%, #202050 100%); }
.iou-hero-art {
  position: absolute;
  bottom: 8px; left: 14px;
  display: flex;
  align-items: flex-end;
  gap: 8px;
  opacity: 0.4;
}
.iou-art-bar { width: 22px; border-radius: 3px 3px 0 0; min-height: 4px; }
.iou-bar-tome { background: linear-gradient(180deg, rgba(34,197,94,0.9), rgba(34,197,94,0.2)); }
.iou-bar-iowe { background: linear-gradient(180deg, rgba(249,115,22,0.9), rgba(249,115,22,0.2)); }
.iou-dash-hero .iou-hero-overlay {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.4) 0%, rgba(0,0,0,0.15) 50%, transparent 75%),
    linear-gradient(180deg, rgba(0,0,0,0.1) 0%, rgba(0,0,0,0) 40%, rgba(0,0,0,0.5) 82%, rgba(10,5,15,0.92) 100%);
  pointer-events: none; z-index: 1;
}
.iou-hero-top, .iou-hero-center, .iou-hero-bottom { position: relative; z-index: 2; }
.iou-hero-top, .iou-hero-bottom { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.iou-hero-center { display: flex; flex-direction: column; align-items: center; gap: 3px; text-align: center; }
.iou-top-badge {
  padding: 4px 10px; border-radius: 999px;
  background: rgba(0,0,0,0.5); backdrop-filter: blur(4px);
  font-size: 0.7rem; font-weight: 600; color: rgba(255,255,255,0.9);
  font-family: var(--font-ar); white-space: nowrap;
}
.iou-status-badge.iou-sev-positive { color: #86efac; background: rgba(34,197,94,0.2); }
.iou-status-badge.iou-sev-negative { color: #fdba74; background: rgba(249,115,22,0.22); }
.iou-status-badge.iou-sev-balanced { color: #a5b4fc; background: rgba(99,102,241,0.2); }
.iou-metric-row { display: flex; align-items: baseline; gap: 6px; }
.iou-metric-num {
  font-size: 2rem; font-weight: 800; font-family: var(--font-en);
  letter-spacing: -0.03em; color: #fff; direction: ltr;
}
.iou-sev-positive .iou-metric-num { color: #86efac; }
.iou-sev-negative .iou-metric-num { color: #fdba74; }
.iou-sev-balanced .iou-metric-num { color: #c7d2fe; }
.iou-metric-unit { font-size: 0.85rem; font-weight: 500; color: rgba(255,255,255,0.6); font-family: var(--font-ar); }
.iou-metric-tail { font-size: 0.68rem; color: rgba(255,255,255,0.45); font-family: var(--font-ar); }
.iou-title { font-size: 0.95rem; font-weight: 700; color: rgba(255,255,255,0.92); margin: 0; font-family: var(--font-ar); }
.iou-hero-sub { font-size: 0.65rem; color: rgba(255,255,255,0.45); font-family: var(--font-ar); }
.iou-bal-chips { display: flex; gap: 5px; flex-shrink: 0; }
.iou-bal-chip {
  padding: 2px 8px; border-radius: 999px;
  font-size: 0.65rem; font-weight: 600; font-family: var(--font-ar); white-space: nowrap;
}
.iou-chip-pos { background: rgba(34,197,94,0.18); color: #86efac; }
.iou-chip-neg { background: rgba(249,115,22,0.18); color: #fdba74; }
.iou-dash-body {
  flex: 1; padding: 12px 16px;
  display: flex; flex-direction: column; justify-content: center; gap: 6px;
  background: rgba(10,5,15,0.97);
}
.iou-dash-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 5px 0; border-bottom: 1px solid rgba(255,255,255,0.04);
}
.iou-dash-row:last-child { border-bottom: none; }
.iou-row-name { font-size: 0.85rem; font-weight: 600; color: rgba(255,255,255,0.82); font-family: var(--font-ar); }
.iou-row-amt { font-size: 0.82rem; font-weight: 700; font-family: var(--font-en); direction: ltr; }
.iou-amt-positive { color: #4ade80; }
.iou-amt-negative { color: #fb923c; }
.iou-empty { font-size: 0.8rem; color: rgba(255,255,255,0.3); font-family: var(--font-ar); text-align: center; }
.iou-dash-foot {
  padding: 8px 16px; border-top: 1px solid rgba(255,255,255,0.05);
  display: flex; align-items: center; justify-content: flex-end;
  background: rgba(10,5,15,0.97);
}
.iou-foot-time { font-size: 0.65rem; color: rgba(255,255,255,0.28); font-family: var(--font-ar); }

/* ─── New-card dash (wave 1/2/3 shared template) ──────── */
.card.nc-dash-card {
  height: 230px !important;
  overflow: hidden;
  border-radius: 16px;
  padding: 0 !important;
  border: none !important;
  position: relative;
  display: flex;
  flex-direction: column;
}
.card.nc-dash-card[data-type="reminder"],
.card.nc-dash-card[data-type="meeting"] {
  height: 320px !important;
  min-height: 320px !important;
}
.card.nc-dash-card.card-featured {
  height: auto !important;
  min-height: 320px;
}
.card.nc-dash-card.card-featured .ncd-hero { flex-basis: 200px; }
.ncd-shell { display: flex; flex-direction: column; height: 100%; }
.ncd-hero {
  flex: 0 0 130px;
  padding: 14px 16px 10px;
  position: relative;
  overflow: hidden;
}
.ncd-art-glow {
  position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(circle at 85% 15%, color-mix(in srgb, var(--ncd-accent, var(--accent)) 16%, transparent), transparent 55%),
    radial-gradient(circle at 5% 90%, color-mix(in srgb, var(--ncd-accent, var(--accent)) 8%, transparent), transparent 45%);
}
.ncd-top-row {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
  flex-wrap: wrap;
}
.ncd-icon-wrap { font-size: 1.25rem; line-height: 1; }
.ncd-title-txt {
  font-size: 0.85rem;
  font-weight: 700;
  color: rgba(255,255,255,0.9);
  font-family: var(--font-ar);
  flex: 1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ncd-kind-badge {
  font-size: 0.64rem;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.28);
  color: rgba(255, 255, 255, 0.78);
  border: 1px solid rgba(255, 255, 255, 0.09);
  white-space: nowrap;
  font-family: var(--font-ar);
  font-weight: 700;
}
.ncd-badge {
  font-size: 0.65rem;
  padding: 2px 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--ncd-accent, rgba(255,255,255,0.8)) 14%, transparent);
  color: var(--ncd-accent, rgba(255,255,255,0.8));
  border: 1px solid color-mix(in srgb, var(--ncd-accent, rgba(255,255,255,0.8)) 28%, transparent);
  white-space: nowrap;
  font-family: var(--font-ar);
  font-weight: 600;
}
.ncd-metric-row {
  display: flex;
  align-items: baseline;
  gap: 5px;
  margin-bottom: 8px;
}
.ncd-metric-num {
  font-size: 2.2rem;
  font-weight: 800;
  line-height: 1;
  color: #fff;
  font-family: var(--font-en);
}
.ncd-emoji-hero { font-size: 2rem; line-height: 1; }
.ncd-text-hero-lg { font-size: 1.2rem; font-weight: 700; line-height: 1.2; font-family: var(--font-ar); }
.ncd-text-hero-md { font-size: 1.1rem; font-weight: 600; line-height: 1.2; font-family: var(--font-ar); }
.ncd-text-hero-sm { font-size: 0.9rem; font-weight: 600; line-height: 1.3; font-family: var(--font-mono, monospace); letter-spacing: 0.02em; }
.ncd-hero-emoji-2xl { font-size: 2.6rem; line-height: 1; }
.ncd-hero-emoji-xl  { font-size: 2.4rem; line-height: 1; }
.ncd-hero-emoji-sm  { font-size: 1.6rem; line-height: 1; }
.ncd-hero-empty     { opacity: .35; font-size: 1.2rem; }
.ncd-hero-empty-lg  { opacity: .35; font-size: 1.4rem; }
.ncd-muted-sub      { opacity: .4;  font-size: 1.1rem; }
.ncd-no-data        { opacity: .3; }
.ncv-rating-empty   { opacity: .4; }
.ncv-title-icon     { font-size: 1.4rem; margin-inline-end: 8px; }
.ncv-type-label     { font-size: 0.72rem; color: var(--muted); font-weight: 500; margin-inline-start: 10px; }
.tab-icon           { font-size: 1.2rem; }
.heatmap-label      { font-size: 0.7rem; color: var(--muted); }
.stats-header-title { font-size: 1.05rem; font-weight: 700; color: var(--text); }
.stats-header-date  { font-size: 0.78rem; color: var(--muted); margin-top: 2px; }
.search-hint-text   { font-size: 0.78rem; opacity: 0.7; }
.widget-empty-hint  { font-size: 0.75rem; opacity: 0.6; }
.empty-state-title  { font-weight: 700; color: var(--text); margin-bottom: 4px; }
.empty-state-sub    { font-size: 0.82rem; color: rgba(200,205,220,0.5); }
.pd-score-denom     { font-size: 1.5rem; color: rgba(255,255,255,0.4); }
.network-error-hint { font-size: 0.8rem; opacity: 0.6; margin-top: 6px; }
.mob-empty-icon-lg  { font-size: 36px; opacity: 0.4; margin-bottom: 8px; }
.ncd-metric-unit {
  font-size: 0.72rem;
  color: rgba(255,255,255,0.55);
  font-family: var(--font-ar);
}
.ncd-progress-wrap {
  height: 4px;
  background: rgba(255,255,255,0.08);
  border-radius: 2px;
  overflow: hidden;
}
.ncd-progress-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 0.4s ease;
  background: var(--ncd-progress-c, var(--ncd-accent, var(--accent)));
}
.ncd-body {
  flex: 1;
  background: rgba(8,5,15,0.97);
  padding: 8px 14px 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  overflow: hidden;
  position: relative;
  border-top: 1px solid rgba(255,255,255,0.05);
}
.ncd-body::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 1px;
  background: color-mix(in srgb, var(--ncd-accent, var(--accent)) 22%, transparent);
  pointer-events: none;
}
.ncd-body::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0; right: 0;
  height: 12px;
  background: linear-gradient(to bottom, transparent, rgba(8,5,15,0.9));
  pointer-events: none;
}
.ncd-stat {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 6px;
  font-size: 11.5px;
  line-height: 1.35;
}
.ncd-stat-k { color: rgba(255,255,255,0.42); font-family: var(--font-ar); flex-shrink: 0; max-width: 48%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ncd-stat-v {
  color: rgba(255,255,255,0.9);
  font-family: var(--font-en), var(--font-ar);
  font-weight: 600;
  text-align: start;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ncd-foot {
  background: rgba(6,4,12,0.98);
  border-top: 1px solid rgba(255,255,255,0.05);
  padding: 5px 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-shrink: 0;
}
.ncd-time { font-size: 10.5px; color: rgba(255,255,255,0.28); font-family: var(--font-ar); }

.card.nc-dash-card .card-actions {
  position: absolute !important;
  top: 10px !important;
  left: 10px !important;
  right: auto !important;
  bottom: auto !important;
  z-index: 8 !important;
  display: flex;
  justify-content: flex-end;
  gap: 6px;
  padding: 0 !important;
  background: none !important;
  transform: none !important;
  opacity: 0;
  pointer-events: none;
}
.card.nc-dash-card:hover .card-actions,
.card.nc-dash-card.card-expanded .card-actions {
  opacity: 1;
  pointer-events: auto;
}
.card.nc-dash-card .card-actions button {
  width: 34px !important;
  height: 34px !important;
  min-width: 34px !important;
  min-height: 34px !important;
  border-radius: 10px !important;
}

/* ─── NCD interactive elements (tracker / counter / routine / reminder) ─ */
.ncd-tracker-ctrl {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 10px;
  background: rgba(255,255,255,0.04);
  border-radius: 10px;
  margin-bottom: 4px;
}
.ncd-tc-btn {
  width: 34px; height: 34px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.07);
  color: var(--text);
  font-size: 1.25rem; font-weight: 700;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .14s;
  flex-shrink: 0;
}
.ncd-tc-btn:hover { background: rgba(255,255,255,0.16); }
.ncd-tc-btn:active { transform: scale(.91); }
.ncd-tc-val { font-size: 1rem; font-weight: 700; color: var(--text); font-family: var(--font-en); }
.ncd-tc-unit { font-size: 0.72rem; opacity: 0.5; margin-inline-start: 3px; }

.ncd-counter-tap {
  display: flex;
  align-items: center; justify-content: center;
  padding: 16px 12px;
  background: rgba(255,255,255,0.04);
  border: 1px dashed rgba(255,255,255,0.1);
  border-radius: 10px;
  cursor: pointer;
  transition: background .14s, transform .1s;
}
.ncd-counter-tap:hover { background: rgba(255,255,255,0.09); }
.ncd-counter-tap:active { transform: scale(.97); }
.ncd-ctr-hint { font-size: 0.78rem; color: rgba(255,255,255,0.35); font-family: var(--font-ar); }
.ncd-metric-num.ncd-counter-bump { animation: counterBump .4s cubic-bezier(.25,1.5,.5,1); }

.ncd-habit-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 6px;
  border-radius: 7px;
  cursor: pointer;
  transition: background .12s;
  min-height: 28px;
}
.ncd-habit-row:hover { background: rgba(255,255,255,0.06); }
.ncd-habit-dot {
  width: 14px; height: 14px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.22);
  flex-shrink: 0;
  transition: background .15s, border-color .15s;
}
.ncd-habit-done .ncd-habit-dot {
  background: #22c55e;
  border-color: #22c55e;
}
.ncd-habit-txt {
  font-size: 0.78rem;
  color: rgba(255,255,255,0.72);
  font-family: var(--font-ar);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ncd-habit-done .ncd-habit-txt {
  color: rgba(255,255,255,0.35);
  text-decoration: line-through;
}

.ncd-reminder-done-btn {
  display: block;
  width: 100%;
  margin-top: 6px;
  padding: 7px;
  background: rgba(34,197,94,0.12);
  border: 1px solid rgba(34,197,94,0.28);
  border-radius: 8px;
  color: #22c55e;
  font-size: 0.8rem; font-weight: 600;
  cursor: pointer;
  font-family: var(--font-ar);
  transition: background .14s, transform .1s;
}
.ncd-reminder-done-btn:hover { background: rgba(34,197,94,0.22); }
.ncd-reminder-done-btn:active { transform: scale(0.97); }
.ncd-reminder-done-btn:disabled, .ncd-done-today { opacity: 0.5; cursor: default; }
.ncd-water-btn { background: rgba(14,165,233,0.12) !important; border-color: rgba(14,165,233,0.28) !important; color: #0ea5e9 !important; }
.ncd-water-btn:hover { background: rgba(14,165,233,0.22) !important; }
.ncd-quran-btn { background: rgba(16,185,129,0.12) !important; border-color: rgba(16,185,129,0.28) !important; color: #10b981 !important; }
.ncd-quran-btn:hover { background: rgba(16,185,129,0.22) !important; }
.ncd-workout-btn { background: rgba(239,68,68,0.1) !important; border-color: rgba(239,68,68,0.24) !important; color: #f87171 !important; }
.ncd-workout-btn:hover { background: rgba(239,68,68,0.18) !important; }
.ncd-meditate-btn { background: rgba(20,184,166,0.1) !important; border-color: rgba(20,184,166,0.24) !important; color: #14b8a6 !important; }
.ncd-meditate-btn:hover { background: rgba(20,184,166,0.18) !important; }
.ncd-meals-btn { background: rgba(251,146,60,0.1) !important; border-color: rgba(251,146,60,0.24) !important; color: #fb923c !important; }
.ncd-meals-btn:hover { background: rgba(251,146,60,0.18) !important; }
.ncd-book-btn { background: rgba(245,158,11,0.1) !important; border-color: rgba(245,158,11,0.24) !important; color: #fcd34d !important; }
.ncd-book-btn:hover { background: rgba(245,158,11,0.18) !important; }
.ncd-pomo-btn { background: rgba(239,68,68,0.1) !important; border-color: rgba(239,68,68,0.22) !important; color: #fca5a5 !important; }
.ncd-pomo-btn:hover { background: rgba(239,68,68,0.18) !important; }
.ncd-pomo-running { background: rgba(239,68,68,0.22) !important; border-color: rgba(239,68,68,0.45) !important; color: #f87171 !important; animation: ncdPomoPulse 2s ease-in-out infinite; }
@keyframes ncdPomoPulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.72; } }
@media (prefers-reduced-motion: reduce) { .ncd-pomo-running { animation: none !important; } }
.ncd-recipe-btn { background: rgba(245,158,11,0.1) !important; border-color: rgba(245,158,11,0.24) !important; color: #fcd34d !important; }
.ncd-recipe-btn:hover { background: rgba(245,158,11,0.18) !important; }
.ncd-inbox-btn { background: rgba(129,140,248,0.1) !important; border-color: rgba(129,140,248,0.24) !important; color: #a5b4fc !important; }
.ncd-inbox-btn:hover { background: rgba(129,140,248,0.18) !important; }
.ncd-lang-btn { background: rgba(20,184,166,0.1) !important; border-color: rgba(20,184,166,0.24) !important; color: #2dd4bf !important; }
.ncd-lang-btn:hover { background: rgba(20,184,166,0.18) !important; }
.ncd-course-btn { background: rgba(59,130,246,0.1) !important; border-color: rgba(59,130,246,0.24) !important; color: #93c5fd !important; }
.ncd-course-btn:hover { background: rgba(59,130,246,0.18) !important; }
.ncd-watch-btn { background: rgba(168,85,247,0.1) !important; border-color: rgba(168,85,247,0.24) !important; color: #c084fc !important; }
.ncd-watch-btn:hover { background: rgba(168,85,247,0.18) !important; }
.ncd-idea-btn { background: rgba(250,204,21,0.08) !important; border-color: rgba(250,204,21,0.22) !important; color: #fde68a !important; }
.ncd-idea-btn:hover { background: rgba(250,204,21,0.14) !important; }
.ncd-savings-btn { background: rgba(34,197,94,0.1) !important; border-color: rgba(34,197,94,0.24) !important; color: #86efac !important; }
.ncd-savings-btn:hover { background: rgba(34,197,94,0.18) !important; }
.ncd-project-btn { background: rgba(129,140,248,0.1) !important; border-color: rgba(129,140,248,0.24) !important; color: #a5b4fc !important; text-align: right !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.ncd-project-btn:hover { background: rgba(129,140,248,0.18) !important; }
.ncd-review-btn { background: rgba(20,184,166,0.08) !important; border-color: rgba(20,184,166,0.2) !important; color: #5eead4 !important; }
.ncd-review-btn:hover { background: rgba(20,184,166,0.14) !important; }
.ncd-purchase-btn { background: rgba(34,197,94,0.1) !important; border-color: rgba(34,197,94,0.24) !important; color: #4ade80 !important; }
.ncd-purchase-btn:hover { background: rgba(34,197,94,0.18) !important; }
.ncd-gift-btn { background: rgba(244,63,94,0.08) !important; border-color: rgba(244,63,94,0.22) !important; color: #fda4af !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.ncd-gift-btn:hover { background: rgba(244,63,94,0.14) !important; }
.ncd-goal-btn { background: rgba(129,140,248,0.08) !important; border-color: rgba(129,140,248,0.22) !important; color: #a5b4fc !important; overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important; }
.ncd-goal-btn:hover { background: rgba(129,140,248,0.16) !important; }
.ncd-birthday-btn { background: rgba(244,114,182,0.1) !important; border-color: rgba(244,114,182,0.28) !important; color: #f9a8d4 !important; }
.ncd-birthday-btn:hover { background: rgba(244,114,182,0.18) !important; }
.ncd-journal-btn { background: rgba(236,72,153,0.08) !important; border-color: rgba(236,72,153,0.22) !important; color: #f472b6 !important; }
.ncd-journal-btn:hover { background: rgba(236,72,153,0.16) !important; }
.ncd-vitals-btn { background: rgba(239,68,68,0.08) !important; border-color: rgba(239,68,68,0.22) !important; color: #fca5a5 !important; }
.ncd-vitals-btn:hover { background: rgba(239,68,68,0.16) !important; }
.ncd-gold-btn { background: rgba(234,179,8,0.08) !important; border-color: rgba(234,179,8,0.22) !important; color: #fde047 !important; }
.ncd-gold-btn:hover { background: rgba(234,179,8,0.16) !important; }
.ncd-appliance-btn { background: rgba(100,116,139,0.1) !important; border-color: rgba(100,116,139,0.25) !important; color: #94a3b8 !important; }
.ncd-appliance-btn:hover { background: rgba(100,116,139,0.18) !important; }
.ncd-md-copy-btn { background: rgba(6,182,212,0.08) !important; border-color: rgba(6,182,212,0.22) !important; color: #67e8f9 !important; }
.ncd-md-copy-btn:hover { background: rgba(6,182,212,0.16) !important; }
.ncd-expense-btn { background: rgba(249,115,22,0.08) !important; border-color: rgba(249,115,22,0.22) !important; color: #fdba74 !important; }
.ncd-expense-btn:hover { background: rgba(249,115,22,0.16) !important; }
.ncd-cyan-btn  { background: rgba(6,182,212,0.09)  !important; border-color: rgba(6,182,212,0.24)   !important; color: #67e8f9 !important; }
.ncd-cyan-btn:hover  { background: rgba(6,182,212,0.17) !important; }
.ncd-blue-btn  { background: rgba(59,130,246,0.09) !important; border-color: rgba(59,130,246,0.24)  !important; color: #93c5fd !important; }
.ncd-blue-btn:hover  { background: rgba(59,130,246,0.17) !important; }
.ncd-pink-btn  { background: rgba(236,72,153,0.08) !important; border-color: rgba(236,72,153,0.22)  !important; color: #f9a8d4 !important; }
.ncd-pink-btn:hover  { background: rgba(236,72,153,0.16) !important; }
.ncd-green-btn { background: rgba(34,197,94,0.09)  !important; border-color: rgba(34,197,94,0.24)   !important; color: #86efac !important; }
.ncd-green-btn:hover { background: rgba(34,197,94,0.17) !important; }
.ncd-networth-btn { background: rgba(16,185,129,0.08) !important; border-color: rgba(16,185,129,0.22) !important; color: #6ee7b7 !important; }
.ncd-networth-btn:hover { background: rgba(16,185,129,0.16) !important; }
.ncd-zakat-btn { background: rgba(20,184,166,0.08) !important; border-color: rgba(20,184,166,0.22) !important; color: #5eead4 !important; }
.ncd-zakat-btn:hover { background: rgba(20,184,166,0.16) !important; }
.ncd-mood-row { display:flex; justify-content:space-between; padding:4px 0 2px; gap:2px; }
.ncd-mood-btn { background:none; border:1.5px solid rgba(255,255,255,0.1); border-radius:7px; padding:3px 1px; font-size:1.1rem; cursor:pointer; transition:background .12s, border-color .12s, transform .08s; flex:1; line-height:1; }
.ncd-mood-btn:hover { background:rgba(255,255,255,0.08); border-color:rgba(255,255,255,0.2); }
.ncd-mood-btn.ncd-mood-active { background:rgba(167,139,250,0.18); border-color:rgba(167,139,250,0.45); transform:scale(1.1); }
.ncd-mood-btn:active { transform:scale(.92); }

/* NCD command card body */
.ncd-cmd-block { display:flex; align-items:flex-start; gap:6px; background:rgba(0,0,0,0.32); border:1px solid rgba(255,255,255,0.08); border-radius:9px; padding:8px 10px; font-family:var(--font-en); position:relative; }
.ncd-cmd-prompt { font-size:0.85rem; font-weight:700; color:#22c55e; flex-shrink:0; padding-top:1px; user-select:none; }
.ncd-cmd-text { margin:0; font-size:0.76rem; color:rgba(255,255,255,0.8); white-space:pre-wrap; word-break:break-all; flex:1; line-height:1.45; }
.ncd-cmd-copy { position:absolute; top:6px; inset-inline-end:6px; background:rgba(255,255,255,0.07); border:1px solid rgba(255,255,255,0.12); border-radius:5px; color:rgba(255,255,255,0.5); font-size:0.78rem; cursor:pointer; padding:2px 5px; transition:background .14s, color .14s; }
.ncd-cmd-copy:hover { background:rgba(255,255,255,0.15); color:var(--text); }

/* NCD quicktext card body */
.ncd-qt-block { display:flex; flex-direction:column; gap:6px; }
.ncd-qt-preview { font-size:0.78rem; color:rgba(255,255,255,0.7); line-height:1.5; font-family:var(--font-ar); white-space:pre-wrap; word-break:break-word; max-height:60px; overflow:hidden; }
.ncd-qt-copy { align-self:flex-end; background:rgba(20,184,166,0.12); border:1px solid rgba(20,184,166,0.28); border-radius:7px; color:#14b8a6; font-size:0.78rem; font-weight:600; cursor:pointer; padding:4px 10px; font-family:var(--font-ar); transition:background .14s; }
.ncd-qt-copy:hover { background:rgba(20,184,166,0.24); }

/* NCD code block (extends cmd block) */
.ncd-code-block { padding-inline-start:10px; }

/* NCD content preview (journal, idea) */
.ncd-content-prev { font-size:0.78rem; color:rgba(255,255,255,0.65); line-height:1.5; font-family:var(--font-ar); overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; margin-bottom:4px; }

/* NCD quote block */
.ncd-quote-block { display:flex; flex-direction:column; gap:5px; }
.ncd-quote-text { font-size:0.79rem; color:rgba(255,255,255,0.75); line-height:1.55; font-family:var(--font-ar); margin:0; overflow:hidden; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; border-inline-start:2px solid rgba(167,139,250,0.4); padding-inline-start:8px; }
.ncd-quote-author { font-size:0.7rem; color:rgba(255,255,255,0.38); font-family:var(--font-ar); }
.ncd-quote-copy { align-self:flex-end; margin-top:2px; }

/* NCD week plan list */
.ncd-wp-list { display:flex; flex-direction:column; gap:3px; }
.ncd-wp-item { display:flex; align-items:baseline; gap:5px; }
.ncd-wp-num { font-size:0.68rem; color:rgba(99,102,241,0.7); font-weight:700; flex-shrink:0; min-width:12px; font-family:var(--font-ar); }
.ncd-wp-text { font-size:0.78rem; color:rgba(255,255,255,0.78); font-family:var(--font-ar); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ncd-wp-more { font-size:0.68rem; color:rgba(255,255,255,0.3); margin-top:2px; font-family:var(--font-ar); }

/* NCD contact chips */
.ncd-contact-chips { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:6px; }
.ncd-contact-chip { display:inline-flex; align-items:center; gap:4px; padding:5px 10px; background:rgba(34,197,94,0.12); border:1px solid rgba(34,197,94,0.24); border-radius:7px; color:#22c55e; font-size:0.78rem; font-weight:600; text-decoration:none; font-family:var(--font-ar); transition:background .14s; cursor:pointer; }
.ncd-contact-chip:hover { background:rgba(34,197,94,0.22); }
.ncd-chip-wa { background:rgba(37,211,102,0.1) !important; border-color:rgba(37,211,102,0.22) !important; color:#25d366 !important; }
.ncd-chip-wa:hover { background:rgba(37,211,102,0.2) !important; }

/* NCD password block */
.ncd-pw-block { display:flex; flex-direction:column; gap:5px; }
.ncd-pw-row { display:flex; align-items:center; gap:6px; padding:5px 8px; background:rgba(255,255,255,0.04); border-radius:7px; }
.ncd-pw-label { font-size:0.72rem; color:rgba(255,255,255,0.4); font-family:var(--font-ar); flex-shrink:0; min-width:52px; }
.ncd-pw-val { font-size:0.78rem; color:var(--text); font-family:var(--font-en); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ncd-pw-dots { font-size:0.78rem; color:rgba(255,255,255,0.5); font-family:var(--font-en); flex:1; letter-spacing:2px; }
.ncd-pw-eye, .ncd-pw-copy { background:rgba(255,255,255,0.06); border:1px solid rgba(255,255,255,0.1); border-radius:5px; color:rgba(255,255,255,0.5); font-size:0.72rem; cursor:pointer; padding:2px 6px; transition:background .14s; flex-shrink:0; }
.ncd-pw-eye:hover, .ncd-pw-copy:hover { background:rgba(255,255,255,0.14); color:var(--text); }

/* ─── NCD: respect prefers-reduced-motion ─────────────── */
@media (prefers-reduced-motion: reduce) {
  .ncd-progress-fill,
  .ncd-counter-tap,
  .ncd-habit-row,
  .ncd-habit-dot,
  .ncd-tc-btn,
  .ncd-cmd-copy,
  .ncd-qt-copy,
  .ncd-pw-eye, .ncd-pw-copy,
  .ncd-reminder-done-btn,
  .ncd-contact-chip,
  .ncd-mood-btn,
  .cld-row { transition: none !important; }
  .ncd-counter-tap:active,
  .ncd-tc-btn:active,
  .ncd-mood-btn.ncd-mood-active,
  .ncd-mood-btn:active,
  .cld-row:active { transform: none !important; }
  .ncd-metric-num.ncd-counter-bump { animation: none !important; }
}

/* ─── Note dashboard card (editor-sheet immersive) ──────── */
.card.note-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 310px;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease, border-color 0.22s ease;
}
.card.note-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.4);
}
.card.note-dash-card > .bento-glow-bg {
  display: none !important;
}

.note-dash-shell {
  display: flex;
  flex-direction: column;
  flex: 1;
  min-height: 0;
  height: 100%;
}
.note-dash-hero {
  position: relative;
  height: 150px;
  padding: 12px 15px 10px;
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  gap: 0;
  overflow: hidden;
  flex-shrink: 0;
}
.note-sev-upcoming .note-dash-hero { background: linear-gradient(135deg, #1a1530 0%, #2d2450 60%, #3f3570 100%); }
.note-sev-none     .note-dash-hero { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }
.nd-hero-noise {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 18% 28%, rgba(255,255,255,0.08) 0, transparent 38%),
    radial-gradient(circle at 82% 72%, rgba(255,255,255,0.05) 0, transparent 46%);
  pointer-events: none;
  z-index: 1;
}
.nd-hero-overlay {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 58% 52% at 54% 48%, rgba(0,0,0,0.52) 0%, rgba(0,0,0,0.18) 44%, rgba(0,0,0,0) 76%),
    linear-gradient(180deg, rgba(0,0,0,0.14) 0%, rgba(0,0,0,0.04) 36%, rgba(0,0,0,0.52) 84%, rgba(12,10,18,0.92) 100%);
  pointer-events: none;
  z-index: 1;
}

.nd-hero-top,
.nd-hero-center,
.nd-hero-bottom {
  position: relative;
  z-index: 2;
}
.nd-hero-top,
.nd-hero-bottom {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}
.nd-top-badge {
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  font-size: 0.72rem;
  line-height: 1.2;
}
.nd-type-badge {
  font-family: var(--font-ar);
  font-weight: 700;
}
.nd-meta-badge {
  font-family: var(--font-mono, monospace);
  color: #c4b5fd;
  border-color: rgba(139,92,246,0.4);
}
.nd-hero-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 8px;
  text-align: center;
  flex: 1;
}
.nd-hero-title {
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.75rem;
  font-weight: 800;
  line-height: 1.18;
  color: #fff;
  letter-spacing: -0.01em;
  text-shadow: 0 2px 20px rgba(0,0,0,0.85), 0 1px 3px rgba(0,0,0,0.75), 0 0 1px rgba(0,0,0,0.5);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}
.nd-hero-title-empty {
  color: rgba(255,255,255,0.55);
  font-weight: 600;
  font-size: 1.4rem;
}
.nd-hero-tail {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(255,255,255,0.88);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
}
.nd-hero-bottom {
  align-items: center;
  justify-content: flex-start;
  min-height: 0;
}
.nd-hero-bottom:empty,
.nd-hero-bottom:has(.nd-preview:empty) { display: none; }
.nd-preview {
  flex: 1;
  min-width: 0;
  font-family: var(--font-ar);
  font-size: 0.85rem;
  color: rgba(255,255,255,0.82);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  opacity: 0.92;
}
.nd-preview:empty { display: none; }
.nd-line-empty {
  color: rgba(255,255,255,0.45);
}

.note-dash-body {
  padding: 10px 12px 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-height: 0;
  max-height: 180px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.note-dash-body::-webkit-scrollbar { width: 6px; }
.note-dash-body::-webkit-scrollbar-track { background: transparent; }
.note-dash-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1);
  border-radius: 3px;
}
.nd-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 9px;
  transition: background 0.15s, border-color 0.15s;
}
.nd-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
.nd-row-text {
  flex: 1;
  min-width: 0;
  font-family: var(--font-ar);
  font-size: 0.84rem;
  color: rgba(255,255,255,0.88);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.nd-empty {
  padding: 16px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
}

.note-dash-foot {
  padding: 8px 14px 10px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.nd-foot-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted);
  opacity: 0.8;
}
.nd-foot-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}
.nd-foot-btn {
  padding: 5px 11px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s, color 0.15s;
}
.nd-foot-btn:hover {
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.35);
  color: #fff;
}

.card.note-dash-card .card-actions {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 4;
  display: flex;
  gap: 4px;
  opacity: 0;
  transition: opacity 0.18s;
}
.card.note-dash-card:hover .card-actions { opacity: 1; }
.card.note-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff;
  border-radius: 8px;
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.8rem;
  cursor: pointer;
}
.card.note-dash-card .card-actions .card-delete:hover {
  background: rgba(239,68,68,0.6);
}
.card.note-dash-card .card-actions .card-edit:hover {
  background: rgba(139,92,246,0.7);
}

@media (max-width: 640px) {
  .card.note-dash-card {
    height: 372px;
    min-height: 372px;
  }
  .note-dash-hero {
    height: 170px;
    padding: 11px 13px;
  }
  .nd-hero-title { font-size: 1.4rem; }
  .nd-hero-tail { font-size: 0.72rem; }
  .nd-preview { font-size: 0.78rem; }
  .note-dash-body { max-height: 180px; }
}

/* ════════════════════════════════════════════════════════
   WiFi Dash Card (hero-first)
   ════════════════════════════════════════════════════════ */
.card.wifi-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 360px;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease;
}
.card.wifi-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(20,184,166,0.35);
}
.card.wifi-dash-card > .bento-glow-bg { display: none !important; }
.wifi-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }

.wifi-dash-hero {
  position: relative;
  height: 180px;
  padding: 13px 15px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.wifi-sev-ok   .wifi-dash-hero { background: linear-gradient(135deg, #0a2825 0%, #1a4540 60%, #276660 100%); }
.wifi-sev-none .wifi-dash-hero { background: linear-gradient(135deg, #1f1f23 0%, #2e2e33 60%, #3d3d44 100%); }

.wd-hero-noise {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,0.07) 0, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(255,255,255,0.05) 0, transparent 45%);
}
.wd-hero-art {
  position: absolute;
  top: 50%;
  left: 16px;
  transform: translateY(-50%);
  z-index: 0;
  pointer-events: none;
  color: #5eead4;
  opacity: 0.28;
  filter: drop-shadow(0 4px 16px rgba(0,0,0,0.55));
}
.wd-art-wave { width: 128px; height: 128px; }
.wd-hero-overlay {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0) 75%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
}
.wd-hero-top, .wd-hero-center, .wd-hero-bottom { position: relative; z-index: 2; }
.wd-hero-top {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.wd-top-badge {
  padding: 4px 10px; border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff; font-family: var(--font-ar);
  font-size: 0.72rem; line-height: 1.2;
}
.wd-sec-locked { color: #99f6e4; border-color: rgba(20,184,166,0.45); }
.wd-sec-open   { color: #fde68a; border-color: rgba(251,191,36,0.45); }
.wd-hero-center {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px; padding: 0 8px; text-align: center;
}
.wd-ssid {
  margin: 0;
  font-family: var(--font-mono, monospace);
  font-size: 1.75rem; font-weight: 800; line-height: 1.15;
  color: #fff;
  letter-spacing: 0.01em;
  word-break: break-all;
  text-shadow: 0 2px 10px rgba(0,0,0,0.18);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.wd-ssid mark {
  background: transparent;
  color: inherit;
  padding: 0;
  border-radius: 0;
  box-shadow: none;
}
.wd-note {
  font-family: var(--font-ar); font-size: 0.78rem;
  color: rgba(255,255,255,0.88);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
}
.wd-hero-bottom {
  display: flex; justify-content: center; align-items: center; min-height: 20px;
}
.wd-hint {
  font-family: var(--font-ar); font-size: 0.72rem;
  color: rgba(255,255,255,0.7);
  text-shadow: 0 2px 8px rgba(0,0,0,0.7);
}
.wifi-dash-body {
  padding: 12px 14px;
  display: flex; flex-direction: column; gap: 6px;
  flex: 1;
}
.wd-pass-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
}
.wd-pass-label {
  font-family: var(--font-ar); font-size: 0.72rem;
  color: rgba(255,255,255,0.6);
  flex-shrink: 0;
}
.wd-pass-dots {
  flex: 1;
  font-family: var(--font-mono, monospace);
  font-size: 0.95rem;
  color: #fff;
  letter-spacing: 0.05em;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.wd-pass-btn {
  padding: 5px 10px;
  background: rgba(20,184,166,0.1);
  border: 1px solid rgba(20,184,166,0.25);
  border-radius: 7px;
  color: #99f6e4; cursor: pointer; font-size: 0.85rem;
  transition: background 0.15s;
}
.wd-pass-btn:hover { background: rgba(20,184,166,0.2); }
.wd-empty {
  padding: 14px; text-align: center;
  color: rgba(255,255,255,0.5);
  font-family: var(--font-ar); font-size: 0.82rem;
}
.wifi-dash-foot {
  padding: 10px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px; flex-shrink: 0; min-height: 52px;
}
.wd-foot-actions { display: flex; gap: 6px; }
.wd-foot-btn {
  padding: 5px 12px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar); font-size: 0.78rem; font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.wd-foot-btn:hover {
  background: rgba(20,184,166,0.12);
  border-color: rgba(20,184,166,0.4);
  color: #fff;
}
.wd-foot-time {
  font-family: var(--font-mono, monospace); font-size: 0.72rem;
  color: var(--muted); opacity: 0.8;
}
.card.wifi-dash-card .card-actions {
  position: absolute; top: 10px; left: 10px; z-index: 4;
  display: flex; gap: 4px; opacity: 0; transition: opacity 0.18s;
}
.card.wifi-dash-card:hover .card-actions { opacity: 1; }
.card.wifi-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff; border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 0.8rem; cursor: pointer;
}

/* ════════════════════════════════════════════════════════
   Link Dash Card  ·  Spec-compliant (2025-04)
   ─────────────────────────────────────────────────────
   Header Zone : 44px  — badges (type + domain)
   Hero Zone   : flex:1 — favicon art + title + url
   Footer Zone : 52px  — actions (فتح / نسخ) + time
   Horizontal padding : 16px throughout
   Border radius      : 20px card / 20px badges (pill)
   Typography         : title 26px/900 · url 12px/400
   ════════════════════════════════════════════════════════ */
.card.link-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 360px;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease;
}
.card.link-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.35);
}
.card.link-dash-card > .bento-glow-bg { display: none !important; }
.link-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }

/* ── Hero Zone (matches .wifi-dash-hero pattern) ── */
.link-dash-hero {
  position: relative;
  height: 180px;
  padding: 13px 15px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.link-sev-upcoming .link-dash-hero { background: linear-gradient(135deg, #1a1530 0%, #2d2450 60%, #3a3060 100%); }
.link-sev-none     .link-dash-hero { background: linear-gradient(135deg, #1c1c22 0%, #28282f 60%, #323238 100%); }

.ld-hero-noise {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background-image:
    radial-gradient(circle at 15% 25%, rgba(255,255,255,0.07) 0, transparent 38%),
    radial-gradient(circle at 82% 72%, rgba(255,255,255,0.05) 0, transparent 42%);
}
.ld-hero-art {
  position: absolute;
  top: 50%;
  left: 16px;
  transform: translateY(-50%);
  z-index: 0; pointer-events: none;
  opacity: 0.28;
  filter: drop-shadow(0 4px 16px rgba(0,0,0,0.55));
}
.ld-art-favicon {
  width: 128px; height: 128px;
  border-radius: 22px;
  object-fit: contain;
  background: rgba(255,255,255,0.03);
}
.ld-hero-overlay {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background:
    radial-gradient(ellipse 60% 55% at 42% 50%, rgba(0,0,0,0.52) 0%, rgba(0,0,0,0.22) 48%, transparent 76%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
}
.ld-hero-top, .ld-hero-center, .ld-hero-bottom { position: relative; z-index: 2; }
.ld-hero-top {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.ld-top-badge {
  padding: 4px 10px; border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff; font-family: var(--font-ar);
  font-size: 0.72rem; line-height: 1.2;
  font-weight: 700;
  white-space: nowrap;
}
.ld-type-badge { color: #ddd6fe; border-color: rgba(139,92,246,0.45); }
.ld-domain-badge {
  color: #c4b5fd;
  font-family: var(--font-mono, monospace);
  font-size: 0.7rem;
  max-width: 160px; overflow: hidden; text-overflow: ellipsis;
}
.ld-hero-center {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 6px;
  text-align: center;
  padding: 0 8px;
}
.ld-title {
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.75rem;
  font-weight: 900;
  line-height: 1.15;
  color: #fff;
  letter-spacing: 0.01em;
  text-shadow: 0 2px 10px rgba(0,0,0,0.6), 0 1px 3px rgba(0,0,0,0.7);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  word-break: break-word;
}
.ld-hero-bottom {
  display: flex; justify-content: center; align-items: center; min-height: 20px;
}
.ld-hint {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  color: rgba(255,255,255,0.7);
  text-shadow: 0 2px 8px rgba(0,0,0,0.7);
}

/* ── Body Zone (mirrors .wifi-dash-body + .wd-pass-row) ── */
.link-dash-body {
  padding: 12px 14px;
  display: flex; flex-direction: column; gap: 6px;
  flex: 1;
}
.ld-url-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 10px;
}
.ld-url-label {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  color: rgba(255,255,255,0.55);
  flex-shrink: 0;
}
.ld-url-val {
  flex: 1;
  font-family: var(--font-mono, monospace);
  font-size: 0.82rem;
  font-weight: 500;
  color: #c4b5fd;
  direction: ltr;
  text-align: left;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
.ld-url-btn {
  flex-shrink: 0;
  width: 30px; height: 30px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(139,92,246,0.12);
  border: 1px solid rgba(139,92,246,0.3);
  color: #ddd6fe;
  border-radius: 8px;
  font-size: 0.95rem; font-weight: 700;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.ld-url-btn:hover {
  background: rgba(139,92,246,0.22);
  border-color: rgba(139,92,246,0.5);
  color: #fff;
}

/* ── Footer Zone (mirrors .wifi-dash-foot) ── */
.link-dash-foot {
  padding: 10px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px;
  flex-shrink: 0;
  min-height: 52px;
}
.ld-foot-actions { display: flex; gap: 6px; }
.ld-foot-btn {
  padding: 5px 12px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar); font-size: 0.78rem; font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.ld-foot-btn:hover {
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.4);
  color: #fff;
}
.ld-foot-btn-primary {
  background: rgba(139,92,246,0.2);
  border-color: rgba(139,92,246,0.45);
  color: #ddd6fe;
}
.ld-foot-btn-primary:hover {
  background: rgba(139,92,246,0.32);
  border-color: rgba(139,92,246,0.65);
  color: #fff;
}
.ld-foot-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  color: var(--muted); opacity: 0.8;
}

/* ── Card actions (hover) ── */
.card.link-dash-card .card-actions {
  position: absolute; top: 10px; left: 10px; z-index: 4;
  display: flex; gap: 4px; opacity: 0; transition: opacity 0.18s;
}
.card.link-dash-card:hover .card-actions { opacity: 1; }
.card.link-dash-card .card-actions button {
  background: rgba(0,0,0,0.6);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff; border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 0.8rem; cursor: pointer;
}

/* Link page parity: old .filter-links rules used to compress link cards.
   Keep link cards on the exact same shell measurements as Wi-Fi cards. */
.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] {
  padding: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  min-height: 320px !important;
  height: 320px !important;
  max-width: none !important;
  grid-template-columns: none !important;
  grid-template-rows: none !important;
  gap: 0 !important;
  align-items: stretch !important;
  border-radius: 16px !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .link-dash-shell {
  display: flex !important;
  flex-direction: column !important;
  flex: 1 1 auto !important;
  min-height: 0 !important;
  height: 100% !important;
  width: 100% !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .link-dash-hero {
  height: 152px !important;
  min-height: 152px !important;
  padding: 12px 14px !important;
  flex-shrink: 0 !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .ld-art-favicon {
  width: 104px !important;
  height: 104px !important;
  border-radius: 18px !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .ld-title {
  font-size: 1.55rem !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .link-dash-body {
  padding: 10px 14px !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 6px !important;
  flex: 1 1 auto !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .ld-url-row {
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 9px 11px !important;
  border-radius: 10px !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .link-dash-foot {
  min-height: 48px !important;
  padding: 8px 14px !important;
  display: flex !important;
  justify-content: space-between !important;
  align-items: center !important;
  gap: 8px !important;
  flex-shrink: 0 !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .card-actions {
  position: absolute !important;
  top: 10px !important;
  left: 10px !important;
  right: auto !important;
  bottom: auto !important;
  display: flex !important;
  gap: 4px !important;
  opacity: 0 !important;
  transform: none !important;
  pointer-events: none !important;
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  justify-self: auto !important;
  align-self: auto !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"]:hover .card-actions,
.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"].card-expanded .card-actions {
  opacity: 1 !important;
  pointer-events: auto !important;
}

.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .card-type-badge,
.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .card-icon,
.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .card-title,
.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .card-meta,
.dashboard.filter-links .dash-grid .card.link-dash-card[data-type="link"] .card-timestamp {
  display: none !important;
}

/* ════════════════════════════════════════════════════════
   Page Dash Card (hero-first)
   ════════════════════════════════════════════════════════ */
.card.page-dash-card {
  padding: 0 !important;
  overflow: hidden;
  border-radius: 16px;
  position: relative;
  display: flex;
  flex-direction: column;
  min-height: 340px;
  box-shadow: 0 14px 34px rgba(0,0,0,0.48);
  transition: box-shadow 0.22s ease;
}
.card.page-dash-card:hover {
  transform: none !important;
  box-shadow: 0 18px 42px rgba(0,0,0,0.55), 0 0 0 1px rgba(251,191,36,0.35);
}
.card.page-dash-card > .bento-glow-bg { display: none !important; }
.page-dash-shell { display: flex; flex-direction: column; flex: 1; min-height: 0; height: 100%; }

.page-dash-hero {
  position: relative;
  height: 190px;
  padding: 13px 15px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  overflow: hidden;
  flex-shrink: 0;
}
.page-sev-none     .page-dash-hero { background: linear-gradient(135deg, #2a1e08 0%, #4d3810 60%, #6b5020 100%); }
.page-sev-upcoming .page-dash-hero { background: linear-gradient(135deg, #1a1530 0%, #2d2450 60%, #3f3570 100%); }

.pd-hero-noise {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,0.07) 0, transparent 40%),
    radial-gradient(circle at 80% 70%, rgba(255,255,255,0.05) 0, transparent 45%);
}
.pd-hero-art {
  position: absolute;
  top: 50%;
  left: 14px;
  transform: translateY(-50%) rotate(-8deg);
  z-index: 0;
  pointer-events: none;
  color: #fbbf24;
  opacity: 0.18;
  filter: drop-shadow(0 4px 18px rgba(0,0,0,0.6));
}
.pd-art-folder { width: 140px; height: 112px; }
.pd-hero-overlay {
  position: absolute; inset: 0; pointer-events: none; z-index: 1;
  background:
    radial-gradient(ellipse 55% 50% at 50% 50%, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0.25) 45%, rgba(0,0,0,0) 75%),
    linear-gradient(180deg, rgba(0,0,0,0.18) 0%, rgba(0,0,0,0.05) 40%, rgba(0,0,0,0.55) 80%, rgba(12,10,18,0.9) 100%);
}
.pd-hero-top, .pd-hero-center, .pd-hero-bottom { position: relative; z-index: 2; }
.pd-hero-top {
  display: flex; justify-content: space-between; align-items: center; gap: 10px;
}
.pd-top-badge {
  padding: 4px 10px; border-radius: 999px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff; font-size: 0.72rem; line-height: 1.2;
  font-family: var(--font-ar);
}
.pd-count-badge {
  color: #fde68a; border-color: rgba(251,191,36,0.4);
  font-family: var(--font-mono, monospace);
}
.pd-hero-center {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px; padding: 0 8px; text-align: center;
}
.pd-title {
  margin: 0;
  font-family: var(--font-ar);
  font-size: 1.9rem; font-weight: 800; line-height: 1.15;
  color: #fff;
  letter-spacing: -0.01em;
  text-shadow: 0 2px 20px rgba(0,0,0,0.85), 0 1px 3px rgba(0,0,0,0.75), 0 0 1px rgba(0,0,0,0.5);
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  word-break: break-word;
  direction: ltr;
}
.pd-tail {
  font-family: var(--font-ar); font-size: 0.78rem;
  color: rgba(255,255,255,0.88);
  text-shadow: 0 2px 10px rgba(0,0,0,0.85), 0 1px 2px rgba(0,0,0,0.7);
}
.pd-hero-bottom {
  display: flex; justify-content: flex-end; align-items: center; min-height: 24px;
}
.pd-breakdown { display: flex; gap: 5px; flex-wrap: wrap; justify-content: flex-end; }
.pd-type-chip {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 3px 8px;
  background: rgba(0,0,0,0.5);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  border-radius: 999px;
  font-size: 0.68rem;
  color: rgba(255,255,255,0.88);
}
.pd-type-icon { font-size: 0.85rem; }
.pd-type-n { font-family: var(--font-mono, monospace); font-weight: 700; }
.page-dash-body {
  padding: 10px 12px 8px;
  display: flex; flex-direction: column; gap: 4px;
  flex: 1;
  max-height: 200px;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: rgba(255,255,255,0.12) transparent;
}
.page-dash-body::-webkit-scrollbar { width: 6px; }
.page-dash-body::-webkit-scrollbar-track { background: transparent; }
.page-dash-body::-webkit-scrollbar-thumb {
  background: rgba(255,255,255,0.1); border-radius: 3px;
}
.pd-row {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 9px;
  transition: background 0.15s, border-color 0.15s;
}
.pd-row:hover {
  background: rgba(255,255,255,0.04);
  border-color: rgba(255,255,255,0.1);
}
.pd-row-icon {
  width: 26px; height: 26px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 7px;
  background: rgba(251,191,36,0.1);
  border: 1px solid rgba(251,191,36,0.18);
  flex-shrink: 0;
  font-size: 0.9rem;
}
.pd-row-title {
  flex: 1; min-width: 0;
  font-family: var(--font-ar);
  font-size: 0.84rem;
  color: rgba(255,255,255,0.88);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.pd-empty {
  padding: 16px; text-align: center;
  color: var(--muted);
  font-family: var(--font-ar); font-size: 0.82rem;
}
.page-dash-foot {
  padding: 10px 14px;
  border-top: 1px dashed rgba(255,255,255,0.08);
  display: flex; justify-content: space-between; align-items: center;
  gap: 8px; flex-shrink: 0; min-height: 52px;
}
.pd-foot-actions { display: flex; gap: 6px; }
.pd-foot-btn {
  padding: 5px 12px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 999px;
  color: rgba(255,255,255,0.88);
  font-family: var(--font-ar); font-size: 0.78rem; font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.pd-foot-btn:hover {
  background: rgba(251,191,36,0.12);
  border-color: rgba(251,191,36,0.4);
  color: #fff;
}
.pd-foot-btn-primary {
  background: rgba(251,191,36,0.18);
  border-color: rgba(251,191,36,0.45);
  color: #fde68a;
}
.pd-foot-btn-primary:hover {
  background: rgba(251,191,36,0.3);
  border-color: rgba(251,191,36,0.65);
}
.pd-foot-time {
  font-family: var(--font-mono, monospace); font-size: 0.72rem;
  color: var(--muted); opacity: 0.8;
}
.card.page-dash-card .card-actions {
  position: absolute; top: 10px; left: 10px; z-index: 4;
  display: flex; gap: 4px; opacity: 0; transition: opacity 0.18s;
}
.card.page-dash-card:hover .card-actions { opacity: 1; }
.card.page-dash-card .card-actions button {
  background: rgba(0,0,0,0.55);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,0.15);
  color: #fff; border-radius: 8px;
  width: 28px; height: 28px;
  display: inline-flex; align-items: center; justify-content: center;
  font-size: 0.8rem; cursor: pointer;
}

/* ─── Dashboard Card Size Parity ───────────────────────────
   Desktop cards must keep the same footprint in every filter.
   The shell stays fixed; inner bodies adapt with scroll. */
@media (min-width: 769px) {
  .dash-grid .card.trip-dash-card,
  .dash-grid .card.status-dash-card,
  .dash-grid .card.sub-dash-card,
  .dash-grid .card.checklist-dash-card,
  .dash-grid .card.note-dash-card,
  .dash-grid .card.wifi-dash-card,
  .dash-grid .card.link-dash-card,
  .dash-grid .card.page-dash-card,
  .dash-grid .card.doc-dash-card,
  .dash-grid .card.stocks-dash-card,
  .dash-grid .card.vehicle-dash-card,
  .dash-grid .card.medicine-dash-card,
  #page-grid .card.trip-dash-card,
  #page-grid .card.status-dash-card,
  #page-grid .card.sub-dash-card,
  #page-grid .card.checklist-dash-card,
  #page-grid .card.note-dash-card,
  #page-grid .card.wifi-dash-card,
  #page-grid .card.link-dash-card,
  #page-grid .card.page-dash-card,
  #page-grid .card.doc-dash-card,
  #page-grid .card.stocks-dash-card,
  #page-grid .card.vehicle-dash-card,
  #page-grid .card.medicine-dash-card {
    display: flex !important;
    flex-direction: column !important;
    height: 320px !important;
    min-height: 320px !important;
    align-self: start !important;
  }

  .dash-grid .trip-dash-shell,
  .dash-grid .status-dash-shell,
  .dash-grid .sub-dash-shell,
  .dash-grid .checklist-dash-shell,
  .dash-grid .note-dash-shell,
  .dash-grid .wifi-dash-shell,
  .dash-grid .link-dash-shell,
  .dash-grid .page-dash-shell,
  .dash-grid .doc-dash-shell,
  .dash-grid .stocks-dash-shell,
  .dash-grid .vehicle-dash-shell,
  .dash-grid .medicine-dash-shell,
  #page-grid .trip-dash-shell,
  #page-grid .status-dash-shell,
  #page-grid .sub-dash-shell,
  #page-grid .checklist-dash-shell,
  #page-grid .note-dash-shell,
  #page-grid .wifi-dash-shell,
  #page-grid .link-dash-shell,
  #page-grid .page-dash-shell,
  #page-grid .doc-dash-shell,
  #page-grid .stocks-dash-shell,
  #page-grid .vehicle-dash-shell,
  #page-grid .medicine-dash-shell {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    height: 100% !important;
  }

  .dash-grid .trip-dash-body,
  .dash-grid .status-dash-body,
  .dash-grid .sub-dash-body,
  .dash-grid .checklist-dash-body,
  .dash-grid .note-dash-body,
  .dash-grid .wifi-dash-body,
  .dash-grid .link-dash-body,
  .dash-grid .page-dash-body,
  .dash-grid .doc-dash-body,
  .dash-grid .stocks-dash-body,
  .dash-grid .vehicle-dash-body,
  .dash-grid .medicine-dash-body,
  #page-grid .trip-dash-body,
  #page-grid .status-dash-body,
  #page-grid .sub-dash-body,
  #page-grid .checklist-dash-body,
  #page-grid .note-dash-body,
  #page-grid .wifi-dash-body,
  #page-grid .link-dash-body,
  #page-grid .page-dash-body,
  #page-grid .doc-dash-body,
  #page-grid .stocks-dash-body,
  #page-grid .vehicle-dash-body,
  #page-grid .medicine-dash-body {
    flex: 1 1 auto !important;
    min-height: 0 !important;
    max-height: none !important;
    overflow-y: auto !important;
  }
}

/* Mobile tweaks */
@media (max-width: 640px) {
  .card.wifi-dash-card { min-height: 320px; }
  .wifi-dash-hero { height: 160px; padding: 11px 13px; }
  .wd-ssid { font-size: 1.4rem; }
  .wd-art-wave { width: 108px; height: 108px; }

  .card.link-dash-card { min-height: 320px; }
  .link-dash-hero { height: 160px; padding: 11px 13px; }
  .ld-title { font-size: 1.4rem; }
  .ld-url-val { font-size: 0.74rem; }
  .ld-art-favicon { width: 108px; height: 108px; }

  .card.page-dash-card { min-height: 310px; }
  .page-dash-hero { height: 170px; padding: 11px 13px; }
  .pd-title { font-size: 1.5rem; }
  .pd-art-folder { width: 116px; height: 92px; }
  .page-dash-body { max-height: 170px; }
}

/* ─── Global window close + delete consistency ────────────────────────── */
.modal-box,
.fp-sheet,
.pomodoro-sheet,
.sp-panel,
.ctx-sheet,
.tp-shell,
.te-shell,
.approval-popup-inner,
.act-sheet,
.goals-sheet {
  position: relative;
}

.modal-header,
.fp-header,
.pomodoro-header,
.sp-head,
.ctx-sheet-head,
.tp-header,
.act-header,
.goals-header {
  position: relative;
  padding-left: 58px;
}

.close-btn,
.fp-close,
.pomodoro-close,
.sp-close-btn,
.ctx-sheet-close,
.tp-close,
.te-close-window,
.act-close,
.goals-close {
  position: absolute !important;
  top: 16px;
  left: 16px;
  z-index: 12;
  width: 34px;
  height: 34px;
  padding: 0;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(239,68,68,0.14) !important;
  border: 1px solid rgba(239,68,68,0.26) !important;
  color: #fca5a5 !important;
  box-shadow: 0 10px 24px rgba(0,0,0,0.22);
  transition: background .15s, border-color .15s, color .15s, transform .15s;
}

.close-btn:hover,
.fp-close:hover,
.pomodoro-close:hover,
.sp-close-btn:hover,
.ctx-sheet-close:hover,
.tp-close:hover,
.te-close-window:hover,
.act-close:hover,
.goals-close:hover {
  background: rgba(239,68,68,0.22) !important;
  border-color: rgba(239,68,68,0.45) !important;
  color: #fff !important;
  transform: scale(1.04);
}

.card-delete,
.btn-remove-item,
.btn-remove-doc,
.btn-remove-sub,
.trip-card-del,
.trip-booking-del,
.trip-dest-del,
.goal-delete,
.sn-delete-btn,
.settings-tag-del,
.bulk-act-danger,
.ctx-item.ctx-danger {
  color: #fca5a5 !important;
  border-color: rgba(239,68,68,0.28) !important;
  background: rgba(239,68,68,0.12) !important;
}

.card-delete:hover,
.btn-remove-item:hover,
.btn-remove-doc:hover,
.btn-remove-sub:hover,
.trip-card-del:hover,
.trip-booking-del:hover,
.trip-dest-del:hover,
.goal-delete:hover,
.sn-delete-btn:hover,
.settings-tag-del:hover,
.bulk-act-danger:hover,
.ctx-item.ctx-danger:hover {
  color: #fff !important;
  background: rgba(239,68,68,0.22) !important;
  border-color: rgba(239,68,68,0.46) !important;
}

/* ─── Secure Portal Login Landing ─────────────────────────────────────── */
.login-screen {
  display: grid !important;
  place-items: center !important;
  min-height: 100dvh !important;
  padding: clamp(20px, 4vw, 48px) !important;
  background:
    radial-gradient(circle at 50% 42%, rgba(89,216,255,0.12), transparent 18%),
    radial-gradient(circle at 18% 92%, rgba(48,213,160,0.12), transparent 24%),
    radial-gradient(circle at 86% 8%, rgba(139,92,246,0.12), transparent 26%),
    linear-gradient(180deg, rgba(3, 8, 14, 0.96), rgba(4, 9, 15, 0.99)) !important;
  overflow: hidden !important;
}

.login-screen::before,
.login-screen::after {
  content: '';
  position: absolute;
  pointer-events: none;
}

.login-screen::before {
  inset: 0;
  background:
    linear-gradient(to right, rgba(108,140,180,0.09) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(108,140,180,0.09) 1px, transparent 1px);
  background-size: 64px 64px;
  opacity: 0.34;
  mask-image: radial-gradient(circle at 50% 48%, rgba(0,0,0,0.92), transparent 72%);
}

.login-screen::after {
  width: min(76vw, 920px);
  height: min(76vw, 920px);
  border-radius: 999px;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -48%);
  background:
    radial-gradient(circle, rgba(89,216,255,0.08), transparent 58%),
    radial-gradient(circle at 66% 34%, rgba(255,79,170,0.06), transparent 42%);
  filter: blur(18px);
}

.login-grid {
  opacity: 0 !important;
}

.login-noise {
  opacity: 0.07 !important;
  mix-blend-mode: screen;
}

.login-box {
  width: min(92vw, 540px) !important;
  min-height: 430px;
  padding: 34px 38px 30px !important;
  gap: 16px !important;
  align-items: center !important;
  justify-content: center;
  border-radius: 34px !important;
  background:
    linear-gradient(90deg, rgba(89,216,255,0.85), rgba(255,79,170,0.28)) top/100% 2px no-repeat,
    radial-gradient(circle at 50% 0%, rgba(89,216,255,0.11), transparent 34%),
    linear-gradient(180deg, rgba(255,255,255,0.035), rgba(255,255,255,0.012)),
    rgba(8, 14, 22, 0.9) !important;
  border: 1px solid rgba(125,164,212,0.18) !important;
  box-shadow:
    0 36px 90px rgba(0,0,0,0.68),
    0 0 0 1px rgba(89,216,255,0.05),
    inset 0 1px 0 rgba(255,255,255,0.06) !important;
  backdrop-filter: blur(22px) saturate(118%);
  -webkit-backdrop-filter: blur(22px) saturate(118%);
  z-index: 1;
}

.login-box::before {
  top: 128px !important;
  background: linear-gradient(90deg, transparent, rgba(118,149,188,0.18), transparent) !important;
}

.login-box::after {
  width: 280px !important;
  height: 280px !important;
  left: -96px !important;
  bottom: -142px !important;
  background: radial-gradient(circle, rgba(89,216,255,0.22), transparent 68%) !important;
}

.login-portal-kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 13px;
  border-radius: 999px;
  background: rgba(0,0,0,0.34);
  border: 1px solid rgba(125,164,212,0.16);
  color: rgba(210,222,240,0.74);
  font-family: var(--font-mono);
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  direction: ltr;
}

.login-portal-kicker span {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #36d399;
  box-shadow: 0 0 16px rgba(54,211,153,0.8);
}

.login-logo {
  font-size: clamp(2rem, 2.9vw, 2.55rem) !important;
  line-height: 1;
  margin: 12px 0 4px !important;
  letter-spacing: 0.06em !important;
  padding: 0;
  border-radius: 0;
  background: transparent;
  border: 0;
  text-shadow: none;
  cursor: pointer;
  transition: transform .18s ease, filter .18s ease, opacity .18s ease;
}

.login-logo:hover {
  transform: translateY(-2px) scale(1.015);
  filter: brightness(1.08);
}

.login-logo:active {
  transform: translateY(0) scale(0.99);
}

.login-logo:focus-visible {
  outline: 2px solid rgba(89,216,255,0.7);
  outline-offset: 8px;
  border-radius: 18px;
}

.login-logo img {
  display: block;
  width: clamp(320px, 42vw, 460px);
  height: auto;
  user-select: none;
  -webkit-user-drag: none;
  filter:
    drop-shadow(0 18px 34px rgba(0,0,0,0.5))
    drop-shadow(0 0 18px rgba(255,255,255,0.05));
}

.login-logo .logo-letter {
  background: linear-gradient(180deg, #f4f6fb 0%, #b5bcc8 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

.login-logo .logo-dot {
  color: var(--accent);
  margin: 0 2px;
  opacity: 0.95;
  text-shadow: 0 0 18px rgba(139,92,246,0.34);
}

.login-portal-subtitle {
  margin: -4px 0 10px;
  color: rgba(218,226,238,0.78);
  font-family: var(--font-ar);
  font-size: 0.98rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.login-box #request-access-wrap,
.login-box #waiting-approval {
  width: min(100%, 390px) !important;
  margin-top: 4px;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.025), rgba(255,255,255,0.01)),
    rgba(3, 10, 18, 0.56) !important;
  border-color: rgba(125,164,212,0.13) !important;
}

.login-box .biometric-btn,
.login-box .request-access-btn {
  width: min(100%, 390px) !important;
  min-height: 60px !important;
  border-radius: 20px !important;
}

.login-box .pin-fallback-link {
  margin-top: 4px !important;
}

@media (max-width: 768px) {
  .login-screen {
    padding: 20px 16px !important;
    overflow: auto !important;
  }

  .login-box {
    width: min(100%, 390px) !important;
    min-height: 390px;
    padding: 28px 20px 22px !important;
    border-radius: 28px !important;
  }

  .login-box::before {
    top: 116px !important;
  }

  .login-portal-kicker {
    font-size: 0.62rem;
    padding: 6px 11px;
  }

  .login-logo {
    font-size: clamp(1.9rem, 9.5vw, 2.45rem) !important;
    margin-bottom: 0 !important;
    padding: 0;
  }

  .login-logo img {
    width: clamp(270px, 78vw, 350px);
  }

.login-portal-subtitle {
    font-size: 0.9rem;
    margin-bottom: 8px;
  }
}

/* Header brand mark uses the uploaded A.N.A logo instead of text. */
.dash-logo {
  /* Strip native <button> chrome (grey background, border, system font) */
  appearance: none !important;
  -webkit-appearance: none !important;
  background: transparent !important;
  background-image: none !important;
  border: none !important;
  outline: none;
  box-shadow: none !important;
  /* Layout */
  width: 44px !important;
  height: 44px !important;
  min-width: 44px !important;
  padding: 0 !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  border-radius: 12px;
  overflow: visible;
  letter-spacing: 0 !important;
  cursor: pointer;
  transition: transform .2s ease, opacity .2s ease;
}

.dash-logo:hover {
  transform: scale(1.06);
  opacity: 0.92;
}
.dash-logo:active {
  transform: scale(0.96);
}

.dash-logo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  /* Subtle glow that hugs the SVG strokes (no boxy shadow) */
  filter: drop-shadow(0 0 8px rgba(167, 139, 250, 0.28))
          drop-shadow(0 2px 6px rgba(0, 0, 0, 0.45));
  user-select: none;
  -webkit-user-drag: none;
}

@media (max-width: 768px) {
  .dash-logo {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
  }
}

/* ─── SIMPLE ICONS INTEGRATION ─── */
.si-picker-wrap {
  display: flex;
  flex-direction: column;
  padding: 12px;
  gap: 12px;
  flex: 1;
  min-height: 0;
}
.si-picker-search-wrap {
  position: relative;
  display: flex;
  align-items: center;
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 0 12px;
  height: 40px;
}
.si-picker-search-input {
  background: none;
  border: none;
  outline: none;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.9rem;
  width: 100%;
  line-height: 1.4;
}
.si-picker-results {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));
  gap: 8px;
  overflow-y: auto;
  padding-bottom: 12px;
  min-height: 200px;
  max-height: 330px;
  align-content: start;
  line-height: 1.35;
}
.si-picker-item {
  aspect-ratio: 1;
  background: rgba(255,255,255,0.03);
  border: 1px solid var(--border);
  border-radius: 12px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  cursor: pointer;
  transition: all 0.2s;
  padding: 8px;
}
.si-picker-item:hover {
  background: rgba(139,92,246,0.08);
  border-color: var(--accent);
  transform: translateY(-2px);
}
.si-picker-icon {
  width: 24px;
  height: 24px;
  filter: brightness(0) invert(1);
  opacity: 0.8;
}
.si-picker-name {
  font-size: 0.6rem;
  color: var(--muted);
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 100%;
  line-height: 1.25;
}
.si-picker-message {
  grid-column: 1 / -1;
  padding: 28px 14px;
  text-align: center;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.88rem;
  font-weight: 700;
  line-height: 1.75;
  white-space: normal;
}
.si-picker-message-warn {
  color: #fbbf24;
}
.si-picker-message-danger {
  color: #f87171;
}
.si-inline-icon {
  width: 1.2em;
  height: 1.2em;
  vertical-align: middle;
  object-fit: contain;
}
.sidebar .si-inline-icon { width: 17px; height: 17px; filter: brightness(0.85); }
.si-tab-btn {
  flex: 1;
  padding: 8px;
  background: none;
  border: none;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.85rem;
  font-weight: 700;
  cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: all 0.2s;
}
.si-tab-btn.active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}
.si-tabs-row {
  display: flex;
  background: #15151D;
  border-bottom: 1px solid var(--border);
  margin-bottom: 0;
  padding: 4px 8px 0;
}
.si-picker-wrap {
  display: flex;
  flex-direction: column;
  padding: 12px;
  gap: 12px;
  flex: 1;
  min-height: 0;
}

/* ─── TODAY PAGE (صفحة اليوم) ─────────────────────────────── */
.dash-grid.today-mode {
  display: block !important;
  grid-template-columns: none !important;
  background: transparent;
  padding: 0;
}
.today-wrap {
  max-width: 1100px;
  margin: 0 auto;
  padding: 8px 4px 40px;
  direction: rtl;
  display: flex;
  flex-direction: column;
  gap: 22px;
  animation: todayIn 0.28s ease-out both;
}
@keyframes todayIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Hero */
.today-hero {
  position: relative;
  padding: 22px 24px 20px;
  border-radius: 20px;
  background:
    radial-gradient(120% 100% at 0% 0%, rgba(139,92,246,0.25), transparent 55%),
    radial-gradient(120% 100% at 100% 100%, rgba(59,130,246,0.22), transparent 60%),
    linear-gradient(135deg, rgba(30,25,50,0.7), rgba(20,18,35,0.9));
  border: 1px solid rgba(255,255,255,0.09);
  box-shadow: 0 10px 30px rgba(0,0,0,0.35);
  overflow: hidden;
}
.today-hero-danger {
  background:
    radial-gradient(120% 100% at 0% 0%, rgba(239,68,68,0.28), transparent 55%),
    radial-gradient(120% 100% at 100% 100%, rgba(245,158,11,0.22), transparent 60%),
    linear-gradient(135deg, rgba(60,20,25,0.7), rgba(30,15,18,0.92));
}
.today-hero-warn {
  background:
    radial-gradient(120% 100% at 0% 0%, rgba(245,158,11,0.25), transparent 55%),
    radial-gradient(120% 100% at 100% 100%, rgba(139,92,246,0.2), transparent 60%),
    linear-gradient(135deg, rgba(50,35,20,0.7), rgba(25,20,15,0.9));
}
.today-hero-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.65);
}
.today-hero-date { font-weight: 600; letter-spacing: 0.3px; }
.today-hero-time { font-family: var(--font-mono, monospace); font-size: 0.78rem; opacity: 0.75; }
.today-hero-top-end {
  display: flex;
  align-items: center;
  gap: 10px;
}
/* X button on the Today page → returns to home (الرئيسية) */
.today-hero-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  padding: 0;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.07);
  color: rgba(255,255,255,0.72);
  font-size: 0.9rem;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
  -webkit-tap-highlight-color: transparent;
}
.today-hero-close:hover {
  background: rgba(255,255,255,0.14);
  color: #fff;
  border-color: rgba(255,255,255,0.20);
}
.today-hero-close:active { transform: scale(0.92); }
.today-hero-lead {
  font-size: 1.55rem;
  font-weight: 700;
  color: var(--text);
  margin: 2px 0 16px;
  line-height: 1.3;
}
.today-hero-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
  margin-bottom: 16px;
}
.today-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 14px 8px;
  border-radius: 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.07);
  transition: transform 0.15s, background 0.15s;
}
.today-stat:hover { transform: translateY(-2px); background: rgba(255,255,255,0.06); cursor: help; }
.today-stat[data-empty="1"] { opacity: 0.55; }
.today-stat[data-empty="1"]:hover { opacity: 0.75; }

/* Cursor-following tooltip for today stats */
.today-stat-tooltip {
  position: fixed; z-index: 9999; pointer-events: none;
  min-width: 280px; max-width: 380px;
  padding: 12px 14px;
  background: linear-gradient(180deg, rgba(22,18,35,0.98), rgba(15,10,31,0.98));
  border: 1px solid rgba(167,139,250,0.28);
  border-radius: 14px;
  box-shadow: 0 18px 44px rgba(0,0,0,0.55), 0 0 0 1px rgba(255,255,255,0.04);
  backdrop-filter: blur(14px);
  color: var(--text, #fff);
  opacity: 0; transform: translateY(4px);
  transition: opacity .14s ease, transform .14s ease;
  direction: rtl; text-align: right;
}
.today-stat-tooltip.is-open { opacity: 1; transform: translateY(0); }
.today-stat-tooltip .tst-head {
  display: flex; align-items: center; gap: 8px;
  padding-bottom: 10px; margin-bottom: 10px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  font-weight: 700; font-size: 0.88rem;
}
.today-stat-tooltip .tst-count {
  margin-inline-start: auto;
  background: rgba(167,139,250,0.2);
  color: #c4b5fd;
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem; font-weight: 800;
  padding: 2px 8px; border-radius: 999px;
  min-width: 22px; text-align: center;
}
.today-stat-tooltip .tst-list {
  display: flex; flex-direction: column; gap: 8px;
  max-height: 360px; overflow-y: auto;
}
.today-stat-tooltip .tst-row {
  display: grid;
  grid-template-columns: 34px 1fr auto;
  align-items: center; gap: 10px;
  padding: 8px 6px; border-radius: 10px;
  background: rgba(255,255,255,0.02);
}
.today-stat-tooltip .tst-icon {
  width: 34px; height: 34px; border-radius: 10px;
  display: flex; align-items: center; justify-content: center;
  font-size: 1rem;
  background: color-mix(in srgb, var(--tst-type-c, var(--accent)) 13%, transparent);
  color: var(--tst-type-c, var(--accent));
}
.today-stat-tooltip .tst-body { min-width: 0; }
.today-stat-tooltip .tst-title {
  font-size: 0.85rem; font-weight: 700; color: var(--text, #fff);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.today-stat-tooltip .tst-sub-text {
  font-size: 0.72rem; color: rgba(255,255,255,0.55);
  margin-top: 2px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.today-stat-tooltip .tst-badge {
  font-size: 0.68rem; font-weight: 700;
  padding: 3px 9px; border-radius: 999px;
  white-space: nowrap;
  background: color-mix(in srgb, var(--tst-badge-c, var(--accent)) 13%, transparent);
  color: var(--tst-badge-c, var(--accent));
  border: 1px solid color-mix(in srgb, var(--tst-badge-c, var(--accent)) 33%, transparent);
}
.today-stat-tooltip .tst-sub {
  display: flex; align-items: center; gap: 8px;
  margin-top: 4px;
}
.today-stat-tooltip .tst-prog {
  flex: 1; height: 5px; border-radius: 3px;
  background: rgba(255,255,255,0.08); overflow: hidden;
}
.today-stat-tooltip .tst-prog-fill {
  height: 100%; background: linear-gradient(90deg, #22d375, #10b981);
  border-radius: 3px;
}
.today-stat-tooltip .tst-prog-txt {
  font-size: 0.7rem; color: rgba(255,255,255,0.6);
  font-family: var(--font-mono, monospace); font-weight: 700;
}
.today-stat-tooltip .tst-empty {
  padding: 14px 0; text-align: center;
  color: rgba(255,255,255,0.5); font-size: 0.82rem;
}
.today-stat-tooltip .tst-more {
  text-align: center; font-size: 0.72rem;
  color: rgba(167,139,250,0.8); font-weight: 600;
  padding-top: 4px;
}

.today-stat-hint {
  margin-top: 18px;
  text-align: center;
  font-size: 0.78rem;
  color: rgba(255,255,255,0.4);
  padding: 10px;
  border: 1px dashed rgba(255,255,255,0.1);
  border-radius: 10px;
}
@media (hover: none) {
  .today-stat-hint { display: none; }
  .today-stat:hover { cursor: pointer; }
}
.today-stat-num {
  font-size: 1.65rem;
  font-weight: 800;
  line-height: 1;
  margin-bottom: 4px;
  font-family: var(--font-mono, inherit);
}
.today-stat-lbl { font-size: 0.72rem; color: rgba(255,255,255,0.6); font-weight: 500; }
.today-stat-danger .today-stat-num { color: var(--danger); }
.today-stat-warn .today-stat-num { color: #f59e0b; }
.today-stat-info .today-stat-num { color: #3b82f6; }
.today-stat-success .today-stat-num { color: #22d375; }

.today-hero-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.today-hero-btn {
  flex: 1;
  min-width: 110px;
  padding: 9px 14px;
  border-radius: 10px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.85rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.today-hero-btn:hover { background: rgba(255,255,255,0.1); transform: translateY(-1px); }
.today-hero-btn-primary {
  background: linear-gradient(135deg, #8b5cf6, #6d45e6);
  border-color: transparent;
  color: #fff;
  box-shadow: 0 4px 12px rgba(139,92,246,0.35);
}
.today-hero-btn-primary:hover { background: linear-gradient(135deg, #9f6ef8, #7b55ed); }

/* Sections */
.today-section {
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 16px;
  overflow: hidden;
}
.today-section-head {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
  background: rgba(255,255,255,0.02);
}
.today-section-icon { font-size: 1.05rem; }
.today-section-label {
  flex: 1;
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.today-section-count {
  font-size: 0.75rem;
  background: rgba(139,92,246,0.2);
  color: #c4b5fd;
  padding: 2px 9px;
  border-radius: 10px;
  font-weight: 600;
  font-family: var(--font-mono, monospace);
}
.today-section-body { padding: 6px; display: flex; flex-direction: column; gap: 4px; }
.today-section-empty {
  padding: 18px;
  text-align: center;
  color: var(--muted);
  font-size: 0.85rem;
}

/* Item row */
.today-item {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 10px 12px;
  border-radius: 10px;
  cursor: pointer;
  transition: background 0.15s;
}
.today-item:hover { background: rgba(255,255,255,0.04); }
.today-item-icon {
  width: 38px;
  height: 38px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  flex-shrink: 0;
  background: color-mix(in srgb, var(--item-type-c, var(--accent)) 13%, transparent);
  color: var(--item-type-c, var(--accent));
}
.today-item-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.today-item-title {
  font-weight: 600;
  font-size: 0.92rem;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.today-item-sub {
  font-size: 0.76rem;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.today-item-date {
  font-size: 0.7rem;
  color: rgba(255,255,255,0.45);
  font-family: var(--font-mono, monospace);
}
.today-item-right {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}
.today-item-badge {
  font-size: 0.72rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 8px;
  white-space: nowrap;
  background: color-mix(in srgb, var(--item-badge-c, var(--accent)) 13%, transparent);
  color: var(--item-badge-c, var(--accent));
  border: 1px solid color-mix(in srgb, var(--item-badge-c, var(--accent)) 27%, transparent);
}
.today-item-type { font-size: 0.68rem; opacity: 0.7; font-weight: 500; color: var(--item-type-c, var(--muted)); }

/* Habits grid */
.today-habits-grid {
  display: grid !important;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 8px;
  padding: 10px !important;
}
.today-habit {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.15s;
}
.today-habit:hover { background: rgba(139,92,246,0.08); border-color: rgba(139,92,246,0.25); }
.today-habit-icon {
  width: 36px;
  height: 36px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
  background: rgba(34,211,117,0.15);
  border-radius: 10px;
  flex-shrink: 0;
}
.today-habit-body { flex: 1; min-width: 0; }
.today-habit-title {
  font-weight: 600;
  font-size: 0.85rem;
  color: var(--text);
  margin-bottom: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.today-habit-progress {
  height: 4px;
  background: rgba(255,255,255,0.08);
  border-radius: 3px;
  overflow: hidden;
  margin-bottom: 4px;
}
.today-habit-fill {
  height: 100%;
  background: linear-gradient(90deg, #22d375, #16a34a);
  border-radius: 3px;
  transition: width 0.3s;
}
.today-habit-count {
  font-size: 0.68rem;
  color: var(--muted);
  font-family: var(--font-mono, monospace);
}

/* Final empty state */
.today-empty-final {
  padding: 48px 20px;
  text-align: center;
  background: rgba(255,255,255,0.02);
  border: 1px dashed rgba(255,255,255,0.08);
  border-radius: 16px;
}
.today-empty-icon { font-size: 3rem; margin-bottom: 12px; }
.today-empty-title { font-size: 1.1rem; font-weight: 700; color: var(--text); margin: 0 0 6px; }
.today-empty-sub { font-size: 0.85rem; color: var(--muted); margin: 0; }

/* Mobile */
@media (max-width: 640px) {
  .today-wrap { padding: 4px 2px 32px; gap: 16px; }
  .today-hero { padding: 16px 16px 14px; border-radius: 16px; }
  .today-hero-lead { font-size: 1.2rem; margin-bottom: 12px; }
  .today-hero-stats { grid-template-columns: repeat(4, 1fr); gap: 6px; }
  .today-stat { padding: 10px 4px; }
  .today-stat-num { font-size: 1.2rem; }
  .today-stat-lbl { font-size: 0.62rem; }
  .today-hero-actions { flex-direction: column; }
  .today-hero-btn { flex: none; width: 100%; font-size: 0.8rem; padding: 8px 12px; }
  .today-item { gap: 8px; padding: 8px 10px; }
  .today-item-icon { width: 34px; height: 34px; font-size: 1rem; }
  .today-item-title { font-size: 0.85rem; }
  .today-item-sub { font-size: 0.72rem; }
  .today-item-badge { font-size: 0.68rem; padding: 2px 7px; }
  .today-item-type { font-size: 0.62rem; }
  .today-section-label { font-size: 0.85rem; }
  .today-habits-grid { grid-template-columns: 1fr; }
}

/* ─── COMMAND PALETTE — Quick Create variant ───────────── */
.cmd-item.cmd-quick-create {
  background: linear-gradient(90deg, rgba(139,92,246,0.12), transparent);
  border-inline-start: 2px solid #8b5cf6;
}
.cmd-item.cmd-quick-create:hover,
.cmd-item.cmd-quick-create.cmd-active {
  background: linear-gradient(90deg, rgba(139,92,246,0.22), rgba(139,92,246,0.04));
}
.cmd-item.cmd-quick-create .cmd-icon {
  color: #a78bfa;
}
.cmd-empty code {
  background: rgba(139,92,246,0.15);
  padding: 1px 5px;
  border-radius: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 0.8em;
}

/* ─── AUTO-REMINDER PICKER ─────────────────────────────── */
.ar-picker {
  position: fixed;
  z-index: 9620;
  background: var(--surface, #1a1520);
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 14px;
  padding: 14px;
  box-shadow: 0 20px 50px rgba(0,0,0,0.6), 0 0 0 1px rgba(139,92,246,0.1);
  direction: rtl;
  animation: arIn 0.14s ease-out both;
}
@keyframes arIn {
  from { opacity: 0; transform: translateY(-4px) scale(0.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.ar-picker-head {
  font-size: 0.9rem;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 4px;
}
.ar-picker-sub {
  font-size: 0.75rem;
  color: var(--muted);
  margin-bottom: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ar-picker-options {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  margin-bottom: 10px;
}
.ar-opt {
  padding: 8px 10px;
  background: rgba(139,92,246,0.1);
  border: 1px solid rgba(139,92,246,0.2);
  border-radius: 8px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.8rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.12s;
}
.ar-opt:hover {
  background: rgba(139,92,246,0.22);
  border-color: rgba(139,92,246,0.4);
  transform: translateY(-1px);
}
.ar-cancel {
  width: 100%;
  padding: 7px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  cursor: pointer;
}
.ar-cancel:hover { background: rgba(255,255,255,0.04); color: var(--text); }

/* Reminder icon button (in doc/sub view items) */
.view-item-reminder-btn {
  padding: 4px 8px;
  background: rgba(245,158,11,0.12);
  border: 1px solid rgba(245,158,11,0.3);
  border-radius: 8px;
  color: #fbbf24;
  font-size: 0.95rem;
  cursor: pointer;
  transition: all 0.15s;
  line-height: 1;
}
.view-item-reminder-btn:hover {
  background: rgba(245,158,11,0.25);
  transform: scale(1.08);
}

/* Related cards section in modal views */
.view-related-section {
  margin: 16px 20px 8px;
  padding: 12px;
  background: rgba(139,92,246,0.06);
  border: 1px solid rgba(139,92,246,0.15);
  border-radius: 12px;
}
.view-related-head {
  font-size: 0.82rem;
  font-weight: 700;
  color: #c4b5fd;
  margin-bottom: 8px;
}
.view-related-list {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.view-related-chip {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 20px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.12s;
}
.view-related-chip:hover {
  background: rgba(139,92,246,0.15);
  border-color: rgba(139,92,246,0.3);
}
.view-related-chip small {
  font-size: 0.65rem;
  color: var(--muted);
  padding-right: 4px;
}

/* ─── BULK — Page picker popover ───────────────────────── */
.bulk-page-picker {
  position: fixed;
  z-index: 9640;
  bottom: 90px;
  left: 50%;
  transform: translateX(-50%);
  width: 320px;
  max-width: calc(100vw - 24px);
  max-height: 60vh;
  background: var(--surface, #1a1520);
  border: 1px solid rgba(139,92,246,0.3);
  border-radius: 14px;
  box-shadow: 0 24px 60px rgba(0,0,0,0.7);
  padding: 14px;
  direction: rtl;
  display: flex;
  flex-direction: column;
  gap: 10px;
  animation: bppIn 0.16s ease-out both;
}
@keyframes bppIn {
  from { opacity: 0; transform: translate(-50%, 8px); }
  to { opacity: 1; transform: translate(-50%, 0); }
}
.bpp-head {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--text);
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}
.bpp-list {
  flex: 1;
  overflow-y: auto;
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-height: 0;
}
.bpp-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 9px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.88rem;
  text-align: right;
  cursor: pointer;
  transition: all 0.12s;
}
.bpp-item:hover {
  background: rgba(139,92,246,0.12);
  border-color: rgba(139,92,246,0.25);
}
.bpp-item > span:first-child {
  font-size: 1rem;
  flex-shrink: 0;
}
.bpp-cancel {
  padding: 8px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 9px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.82rem;
  cursor: pointer;
}
.bpp-cancel:hover { background: rgba(255,255,255,0.04); color: var(--text); }

/* ─── BULK BAR — allow horizontal scroll on mobile ────── */
.bulk-bar .bulk-actions {
  overflow-x: auto;
  scrollbar-width: thin;
}
.bulk-bar .bulk-actions::-webkit-scrollbar { height: 4px; }
.bulk-bar .bulk-actions::-webkit-scrollbar-thumb {
  background: rgba(139,92,246,0.3);
  border-radius: 4px;
}

/* ─── Trip Planner Reference Refresh ───────────────────── */
.travel-page {
  --tp-ink: #eef2ff;
  --tp-soft: rgba(226,232,240,0.68);
  --tp-panel: rgba(15,18,34,0.74);
  --tp-panel-strong: rgba(18,22,42,0.92);
  --tp-line: rgba(148,163,184,0.16);
  --tp-cyan: #2dd4bf;
  --tp-violet: #8b5cf6;
  background:
    radial-gradient(circle at 14% 4%, rgba(45,212,191,0.12), transparent 28%),
    radial-gradient(circle at 88% 0%, rgba(139,92,246,0.15), transparent 30%),
    #070914;
}
.travel-page .tp-header {
  padding: 13px 28px;
  background: rgba(7,9,20,0.9);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.travel-page .tp-header-title {
  font-size: 1.05rem;
  letter-spacing: 0;
}
.travel-page .tp-body {
  background:
    linear-gradient(180deg, rgba(255,255,255,0.012), transparent 240px),
    transparent;
}
.travel-page .tp-widget,
.travel-page .tp-stat-pill {
  border-radius: 8px;
  background: var(--tp-panel);
  border-color: var(--tp-line);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}
.tp-dashboard-ref {
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.4fr) minmax(0, 1.4fr) minmax(0, 1fr);
  grid-template-areas:
    "hero   hero   hero   hero"
    "stats  stats  stats  stats"
    "side   combo  combo  hotels"
    "pair   pair   pair   pair"
    "itin   itin   itin   itin";
  gap: 14px;
  padding: 16px 28px 18px;
}
.tp-dashboard-ref .tp-w-hero {
  grid-area: hero;
  min-height: 246px;
  border-radius: 8px;
  background-position: center 48%;
}
.tp-dashboard-ref .tp-w-hero-overlay {
  background:
    linear-gradient(90deg, rgba(6,8,18,0.78) 0%, rgba(6,8,18,0.46) 46%, rgba(6,8,18,0.12) 100%),
    linear-gradient(180deg, rgba(6,8,18,0.08), rgba(6,8,18,0.74));
}
.tp-dashboard-ref .tp-w-hero-content {
  min-height: 246px;
  padding: 22px 30px;
  align-items: flex-end;
}
.tp-dashboard-ref .tp-w-hero-main {
  gap: 9px;
  max-width: 580px;
}
.tp-dashboard-ref .tp-w-hero-badge {
  border-radius: 8px;
  background: rgba(139,92,246,0.18);
  border-color: rgba(167,139,250,0.38);
  box-shadow: 0 0 22px rgba(139,92,246,0.16);
}
.tp-dashboard-ref .tp-w-hero-title {
  font-size: clamp(2.2rem, 4.7vw, 3.3rem);
  letter-spacing: 0;
}
.tp-dashboard-ref .tp-w-hero-route,
.tp-dashboard-ref .tp-w-hero-meta {
  color: rgba(255,255,255,0.86);
}
.tp-dashboard-ref .tp-w-hero-actions {
  flex-direction: row;
  align-items: center;
}
.tp-dashboard-ref .tp-w-hero-btn {
  min-width: 140px;
  border-radius: 8px;
}
.tp-dashboard-ref .tp-stats-strip {
  grid-area: stats;
  gap: 14px;
}
.tp-dashboard-ref .tp-stat-pill {
  min-height: 78px;
  padding: 14px 18px;
}
.tp-dashboard-ref .tp-stat-icon {
  width: 42px;
  height: 42px;
  border-radius: 8px;
}
.tp-dashboard-ref .tp-stat-big {
  font-size: 1.72rem;
  letter-spacing: 0;
}
.tp-dashboard-ref .tp-side-stack {
  grid-area: side;
  display: flex;
  flex-direction: column;
  gap: 14px;
  min-width: 0;
}
.tp-dashboard-ref .tp-side-stack > .tp-widget {
  grid-column: auto !important;
  width: 100%;
  min-height: 0;
}
.tp-dashboard-ref .tp-side-stack .tp-w-weather,
.tp-dashboard-ref .tp-side-stack .tp-w-quickinfo {
  padding: 15px 16px;
}
.tp-dashboard-ref .tp-side-stack .tp-w-weather {
  flex: 0 0 auto;
}
.tp-dashboard-ref .tp-w-title {
  margin-bottom: 12px;
  font-size: 0.9rem;
}
.tp-dashboard-ref .tp-wx-mount {
  gap: 12px;
}
.tp-dashboard-ref .tp-wx-current {
  padding: 0 0 10px;
  gap: 12px;
}
.tp-dashboard-ref .tp-wx-icon {
  font-size: 2.7rem;
}
.tp-dashboard-ref .tp-wx-temp {
  font-size: 2.45rem;
  letter-spacing: 0;
}
.tp-dashboard-ref .tp-wx-days {
  gap: 7px;
}
.tp-dashboard-ref .tp-wx-day {
  padding: 8px 5px;
  border-radius: 8px;
}
.tp-dashboard-ref .tp-side-stack .tp-qi-grid {
  grid-template-columns: 1fr;
  gap: 7px;
  margin-top: 0;
}
.tp-dashboard-ref .tp-side-stack .tp-qi-card {
  grid-template-columns: 34px 1fr;
  gap: 9px;
  min-height: 43px;
  padding: 8px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.035);
}
.tp-dashboard-ref .tp-side-stack .tp-qi-card .tp-qi-icon {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  font-size: 1rem;
}
.tp-dashboard-ref .tp-side-stack .tp-qi-label {
  font-size: 0.68rem;
}
.tp-dashboard-ref .tp-side-stack .tp-qi-value {
  font-size: 0.82rem;
}
.tp-dashboard-ref .tp-w-dailyplan {
  grid-area: plan;
  min-height: 292px;
  padding: 16px 18px;
}
.tp-dashboard-ref .tp-dp-list {
  gap: 8px;
}
.tp-dashboard-ref .tp-dp-row {
  grid-template-columns: auto 34px minmax(0, 1fr);
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  border: 1px solid rgba(139,92,246,0.2);
  border-inline-start: 3px solid var(--tp-violet);
  background: linear-gradient(90deg, rgba(139,92,246,0.14), rgba(45,212,191,0.035));
}
.tp-dashboard-ref .tp-dp-num {
  width: 28px;
  height: 28px;
  font-size: 0.84rem;
  box-shadow: 0 0 18px rgba(139,92,246,0.34);
}
.tp-dashboard-ref .tp-dp-tag {
  border-radius: 8px;
  background: rgba(139,92,246,0.14);
  color: #c4b5fd;
  padding: 4px 8px;
}
.tp-dashboard-ref .tp-dp-date {
  color: rgba(226,232,240,0.48);
  font-size: 0.7rem;
  font-family: var(--font-mono, monospace);
  margin-top: 1px;
}
.tp-dashboard-ref .tp-dp-sub {
  margin-top: 1px;
}
.tp-dashboard-ref .tp-dp-more {
  width: 100%;
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  background: rgba(255,255,255,0.035);
  color: var(--tp-soft);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 700;
  padding: 8px 10px;
  cursor: pointer;
}
.tp-dashboard-ref .tp-dp-more:hover {
  background: rgba(139,92,246,0.12);
  color: var(--tp-ink);
}
.tp-dashboard-ref .tp-w-flightmap {
  grid-area: map;
  min-height: 292px;
  padding: 16px 18px 12px;
  background:
    radial-gradient(ellipse at 70% 60%, rgba(45,212,191,0.1), transparent 45%),
    var(--tp-panel);
}
.tp-dashboard-ref .tp-fm-head {
  align-items: flex-start;
}
.tp-dashboard-ref .tp-fm-head-right {
  display: block;
  text-align: left;
  flex-shrink: 0;
}
.tp-dashboard-ref .tp-fm-dist-label {
  font-size: 0.68rem;
  color: rgba(226,232,240,0.5);
}
.tp-dashboard-ref .tp-fm-dist {
  color: var(--tp-cyan);
  font-family: var(--font-mono, monospace);
  font-size: 1.1rem;
  font-weight: 800;
}
.tp-dashboard-ref .tp-fm-route {
  margin-top: -6px;
  color: rgba(226,232,240,0.7);
}
.tp-dashboard-ref .tp-map {
  height: 224px;
  margin-top: 10px;
}
.tp-dashboard-ref .tp-map-land {
  fill: rgba(99,102,241,0.1);
  stroke: rgba(99,102,241,0.35);
}
.tp-dashboard-ref .tp-map-route {
  stroke: var(--tp-cyan);
  stroke-width: 2.6;
  filter: drop-shadow(0 0 9px rgba(45,212,191,0.62));
}
.tp-dashboard-ref .tp-map-pin {
  fill: #c084fc;
  filter: drop-shadow(0 0 12px rgba(192,132,252,0.75));
}
.tp-dashboard-ref .tp-map-pin-halo {
  fill: rgba(192,132,252,0.42);
}
.tp-dashboard-ref .tp-w-passes {
  grid-area: passes;
  padding: 8px 0 0;
  background: transparent;
  border: 0;
  box-shadow: none;
}
.tp-dashboard-ref .tp-passes-grid {
  gap: 14px;
}
.tp-dashboard-ref .tp-pass {
  min-height: 172px;
  border-radius: 8px;
  background: linear-gradient(135deg, rgba(22,27,48,0.96), rgba(16,21,39,0.96));
  color: var(--tp-ink);
  border: 1px solid rgba(148,163,184,0.16);
  box-shadow: 0 12px 28px rgba(0,0,0,0.34);
}
.tp-dashboard-ref .tp-pass-outbound { border-top-color: var(--tp-violet); }
.tp-dashboard-ref .tp-pass-return { border-top-color: var(--tp-cyan); }
.tp-dashboard-ref .tp-pass-main {
  padding: 14px 18px 13px;
  gap: 12px;
}
.tp-dashboard-ref .tp-pass-stub {
  flex-basis: 62px;
  background: rgba(8,11,24,0.5);
  border-inline-end-color: rgba(148,163,184,0.22);
}
.tp-dashboard-ref .tp-pass-stub::before,
.tp-dashboard-ref .tp-pass-stub::after {
  background: #070914;
}
.tp-dashboard-ref .tp-pass-barcode rect {
  fill: rgba(226,232,240,0.7);
}
.tp-dashboard-ref .tp-pass-airline-name,
.tp-dashboard-ref .tp-pass-city,
.tp-dashboard-ref .tp-pass-field-value {
  color: var(--tp-ink);
}
.tp-dashboard-ref .tp-pass-label,
.tp-dashboard-ref .tp-pass-field-label,
.tp-dashboard-ref .tp-pass-stub-code {
  color: rgba(226,232,240,0.52);
}
.tp-dashboard-ref .tp-pass-iata,
.tp-dashboard-ref .tp-pass-pnr {
  color: #67e8f9;
}
.tp-dashboard-ref .tp-pass-route {
  border-bottom-color: rgba(226,232,240,0.18);
  padding-bottom: 11px;
}
.tp-dashboard-ref .tp-pass-arrow-line line {
  stroke: rgba(226,232,240,0.28);
}
.tp-dashboard-ref .tp-pass-logo {
  background: rgba(255,255,255,0.92);
  border-color: rgba(255,255,255,0.2);
}

/* ─── Legacy pair row (kept for fallback) ──────────────── */
.tp-dashboard-ref .tp-row-pair {
  grid-area: pair;
  display: grid;
  grid-template-columns: minmax(260px, 5fr) minmax(320px, 7fr);
  gap: 14px;
}

/* ─── Budget donut widget (now full-width in pair area) ── */
.tp-dashboard-ref .tp-w-budget {
  grid-area: pair;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.tp-dashboard-ref .tp-w-budget .tp-budget-main {
  display: grid;
  grid-template-columns: 180px 1fr;
  gap: 16px;
  align-items: center;
}
.tp-dashboard-ref .tp-budget-donut {
  position: relative;
  width: 180px;
  height: 180px;
  margin: 0 auto;
}
.tp-dashboard-ref .tp-budget-donut svg {
  width: 100%;
  height: 100%;
  overflow: visible;
}
.tp-dashboard-ref .tp-budget-arc {
  transition: stroke-dasharray 0.6s ease;
  filter: drop-shadow(0 0 6px rgba(255,255,255,0.12));
}
.tp-dashboard-ref .tp-budget-center {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  pointer-events: none;
}
.tp-dashboard-ref .tp-budget-total {
  font-family: var(--font-mono, monospace);
  font-size: 1.6rem;
  font-weight: 800;
  color: var(--tp-ink, #e2e8f0);
  letter-spacing: -0.02em;
  line-height: 1;
}
.tp-dashboard-ref .tp-budget-curr {
  font-size: 0.72rem;
  color: var(--tp-soft, rgba(226,232,240,0.6));
  margin-top: 4px;
  font-weight: 600;
}
.tp-dashboard-ref .tp-budget-legend {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.tp-dashboard-ref .tp-budget-legend-item {
  display: grid;
  grid-template-columns: 10px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.05);
  font-size: 0.82rem;
}
.tp-dashboard-ref .tp-budget-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  display: inline-block;
  background: var(--budget-dot-c, var(--accent));
  color: var(--budget-dot-c, var(--accent));
  box-shadow: 0 0 6px currentColor;
}
.tp-dashboard-ref .tp-budget-label {
  color: var(--tp-ink, #e2e8f0);
  font-weight: 600;
}
.tp-dashboard-ref .tp-budget-val {
  font-family: var(--font-mono, monospace);
  color: var(--tp-soft, rgba(226,232,240,0.7));
  font-weight: 700;
  letter-spacing: 0.02em;
}
.tp-dashboard-ref .tp-w-budget-empty .tp-budget-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 24px 14px;
  text-align: center;
  min-height: 180px;
}
.tp-dashboard-ref .tp-budget-empty-icon {
  font-size: 2.4rem;
  margin-bottom: 8px;
  opacity: 0.7;
}
.tp-dashboard-ref .tp-budget-empty-title {
  font-size: 1rem;
  font-weight: 800;
  color: var(--tp-ink, #e2e8f0);
  margin-bottom: 4px;
}
.tp-dashboard-ref .tp-budget-empty-sub {
  font-size: 0.78rem;
  color: var(--tp-soft, rgba(226,232,240,0.6));
  margin-bottom: 14px;
}
.tp-dashboard-ref .tp-budget-add-btn {
  padding: 8px 18px;
  border-radius: 8px;
  border: 1px solid rgba(45,212,191,0.4);
  background: rgba(45,212,191,0.14);
  color: #5eead4;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
}
.tp-dashboard-ref .tp-budget-add-btn:hover {
  background: rgba(45,212,191,0.24);
  border-color: rgba(45,212,191,0.7);
  transform: translateY(-1px);
}

/* ─── Hotels list widget ──────────────────────────────── */
.tp-dashboard-ref .tp-w-hotels {
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.tp-dashboard-ref .tp-hotels-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 360px;
  overflow-y: auto;
}
.tp-dashboard-ref .tp-hotel-item {
  display: grid;
  grid-template-columns: 34px 1fr auto;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  background: linear-gradient(90deg, rgba(167,139,250,0.08), rgba(45,212,191,0.02));
  border: 1px solid rgba(167,139,250,0.16);
  transition: all 0.18s ease;
}
.tp-dashboard-ref .tp-hotel-item:hover {
  background: linear-gradient(90deg, rgba(167,139,250,0.14), rgba(45,212,191,0.06));
  border-color: rgba(167,139,250,0.34);
  transform: translateY(-1px);
}
.tp-dashboard-ref .tp-hotel-icon {
  width: 34px;
  height: 34px;
  border-radius: 8px;
  background: rgba(167,139,250,0.18);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
}
.tp-dashboard-ref .tp-hotel-info {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.tp-dashboard-ref .tp-hotel-name {
  font-size: 0.88rem;
  font-weight: 700;
  color: var(--tp-ink, #e2e8f0);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tp-dashboard-ref .tp-hotel-region {
  font-size: 0.72rem;
  color: var(--tp-soft, rgba(226,232,240,0.56));
}
.tp-dashboard-ref .tp-hotel-nights {
  font-family: var(--font-mono, monospace);
  font-size: 0.74rem;
  font-weight: 700;
  color: #c4b5fd;
  padding: 4px 9px;
  border-radius: 8px;
  background: rgba(167,139,250,0.16);
  white-space: nowrap;
}

/* ─── Hotels widget in SIDE slot (narrow left column, next to combo) ── */
.tp-dashboard-ref .tp-w-hotels-side {
  grid-area: hotels;
  align-self: stretch;
  min-width: 0;
  min-height: 320px;            /* match combo min-height */
  padding: 14px;
  gap: 10px;
  /* Make the panel visible even when mostly empty (matches combo framing) */
  background:
    radial-gradient(ellipse at 0% 0%, rgba(167,139,250,0.12), transparent 55%),
    radial-gradient(ellipse at 100% 100%, rgba(45,212,191,0.06), transparent 55%),
    linear-gradient(160deg, rgba(23,25,44,0.85) 0%, rgba(15,17,32,0.85) 55%, rgba(11,13,29,0.85) 100%);
  border: 1px solid rgba(167,139,250,0.22);
  border-radius: 18px;
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.05),
    0 12px 28px rgba(0,0,0,0.35);
  display: flex;
  flex-direction: column;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-w-title {
  font-size: 0.82rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 0 0 auto;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-hotels-list {
  flex: 1 1 auto;               /* fill remaining column height */
  max-height: none;
  overflow-y: auto;
  gap: 7px;
  align-content: flex-start;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-hotel-item {
  grid-template-columns: 30px 1fr auto;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 7px;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-hotel-icon {
  width: 30px;
  height: 30px;
  border-radius: 7px;
  font-size: 1rem;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-hotel-name {
  font-size: 0.8rem;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-hotel-region {
  font-size: 0.66rem;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-hotel-nights {
  font-size: 0.66rem;
  padding: 3px 7px;
}
/* Empty state: fill remaining column height so bottom aligns with combo */
.tp-dashboard-ref .tp-w-hotels-side .tp-w-empty {
  flex: 1 1 auto;
  min-height: 0;
  padding: 24px 10px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.tp-dashboard-ref .tp-w-hotels-side .tp-w-empty-icon {
  font-size: 2.4rem;
  opacity: 0.55;
  filter: drop-shadow(0 0 18px rgba(167,139,250,0.25));
}
.tp-dashboard-ref .tp-w-hotels-side .tp-w-empty-msg {
  font-size: 0.78rem;
  color: var(--tp-soft, rgba(226,232,240,0.62));
  margin: 0;
  line-height: 1.5;
  max-width: 180px;
}

/* ─── Itinerary timeline widget ───────────────────────── */
.tp-dashboard-ref .tp-w-itinerary {
  grid-area: itin;
  padding: 16px 20px 18px;
}
.tp-dashboard-ref .tp-itinerary-timeline {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-top: 8px;
}
.tp-dashboard-ref .tp-itin-day {
  display: grid;
  grid-template-columns: 30px 96px minmax(0, 1fr);
  gap: 14px;
  padding: 10px 0;
  align-items: flex-start;
}
.tp-dashboard-ref .tp-itin-rail {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  padding-top: 6px;
  min-height: 80px;
}
.tp-dashboard-ref .tp-itin-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--tp-cyan, #2dd4bf);
  box-shadow: 0 0 10px rgba(45,212,191,0.6), 0 0 0 3px rgba(45,212,191,0.12);
  flex-shrink: 0;
  z-index: 2;
}
.tp-dashboard-ref .tp-itin-line {
  width: 2px;
  flex: 1;
  background: linear-gradient(to bottom, rgba(45,212,191,0.6), rgba(45,212,191,0.05));
  margin-top: 4px;
}
.tp-dashboard-ref .tp-itin-thumb {
  position: relative;
  width: 96px;
  height: 80px;
  border-radius: 10px;
  background-size: cover;
  background-position: center;
  background-color: rgba(139,92,246,0.14);
  overflow: hidden;
  border: 1px solid rgba(255,255,255,0.08);
}
.tp-dashboard-ref .tp-itin-thumb::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 40%, rgba(0,0,0,0.6) 100%);
}
.tp-dashboard-ref .tp-itin-daynum {
  position: absolute;
  bottom: 6px;
  right: 8px;
  font-size: 0.72rem;
  font-weight: 800;
  color: #fff;
  background: rgba(139,92,246,0.8);
  padding: 3px 8px;
  border-radius: 8px;
  z-index: 2;
  letter-spacing: 0.02em;
}
.tp-dashboard-ref .tp-itin-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-top: 2px;
}
.tp-dashboard-ref .tp-itin-date {
  font-family: var(--font-mono, monospace);
  font-size: 0.74rem;
  color: var(--tp-cyan, #5eead4);
  font-weight: 700;
  letter-spacing: 0.03em;
}
.tp-dashboard-ref .tp-itin-meta {
  font-size: 0.82rem;
  color: var(--tp-ink, #e2e8f0);
  font-weight: 600;
}
.tp-dashboard-ref .tp-itin-acts {
  font-size: 0.78rem;
  color: var(--tp-soft, rgba(226,232,240,0.7));
  line-height: 1.5;
  margin-top: 2px;
}

/* ─── Mobile adjustments for new widgets ──────────────── */
@media (max-width: 760px) {
  .tp-dashboard-ref .tp-row-pair {
    grid-template-columns: 1fr;
  }
  .tp-dashboard-ref .tp-w-budget .tp-budget-main {
    grid-template-columns: 1fr;
  }
  .tp-dashboard-ref .tp-itin-day {
    grid-template-columns: 24px 72px minmax(0, 1fr);
    gap: 10px;
  }
  .tp-dashboard-ref .tp-itin-thumb {
    width: 72px;
    height: 64px;
  }
}

.travel-page .tp-list-section {
  padding: 2px 28px 42px;
}
.travel-page .tp-list-head {
  padding: 12px 0 0;
}
.travel-page .tp-list {
  padding: 10px 0 0;
}

@media (max-width: 1180px) {
  .tp-dashboard-ref {
    grid-template-columns: 1fr;
    grid-template-areas:
      "hero"
      "stats"
      "combo"
      "side"
      "pair"
      "itin";
  }
  .tp-dashboard-ref .tp-side-stack {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  .tp-dashboard-ref .tp-row-pair {
    grid-template-columns: 1fr 1fr;
  }
}
/* Tablet: keep side on right, stack hotels+combo vertically */
@media (max-width: 1180px) and (min-width: 761px) {
  .tp-dashboard-ref {
    grid-template-columns: minmax(0, 3fr) minmax(0, 1.3fr);
    grid-template-areas:
      "hero   hero"
      "stats  stats"
      "combo  side"
      "hotels side"
      "pair   pair"
      "itin   itin";
  }
}
@media (max-width: 760px) {
  .tp-dashboard-ref {
    padding: 12px;
    gap: 12px;
    grid-template-columns: 1fr;
    grid-template-areas:
      "hero"
      "stats"
      "side"
      "combo"
      "hotels"
      "pair"
      "itin";
  }
  .tp-dashboard-ref .tp-w-hero,
  .tp-dashboard-ref .tp-w-hero-content {
    min-height: 230px;
  }
  .tp-dashboard-ref .tp-w-hero-content {
    padding: 18px;
    align-items: stretch;
  }
  .tp-dashboard-ref .tp-w-hero-actions {
    width: 100%;
  }
  .tp-dashboard-ref .tp-w-hero-btn {
    flex: 1;
    min-width: 0;
  }
  .tp-dashboard-ref .tp-stats-strip {
    grid-template-columns: repeat(2, 1fr);
  }
  .tp-dashboard-ref .tp-side-stack {
    grid-template-columns: 1fr;
  }
  .tp-dashboard-ref .tp-qi-grid {
    grid-template-columns: 1fr !important;
  }
  .tp-dashboard-ref .tp-passes-grid {
    grid-template-columns: 1fr;
  }
  .travel-page .tp-list-section {
    padding-inline: 12px;
  }
}

/* ─── Boarding Pass White Ticket Refresh ───────────────── */
.tp-dashboard-ref .tp-w-passes {
  padding-top: 10px;
}
.tp-dashboard-ref .tp-passes-grid {
  grid-template-columns: 1fr;
  gap: 18px;
}
/* ─── Boarding passes — dark theme redesign ───────────── */
.tp-dashboard-ref .tp-pass {
  direction: ltr;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 86px;
  grid-template-areas: "main stub";
  min-height: 188px;
  border-radius: 14px;
  overflow: hidden;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(45,212,191,0.12), transparent 50%),
    radial-gradient(ellipse at 100% 100%, rgba(139,92,246,0.1), transparent 50%),
    linear-gradient(145deg, #181b2e 0%, #101327 55%, #0c0e22 100%);
  color: #e2e8f0;
  border: 1px solid rgba(148,163,184,0.14);
  border-top: 3px solid #2dd4bf;
  box-shadow:
    0 18px 34px rgba(0,0,0,0.5),
    inset 0 1px 0 rgba(255,255,255,0.05);
  transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}
.tp-dashboard-ref .tp-pass:hover {
  transform: translateY(-3px);
  border-color: rgba(45,212,191,0.35);
  box-shadow:
    0 28px 50px rgba(0,0,0,0.6),
    0 0 30px rgba(45,212,191,0.15),
    inset 0 1px 0 rgba(255,255,255,0.07);
}
.tp-dashboard-ref .tp-pass-return {
  border-top-color: #a78bfa;
}
.tp-dashboard-ref .tp-pass-return:hover {
  border-color: rgba(167,139,250,0.45);
  box-shadow:
    0 28px 50px rgba(0,0,0,0.6),
    0 0 30px rgba(167,139,250,0.18),
    inset 0 1px 0 rgba(255,255,255,0.07);
}
.tp-dashboard-ref .tp-pass-main {
  grid-area: main;
  direction: rtl;
  min-width: 0;
  padding: 18px 26px 20px;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 16px;
}
.tp-dashboard-ref .tp-pass-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}
.tp-dashboard-ref .tp-pass-airline {
  flex-direction: row-reverse;
  gap: 12px;
}
.tp-dashboard-ref .tp-pass-logo {
  width: 48px;
  height: 34px;
  padding: 3px;
  background: rgba(255,255,255,0.92);
  border: 1px solid rgba(148,163,184,0.28);
  border-radius: 6px;
}
.tp-dashboard-ref .tp-pass-airline-name {
  color: #f1f5f9;
  font-size: 1rem;
  font-weight: 900;
  text-transform: lowercase;
  letter-spacing: 0.2px;
}
.tp-dashboard-ref .tp-pass-kind {
  border-radius: 999px;
  padding: 6px 14px;
  font-size: 0.76rem;
  font-weight: 800;
  letter-spacing: 0.3px;
  border: 1px solid transparent;
}
.tp-dashboard-ref .tp-pass-kind-outbound {
  color: #6ee7b7;
  background: rgba(16,185,129,0.14);
  border-color: rgba(16,185,129,0.38);
  box-shadow: 0 0 12px rgba(16,185,129,0.18);
}
.tp-dashboard-ref .tp-pass-kind-return {
  color: #c4b5fd;
  background: rgba(139,92,246,0.16);
  border-color: rgba(139,92,246,0.4);
  box-shadow: 0 0 12px rgba(139,92,246,0.2);
}
.tp-dashboard-ref .tp-pass-route {
  position: relative;
  direction: ltr;
  display: grid;
  grid-template-columns: minmax(130px, 1fr) minmax(190px, 1.5fr) minmax(130px, 1fr);
  align-items: center;
  gap: 18px;
  padding: 16px 0 20px;
  border-bottom: 1px dashed rgba(148,163,184,0.22);
}
.tp-dashboard-ref .tp-pass-point-from {
  direction: rtl;
  grid-column: 3;
  text-align: right;
}
.tp-dashboard-ref .tp-pass-point-to {
  direction: rtl;
  grid-column: 1;
  text-align: left;
}
.tp-dashboard-ref .tp-pass-arrow {
  grid-column: 2;
  grid-row: 1;
  min-width: 0;
}
.tp-dashboard-ref .tp-pass-label {
  color: rgba(148,163,184,0.75);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}
.tp-dashboard-ref .tp-pass-city {
  color: #f1f5f9;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: 0.15px;
}
.tp-dashboard-ref .tp-pass-iata {
  color: #f8fafc;
  font-size: clamp(1.55rem, 3vw, 2.2rem);
  font-weight: 900;
  letter-spacing: 0.08em;
  text-shadow: 0 0 20px rgba(45,212,191,0.28);
}
.tp-dashboard-ref .tp-pass-return .tp-pass-iata {
  text-shadow: 0 0 20px rgba(167,139,250,0.3);
}
.tp-dashboard-ref .tp-pass-plane {
  color: #67e8f9;
  font-size: 1.55rem;
  filter: drop-shadow(0 0 8px rgba(103,232,249,0.6));
}
.tp-dashboard-ref .tp-pass-return .tp-pass-plane {
  color: #c4b5fd;
  filter: drop-shadow(0 0 8px rgba(196,181,253,0.6));
}
.tp-dashboard-ref .tp-pass-arrow-line {
  height: 8px;
}
.tp-dashboard-ref .tp-pass-arrow-line line {
  stroke: rgba(148,163,184,0.42);
  stroke-width: 1.4;
}
.tp-dashboard-ref .tp-pass-foot {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
  margin-top: 0;
}
.tp-dashboard-ref .tp-pass-field {
  text-align: right;
  gap: 4px;
}
.tp-dashboard-ref .tp-pass-field-label {
  color: rgba(148,163,184,0.72);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.3px;
  text-transform: uppercase;
}
.tp-dashboard-ref .tp-pass-field-value {
  color: #f1f5f9;
  font-size: 0.98rem;
  font-weight: 800;
  font-family: var(--font-mono, monospace);
}
.tp-dashboard-ref .tp-pass-pnr {
  color: #67e8f9;
  letter-spacing: 0.1em;
  text-shadow: 0 0 10px rgba(103,232,249,0.35);
}
.tp-dashboard-ref .tp-pass-return .tp-pass-pnr {
  color: #c4b5fd;
  text-shadow: 0 0 10px rgba(196,181,253,0.4);
}
.tp-dashboard-ref .tp-pass-stub {
  grid-area: stub;
  position: relative;
  flex: none;
  min-width: 0;
  background: rgba(8,10,24,0.55);
  border-inline-end: 0;
  border-inline-start: 2px dashed rgba(148,163,184,0.25);
  padding: 16px 10px;
  gap: 10px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: space-between;
}
.tp-dashboard-ref .tp-pass-stub::before,
.tp-dashboard-ref .tp-pass-stub::after {
  content: '';
  position: absolute;
  width: 20px;
  height: 20px;
  background: #070914;
  border-radius: 50%;
  inset-inline-start: -11px;
  z-index: 3;
  box-shadow: inset 0 0 6px rgba(0,0,0,0.6);
}
.tp-dashboard-ref .tp-pass-stub::before { top: -11px; }
.tp-dashboard-ref .tp-pass-stub::after { bottom: -11px; }
.tp-dashboard-ref .tp-pass-barcode {
  width: 32px;
  height: 100%;
  max-height: 150px;
}
.tp-dashboard-ref .tp-pass-barcode rect {
  fill: rgba(226,232,240,0.82);
}
.tp-dashboard-ref .tp-pass-stub-code {
  color: rgba(226,232,240,0.6);
  font-weight: 800;
  font-family: var(--font-mono, monospace);
  letter-spacing: 0.12em;
  font-size: 0.72rem;
}

@media (min-width: 1181px) {
  .tp-dashboard-ref .tp-pass {
    min-height: 176px;
  }
  .tp-dashboard-ref .tp-pass-main {
    padding-inline: 30px;
  }
}
@media (max-width: 760px) {
  .tp-dashboard-ref .tp-pass {
    grid-template-columns: minmax(0, 1fr) 58px;
    min-height: 210px;
  }
  .tp-dashboard-ref .tp-pass-main {
    padding: 14px 14px 16px;
    gap: 12px;
  }
  .tp-dashboard-ref .tp-pass-route {
    grid-template-columns: 1fr 56px 1fr;
    gap: 10px;
  }
  .tp-dashboard-ref .tp-pass-foot {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }
  .tp-dashboard-ref .tp-pass-kind {
    padding-inline: 10px;
  }
  .tp-dashboard-ref .tp-pass-airline-name {
    font-size: 0.88rem;
  }
}

/* ─── Featured Flight Ticket Card ─────────────────────── */
.tp-dashboard-ref .tp-w-flightticket {
  grid-area: plan;
  position: relative;
  display: grid;
  grid-template-rows: minmax(220px, 1fr) auto;
  min-height: 318px;
  padding: 0;
  overflow: hidden;
  background: #f8fbff;
  color: #0f172a;
  border: 1px solid rgba(226,232,240,0.88);
  box-shadow: 0 18px 34px rgba(0,0,0,0.32);
  cursor: pointer;
}
.tp-dashboard-ref .tp-w-flightticket:hover {
  transform: translateY(-2px);
  border-color: rgba(125,211,252,0.7);
  box-shadow: 0 22px 42px rgba(0,0,0,0.38);
}
.tp-dashboard-ref .tp-ft-sky {
  position: relative;
  min-height: 220px;
  padding: 22px 24px 0;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(10,36,98,0.22), transparent 42%),
    linear-gradient(180deg, #1453b8 0%, #237add 58%, #9ed7ff 82%, #f8fbff 100%);
  isolation: isolate;
}
.tp-dashboard-ref .tp-ft-sky::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  background:
    linear-gradient(90deg, rgba(255,255,255,0.05) 0 1px, transparent 1px 80px),
    linear-gradient(180deg, rgba(255,255,255,0.04) 0 1px, transparent 1px 80px);
  opacity: 0.18;
  pointer-events: none;
}
.tp-dashboard-ref .tp-ft-route-head {
  position: relative;
  z-index: 4;
  display: grid;
  grid-template-columns: minmax(76px, auto) minmax(130px, 1fr) minmax(76px, auto);
  align-items: start;
  gap: 16px;
  direction: ltr;
  color: #fff;
}
.tp-dashboard-ref .tp-ft-airport {
  min-width: 0;
}
.tp-dashboard-ref .tp-ft-to {
  text-align: right;
}
.tp-dashboard-ref .tp-ft-code {
  font-family: var(--font-mono, monospace);
  font-size: clamp(1.65rem, 3.2vw, 2.55rem);
  line-height: 1;
  letter-spacing: 0;
  font-weight: 950;
  color: #fff;
}
.tp-dashboard-ref .tp-ft-city {
  margin-top: 8px;
  font-size: 0.88rem;
  color: rgba(255,255,255,0.88);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tp-dashboard-ref .tp-ft-route-line {
  display: grid;
  grid-template-columns: auto minmax(24px, 1fr) auto minmax(18px, 0.25fr);
  align-items: center;
  gap: 8px;
  padding-top: 17px;
}
.tp-dashboard-ref .tp-ft-dot {
  width: 10px;
  height: 10px;
  border: 3px solid #fff;
  border-radius: 50%;
  box-shadow: 0 0 0 4px rgba(255,255,255,0.16);
}
.tp-dashboard-ref .tp-ft-line {
  height: 2px;
  border-radius: 999px;
  background: rgba(255,255,255,0.8);
}
.tp-dashboard-ref .tp-ft-line-fade {
  opacity: 0.28;
}
.tp-dashboard-ref .tp-ft-plane-mini {
  color: #fff;
  font-size: 1.75rem;
  line-height: 1;
  transform: translateY(-1px) rotate(8deg);
  filter: drop-shadow(0 5px 10px rgba(0,0,0,0.28));
}
.tp-dashboard-ref .tp-ft-status {
  position: relative;
  z-index: 4;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  margin-top: 10px;
  color: #fff;
  direction: rtl;
}
.tp-dashboard-ref .tp-ft-status span {
  padding: 4px 10px;
  border-radius: 6px;
  background: rgba(255,255,255,0.16);
  border: 1px solid rgba(255,255,255,0.18);
  font-size: 0.78rem;
  font-weight: 900;
}
.tp-dashboard-ref .tp-ft-status strong {
  min-width: 0;
  font-size: 0.92rem;
  font-weight: 900;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tp-dashboard-ref .tp-ft-plane-wrap {
  position: absolute;
  z-index: 3;
  left: 6%;
  right: 2%;
  bottom: 10px;
  height: 138px;
  pointer-events: none;
}
.tp-dashboard-ref .tp-ft-plane-art {
  width: 100%;
  height: 100%;
  overflow: visible;
  filter: drop-shadow(0 18px 22px rgba(10,22,44,0.22));
}
.tp-dashboard-ref .tp-ft-body,
.tp-dashboard-ref .tp-ft-wing-top,
.tp-dashboard-ref .tp-ft-wing-bottom,
.tp-dashboard-ref .tp-ft-tail,
.tp-dashboard-ref .tp-ft-nose {
  fill: rgba(255,255,255,0.94);
}
.tp-dashboard-ref .tp-ft-wing-top,
.tp-dashboard-ref .tp-ft-wing-bottom {
  fill: rgba(226,232,240,0.92);
}
.tp-dashboard-ref .tp-ft-tail {
  fill: #f8fafc;
}
.tp-dashboard-ref .tp-ft-plane-shadow {
  fill: rgba(15,23,42,0.12);
}
.tp-dashboard-ref .tp-ft-windows circle {
  fill: rgba(96,165,250,0.5);
}
.tp-dashboard-ref .tp-ft-plane-brand {
  position: absolute;
  left: 51%;
  top: 54%;
  max-width: 155px;
  transform: translate(-50%, -50%);
  color: rgba(107,85,34,0.72);
  font-family: var(--font-latin, var(--font-ar));
  font-size: 0.9rem;
  font-weight: 950;
  letter-spacing: 0;
  text-align: center;
  text-transform: lowercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tp-dashboard-ref .tp-ft-cloud {
  position: absolute;
  z-index: 2;
  left: -8%;
  right: -8%;
  bottom: -38px;
  height: 74px;
  border-radius: 999px 999px 0 0;
  background: rgba(255,255,255,0.82);
  filter: blur(5px);
  pointer-events: none;
}
.tp-dashboard-ref .tp-ft-cloud-b {
  left: 22%;
  right: -18%;
  bottom: -22px;
  height: 58px;
  opacity: 0.72;
}
.tp-dashboard-ref .tp-ft-info {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
  padding: 18px 22px 20px;
  direction: rtl;
  background: linear-gradient(180deg, #fff 0%, #f7f9fc 100%);
}
.tp-dashboard-ref .tp-ft-stat {
  min-width: 0;
}
.tp-dashboard-ref .tp-ft-stat span {
  display: block;
  margin-bottom: 6px;
  color: #8b95a5;
  font-size: 0.78rem;
  font-weight: 700;
  white-space: nowrap;
}
.tp-dashboard-ref .tp-ft-stat strong {
  display: block;
  color: #111827;
  font-family: var(--font-mono, monospace);
  font-size: 0.98rem;
  font-weight: 950;
  line-height: 1.2;
  letter-spacing: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tp-dashboard-ref .tp-ft-empty .tp-ft-plane-art {
  opacity: 0.58;
}
.tp-dashboard-ref .tp-ft-empty .tp-ft-plane-brand {
  color: rgba(15,23,42,0.42);
}

@media (max-width: 1180px) {
  .tp-dashboard-ref .tp-w-flightticket {
    min-height: 350px;
  }
  .tp-dashboard-ref .tp-ft-sky {
    min-height: 252px;
  }
  .tp-dashboard-ref .tp-ft-plane-wrap {
    height: 156px;
  }
}
@media (max-width: 760px) {
  .tp-dashboard-ref .tp-w-flightticket {
    grid-template-rows: minmax(236px, 1fr) auto;
    min-height: 360px;
  }
  .tp-dashboard-ref .tp-ft-sky {
    min-height: 236px;
    padding: 18px 16px 0;
  }
  .tp-dashboard-ref .tp-ft-route-head {
    grid-template-columns: minmax(58px, auto) minmax(72px, 1fr) minmax(58px, auto);
    gap: 9px;
  }
  .tp-dashboard-ref .tp-ft-code {
    font-size: 1.58rem;
  }
  .tp-dashboard-ref .tp-ft-city {
    font-size: 0.76rem;
  }
  .tp-dashboard-ref .tp-ft-route-line {
    gap: 5px;
    padding-top: 13px;
  }
  .tp-dashboard-ref .tp-ft-plane-mini {
    font-size: 1.32rem;
  }
  .tp-dashboard-ref .tp-ft-status {
    gap: 8px;
  }
  .tp-dashboard-ref .tp-ft-status strong {
    font-size: 0.82rem;
  }
  .tp-dashboard-ref .tp-ft-plane-wrap {
    left: -6%;
    right: -14%;
    bottom: 14px;
    height: 122px;
  }
  .tp-dashboard-ref .tp-ft-plane-brand {
    max-width: 115px;
    font-size: 0.72rem;
  }
  .tp-dashboard-ref .tp-ft-info {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
    padding: 16px;
  }
  .tp-dashboard-ref .tp-ft-stat strong {
    font-size: 0.92rem;
  }
}

/* ─── Featured Flight Ticket Paper Variant ────────────── */
/* ─── Flight ticket card — dark theme redesign ─────────── */
.tp-dashboard-ref .tp-w-flightticket {
  grid-area: plan;
  display: block;
  min-height: 374px;
  padding: 0;
  overflow: visible;
  background: transparent;
  border: 0;
  box-shadow: none;
  color: #e2e8f0;
  cursor: pointer;
  transition: transform 0.25s ease;
}
.tp-dashboard-ref .tp-w-flightticket:hover {
  transform: translateY(-3px);
  border-color: transparent;
  box-shadow: none;
}
.tp-dashboard-ref .tp-w-flightticket:hover .tp-ft-paper {
  border-color: rgba(125,211,252,0.38);
  box-shadow:
    0 30px 60px rgba(0,0,0,0.55),
    0 0 40px rgba(45,212,191,0.18);
}
.tp-dashboard-ref .tp-w-flightticket:hover .tp-ft-plane {
  transform: translate(-50%, -48%) rotate(-8deg) scale(1.03);
}
.tp-dashboard-ref .tp-ft-paper {
  position: relative;
  min-height: 374px;
  height: 100%;
  display: grid;
  grid-template-rows: auto auto minmax(0, 1fr) auto auto;
  padding: 26px 26px 22px;
  overflow: hidden;
  direction: ltr;
  color: #e2e8f0;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(168,85,247,0.18), transparent 46%),
    radial-gradient(ellipse at 100% 100%, rgba(34,211,238,0.14), transparent 48%),
    radial-gradient(circle at 62% 50%, rgba(168,85,247,0.1), transparent 32%),
    linear-gradient(145deg, #17192c 0%, #0f1120 55%, #0b0d1d 100%);
  border: 1px solid rgba(148,163,184,0.16);
  border-radius: 22px;
  box-shadow:
    0 22px 42px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.06),
    inset 0 0 40px rgba(139,92,246,0.05);
  transition: border-color 0.25s ease, box-shadow 0.25s ease;
}
/* Subtle dot grid pattern for texture */
.tp-dashboard-ref .tp-ft-paper::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(148,163,184,0.08) 1px, transparent 1px);
  background-size: 16px 16px;
  opacity: 0.35;
  pointer-events: none;
  z-index: 0;
}
.tp-dashboard-ref .tp-ft-paper > * { position: relative; z-index: 1; }

.tp-dashboard-ref .tp-ft-ticket-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-width: 0;
}
.tp-dashboard-ref .tp-ft-fare {
  display: inline-flex;
  align-items: center;
  min-height: 32px;
  max-width: 58%;
  padding: 6px 14px;
  color: #fff;
  background: linear-gradient(135deg, #f97316, #ea580c);
  font-size: 0.82rem;
  font-weight: 900;
  line-height: 1;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border-radius: 8px;
  box-shadow:
    0 6px 18px rgba(249,115,22,0.4),
    inset 0 1px 0 rgba(255,255,255,0.2);
}
.tp-dashboard-ref .tp-ft-short-route {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 10px;
  min-width: 0;
  color: #f1f5f9;
  font-family: var(--font-mono, monospace);
  font-size: 1.02rem;
  font-weight: 900;
  white-space: nowrap;
}
.tp-dashboard-ref .tp-ft-short-route strong {
  color: #f1f5f9;
  text-shadow: 0 0 18px rgba(255,255,255,0.35);
}
.tp-dashboard-ref .tp-ft-short-route span {
  color: #2dd4bf;
  font-size: 0.9rem;
  transform: translateY(-1px);
  filter: drop-shadow(0 0 6px rgba(45,212,191,0.5));
}
.tp-dashboard-ref .tp-ft-ticket-title {
  margin-top: 28px;
  color: #f8fafc;
  font-size: clamp(1.35rem, 2.2vw, 1.72rem);
  font-weight: 900;
  letter-spacing: 0.2px;
  text-shadow: 0 2px 20px rgba(168,85,247,0.18);
}
.tp-dashboard-ref .tp-ft-ticket-body {
  position: relative;
  display: grid;
  grid-template-columns: minmax(108px, 1fr) minmax(118px, 0.9fr) minmax(108px, 1fr);
  align-items: center;
  gap: 14px;
  min-height: 160px;
  margin-top: 10px;
}
.tp-dashboard-ref .tp-ft-fields {
  position: relative;
  z-index: 2;
  display: grid;
  gap: 18px;
}
.tp-dashboard-ref .tp-ft-fields-right { text-align: left; }
.tp-dashboard-ref .tp-ft-field { min-width: 0; }
.tp-dashboard-ref .tp-ft-field span {
  display: block;
  margin-bottom: 4px;
  color: rgba(148,163,184,0.85);
  font-family: var(--font-ar, inherit);
  font-size: 0.72rem;
  font-weight: 700;
  line-height: 1.1;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
.tp-dashboard-ref .tp-ft-field strong {
  display: block;
  color: #f1f5f9;
  font-family: var(--font-mono, monospace);
  font-size: 0.96rem;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ─── Globe / plane visual (replaces light orbit) ─────── */
.tp-dashboard-ref .tp-ft-orbit {
  position: relative;
  z-index: 1;
  width: min(160px, 100%);
  aspect-ratio: 1;
  justify-self: center;
  opacity: 1;
  filter: drop-shadow(0 10px 30px rgba(139,92,246,0.28));
  animation: tpFtOrbitSpin 22s linear infinite;
}
/* Planet body — dark with atmosphere glow */
.tp-dashboard-ref .tp-ft-orbit::before {
  content: '';
  position: absolute;
  inset: 12%;
  border-radius: 50%;
  background:
    radial-gradient(circle at 35% 30%, rgba(125,211,252,0.35) 0%, rgba(45,212,191,0.12) 22%, transparent 50%),
    radial-gradient(circle at 70% 75%, rgba(168,85,247,0.32) 0%, transparent 55%),
    radial-gradient(circle at 50% 50%, #1e293b 0%, #0f172a 60%, #060816 100%);
  box-shadow:
    inset -14px -18px 32px rgba(0,0,0,0.65),
    inset 10px 12px 22px rgba(125,211,252,0.08),
    0 0 28px rgba(45,212,191,0.22),
    0 0 0 1px rgba(125,211,252,0.08);
}
/* Atmosphere ring glow */
.tp-dashboard-ref .tp-ft-orbit::after {
  content: '';
  position: absolute;
  inset: 8%;
  border-radius: 50%;
  background: radial-gradient(circle, transparent 58%, rgba(125,211,252,0.18) 66%, transparent 74%);
  pointer-events: none;
}
/* Orbit rings */
.tp-dashboard-ref .tp-ft-orbit span {
  position: absolute;
  left: 0;
  right: 0;
  height: 34%;
  border-radius: 50%;
  border: 1.5px solid rgba(125,211,252,0.42);
  border-left-color: transparent;
  border-right-color: transparent;
  transform: rotate(11deg);
  filter: drop-shadow(0 0 4px rgba(125,211,252,0.35));
}
.tp-dashboard-ref .tp-ft-orbit span:nth-child(1) {
  top: 8%;
  border-top-color: rgba(125,211,252,0.55);
}
.tp-dashboard-ref .tp-ft-orbit span:nth-child(2) {
  top: 34%;
  transform: rotate(-11deg);
  border-color: rgba(168,85,247,0.42);
  border-left-color: transparent;
  border-right-color: transparent;
  border-top-color: rgba(168,85,247,0.6);
}
.tp-dashboard-ref .tp-ft-orbit span:nth-child(3) {
  top: 60%;
  border-width: 1px;
  opacity: 0.72;
}
@keyframes tpFtOrbitSpin {
  0%   { transform: rotateZ(0deg); }
  100% { transform: rotateZ(360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .tp-ft-orbit { animation: none; }
}

/* ─── Cut line + notches (dark) ────────────────────────── */
.tp-dashboard-ref .tp-ft-cutline {
  position: relative;
  margin: 16px -26px 18px;
  border-top: 1.5px dashed rgba(148,163,184,0.35);
}
.tp-dashboard-ref .tp-ft-cutline::before,
.tp-dashboard-ref .tp-ft-cutline::after {
  content: '';
  position: absolute;
  top: -16px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: #0b0d1d;
  box-shadow: inset 0 0 8px rgba(0,0,0,0.6);
}
.tp-dashboard-ref .tp-ft-cutline::before { left: -16px; }
.tp-dashboard-ref .tp-ft-cutline::after  { right: -16px; }

/* ─── Barcode (dark with teal/purple bars) ─────────────── */
.tp-dashboard-ref .tp-ft-barcode {
  height: 62px;
  overflow: hidden;
  padding: 8px 2px 4px;
  border-radius: 8px;
  background: rgba(15,20,35,0.6);
  border: 1px solid rgba(148,163,184,0.1);
}
.tp-dashboard-ref .tp-ft-barcode svg {
  display: block;
  width: 100%;
  height: 100%;
}
.tp-dashboard-ref .tp-ft-barcode svg rect {
  fill: rgba(226,232,240,0.88);
}

/* ─── Empty state variant ─────────────────────────────── */
.tp-dashboard-ref .tp-ft-empty .tp-ft-paper {
  background:
    radial-gradient(circle at 50% 50%, rgba(148,163,184,0.08), transparent 40%),
    linear-gradient(145deg, #15172a 0%, #0e1020 55%, #0a0c1b 100%);
  opacity: 0.86;
}
.tp-dashboard-ref .tp-ft-empty .tp-ft-fare {
  background: linear-gradient(135deg, #475569, #334155);
  box-shadow: none;
}
.tp-dashboard-ref .tp-ft-empty .tp-ft-orbit {
  opacity: 0.55;
  filter: grayscale(0.3) drop-shadow(0 6px 14px rgba(148,163,184,0.2));
}

@media (max-width: 1180px) {
  .tp-dashboard-ref .tp-w-flightticket {
    max-width: 520px;
    width: 100%;
    justify-self: center;
  }
}
@media (max-width: 760px) {
  .tp-dashboard-ref .tp-w-flightticket {
    min-height: 356px;
  }
  .tp-dashboard-ref .tp-ft-paper {
    min-height: 356px;
    padding: 22px 20px 20px;
    border-radius: 20px;
  }
  .tp-dashboard-ref .tp-ft-fare {
    max-width: 54%;
    min-height: 31px;
    padding-inline: 12px;
    font-size: 0.76rem;
  }
  .tp-dashboard-ref .tp-ft-short-route {
    gap: 7px;
    font-size: 0.88rem;
  }
  .tp-dashboard-ref .tp-ft-ticket-title {
    margin-top: 24px;
    font-size: 1.28rem;
  }
  .tp-dashboard-ref .tp-ft-ticket-body {
    grid-template-columns: minmax(84px, 1fr) 92px minmax(84px, 1fr);
    gap: 8px;
    min-height: 156px;
  }
  .tp-dashboard-ref .tp-ft-fields {
    gap: 16px;
  }
  .tp-dashboard-ref .tp-ft-field span {
    font-size: 0.72rem;
  }
  .tp-dashboard-ref .tp-ft-field strong {
    font-size: 0.82rem;
  }
  .tp-dashboard-ref .tp-ft-orbit {
    width: 110px;
  }
  .tp-dashboard-ref .tp-ft-orbit span {
    border-width: 1.2px;
  }
  .tp-dashboard-ref .tp-ft-cutline {
    margin-inline: -20px;
  }
  .tp-dashboard-ref .tp-ft-barcode {
    height: 68px;
  }
}

/* ═══════════════════════════════════════════════════════════
   Merged flight combo widget — ticket + orbit + map + distance
   Replaces the separate flight ticket, flight map, and boarding
   pass widgets. Shares the orbit animation via .tp-ft-orbit.
   ═══════════════════════════════════════════════════════════ */
.tp-dashboard-ref .tp-w-flight-combo {
  grid-area: combo;
  padding: 0;
  background: transparent;
  border: 0;
  box-shadow: none;
  overflow: visible;
  color: #e2e8f0;
  min-height: 0;
}
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-paper {
  position: relative;
  height: 100%;
  min-height: 320px;
  display: grid;
  grid-template-rows: auto auto auto auto auto 1fr auto;
  gap: 10px;
  padding: 14px 18px 12px;
  overflow: hidden;
  direction: ltr;
  color: #e2e8f0;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(168,85,247,0.18), transparent 46%),
    radial-gradient(ellipse at 100% 100%, rgba(34,211,238,0.14), transparent 48%),
    radial-gradient(circle at 62% 50%, rgba(168,85,247,0.1), transparent 32%),
    linear-gradient(145deg, #17192c 0%, #0f1120 55%, #0b0d1d 100%);
  border: 1px solid rgba(148,163,184,0.16);
  border-radius: 22px;
  box-shadow:
    0 22px 42px rgba(0,0,0,0.55),
    inset 0 1px 0 rgba(255,255,255,0.06),
    inset 0 0 40px rgba(139,92,246,0.05);
  cursor: pointer;
  transition: border-color 0.25s ease, box-shadow 0.25s ease, transform 0.25s ease;
}
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-paper:hover {
  border-color: rgba(125,211,252,0.38);
  box-shadow:
    0 30px 60px rgba(0,0,0,0.55),
    0 0 40px rgba(45,212,191,0.18),
    inset 0 1px 0 rgba(255,255,255,0.08);
  transform: translateY(-2px);
}
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-paper::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image: radial-gradient(circle, rgba(148,163,184,0.08) 1px, transparent 1px);
  background-size: 16px 16px;
  opacity: 0.35;
  pointer-events: none;
  z-index: 0;
}
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-paper > * { position: relative; z-index: 1; }

/* ── Head: airline logo + name + fare badge ── */
.tp-dashboard-ref .tp-fc-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  direction: rtl;
}
.tp-dashboard-ref .tp-fc-airline {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
}
.tp-dashboard-ref .tp-fc-logo {
  width: 40px;
  height: 28px;
  object-fit: contain;
  background: rgba(255,255,255,0.94);
  border: 1px solid rgba(148,163,184,0.3);
  border-radius: 6px;
  padding: 2px 3px;
  flex-shrink: 0;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}
.tp-dashboard-ref .tp-fc-logo-fallback {
  width: 40px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(139,92,246,0.4), rgba(34,211,238,0.3));
  border: 1px solid rgba(148,163,184,0.3);
  border-radius: 6px;
  color: #f1f5f9;
  font-size: 1.2rem;
  flex-shrink: 0;
}
.tp-dashboard-ref .tp-fc-airline-meta {
  display: flex;
  flex-direction: column;
  min-width: 0;
  gap: 1px;
  text-align: right;
}
.tp-dashboard-ref .tp-fc-airline-name {
  font-size: 0.84rem;
  font-weight: 900;
  color: #f1f5f9;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}
.tp-dashboard-ref .tp-fc-airline-sub {
  font-family: var(--font-mono, monospace);
  font-size: 0.68rem;
  font-weight: 700;
  color: rgba(148,163,184,0.78);
  letter-spacing: 0.08em;
}
.tp-dashboard-ref .tp-fc-fare {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  max-width: 50%;
  padding: 3px 11px;
  color: #fff;
  background: linear-gradient(135deg, #f97316, #ea580c);
  font-size: 0.72rem;
  font-weight: 900;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  border-radius: 8px;
  flex-shrink: 0;
  box-shadow:
    0 6px 16px rgba(249,115,22,0.4),
    inset 0 1px 0 rgba(255,255,255,0.2);
}

/* ── Route row: IATA → IATA + title ── */
.tp-dashboard-ref .tp-fc-route-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  direction: ltr;
}
.tp-dashboard-ref .tp-fc-iata-group {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  font-family: var(--font-mono, monospace);
}
.tp-dashboard-ref .tp-fc-iata {
  color: #f1f5f9;
  font-size: clamp(1.2rem, 1.8vw, 1.5rem);
  font-weight: 950;
  letter-spacing: 0.04em;
  text-shadow: 0 0 20px rgba(125,211,252,0.3);
}
.tp-dashboard-ref .tp-fc-plane-icon {
  color: #2dd4bf;
  font-size: 0.95rem;
  filter: drop-shadow(0 0 8px rgba(45,212,191,0.6));
  transform: translateY(-1px);
}
.tp-dashboard-ref .tp-fc-ticket-title {
  color: #f8fafc;
  font-size: clamp(0.88rem, 1.15vw, 1.02rem);
  font-weight: 900;
  letter-spacing: 0.2px;
  text-shadow: 0 2px 20px rgba(168,85,247,0.18);
  white-space: nowrap;
}

/* ── Body: left fields · orbit · right fields ── */
.tp-dashboard-ref .tp-fc-body {
  position: relative;
  display: grid;
  grid-template-columns: minmax(90px, 1fr) minmax(95px, 0.85fr) minmax(90px, 1fr);
  align-items: center;
  gap: 10px;
  min-height: 110px;
  direction: ltr;
}
.tp-dashboard-ref .tp-fc-fields {
  display: grid;
  gap: 9px;
  direction: ltr;
}
.tp-dashboard-ref .tp-fc-fields-right { text-align: left; }
.tp-dashboard-ref .tp-fc-field { min-width: 0; }
.tp-dashboard-ref .tp-fc-field span {
  display: block;
  margin-bottom: 2px;
  color: rgba(148,163,184,0.85);
  font-size: 0.64rem;
  font-weight: 700;
  line-height: 1.1;
  text-transform: uppercase;
  letter-spacing: 0.4px;
}
.tp-dashboard-ref .tp-fc-field strong {
  display: block;
  color: #f1f5f9;
  font-family: var(--font-mono, monospace);
  font-size: 0.82rem;
  font-weight: 800;
  line-height: 1.2;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.tp-dashboard-ref .tp-fc-orbit,
.tp-dashboard-ref .tp-w-flight-combo .tp-ft-orbit {
  width: min(118px, 100%);
  aspect-ratio: 1;
  justify-self: center;
}

/* ── Extra flight pills (return/layovers) ── */
.tp-dashboard-ref .tp-fc-extras {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 10px;
  direction: rtl;
}
.tp-dashboard-ref .tp-fc-extra {
  display: grid;
  grid-template-columns: 32px minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(148,163,184,0.18);
  border-radius: 10px;
  color: #e2e8f0;
  font-family: var(--font-ar, inherit);
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
  text-align: right;
}
.tp-dashboard-ref .tp-fc-extra:hover {
  background: rgba(139,92,246,0.12);
  border-color: rgba(168,139,250,0.4);
  transform: translateY(-1px);
}
.tp-dashboard-ref .tp-fc-extra-logo {
  width: 28px;
  height: 20px;
  object-fit: contain;
  background: #fff;
  border-radius: 4px;
  border: 1px solid rgba(148,163,184,0.3);
  padding: 1px 2px;
}
.tp-dashboard-ref .tp-fc-extra-logo-f {
  width: 28px;
  height: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(45,212,191,0.15);
  border-radius: 4px;
  color: #2dd4bf;
  font-size: 0.9rem;
}
.tp-dashboard-ref .tp-fc-extra-meta {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
.tp-dashboard-ref .tp-fc-extra-label {
  color: rgba(148,163,184,0.85);
  font-size: 0.7rem;
  font-weight: 600;
}
.tp-dashboard-ref .tp-fc-extra-route {
  color: #f1f5f9;
  font-family: var(--font-mono, monospace);
  font-size: 0.84rem;
  font-weight: 900;
  letter-spacing: 0.05em;
}
.tp-dashboard-ref .tp-fc-extra-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 1px;
  text-align: left;
}
.tp-dashboard-ref .tp-fc-extra-date {
  color: rgba(226,232,240,0.72);
  font-size: 0.74rem;
  font-weight: 700;
}
.tp-dashboard-ref .tp-fc-extra-num {
  color: #67e8f9;
  font-family: var(--font-mono, monospace);
  font-size: 0.72rem;
  font-weight: 800;
  letter-spacing: 0.06em;
}

/* ── Cut line with notches ── */
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-cutline {
  position: relative;
  margin: 4px -26px 4px;
  border-top: 1.5px dashed rgba(148,163,184,0.35);
}
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-cutline::before,
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-cutline::after {
  content: '';
  position: absolute;
  top: -14px;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--bg, #0b0d1d);
  box-shadow: inset 0 0 8px rgba(0,0,0,0.6);
}
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-cutline::before { left: -14px; }
.tp-dashboard-ref .tp-w-flight-combo .tp-fc-cutline::after  { right: -14px; }

/* ── Map row: map (flex) + distance chip ── */
.tp-dashboard-ref .tp-fc-map-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 120px;
  gap: 10px;
  align-items: stretch;
  direction: rtl;
}
.tp-dashboard-ref .tp-fc-map-wrap {
  position: relative;
  padding: 6px 9px 8px;
  background:
    radial-gradient(ellipse at 70% 60%, rgba(45,212,191,0.08), transparent 45%),
    rgba(10,13,24,0.5);
  border: 1px solid rgba(148,163,184,0.14);
  border-radius: 14px;
  overflow: hidden;
}
.tp-dashboard-ref .tp-fc-map-title {
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-ar, inherit);
  font-size: 0.72rem;
  font-weight: 800;
  color: #e2e8f0;
  margin-bottom: 1px;
}
.tp-dashboard-ref .tp-fc-map-title-label {
  color: #f1f5f9;
}
.tp-dashboard-ref .tp-fc-map-route {
  margin-inline-start: auto;
  color: rgba(103,232,249,0.85);
  font-family: var(--font-mono, monospace);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  padding: 2px 8px;
  background: rgba(45,212,191,0.08);
  border: 1px solid rgba(45,212,191,0.22);
  border-radius: 999px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 60%;
}
.tp-dashboard-ref .tp-fc-map {
  width: 100%;
  height: 130px;
  display: block;
  margin-top: 2px;
  border-radius: 10px;
  background: transparent;
}
.tp-dashboard-ref .tp-fc-dist-chip {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 10px 10px;
  background:
    linear-gradient(135deg, rgba(45,212,191,0.18), rgba(45,212,191,0.05)),
    rgba(10,13,24,0.7);
  border: 1px solid rgba(45,212,191,0.35);
  border-radius: 14px;
  box-shadow: inset 0 0 20px rgba(45,212,191,0.08);
  text-align: center;
}
.tp-dashboard-ref .tp-fc-dist-label {
  color: rgba(226,232,240,0.72);
  font-family: var(--font-ar, inherit);
  font-size: 0.66rem;
  font-weight: 700;
}
.tp-dashboard-ref .tp-fc-dist-value {
  display: inline-flex;
  align-items: baseline;
  gap: 3px;
  color: #67e8f9;
  font-family: var(--font-mono, monospace);
  font-size: 1.25rem;
  font-weight: 950;
  letter-spacing: 0;
  text-shadow: 0 0 20px rgba(45,212,191,0.4);
  line-height: 1;
}
.tp-dashboard-ref .tp-fc-dist-value span {
  font-size: 0.68rem;
  color: rgba(226,232,240,0.7);
  font-weight: 700;
  font-family: var(--font-ar, inherit);
}
.tp-dashboard-ref .tp-fc-dist-sub {
  color: rgba(148,163,184,0.7);
  font-family: var(--font-ar, inherit);
  font-size: 0.62rem;
  font-weight: 600;
}

/* ── Footer: barcode + PNR ── */
.tp-dashboard-ref .tp-fc-footer {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 10px;
  direction: rtl;
}
.tp-dashboard-ref .tp-fc-barcode {
  height: 38px;
  padding: 5px 7px;
  border-radius: 8px;
  background: rgba(15,20,35,0.6);
  border: 1px solid rgba(148,163,184,0.12);
  overflow: hidden;
}
.tp-dashboard-ref .tp-fc-barcode svg {
  display: block;
  width: 100%;
  height: 100%;
}
.tp-dashboard-ref .tp-fc-pnr {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  padding: 4px 11px;
  background: rgba(139,92,246,0.14);
  border: 1px solid rgba(168,139,250,0.3);
  border-radius: 9px;
  min-width: 82px;
}
.tp-dashboard-ref .tp-fc-pnr-label {
  color: rgba(148,163,184,0.85);
  font-family: var(--font-ar, inherit);
  font-size: 0.6rem;
  font-weight: 700;
  letter-spacing: 0.06em;
}
.tp-dashboard-ref .tp-fc-pnr-value {
  color: #c4b5fd;
  font-family: var(--font-mono, monospace);
  font-size: 0.9rem;
  font-weight: 900;
  letter-spacing: 0.1em;
  line-height: 1;
}

/* ── Empty state (no flight booking, no destinations) ── */
.tp-dashboard-ref .tp-w-flight-combo.tp-fc-empty-shell .tp-fc-paper {
  grid-template-rows: 1fr;
  min-height: 320px;
  opacity: 0.88;
  background:
    radial-gradient(circle at 50% 50%, rgba(148,163,184,0.08), transparent 40%),
    linear-gradient(145deg, #15172a 0%, #0e1020 55%, #0a0c1b 100%);
}
.tp-dashboard-ref .tp-fc-empty-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 30px 20px;
  text-align: center;
}
.tp-dashboard-ref .tp-fc-empty-icon {
  font-size: 2.6rem;
  opacity: 0.5;
}
.tp-dashboard-ref .tp-fc-empty-msg {
  color: rgba(226,232,240,0.7);
  font-family: var(--font-ar, inherit);
  font-size: 0.92rem;
  font-weight: 600;
}
.tp-dashboard-ref .tp-fc-empty-btn {
  margin-top: 6px;
  padding: 8px 18px;
  background: linear-gradient(135deg, #8b5cf6, #6366f1);
  color: #fff;
  border: 0;
  border-radius: 10px;
  font-family: var(--font-ar, inherit);
  font-size: 0.84rem;
  font-weight: 800;
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(139,92,246,0.4);
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
.tp-dashboard-ref .tp-fc-empty-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 10px 26px rgba(139,92,246,0.52);
}

/* ── Combo widget responsive ── */
@media (max-width: 1180px) {
  .tp-dashboard-ref .tp-w-flight-combo {
    min-height: 0;
  }
  .tp-dashboard-ref .tp-w-flight-combo .tp-fc-paper {
    min-height: 0;
  }
}
@media (max-width: 760px) {
  .tp-dashboard-ref .tp-w-flight-combo .tp-fc-paper {
    padding: 12px 14px 10px;
    gap: 8px;
    border-radius: 16px;
  }
  .tp-dashboard-ref .tp-fc-head { flex-wrap: wrap; }
  .tp-dashboard-ref .tp-fc-airline-name { max-width: 140px; font-size: 0.78rem; }
  .tp-dashboard-ref .tp-fc-fare { font-size: 0.66rem; padding: 3px 8px; min-height: 22px; }
  .tp-dashboard-ref .tp-fc-iata { font-size: 1.2rem; }
  .tp-dashboard-ref .tp-fc-ticket-title { font-size: 0.85rem; }
  .tp-dashboard-ref .tp-fc-body {
    grid-template-columns: minmax(78px, 1fr) 85px minmax(78px, 1fr);
    gap: 6px;
    min-height: 95px;
  }
  .tp-dashboard-ref .tp-fc-field span { font-size: 0.6rem; }
  .tp-dashboard-ref .tp-fc-field strong { font-size: 0.75rem; }
  .tp-dashboard-ref .tp-fc-orbit { width: 92px; }
  .tp-dashboard-ref .tp-fc-extras { grid-template-columns: 1fr; }
  .tp-dashboard-ref .tp-fc-map-row {
    grid-template-columns: 1fr;
    gap: 8px;
  }
  .tp-dashboard-ref .tp-fc-dist-chip {
    flex-direction: row;
    justify-content: space-between;
    padding: 8px 12px;
  }
  .tp-dashboard-ref .tp-fc-map { height: 120px; }
  .tp-dashboard-ref .tp-w-flight-combo .tp-fc-cutline {
    margin-inline: -14px;
  }
  .tp-dashboard-ref .tp-fc-barcode { height: 34px; }
}

/* ─── Travel page progressive-load states ──────────────── */
.tp-page-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 80px 20px;
  color: rgba(226, 232, 240, 0.6);
  font-family: var(--font-ar, inherit);
  font-size: 0.9rem;
  animation: tpLoadFade 0.3s ease-out;
}
.tp-page-loading-sp {
  width: 36px;
  height: 36px;
  border: 3px solid rgba(139, 92, 246, 0.2);
  border-top-color: #a78bfa;
  border-radius: 50%;
  animation: tpLoadSpin 0.9s linear infinite;
}
.tp-page-loading-lbl {
  color: rgba(226, 232, 240, 0.58);
  letter-spacing: 0.01em;
}
@keyframes tpLoadFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes tpLoadSpin { to { transform: rotate(360deg); } }
.tp-dashboard-placeholder {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 14px;
  padding: 60px 20px;
  min-height: 320px;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(139, 92, 246, 0.08), transparent 60%),
    radial-gradient(ellipse at 100% 100%, rgba(45, 212, 191, 0.06), transparent 60%),
    linear-gradient(160deg, rgba(26, 22, 50, 0.6), rgba(17, 15, 36, 0.6));
  border: 1px solid rgba(139, 92, 246, 0.14);
  border-radius: 20px;
  margin-bottom: 22px;
  color: rgba(226, 232, 240, 0.6);
  animation: tpLoadFade 0.3s ease-out;
}
.tp-dashboard-error {
  padding: 40px 22px;
  text-align: center;
  background: linear-gradient(160deg, rgba(239, 68, 68, 0.08), rgba(17, 15, 36, 0.6));
  border: 1px solid rgba(239, 68, 68, 0.2);
  border-radius: 20px;
  margin-bottom: 22px;
  color: rgba(226, 232, 240, 0.85);
}
.tp-dashboard-error-icon { font-size: 2.2rem; margin-bottom: 8px; }
.tp-dashboard-error-title {
  font-size: 1.05rem; font-weight: 700; color: #fca5a5; margin-bottom: 4px;
}
.tp-dashboard-error-sub {
  font-size: 0.82rem; color: rgba(226, 232, 240, 0.55);
  font-family: var(--font-mono, monospace);
  word-break: break-word;
}


/* ─── PRAYER TIMES OVERLAY ─────────────────────────────────── */
.prayer-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  z-index: 9700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  animation: ptFade 0.2s ease-out;
}
.prayer-overlay.hidden { display: none !important; }
@keyframes ptFade { from { opacity: 0; } to { opacity: 1; } }
@keyframes ptDrop {
  from { opacity: 0; transform: translateY(20px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.prayer-box {
  width: min(480px, 94vw);
  max-height: 86vh;
  overflow-y: auto;
  background:
    radial-gradient(ellipse at 0% 0%, rgba(139, 92, 246, 0.16), transparent 55%),
    radial-gradient(ellipse at 100% 100%, rgba(45, 212, 191, 0.12), transparent 55%),
    linear-gradient(160deg, #1a1632 0%, #120f24 55%, #0c0b1c 100%);
  border: 1px solid rgba(139, 92, 246, 0.24);
  border-radius: 22px;
  box-shadow:
    0 30px 80px rgba(0, 0, 0, 0.65),
    0 0 0 1px rgba(255, 255, 255, 0.03) inset,
    0 0 60px rgba(139, 92, 246, 0.14);
  color: var(--text);
  animation: ptDrop 0.25s cubic-bezier(0.16, 1, 0.3, 1);
  position: relative;
}
.prayer-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px 22px 14px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.prayer-head-left { display: flex; flex-direction: column; gap: 8px; }
.prayer-title {
  font-size: 1.15rem;
  font-weight: 800;
  color: #f5f0ff;
  letter-spacing: -0.01em;
}
.prayer-city-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: rgba(139, 92, 246, 0.12);
  border: 1px solid rgba(139, 92, 246, 0.25);
  border-radius: 10px;
  font-size: 0.82rem;
  color: rgba(232, 238, 247, 0.92);
  cursor: pointer;
  transition: all 0.15s ease;
  user-select: none;
  width: fit-content;
}
.prayer-city-chip:hover {
  background: rgba(139, 92, 246, 0.2);
  border-color: rgba(139, 92, 246, 0.4);
}
.pt-city-caret { font-size: 0.7rem; opacity: 0.6; }
.prayer-close {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: rgba(226, 232, 240, 0.75);
  width: 32px;
  height: 32px;
  border-radius: 10px;
  font-size: 0.9rem;
  cursor: pointer;
  transition: all 0.15s;
}
.prayer-close:hover {
  background: rgba(239, 68, 68, 0.15);
  border-color: rgba(239, 68, 68, 0.35);
  color: #fca5a5;
}
.prayer-city-picker {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(112px, 1fr));
  gap: 6px;
  padding: 12px 16px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  max-height: 200px;
  overflow-y: auto;
  animation: ptDrop 0.18s ease-out;
}
.prayer-city-picker.hidden { display: none; }
.pt-city-opt {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  color: rgba(226, 232, 240, 0.85);
  padding: 6px 10px;
  border-radius: 8px;
  font-family: var(--font-ar, inherit);
  font-size: 0.78rem;
  cursor: pointer;
  transition: all 0.15s;
}
.pt-city-opt:hover { background: rgba(139, 92, 246, 0.12); border-color: rgba(139, 92, 246, 0.3); }
.pt-city-opt.active {
  background: linear-gradient(135deg, rgba(139, 92, 246, 0.32), rgba(45, 212, 191, 0.2));
  border-color: rgba(139, 92, 246, 0.5);
  color: #fff;
}

.prayer-body { padding: 18px 22px; }
.prayer-loading {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  padding: 30px 0;
  color: rgba(226, 232, 240, 0.6);
  font-size: 0.88rem;
}
.prayer-spinner {
  width: 32px;
  height: 32px;
  border: 3px solid rgba(139, 92, 246, 0.2);
  border-top-color: #a78bfa;
  border-radius: 50%;
  animation: ptSpin 0.8s linear infinite;
}
@keyframes ptSpin { to { transform: rotate(360deg); } }
.prayer-error {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 30px 0;
  color: rgba(226, 232, 240, 0.75);
  text-align: center;
}
.prayer-error-icon { font-size: 2rem; margin-bottom: 6px; }
.prayer-retry {
  margin-top: 12px;
  background: linear-gradient(135deg, rgba(139, 92, 246, 0.32), rgba(45, 212, 191, 0.24));
  border: 1px solid rgba(139, 92, 246, 0.4);
  color: #f5f0ff;
  padding: 8px 18px;
  border-radius: 10px;
  font-family: var(--font-ar, inherit);
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
}
.prayer-retry:hover { filter: brightness(1.15); transform: translateY(-1px); }

.prayer-next-card {
  background:
    linear-gradient(135deg, rgba(45, 212, 191, 0.16), rgba(139, 92, 246, 0.16)),
    rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(45, 212, 191, 0.28);
  border-radius: 16px;
  padding: 16px 18px;
  margin-bottom: 14px;
  text-align: center;
  position: relative;
  overflow: hidden;
}
.prayer-next-card::before {
  content: '';
  position: absolute;
  inset: -1px;
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(45, 212, 191, 0.5), rgba(139, 92, 246, 0.5));
  opacity: 0;
  z-index: -1;
  filter: blur(8px);
  animation: ptNextPulse 2.6s ease-in-out infinite;
}
@keyframes ptNextPulse { 0%,100% { opacity: 0.25; } 50% { opacity: 0.55; } }
.pt-next-label {
  font-size: 0.72rem;
  color: rgba(45, 212, 191, 0.85);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 700;
  margin-bottom: 6px;
}
.pt-next-name {
  font-size: 1.4rem;
  font-weight: 800;
  color: #f5f0ff;
  margin-bottom: 4px;
  letter-spacing: -0.01em;
}
.pt-next-countdown {
  font-size: 1.05rem;
  font-weight: 700;
  color: #2dd4bf;
  font-variant-numeric: tabular-nums;
  text-shadow: 0 0 12px rgba(45, 212, 191, 0.4);
  direction: ltr;
  display: inline-block;
}

.prayer-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.pt-row {
  display: grid;
  grid-template-columns: 28px 1fr auto auto;
  align-items: center;
  gap: 10px;
  padding: 11px 12px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.04);
  border-radius: 11px;
  transition: all 0.15s ease;
}
.pt-row:hover { background: rgba(255, 255, 255, 0.04); }
.pt-row.is-past { opacity: 0.5; }
.pt-row.is-next {
  background: linear-gradient(135deg, rgba(45, 212, 191, 0.12), rgba(139, 92, 246, 0.1));
  border-color: rgba(45, 212, 191, 0.32);
  box-shadow: 0 0 24px rgba(45, 212, 191, 0.12);
}
.pt-row-ic { font-size: 1.1rem; text-align: center; }
.pt-row-name {
  font-size: 0.95rem;
  font-weight: 700;
  color: var(--text);
}
.pt-row-time {
  font-family: var(--font-mono, monospace);
  font-size: 0.88rem;
  color: rgba(226, 232, 240, 0.82);
  font-variant-numeric: tabular-nums;
  direction: ltr;
}
.pt-row.is-next .pt-row-time { color: #2dd4bf; }
.pt-row-next-badge {
  font-size: 0.65rem;
  font-weight: 800;
  padding: 3px 8px;
  background: linear-gradient(135deg, #2dd4bf, #14b8a6);
  color: #0a1512;
  border-radius: 6px;
  letter-spacing: 0.05em;
}

.prayer-foot {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 12px 18px 16px;
  font-size: 0.72rem;
  color: rgba(226, 232, 240, 0.45);
  border-top: 1px solid rgba(255, 255, 255, 0.04);
  flex-wrap: wrap;
  text-align: center;
}

@media (max-width: 600px) {
  .prayer-box { border-radius: 18px; }
  .prayer-head { padding: 14px 16px 12px; }
  .prayer-body { padding: 14px 16px; }
  .prayer-city-picker {
    grid-template-columns: repeat(auto-fill, minmax(92px, 1fr));
    padding: 10px 12px;
  }
  .pt-next-name { font-size: 1.2rem; }
  .pt-next-countdown { font-size: 0.95rem; }
  .pt-row-name { font-size: 0.88rem; }
  .pt-row { padding: 9px 10px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   MERGED FROM style-widgets.css (2026-04-24) — widgets loaded AFTER main rules
   to preserve original cascade where some calendar/preview selectors overlap.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   A.N.A — Widgets, Insights, Focus Mode, Shortcuts, Voice, PWA
   Loaded AFTER style.css so these styles win without !important where possible.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── TODAY WIDGETS ROW ──────────────────────────────────────────────── */
.today-widgets {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 14px;
  margin: 18px 0 22px;
}

.widget-card {
  position: relative;
  background:
    linear-gradient(155deg, rgba(139,92,246,0.06), rgba(255,255,255,0.02)),
    rgba(12, 17, 26, 0.72);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 18px;
  padding: 14px 16px 16px;
  min-height: 150px;
  overflow: hidden;
  transition: all 0.25s ease;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.widget-card:hover {
  border-color: rgba(139,92,246,0.22);
  transform: translateY(-2px);
  box-shadow: 0 12px 32px rgba(0,0,0,0.35), 0 0 24px rgba(139,92,246,0.08);
}
.widget-card.skeleton {
  opacity: 0.6;
}
.widget-card.skeleton::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.04), transparent);
  animation: widget-shimmer 1.5s infinite;
}
@keyframes widget-shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
.widget-skeleton-body {
  display: flex; align-items: center; justify-content: center;
  height: 100%; color: rgba(255,255,255,0.4);
  font-size: 0.85rem;
}

.widget-head {
  display: flex; align-items: center; gap: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(255,255,255,0.05);
}
.widget-icon { font-size: 1.15rem; }
.widget-title {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.88rem;
  color: var(--text);
  flex: 1;
}
.widget-city, .widget-kind {
  font-size: 0.68rem;
  color: rgba(232, 238, 247, 0.5);
  font-family: var(--font-ar);
  font-weight: 500;
  padding: 3px 8px;
  border-radius: 10px;
  background: rgba(255,255,255,0.04);
}
.widget-err {
  color: rgba(255,255,255,0.5);
  text-align: center;
  padding: 20px 10px;
  font-size: 0.8rem;
}

/* ─── Prayer widget ─── */
.widget-prayer-next {
  display: flex; flex-direction: column; gap: 3px;
  padding: 10px 12px;
  background:
    linear-gradient(135deg, rgba(89,216,255,0.1), rgba(139,92,246,0.08));
  border-radius: 12px;
  border: 1px solid rgba(89,216,255,0.15);
}
.widget-prayer-next-lbl {
  font-size: 0.65rem;
  color: rgba(232,238,247,0.6);
  font-family: var(--font-ar);
}
.widget-prayer-next-name {
  font-family: var(--font-ar);
  font-weight: 800;
  font-size: 1.1rem;
  color: var(--text);
  display: inline-block;
  margin-inline-end: 8px;
}
.widget-prayer-next-time {
  font-family: var(--font-mono);
  font-weight: 700;
  color: #59d8ff;
  font-size: 0.98rem;
  display: inline-block;
}
.widget-prayer-next-in {
  display: block;
  font-size: 0.72rem;
  color: rgba(232,238,247,0.55);
  margin-top: 2px;
}
.widget-prayer-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  font-size: 0.78rem;
}
.widget-prayer-row {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 6px 4px;
  border-radius: 8px;
  background: rgba(255,255,255,0.02);
  border: 1px solid transparent;
  transition: all 0.15s;
}
.widget-prayer-row:hover { background: rgba(255,255,255,0.04); }
.widget-prayer-row.active {
  background: rgba(89,216,255,0.08);
  border-color: rgba(89,216,255,0.25);
}
.widget-prayer-row span:first-child {
  font-family: var(--font-ar);
  font-weight: 600;
  color: rgba(232,238,247,0.7);
  font-size: 0.72rem;
}
.widget-prayer-row span:last-child {
  font-family: var(--font-mono);
  color: var(--text);
  font-weight: 700;
  font-size: 0.85rem;
}
.widget-prayer-row.active span:last-child { color: #59d8ff; }

/* ─── Weather widget ─── */
.widget-weather-now {
  display: flex;
  align-items: baseline;
  gap: 10px;
}
.widget-wx-big {
  font-family: var(--font-mono);
  font-size: 2.4rem;
  font-weight: 700;
  color: var(--text);
  line-height: 1;
}
.widget-wx-label {
  font-family: var(--font-ar);
  font-weight: 600;
  font-size: 0.85rem;
  color: rgba(232,238,247,0.7);
}
.widget-wx-meta {
  display: flex;
  gap: 12px;
  font-size: 0.75rem;
  color: rgba(232,238,247,0.6);
  padding-top: 2px;
}
.widget-wx-days {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.05);
}
.widget-wx-day {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  font-size: 0.68rem;
  padding: 4px;
  border-radius: 8px;
  background: rgba(255,255,255,0.02);
}
.widget-wx-day-lbl {
  font-family: var(--font-ar);
  color: rgba(232,238,247,0.6);
}
.widget-wx-day-ico { font-size: 1rem; }
.widget-wx-day-t {
  font-family: var(--font-mono);
  color: var(--text);
  font-weight: 600;
  font-size: 0.7rem;
}

/* ─── Hijri widget ─── */
.widget-hijri-big {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 10px 2px;
  flex-wrap: wrap;
}
.widget-hijri-day {
  font-family: var(--font-mono);
  font-size: 2.8rem;
  font-weight: 800;
  color: var(--text);
  line-height: 1;
}
.widget-hijri-month {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 1.15rem;
  color: #59d8ff;
}
.widget-hijri-year {
  font-family: var(--font-mono);
  color: rgba(232,238,247,0.6);
  font-size: 0.9rem;
}
.widget-hijri-weekday {
  font-family: var(--font-ar);
  font-size: 0.88rem;
  font-weight: 600;
  color: rgba(232,238,247,0.75);
}
.widget-hijri-greg {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(232,238,247,0.55);
  margin-top: auto;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.05);
}

/* ─── Wisdom widget ─── */
.widget-wisdom {
  background:
    linear-gradient(145deg, rgba(255, 79, 170, 0.08), rgba(89,216,255,0.05)),
    rgba(12, 17, 26, 0.72);
  border-color: rgba(255, 79, 170, 0.15);
}
.widget-wisdom-text {
  font-family: var(--font-ar);
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.75;
  color: var(--text);
  padding: 10px 4px;
  text-align: center;
  letter-spacing: 0.01em;
  position: relative;
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.widget-wisdom-text::before,
.widget-wisdom-text::after {
  content: '"';
  font-family: serif;
  font-size: 2.5rem;
  color: rgba(255,79,170,0.25);
  line-height: 0;
  position: relative;
  top: 8px;
  margin: 0 4px;
}

/* ─── Currency widget ─── */
.widget-rates-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.widget-rate-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 8px;
  border-radius: 8px;
  background: rgba(255,255,255,0.02);
  font-size: 0.82rem;
  transition: background 0.15s;
}
.widget-rate-row:hover { background: rgba(255,255,255,0.04); }
.widget-rate-flag { font-size: 1rem; }
.widget-rate-name {
  font-family: var(--font-ar);
  color: rgba(232,238,247,0.7);
  flex: 1;
}
.widget-rate-val {
  font-family: var(--font-mono);
  font-weight: 700;
  color: #59d8ff;
}

/* Mobile: stack widgets */
@media (max-width: 640px) {
  .today-widgets { grid-template-columns: 1fr; gap: 10px; }
  .widget-card { min-height: 130px; padding: 12px 14px 14px; }
  .widget-prayer-list { grid-template-columns: repeat(3, 1fr); font-size: 0.72rem; }
  .widget-wx-big { font-size: 2rem; }
  .widget-hijri-day { font-size: 2.2rem; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   INSIGHTS / STATS PAGE
   ═══════════════════════════════════════════════════════════════════════════ */
.insights-page {
  position: fixed;
  inset: 0;
  background:
    linear-gradient(180deg, rgba(5,10,18,0.98), rgba(4,6,12,0.99));
  z-index: 9500;
  overflow-y: auto;
  padding: 24px clamp(16px, 4vw, 40px) 60px;
  backdrop-filter: blur(12px);
  animation: insightsIn 0.25s ease-out;
  direction: rtl;
}
.insights-page.hidden { display: none !important; }
@keyframes insightsIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
.insights-header {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 28px;
  padding-top: 8px;
}
.insights-close {
  width: 40px; height: 40px;
  border-radius: 14px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--text);
  font-size: 1.1rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: all 0.2s;
}
.insights-close:hover {
  background: rgba(255, 79, 170, 0.12);
  border-color: rgba(255, 79, 170, 0.3);
}
.insights-title {
  font-family: var(--font-ar);
  font-size: 1.6rem;
  font-weight: 800;
  color: var(--text);
  margin: 0 0 4px;
}
.insights-sub {
  font-family: var(--font-ar);
  color: rgba(232,238,247,0.6);
  font-size: 0.9rem;
  margin: 0;
}
.insights-grid {
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-width: 1200px;
  margin: 0 auto;
}
.insights-row { display: grid; gap: 14px; }
.insights-row-4 { grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); }

.insight-stat {
  padding: 18px 20px;
  border-radius: 18px;
  background:
    linear-gradient(145deg, rgba(139,92,246,0.08), rgba(255,255,255,0.02)),
    rgba(12, 17, 26, 0.8);
  border: 1px solid rgba(255,255,255,0.07);
  display: flex;
  flex-direction: column;
  gap: 4px;
  transition: all 0.2s;
}
.insight-stat:hover { transform: translateY(-2px); border-color: rgba(139,92,246,0.3); }
.insight-stat-accent { border-color: rgba(89,216,255,0.25); }
.insight-stat-warn { border-color: rgba(255,182,76,0.25); }
.insight-stat-info { border-color: rgba(87,180,255,0.25); }
.insight-stat-success { border-color: rgba(74,222,128,0.25); }
.insight-stat-num {
  font-family: var(--font-mono);
  font-size: 2.2rem;
  font-weight: 800;
  color: var(--text);
  line-height: 1;
}
.insight-stat-accent .insight-stat-num { color: #59d8ff; }
.insight-stat-warn .insight-stat-num { color: #ffb64c; }
.insight-stat-info .insight-stat-num { color: #57b4ff; }
.insight-stat-success .insight-stat-num { color: #4ade80; }
.insight-stat-lbl {
  font-family: var(--font-ar);
  font-size: 0.85rem;
  color: rgba(232,238,247,0.6);
}

.insight-block {
  padding: 20px 22px;
  border-radius: 20px;
  background:
    linear-gradient(165deg, rgba(139,92,246,0.04), rgba(255,255,255,0.02)),
    rgba(10, 14, 22, 0.78);
  border: 1px solid rgba(255,255,255,0.07);
}
.insight-block-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 1rem;
  color: var(--text);
}
.insight-block-center { text-align: center; }
.insight-block-head-center { justify-content: center; }
.prod-score-num { font-family: var(--font-mono); font-size: 4rem; font-weight: 800; color: #59d8ff; line-height: 1; padding: 10px 0; }
.prod-score-desc { color: rgba(232,238,247,0.6); font-family: var(--font-ar); font-size: 0.9rem; margin: 0; }
.insight-block-sub {
  font-size: 0.75rem;
  font-weight: 500;
  color: rgba(232,238,247,0.55);
}

/* Heatmap */
.insight-heatmap-block { overflow-x: auto; }
.insight-heatmap {
  display: flex;
  flex-direction: column;
  gap: 4px;
  direction: ltr;
}
.heat-row {
  display: flex;
  gap: 4px;
}
.heat-cell {
  width: 14px; height: 14px;
  border-radius: 3px;
  background: rgba(255,255,255,0.04);
  border: 1px solid transparent;
}
.heat-empty { background: transparent; }
.heat-lvl-0 { background: rgba(255,255,255,0.04); }
.heat-lvl-1 { background: rgba(89,216,255,0.22); }
.heat-lvl-2 { background: rgba(89,216,255,0.45); }
.heat-lvl-3 { background: rgba(89,216,255,0.72); }
.heat-lvl-4 { background: linear-gradient(135deg, #59d8ff, #8b5cf6); }
.insight-heatmap-legend {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 14px;
  font-size: 0.72rem;
  color: rgba(232,238,247,0.5);
  direction: ltr;
}
.insight-heatmap-legend .heat-cell { width: 12px; height: 12px; }

/* Donut */
.insight-donut-wrap {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 24px;
  align-items: center;
}
.insight-donut { flex-shrink: 0; }
.insight-donut-center {
  font-family: var(--font-mono);
  font-size: 1.8rem;
  font-weight: 800;
  fill: var(--text);
}
.insight-donut-center-sub {
  font-family: var(--font-ar);
  font-size: 0.75rem;
  fill: rgba(232,238,247,0.55);
}
.insight-donut-legend {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 0.82rem;
}
.insight-legend-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 6px;
  border-radius: 8px;
}
.insight-legend-row:hover { background: rgba(255,255,255,0.03); }
.insight-legend-dot {
  width: 10px; height: 10px;
  border-radius: 3px;
  flex-shrink: 0;
  background: var(--legend-dot-c, var(--muted));
}
.insight-legend-icon { font-size: 0.9rem; }
.insight-legend-name {
  font-family: var(--font-ar);
  color: rgba(232,238,247,0.75);
  flex: 1;
}
.insight-legend-count {
  font-family: var(--font-mono);
  font-weight: 700;
  color: var(--text);
}

/* Tags */
.insight-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.insight-tag {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 12px;
  background: color-mix(in srgb, var(--insight-tag-c, var(--accent2)) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--insight-tag-c, var(--accent2)) 20%, transparent);
  font-size: 0.82rem;
  transition: all 0.15s;
}
.insight-tag:hover {
  background: color-mix(in srgb, var(--insight-tag-c, var(--accent2)) 18%, transparent);
  border-color: color-mix(in srgb, var(--insight-tag-c, var(--accent2)) 35%, transparent);
}
.insight-tag-name {
  font-family: var(--font-ar);
  color: var(--text);
  font-weight: 600;
}
.insight-tag-count {
  font-family: var(--font-mono);
  font-weight: 700;
  color: var(--accent);
  font-size: 0.75rem;
  padding: 1px 6px;
  background: rgba(139,92,246,0.15);
  border-radius: 6px;
}

/* Bars */
.insight-bar-group {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.insight-bar-row {
  display: grid;
  grid-template-columns: 60px 1fr 60px;
  gap: 10px;
  align-items: center;
}
.insight-bar-label {
  font-family: var(--font-ar);
  color: rgba(232,238,247,0.7);
  font-size: 0.85rem;
}
.insight-bar {
  height: 12px;
  background: rgba(255,255,255,0.04);
  border-radius: 6px;
  overflow: hidden;
}
.insight-bar-fill {
  height: 100%;
  border-radius: 6px;
  transition: width 0.4s ease;
}
.insight-bar-active   { background: linear-gradient(90deg, #59d8ff, #8b5cf6); }
.insight-bar-archived { background: linear-gradient(90deg, #6b7280, #9ca3af); }
.insight-bar-val {
  font-family: var(--font-mono);
  font-weight: 700;
  color: var(--text);
  text-align: end;
  font-size: 0.88rem;
}

@media (max-width: 640px) {
  .insight-donut-wrap { grid-template-columns: 1fr; }
  .insight-donut { margin: 0 auto; }
  .heat-cell { width: 11px; height: 11px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   FOCUS MODE + POMODORO WIDGET
   ═══════════════════════════════════════════════════════════════════════════ */
.focus-widget {
  position: fixed;
  inset: 0;
  z-index: 9400;
  animation: focusIn 0.25s ease-out;
}
.focus-widget.hidden { display: none; }
@keyframes focusIn {
  from { opacity: 0; transform: translateY(-10px) scale(0.95); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.focus-widget-inner {
  position: absolute;
  top: 90px;
  left: 24px;
  min-width: 280px;
  padding: 20px 22px 18px;
  border-radius: 22px;
  background:
    linear-gradient(155deg, rgba(139,92,246,0.14), rgba(89,216,255,0.08)),
    rgba(10, 14, 22, 0.96);
  border: 1px solid rgba(139,92,246,0.28);
  box-shadow:
    0 20px 50px rgba(0,0,0,0.6),
    0 0 40px rgba(139,92,246,0.15);
  backdrop-filter: blur(24px);
  direction: rtl;
}
.focus-widget-inner.focus-break {
  background:
    linear-gradient(155deg, rgba(74,222,128,0.14), rgba(89,216,255,0.08)),
    rgba(10, 14, 22, 0.96);
  border-color: rgba(74,222,128,0.28);
  box-shadow:
    0 20px 50px rgba(0,0,0,0.6),
    0 0 40px rgba(74,222,128,0.15);
}
.focus-phase {
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 700;
  color: rgba(232,238,247,0.65);
  margin-bottom: 4px;
  letter-spacing: 0.02em;
}
.focus-time {
  font-family: var(--font-mono);
  font-size: 3.4rem;
  font-weight: 800;
  line-height: 1;
  color: var(--text);
  text-align: center;
  letter-spacing: 2px;
  padding: 4px 0 12px;
  text-shadow: 0 0 20px rgba(139,92,246,0.4);
}
.focus-break .focus-time { text-shadow: 0 0 20px rgba(74,222,128,0.4); }
.focus-progress {
  height: 6px;
  background: rgba(255,255,255,0.06);
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 14px;
}
.focus-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, #59d8ff, #8b5cf6);
  transition: width 1s linear;
}
.focus-break .focus-progress-fill {
  background: linear-gradient(90deg, #4ade80, #59d8ff);
}
.focus-controls {
  display: flex;
  gap: 8px;
  margin-bottom: 12px;
}
.focus-btn {
  flex: 1;
  padding: 8px 12px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.03);
  color: var(--text);
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.82rem;
  cursor: pointer;
  transition: all 0.15s;
}
.focus-btn:hover { background: rgba(255,255,255,0.08); border-color: rgba(255,255,255,0.2); }
.focus-btn-start {
  background: linear-gradient(135deg, rgba(89,216,255,0.2), rgba(139,92,246,0.2));
  border-color: rgba(139,92,246,0.4);
  color: var(--text);
}
.focus-btn-start:hover { background: linear-gradient(135deg, rgba(89,216,255,0.3), rgba(139,92,246,0.3)); }
.focus-btn-stop { background: rgba(255,79,170,0.1); border-color: rgba(255,79,170,0.3); }
.focus-btn-reset, .focus-btn-close { flex: 0 0 40px; }
.focus-presets {
  display: flex;
  gap: 4px;
  flex-wrap: wrap;
  padding: 10px 0;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.focus-preset {
  padding: 4px 10px;
  border-radius: 8px;
  border: 1px solid rgba(255,255,255,0.08);
  background: transparent;
  color: rgba(232,238,247,0.7);
  font-family: var(--font-ar);
  font-size: 0.72rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.15s;
}
.focus-preset:hover { background: rgba(255,255,255,0.05); }
.focus-preset.active {
  background: rgba(139,92,246,0.15);
  border-color: rgba(139,92,246,0.35);
  color: var(--text);
}
.focus-cycles {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(232,238,247,0.6);
  text-align: center;
  padding-top: 4px;
}

body.focus-dim > *:not(.focus-widget):not(.voice-mic):not(.shortcuts-modal):not(#toast):not(.dash-header) {
  opacity: 0.82;
  transition: opacity 0.4s ease;
}
body.focus-dim .dash-header { opacity: 0.95; }

/* ═══════════════════════════════════════════════════════════════════════════
   VOICE CAPTURE MIC
   ═══════════════════════════════════════════════════════════════════════════ */
.voice-mic {
  position: fixed;
  bottom: 30px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9700;
  animation: voiceIn 0.2s ease-out;
  direction: rtl;
}
.voice-mic.hidden { display: none; }
@keyframes voiceIn {
  from { opacity: 0; transform: translate(-50%, 20px) scale(0.9); }
  to   { opacity: 1; transform: translate(-50%, 0) scale(1); }
}
.voice-mic-inner {
  min-width: 280px;
  padding: 24px 28px 20px;
  border-radius: 24px;
  background:
    linear-gradient(155deg, rgba(255,79,170,0.15), rgba(139,92,246,0.1)),
    rgba(10, 14, 22, 0.96);
  border: 1px solid rgba(255,79,170,0.3);
  box-shadow:
    0 20px 50px rgba(0,0,0,0.6),
    0 0 40px rgba(255,79,170,0.2);
  backdrop-filter: blur(24px);
  text-align: center;
  position: relative;
}
.voice-pulse {
  position: absolute;
  top: 16px; left: 50%;
  width: 50px; height: 50px;
  border-radius: 50%;
  background: rgba(255,79,170,0.2);
  transform: translateX(-50%) scale(1);
  animation: voicePulse 1.5s ease-out infinite;
}
@keyframes voicePulse {
  0% { transform: translateX(-50%) scale(1); opacity: 0.8; }
  100% { transform: translateX(-50%) scale(2.4); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .voice-pulse-ring { animation: none; }
}
.voice-mic-icon {
  font-size: 2.2rem;
  margin-bottom: 8px;
  position: relative;
}
.voice-mic-text {
  font-family: var(--font-ar);
  font-weight: 700;
  color: var(--text);
  font-size: 0.92rem;
  margin-bottom: 8px;
}
.voice-mic-transcript {
  font-family: var(--font-ar);
  color: rgba(232,238,247,0.75);
  font-size: 0.85rem;
  padding: 8px 12px;
  border-radius: 10px;
  background: rgba(255,255,255,0.04);
  min-height: 32px;
  margin-bottom: 10px;
  line-height: 1.4;
}
.voice-mic-cancel {
  padding: 6px 16px;
  border-radius: 10px;
  background: rgba(255,79,170,0.12);
  border: 1px solid rgba(255,79,170,0.3);
  color: var(--text);
  font-family: var(--font-ar);
  font-weight: 600;
  font-size: 0.82rem;
  cursor: pointer;
  transition: all 0.15s;
}
.voice-mic-cancel:hover { background: rgba(255,79,170,0.2); }

/* ═══════════════════════════════════════════════════════════════════════════
   CONFETTI
   ═══════════════════════════════════════════════════════════════════════════ */
.confetti-layer {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9990;
  overflow: hidden;
}
.confetti-piece {
  position: absolute;
  top: -10px;
  border-radius: 2px;
  opacity: 0.9;
  transform: rotate(0deg);
  animation: confetti-fall linear forwards;
  box-shadow: 0 0 6px currentColor;
}
@keyframes confetti-fall {
  0%   { transform: translate(0, 0) rotate(0deg); opacity: 1; }
  100% { transform: translate(var(--drift, 0), calc(100vh + 40px)) rotate(var(--rot, 360deg)); opacity: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .confetti-piece { animation: none; opacity: 0; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   FLOATING ACTION BUTTON (FAB)
   ═══════════════════════════════════════════════════════════════════════════ */
.fab-quick {
  position: fixed;
  bottom: 24px;
  left: 24px;
  z-index: 9400;
  direction: rtl;
}
.fab-main {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  border: none;
  background: linear-gradient(135deg, #59d8ff 0%, #ff4faa 100%);
  color: #fff;
  font-size: 1.8rem;
  font-weight: 300;
  cursor: pointer;
  box-shadow: 0 8px 24px rgba(89,216,255,0.4), 0 4px 12px rgba(255,79,170,0.3);
  transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.2s;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}
.fab-main:hover { transform: scale(1.08); box-shadow: 0 12px 32px rgba(89,216,255,0.55), 0 6px 16px rgba(255,79,170,0.4); }
.fab-quick.open .fab-main { transform: rotate(45deg); }
.fab-menu {
  position: absolute;
  bottom: 72px;
  left: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(10px) scale(0.85);
  transform-origin: bottom left;
  transition: opacity 0.18s, transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.fab-quick.open .fab-menu { opacity: 1; pointer-events: auto; transform: translateY(0) scale(1); }
.fab-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 16px 10px 12px;
  background: rgba(20,22,32,0.92);
  backdrop-filter: blur(12px);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 28px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.9rem;
  font-weight: 600;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,0.3);
  transition: transform 0.15s, background 0.15s;
  white-space: nowrap;
}
.fab-item:hover { background: rgba(89,216,255,0.15); border-color: rgba(89,216,255,0.35); transform: translateX(-4px); }
.fab-item-ico { font-size: 1.2rem; }
.fab-item-lbl { flex: 1; text-align: right; }

@media (max-width: 640px) {
  .fab-quick { bottom: 84px; left: 16px; }
  .fab-main { width: 52px; height: 52px; font-size: 1.6rem; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   QR MODAL
   ═══════════════════════════════════════════════════════════════════════════ */
.qr-modal {
  position: fixed;
  inset: 0;
  background: rgba(5,10,18,0.75);
  backdrop-filter: blur(8px);
  z-index: 9600;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 0.15s ease-out;
}
.qr-modal.hidden { display: none; }
.qr-modal-inner {
  background: var(--surface);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 18px;
  padding: 20px;
  max-width: 380px;
  width: 100%;
  box-shadow: 0 24px 64px rgba(0,0,0,0.7);
  direction: rtl;
}
.qr-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
}
.qr-head h3 { margin: 0; font-size: 1.1rem; color: var(--text); }
.qr-close {
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 0 6px;
  line-height: 1;
}
.qr-close:hover { color: var(--text); }
.qr-img-wrap {
  background: #fff;
  border-radius: 12px;
  padding: 16px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 14px;
}
.qr-img-wrap img { width: 100%; max-width: 300px; height: auto; display: block; }
.qr-text {
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 8px;
  padding: 10px;
  color: var(--muted);
  font-size: 0.82rem;
  word-break: break-all;
  margin-bottom: 12px;
  max-height: 80px;
  overflow-y: auto;
}
.qr-actions { display: flex; gap: 8px; }
.qr-btn {
  flex: 1;
  padding: 10px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  color: var(--text);
  font-family: var(--font-ar);
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s;
}
.qr-btn:hover { background: rgba(255,255,255,0.12); }
.qr-btn-primary { background: linear-gradient(135deg, #59d8ff, #6d45e6); border-color: transparent; color: #fff; }
.qr-btn-primary:hover { filter: brightness(1.1); }

/* ═══════════════════════════════════════════════════════════════════════════
   THEME PICKER MODAL
   ═══════════════════════════════════════════════════════════════════════════ */
.theme-picker-modal {
  position: fixed;
  inset: 0;
  background: rgba(5,10,18,0.75);
  backdrop-filter: blur(8px);
  z-index: 9600;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 0.15s ease-out;
}
.theme-picker-modal.hidden { display: none; }
.theme-picker-inner {
  background: var(--surface);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 18px;
  padding: 24px;
  max-width: 560px;
  width: 100%;
  max-height: 85vh;
  overflow-y: auto;
  box-shadow: 0 24px 64px rgba(0,0,0,0.7);
  direction: rtl;
}
.theme-picker-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 18px;
}
.theme-picker-head h3 { margin: 0; font-size: 1.2rem; color: var(--text); }
.theme-picker-close {
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 0 6px;
}
.theme-picker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 12px;
}
.theme-preset-card {
  position: relative;
  background: rgba(255,255,255,0.04);
  border: 2px solid rgba(255,255,255,0.08);
  border-radius: 14px;
  padding: 12px;
  cursor: pointer;
  transition: transform 0.15s, border-color 0.2s, box-shadow 0.2s;
  overflow: hidden;
}
.theme-preset-card:hover { transform: translateY(-2px); border-color: rgba(89,216,255,0.4); box-shadow: 0 6px 16px rgba(0,0,0,0.35); }
.theme-preset-card.active { border-color: #59d8ff; box-shadow: 0 0 0 3px rgba(89,216,255,0.2); }
.theme-preset-preview {
  height: 60px;
  border-radius: 8px;
  margin-bottom: 10px;
  position: relative;
  overflow: hidden;
}
.theme-preset-preview::after {
  content: '';
  position: absolute;
  inset: 0;
  background: var(--pp-preview, linear-gradient(135deg, #59d8ff, #ff4faa));
}
.theme-preset-name {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text);
  text-align: center;
}
.theme-preset-check {
  position: absolute;
  top: 8px;
  left: 8px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #59d8ff;
  color: #05111a;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  font-weight: 700;
  z-index: 2;
  opacity: 0;
  transform: scale(0.5);
  transition: opacity 0.2s, transform 0.2s;
}
.theme-preset-card.active .theme-preset-check { opacity: 1; transform: scale(1); }
.theme-picker-actions {
  margin-top: 16px;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}
.theme-reset-btn {
  padding: 8px 14px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 10px;
  color: var(--muted);
  font-family: var(--font-ar);
  cursor: pointer;
  transition: all 0.15s;
}
.theme-reset-btn:hover { color: var(--text); border-color: rgba(255,79,170,0.35); }

/* Theme preset variable overrides (applied to body) */
body.theme-preset-tech-cyan {
  --accent: #59d8ff;
  --accent-alt: #ff4faa;
  --accent-soft: rgba(89,216,255,0.15);
}
body.theme-preset-royal-purple {
  --accent: #a48bff;
  --accent-alt: #ff9dc8;
  --accent-soft: rgba(164,139,255,0.15);
}
body.theme-preset-ocean-blue {
  --accent: #4fc3f7;
  --accent-alt: #81d4fa;
  --accent-soft: rgba(79,195,247,0.15);
}
body.theme-preset-forest-green {
  --accent: #66d99a;
  --accent-alt: #f0c674;
  --accent-soft: rgba(102,217,154,0.15);
}
body.theme-preset-sunset-rose {
  --accent: #ff6b8a;
  --accent-alt: #ffb347;
  --accent-soft: rgba(255,107,138,0.15);
}
body.theme-preset-amber-dusk {
  --accent: #ffb347;
  --accent-alt: #ff7a7a;
  --accent-soft: rgba(255,179,71,0.15);
}

/* ═══════════════════════════════════════════════════════════════════════════
   CALENDAR PAGE
   ═══════════════════════════════════════════════════════════════════════════ */
.calendar-page {
  max-width: 1100px;
  margin: 0 auto;
  padding: 20px 16px 60px;
  direction: rtl;
}
.calendar-header-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
  gap: 12px;
  flex-wrap: wrap;
}
.calendar-header-row h2 { margin: 0; font-size: 1.4rem; color: var(--text); }
.cal-nav {
  display: flex;
  align-items: center;
  gap: 8px;
}
.cal-nav-btn {
  width: 36px;
  height: 36px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.04);
  color: var(--text);
  font-size: 1.1rem;
  cursor: pointer;
  transition: background 0.15s;
}
.cal-nav-btn:hover { background: rgba(89,216,255,0.15); border-color: rgba(89,216,255,0.3); }
.cal-today-btn {
  padding: 8px 14px;
  border-radius: 10px;
  border: 1px solid rgba(89,216,255,0.3);
  background: rgba(89,216,255,0.1);
  color: var(--text);
  font-family: var(--font-ar);
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s;
}
.cal-today-btn:hover { background: rgba(89,216,255,0.2); }
.cal-month-title {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text);
  min-width: 140px;
  text-align: center;
}
.calendar-grid-wrap {
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  padding: 10px;
  overflow: hidden;
}
.calendar-weekdays {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
  margin-bottom: 4px;
}
.cal-wd {
  padding: 8px 4px;
  text-align: center;
  font-size: 0.78rem;
  color: var(--muted);
  font-weight: 600;
}
.calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}
.calendar-grid .cal-cell {
  min-height: 92px;
  background: rgba(255,255,255,0.025);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 8px;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  position: relative;
  transition: background 0.15s;
}
.calendar-grid .cal-cell:hover { background: rgba(255,255,255,0.05); }
.calendar-grid .cal-blank { background: transparent; border-color: transparent; }
.calendar-grid .cal-today {
  background: rgba(89,216,255,0.08);
  border-color: rgba(89,216,255,0.35);
  box-shadow: 0 0 0 1px rgba(89,216,255,0.2) inset;
}
.calendar-grid .cal-weekend { background: rgba(255,79,170,0.04); }
.calendar-grid .cal-day-num {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text);
  align-self: flex-end;
  padding: 0 2px;
}
.calendar-grid .cal-today .cal-day-num { color: #59d8ff; }
.cal-events {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  overflow: hidden;
}
.cal-event {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 2px 5px;
  background: color-mix(in srgb, var(--cal-ev-c, #59d8ff) 14%, transparent);
  border-inline-start: 2px solid var(--cal-ev-c, #59d8ff);
  border-radius: 4px;
  font-size: 0.7rem;
  color: var(--text);
  cursor: pointer;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
  transition: background 0.12s;
}
.cal-event:hover { background: rgba(89,216,255,0.28); }
.cal-event-done {
  background: rgba(102,217,154,0.12);
  border-inline-start-color: #66d99a;
  text-decoration: line-through;
  opacity: 0.7;
}
.cal-event-ico { font-size: 0.75rem; }
.cal-event-title { flex: 1; overflow: hidden; text-overflow: ellipsis; }
.cal-more {
  font-size: 0.68rem;
  color: var(--muted);
  padding: 0 4px;
  cursor: pointer;
}
.cal-more:hover { color: #59d8ff; }
.calendar-legend {
  margin-top: 14px;
  display: flex;
  gap: 14px;
  flex-wrap: wrap;
  justify-content: center;
  font-size: 0.8rem;
  color: var(--muted);
}
.calendar-legend .cal-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 3px;
  margin-left: 6px;
  vertical-align: middle;
}
.cal-dot-reminder     { background: #f59e0b; }
.cal-dot-subscription { background: #8b5cf6; }
.cal-dot-document     { background: #0ea5e9; }
.cal-dot-medicine     { background: #ec4899; }
.cal-dot-vehicle      { background: #a78bfa; }
.cal-dot-trip         { background: #59d8ff; }
.cal-dot-countdown    { background: #6366f1; }

@media (max-width: 640px) {
  .calendar-grid .cal-cell { min-height: 64px; padding: 4px; }
  .calendar-grid .cal-day-num { font-size: 0.75rem; }
  .cal-event { font-size: 0.6rem; padding: 1px 3px; }
  .cal-event-title { display: none; }
  .cal-wd { font-size: 0.68rem; padding: 4px 2px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   WEEKLY REVIEW PAGE
   ═══════════════════════════════════════════════════════════════════════════ */
.weekly-review-page {
  max-width: 980px;
  margin: 0 auto;
  padding: 20px 16px 60px;
  direction: rtl;
}
.wr-score-card {
  background: linear-gradient(135deg, rgba(89,216,255,0.12), rgba(255,79,170,0.08));
  border: 1px solid rgba(89,216,255,0.25);
  border-radius: 18px;
  padding: 24px;
  display: flex;
  align-items: center;
  gap: 20px;
  margin-bottom: 20px;
}
.wr-score-ring {
  width: 100px;
  height: 100px;
  flex-shrink: 0;
}
.wr-score-label { flex: 1; }
.wr-score-label h3 { margin: 0 0 6px; font-size: 1.2rem; }
.wr-score-label p { margin: 0; color: var(--muted); font-size: 0.9rem; }
.wr-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 14px;
  margin-bottom: 20px;
}
.wr-stat {
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 14px;
  padding: 16px;
}
.wr-stat-label { color: var(--muted); font-size: 0.85rem; margin-bottom: 6px; }
.wr-stat-value { font-size: 1.6rem; font-weight: 700; color: var(--text); }
.wr-stat-delta { font-size: 0.8rem; margin-top: 4px; }
.wr-stat-delta.up { color: #66d99a; }
.wr-stat-delta.down { color: #ff7a8a; }

/* ═══════════════════════════════════════════════════════════════════════════
   ONBOARDING MODAL
   ═══════════════════════════════════════════════════════════════════════════ */
.onboarding-modal {
  position: fixed;
  inset: 0;
  background: rgba(5,10,18,0.85);
  backdrop-filter: blur(10px);
  z-index: 9700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 0.25s ease-out;
}
.onboarding-modal.hidden { display: none; }
.onb-inner {
  background: var(--surface);
  border: 1px solid rgba(89,216,255,0.2);
  border-radius: 20px;
  padding: 32px 28px 24px;
  max-width: 440px;
  width: 100%;
  text-align: center;
  box-shadow: 0 24px 64px rgba(0,0,0,0.6), 0 0 0 1px rgba(89,216,255,0.08);
  direction: rtl;
  position: relative;
}
.onb-emoji {
  font-size: 3rem;
  margin-bottom: 14px;
  display: block;
  animation: onb-pop 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}
@keyframes onb-pop {
  0% { transform: scale(0.5); opacity: 0; }
  100% { transform: scale(1); opacity: 1; }
}
.onb-title {
  margin: 0 0 10px;
  font-size: 1.4rem;
  color: var(--text);
  font-weight: 700;
}
.onb-text {
  margin: 0 0 22px;
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.6;
}
.onb-dots {
  display: flex;
  justify-content: center;
  gap: 6px;
  margin-bottom: 18px;
}
.onb-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: rgba(255,255,255,0.2);
  transition: background 0.2s, transform 0.2s;
}
.onb-dot.active { background: #59d8ff; transform: scale(1.3); }
.onb-controls {
  display: flex;
  gap: 8px;
  justify-content: space-between;
}
.onb-btn {
  padding: 10px 18px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.04);
  color: var(--text);
  font-family: var(--font-ar);
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s;
  flex: 1;
}
.onb-btn:hover { background: rgba(255,255,255,0.1); }
.onb-btn:disabled { opacity: 0.4; cursor: not-allowed; }
.onb-btn-primary {
  background: linear-gradient(135deg, #59d8ff, #6d45e6);
  border-color: transparent;
  color: #fff;
}
.onb-btn-primary:hover { filter: brightness(1.1); background: linear-gradient(135deg, #59d8ff, #6d45e6); }
.onb-skip {
  position: absolute;
  top: 12px;
  left: 14px;
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 0.8rem;
  font-family: var(--font-ar);
  cursor: pointer;
  padding: 4px 8px;
}
.onb-skip:hover { color: var(--text); }

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   COMMAND PALETTE FILTER CHIPS
   ═══════════════════════════════════════════════════════════════════════════ */
.cmd-filter-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 6px 10px 10px;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  margin-bottom: 4px;
}
.cmd-filter-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  background: rgba(89,216,255,0.14);
  border: 1px solid rgba(89,216,255,0.35);
  border-radius: 20px;
  color: #59d8ff;
  font-family: var(--font-ar);
  font-size: 0.74rem;
  font-weight: 600;
}

/* ═══════════════════════════════════════════════════════════════════════════
   CARD HOVER PREVIEW
   ═══════════════════════════════════════════════════════════════════════════ */
.card-hover-preview {
  position: fixed;
  z-index: 9400;
  background: rgba(14,16,24,0.97);
  backdrop-filter: blur(14px);
  border: 1px solid rgba(89,216,255,0.25);
  border-radius: 14px;
  padding: 14px 16px;
  max-width: 340px;
  min-width: 220px;
  box-shadow: 0 18px 44px rgba(0,0,0,0.6), 0 0 0 1px rgba(89,216,255,0.08);
  direction: rtl;
  pointer-events: none;
  opacity: 0;
  transform: translateY(4px);
  transition: opacity 0.14s, transform 0.14s;
}
.card-hover-preview.show { opacity: 1; transform: translateY(0); }
.chp-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.chp-icon { font-size: 1.2rem; }
.chp-title {
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--text);
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.chp-type {
  font-size: 0.68rem;
  color: #59d8ff;
  padding: 2px 8px;
  background: rgba(89,216,255,0.12);
  border-radius: 10px;
}
.chp-body {
  color: var(--muted);
  font-size: 0.82rem;
  line-height: 1.5;
  max-height: 80px;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
}
.chp-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 8px;
}
.chp-tag {
  font-size: 0.68rem;
  color: var(--muted);
  background: rgba(255,255,255,0.05);
  padding: 2px 7px;
  border-radius: 9px;
}
.chp-meta {
  display: flex;
  gap: 10px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid rgba(255,255,255,0.06);
  font-size: 0.72rem;
  color: var(--muted);
}
@media (max-width: 640px) {
  .card-hover-preview { display: none !important; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   OFFLINE BADGE
   ═══════════════════════════════════════════════════════════════════════════ */
.offline-badge {
  position: fixed;
  top: 16px;
  left: 50%;
  transform: translateX(-50%) translateY(-40px);
  z-index: 9800;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 16px;
  background: rgba(255,79,170,0.15);
  border: 1px solid rgba(255,79,170,0.45);
  backdrop-filter: blur(12px);
  border-radius: 20px;
  color: #ffb4d7;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 600;
  box-shadow: 0 8px 24px rgba(0,0,0,0.3);
  opacity: 0;
  transition: opacity 0.25s, transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  pointer-events: none;
}
.offline-badge.visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* ═══════════════════════════════════════════════════════════════════════════
   BREATHING EXERCISE MODAL
   ═══════════════════════════════════════════════════════════════════════════ */
.breathing-modal {
  position: fixed;
  inset: 0;
  background: radial-gradient(circle at center, rgba(5,15,30,0.95), rgba(5,10,18,0.98));
  backdrop-filter: blur(12px);
  z-index: 9700;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  animation: fadeIn 0.3s ease-out;
}
.breathing-modal.hidden { display: none; }
.breath-inner {
  background: rgba(10,15,25,0.85);
  border: 1px solid rgba(89,216,255,0.15);
  border-radius: 24px;
  padding: 32px 28px;
  max-width: 480px;
  width: 100%;
  text-align: center;
  direction: rtl;
  position: relative;
  box-shadow: 0 24px 80px rgba(0,0,0,0.6), 0 0 120px rgba(89,216,255,0.05);
}
.breath-close {
  position: absolute;
  top: 12px;
  left: 14px;
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 1.4rem;
  cursor: pointer;
  padding: 4px 8px;
}
.breath-close:hover { color: var(--text); }
.breath-title {
  margin: 0 0 30px;
  font-size: 1.1rem;
  color: var(--text);
  font-weight: 600;
  opacity: 0.8;
}
.breath-orb-wrap {
  position: relative;
  height: 240px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-bottom: 24px;
}
.breath-orb {
  width: 120px;
  height: 120px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(89,216,255,0.6), rgba(109,69,230,0.3) 60%, transparent 80%);
  box-shadow: 0 0 80px rgba(89,216,255,0.4), 0 0 120px rgba(89,216,255,0.2), inset 0 0 40px rgba(255,255,255,0.15);
  transform: scale(1);
  transition: transform 4s cubic-bezier(0.45, 0.05, 0.55, 0.95);
}
.breath-phase {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.3rem;
  font-weight: 600;
  color: #fff;
  pointer-events: none;
  text-shadow: 0 2px 10px rgba(0,0,0,0.6);
}
.breath-cycles {
  color: var(--muted);
  font-size: 0.82rem;
  margin-bottom: 18px;
}
.breath-presets {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 18px;
}
.breath-preset {
  padding: 8px 14px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  color: var(--muted);
  font-family: var(--font-ar);
  font-size: 0.86rem;
  cursor: pointer;
  transition: all 0.15s;
}
.breath-preset:hover { background: rgba(89,216,255,0.08); color: var(--text); }
.breath-preset.active {
  background: rgba(89,216,255,0.15);
  border-color: rgba(89,216,255,0.4);
  color: #59d8ff;
  font-weight: 600;
}
.breath-controls { display: flex; justify-content: center; }
.breath-btn {
  padding: 12px 32px;
  border-radius: 12px;
  border: none;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 1rem;
  cursor: pointer;
  transition: transform 0.15s, filter 0.15s;
}
.breath-btn-primary {
  background: linear-gradient(135deg, #59d8ff, #6d45e6);
  color: #fff;
  box-shadow: 0 8px 24px rgba(89,216,255,0.3);
}
.breath-btn-primary:hover { transform: translateY(-2px); filter: brightness(1.1); }

/* ═══════════════════════════════════════════════════════════════════════════
   LINK FAVICON BADGE (optional inline use)
   ═══════════════════════════════════════════════════════════════════════════ */
.link-favicon {
  width: 16px;
  height: 16px;
  border-radius: 3px;
  vertical-align: middle;
  margin-left: 6px;
  background: rgba(255,255,255,0.06);
}

/* ═══════════════════════════════════════════════════════════════════════════
   STREAK BADGE
   ═══════════════════════════════════════════════════════════════════════════ */
.streak-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  background: linear-gradient(135deg, rgba(255,140,0,0.2), rgba(255,79,170,0.15));
  border: 1px solid rgba(255,140,0,0.3);
  border-radius: 14px;
  color: #ffb347;
  font-size: 0.8rem;
  font-weight: 700;
}
.streak-fire { animation: streak-flicker 1.5s infinite alternate; }
@keyframes streak-flicker {
  0%   { transform: scale(1) rotate(-2deg); }
  100% { transform: scale(1.1) rotate(3deg); }
}
@media (prefers-reduced-motion: reduce) {
  .streak-fire { animation: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   HEADER PRAYER PILL — center of header next to "اليوم", matches home/today pill style
   ═══════════════════════════════════════════════════════════════════════════ */
.header-prayer-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 5px 12px 5px 10px;
  height: 30px;
  background: linear-gradient(135deg, rgba(245,158,11,0.14), rgba(217,119,6,0.06));
  border: 1px solid rgba(245,158,11,0.26);
  border-radius: 999px;
  color: var(--text, #fff);
  font-family: var(--font-ar, 'Cairo', sans-serif);
  font-size: 0.82rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s ease;
  white-space: nowrap;
  line-height: 1;
}
.header-prayer-pill:hover {
  background: linear-gradient(135deg, rgba(245,158,11,0.22), rgba(217,119,6,0.1));
  border-color: rgba(245,158,11,0.45);
  transform: translateY(-1px);
}
.header-prayer-pill .hpp-icon {
  color: rgba(245,158,11,0.95);
  flex-shrink: 0;
}
.header-prayer-pill .hpp-name {
  font-weight: 700;
  color: rgba(232,238,247,0.98);
}
.header-prayer-pill .hpp-dot {
  color: rgba(255,255,255,0.32);
  font-weight: 400;
  font-size: 0.9rem;
  margin: 0 -1px;
}
.header-prayer-pill .hpp-time {
  font-family: 'IBM Plex Mono', 'Courier New', monospace;
  font-size: 0.74rem;
  font-weight: 500;
  color: rgba(252,211,77,0.92);
  letter-spacing: 0.01em;
}
/* "<15min" warm tint — pulse gently when a prayer is close */
.header-prayer-pill.is-soon {
  background: linear-gradient(135deg, rgba(245,158,11,0.28), rgba(239,68,68,0.12));
  border-color: rgba(252,165,65,0.55);
  animation: hpp-soon-pulse 2.2s ease-in-out infinite;
}
.header-prayer-pill.is-soon .hpp-time { color: #fde68a; }
@keyframes hpp-soon-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(245,158,11,0); }
  50%     { box-shadow: 0 0 0 4px rgba(245,158,11,0.22); }
}
@media (prefers-reduced-motion: reduce) {
  .header-prayer-pill.is-soon { animation: none; }
}

@media (max-width: 900px) {
  .header-prayer-pill {
    padding: 5px 10px 5px 8px;
    gap: 5px;
    height: 28px;
    font-size: 0.78rem;
  }
  .header-prayer-pill .hpp-dot { display: none; }
  .header-prayer-pill .hpp-time { font-size: 0.68rem; }
}
@media (max-width: 560px) {
  .header-prayer-pill .hpp-name { display: none; }
  .header-prayer-pill { padding: 5px 9px; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   PRAYER SETTINGS PANEL — method picker + per-prayer offsets
   ═══════════════════════════════════════════════════════════════════════════ */
.prayer-settings-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: rgba(139,92,246,0.08);
  border: 1px solid rgba(139,92,246,0.22);
  border-radius: 999px;
  color: rgba(232,238,247,0.85);
  font-size: 0.72rem;
  font-family: 'Cairo', sans-serif;
  cursor: pointer;
  transition: all 0.2s;
}
.prayer-settings-chip:hover {
  background: rgba(139,92,246,0.16);
  color: #fff;
}
.prayer-settings-panel {
  padding: 14px 16px;
  background: rgba(10,8,16,0.45);
  border-top: 1px solid rgba(255,255,255,0.06);
  border-bottom: 1px solid rgba(255,255,255,0.06);
  display: flex;
  flex-direction: column;
  gap: 16px;
  animation: pt-settings-slide 0.22s ease;
}
@keyframes pt-settings-slide {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}
.pt-settings-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.pt-settings-label {
  font-size: 0.78rem;
  font-weight: 600;
  color: rgba(232,238,247,0.75);
  font-family: 'Cairo', sans-serif;
}
.pt-method-select {
  padding: 9px 12px;
  background: rgba(20,17,28,0.9);
  color: #fff;
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 10px;
  font-family: 'Cairo', sans-serif;
  font-size: 0.82rem;
  cursor: pointer;
  outline: none;
}
.pt-method-select:focus { border-color: rgba(139,92,246,0.6); }
.pt-offset-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 6px;
}
.pt-offset-row {
  display: grid;
  grid-template-columns: 24px 1fr 32px 60px 32px;
  align-items: center;
  gap: 10px;
  padding: 6px 10px;
  background: rgba(255,255,255,0.02);
  border: 1px solid rgba(255,255,255,0.05);
  border-radius: 10px;
}
.pt-offset-ic { font-size: 1rem; text-align: center; }
.pt-offset-name {
  font-size: 0.8rem;
  color: rgba(232,238,247,0.85);
  font-family: 'Cairo', sans-serif;
}
.pt-offset-btn {
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(139,92,246,0.14);
  border: 1px solid rgba(139,92,246,0.28);
  color: #fff;
  font-size: 1.1rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
}
.pt-offset-btn:hover {
  background: rgba(139,92,246,0.28);
  transform: scale(1.06);
}
.pt-offset-btn:active { transform: scale(0.94); }
.pt-offset-val {
  text-align: center;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 0.88rem;
  font-weight: 600;
  color: rgba(167,139,250,0.95);
  min-width: 44px;
}
.pt-reset-btn {
  align-self: flex-start;
  padding: 7px 14px;
  background: transparent;
  border: 1px solid rgba(255,255,255,0.14);
  border-radius: 10px;
  color: rgba(232,238,247,0.7);
  font-family: 'Cairo', sans-serif;
  font-size: 0.74rem;
  cursor: pointer;
  transition: all 0.2s;
}
.pt-reset-btn:hover {
  background: rgba(255,255,255,0.04);
  color: #fff;
  border-color: rgba(255,255,255,0.22);
}

/* ═══════════════════════════════════════════════════════════════════════════
   HEADER LIVE BAR — unified prayer · clock+date · today (center of header)
   Premium design: single rounded container with 3 segments + subtle dividers
   ═══════════════════════════════════════════════════════════════════════════ */
.header-live-bar {
  display: inline-flex;
  align-items: stretch;
  gap: 0;
  padding: 4px;
  background: linear-gradient(135deg, rgba(139,92,246,0.08), rgba(45,212,191,0.04), rgba(245,158,11,0.05));
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 16px;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.05),
    0 2px 14px rgba(0,0,0,0.25);
  position: relative;
  overflow: hidden;
}
.header-live-bar::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 50% -20%, rgba(139,92,246,0.12), transparent 60%);
  pointer-events: none;
}

.header-live-segment {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 7px 14px;
  background: transparent;
  border: none;
  border-radius: 12px;
  color: var(--text, #fff);
  font-family: var(--font-ar);
  cursor: pointer;
  transition: background 0.18s ease, transform 0.18s ease;
  position: relative;
  z-index: 1;
  min-height: 40px;
}
.header-live-segment:hover {
  background: rgba(255,255,255,0.05);
  transform: translateY(-0.5px);
}

.header-live-segment .hls-icon {
  flex-shrink: 0;
  opacity: 0.9;
}
.header-live-segment .hls-stack {
  display: flex;
  flex-direction: column;
  align-items: center;       /* both lines visually centered relative to each other */
  text-align: center;
  gap: 2px;
  line-height: 1;
}
/* Override: prayer pill keeps right-aligned stack so the prayer name + Arabic time stack hugs the icon */
.hls-prayer .hls-stack { align-items: flex-start; text-align: start; }
/* "Today" pill also stays start-aligned (the secondary helper text reads as a label under "اليوم") */
.hls-today .hls-stack  { align-items: flex-start; text-align: start; }
.header-live-segment .hls-primary {
  font-size: 0.88rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  color: var(--text, #fff);
  line-height: 1.05;
  white-space: nowrap;
}
.header-live-segment .hls-secondary {
  font-size: 0.66rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: rgba(232,238,247,0.55);
  line-height: 1;
  white-space: nowrap;
  font-family: var(--font-ar);
}
/* Tertiary line — for Hijri date under prayer time */
.header-live-segment .hls-tertiary {
  font-size: 0.6rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: rgba(45, 212, 191, 0.78);
  line-height: 1;
  white-space: nowrap;
  font-family: var(--font-ar);
  margin-top: 1px;
}
.header-live-segment .hls-tertiary:empty { display: none; }

/* Prayer segment — gold accent */
.hls-prayer .hls-icon { color: rgba(245,158,11,0.95); }
.hls-prayer .hls-secondary {
  font-family: 'IBM Plex Mono', 'Courier New', monospace;
  color: rgba(252,211,77,0.9);
  font-weight: 500;
  direction: ltr;
}
.hls-prayer:hover {
  background: linear-gradient(135deg, rgba(245,158,11,0.12), rgba(217,119,6,0.04));
}
/* Preserve existing "is-soon" pulse on prayer */
.hls-prayer.is-soon {
  background: linear-gradient(135deg, rgba(245,158,11,0.22), rgba(239,68,68,0.1));
  animation: hls-prayer-soon 2.2s ease-in-out infinite;
}
.hls-prayer.is-soon .hls-secondary { color: #fde68a; }
@keyframes hls-prayer-soon {
  0%,100% { box-shadow: inset 0 0 0 1px rgba(245,158,11,0); }
  50%     { box-shadow: inset 0 0 0 1px rgba(245,158,11,0.5); }
}
@media (prefers-reduced-motion: reduce) {
  .hls-prayer.is-soon { animation: none; }
}

/* Clock + date segment — purple accent (primary focal point) */
/* Periodic "breathing" glow every ~14s so the centerpiece feels alive */
.hls-clock {
  cursor: default;
  animation: hlsClockBreathe 14s cubic-bezier(.4, 0, .4, 1) infinite;
  transform-origin: center;
  will-change: transform, box-shadow, background;
}
.hls-clock:hover { background: transparent; transform: none; }
.hls-clock .hls-icon { color: rgba(167,139,250,0.85); }
@keyframes hlsClockBreathe {
  0%, 78%, 100% {
    background: transparent;
    box-shadow: none;
    transform: scale(1);
  }
  84% {
    background: linear-gradient(135deg, rgba(167,139,250,0.14), rgba(45,212,191,0.06));
    box-shadow:
      inset 0 0 0 1px rgba(167,139,250,0.4),
      0 6px 22px rgba(167,139,250,0.22);
    transform: scale(1.035);
  }
  90% {
    background: linear-gradient(135deg, rgba(167,139,250,0.08), rgba(45,212,191,0.03));
    box-shadow:
      inset 0 0 0 1px rgba(167,139,250,0.18),
      0 3px 12px rgba(167,139,250,0.1);
    transform: scale(1.015);
  }
}
@media (prefers-reduced-motion: reduce) {
  .hls-clock { animation: none; }
}
.hls-clock .hls-primary.header-clock {
  font-family: var(--font-mono, 'IBM Plex Mono', monospace);
  font-size: 0.98rem;
  font-weight: 700;
  letter-spacing: 0.5px;
  color: #f3f0ff;
  direction: ltr;
  display: inline-flex;
  align-items: baseline;
  gap: 0;
}
.hls-clock .header-clock .hc-hh,
.hls-clock .header-clock .hc-mm {
  font-variant-numeric: tabular-nums;
  min-width: 1.1em;
  text-align: center;
}
.hls-clock .header-clock .hc-sep {
  padding: 0 1px;
  color: rgba(168, 131, 255, 0.95);
  transition: opacity 0.35s ease;
}
.hls-clock .header-clock .hc-mer {
  font-family: var(--font-ar);
  font-size: 0.56rem;
  font-weight: 700;
  padding: 2px 5px;
  margin-inline-start: 6px;
  border-radius: 5px;
  background: linear-gradient(135deg, rgba(139,92,246,0.3), rgba(45,212,191,0.22));
  color: #e9e4ff;
  box-shadow: 0 0 0 1px rgba(139,92,246,0.25) inset;
  letter-spacing: 0;
  transform: translateY(-1px);
}
.hls-clock .hls-secondary.header-date {
  color: rgba(232,238,247,0.55);
}
.hls-clock .hls-secondary.header-date.is-hijri {
  color: rgba(45, 212, 191, 0.75);
}

/* Today filter segment — teal accent + badge */
.hls-today { position: relative; }
.hls-today .hls-icon { color: rgba(94,234,212,0.9); }
.hls-today .hls-secondary { color: rgba(153,246,228,0.55); }
.hls-today:hover {
  background: linear-gradient(135deg, rgba(45,212,191,0.14), rgba(20,184,166,0.05));
}
.hls-today.active {
  background: linear-gradient(135deg, rgba(45,212,191,0.22), rgba(20,184,166,0.08));
  box-shadow: inset 0 0 0 1px rgba(45,212,191,0.35);
}
.hls-today.active .hls-icon { color: #ccfbf1; }
.hls-today.active .hls-primary { color: #ccfbf1; }

.header-live-segment .header-today-count {
  position: absolute;
  top: 2px;
  inset-inline-end: 2px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--danger);
  color: #fff;
  font-family: var(--font-mono, monospace);
  font-size: 0.6rem;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 0 10px rgba(239,68,68,0.5), 0 0 0 2px rgba(14,12,21,0.95);
}
.header-live-segment .header-today-count.hidden { display: none; }

/* Dividers between segments */
.hlb-divider {
  width: 1px;
  align-self: center;
  height: 22px;
  background: linear-gradient(to bottom, transparent, rgba(255,255,255,0.12), transparent);
  margin: 0 1px;
  flex-shrink: 0;
}

/* Responsive: collapse on smaller screens */
@media (max-width: 1100px) {
  .header-live-segment { padding: 6px 10px; gap: 7px; }
  .header-live-segment .hls-primary { font-size: 0.82rem; }
  .header-live-segment .hls-secondary { font-size: 0.62rem; }
  .hls-clock .hls-primary.header-clock { font-size: 0.92rem; }
  .hls-today .hls-secondary { display: none; }
}

@media (max-width: 900px) {
  .header-live-bar {
    padding: 3px;
    border-radius: 14px;
  }
  .header-live-segment { padding: 5px 8px; gap: 6px; min-height: 36px; }
  .header-live-segment .hls-icon { width: 14px; height: 14px; }
  .hls-prayer .hls-secondary { display: none; }
  .hls-prayer .hls-tertiary { display: none; }
  .hls-today .hls-primary { display: none; }
  .hls-today .hls-secondary { display: none; }
  .hls-today .hls-stack { display: none; }
  .hls-clock .hls-secondary { display: none; }
}

@media (max-width: 560px) {
  .hls-prayer .hls-stack { display: none; }
  .hls-clock .hls-primary.header-clock { font-size: 0.84rem; }
  .hls-clock .header-clock .hc-mer { display: none; }
  .hlb-divider { height: 16px; }
}

/* ── CONFETTI ──────────────────────────────────────────────── */
.confetti-host {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  overflow: hidden;
}
.confetti-p {
  position: absolute;
  border-radius: 2px;
  opacity: 0.95;
  will-change: transform, opacity;
  transform-origin: center;
  box-shadow: 0 0 4px currentColor;
}
@keyframes confettiFly {
  0% {
    transform: translate(0, 0) rotate(0deg) scale(1);
    opacity: 1;
  }
  70% {
    opacity: 1;
  }
  100% {
    transform: translate(var(--confetti-dx, 0px), calc(var(--confetti-dy, 0px) + 320px)) rotate(var(--confetti-rot, 360deg)) scale(0.8);
    opacity: 0;
  }
}
@media (prefers-reduced-motion: reduce) {
  .confetti-host { display: none !important; }
}

/* ── SEASONAL OVERLAY (subtle particle drift) ─────────────── */
.season-overlay {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  overflow: hidden;
}
.season-overlay .season-p {
  position: absolute;
  top: -10vh;
  will-change: transform, opacity;
  animation-name: seasonDrift;
  animation-iteration-count: infinite;
  animation-timing-function: linear;
  filter: drop-shadow(0 0 2px rgba(255, 255, 255, 0.15));
}
@keyframes seasonDrift {
  0%   { transform: translate3d(0, -10vh, 0) rotate(0deg);  opacity: 0; }
  10%  { opacity: 1; }
  90%  { opacity: 1; }
  100% { transform: translate3d(calc(80px * var(--drift, 1)), 110vh, 0) rotate(360deg); opacity: 0; }
}
.season-overlay.season-winter .season-p { color: rgba(200, 230, 255, 0.65); }
.season-overlay.season-spring .season-p { filter: hue-rotate(-10deg) drop-shadow(0 0 3px rgba(236, 72, 153, 0.3)); }
.season-overlay.season-summer .season-p { color: rgba(255, 230, 130, 0.75); }
.season-overlay.season-autumn .season-p { filter: hue-rotate(-15deg) saturate(1.1); }
@media (prefers-reduced-motion: reduce) {
  .season-overlay { display: none !important; }
}

/* ── KONAMI RAINBOW MODE ───────────────────────────────────── */
body.konami-rainbow .dash-grid .card,
body.konami-rainbow #page-grid .card {
  animation: konamiHueShift 1.5s linear infinite;
}
@keyframes konamiHueShift {
  0%   { filter: hue-rotate(0deg) saturate(1.15); }
  100% { filter: hue-rotate(360deg) saturate(1.15); }
}
body.konami-rainbow::before,
body.konami-rainbow::after {
  animation: konamiHueShift 2s linear infinite;
}
@media (prefers-reduced-motion: reduce) {
  body.konami-rainbow .dash-grid .card,
  body.konami-rainbow #page-grid .card,
  body.konami-rainbow::before,
  body.konami-rainbow::after { animation: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   THEME MODES — background tone variants (cycled via _cycleTheme)
   - dark      = default (no class)
   - midnight  = .theme-mode-midnight  (deep navy/blue)
   - amoled    = .amoled-mode          (pure black, existing)
   - light     = .theme-mode-light     (pragmatic light surface — accent kept)
   ═══════════════════════════════════════════════════════════════════════════ */
body.theme-mode-midnight {
  --bg: #050912;
  --surface: #0a0f1d;
  background-image:
    radial-gradient(circle at 18% 8%, rgba(89, 117, 216, 0.08) 0%, transparent 50%),
    radial-gradient(circle at 82% 92%, rgba(139, 92, 246, 0.06) 0%, transparent 55%),
    linear-gradient(to right, rgba(120, 160, 255, 0.018) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(120, 160, 255, 0.018) 1px, transparent 1px);
  transition: background-color 0.4s ease;
}
body.theme-mode-midnight .dash-header {
  background: linear-gradient(180deg, rgba(10, 15, 29, 0.9), rgba(5, 9, 18, 0.7));
}

body.theme-mode-light {
  --bg: #f5f7fb;
  --surface: #ffffff;
  --text: #1a1d28;
  --muted: #5e6478;
  --border: rgba(0, 0, 0, 0.08);
  --border2: rgba(0, 0, 0, 0.12);
  background-image:
    linear-gradient(to right, rgba(0, 0, 0, 0.025) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(0, 0, 0, 0.025) 1px, transparent 1px);
  color: var(--text);
  transition: background-color 0.4s ease, color 0.4s ease;
}
body.theme-mode-light .dash-header {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.95), rgba(245, 247, 251, 0.85));
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  backdrop-filter: blur(14px);
}
body.theme-mode-light .card {
  background: linear-gradient(145deg, #ffffff, #f8fafc);
  border-color: rgba(0, 0, 0, 0.08);
  color: var(--text);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04), 0 0 0 1px rgba(0, 0, 0, 0.02);
}
body.theme-mode-light .card:hover {
  box-shadow: 0 8px 24px rgba(139, 92, 246, 0.1), 0 0 0 1px rgba(139, 92, 246, 0.15);
}
body.theme-mode-light .card-title,
body.theme-mode-light .ch-stat-val {
  color: var(--text);
}
body.theme-mode-light .card-meta,
body.theme-mode-light .ch-stat-lbl {
  color: rgba(0, 0, 0, 0.5);
}
body.theme-mode-light .header-icon-btn {
  color: var(--text);
}
body.theme-mode-light .header-icon-btn:hover {
  background: rgba(139, 92, 246, 0.08);
}
body.theme-mode-light .ai-drawer {
  background:
    radial-gradient(circle at 100% 0%, rgba(139, 92, 246, 0.08) 0%, transparent 55%),
    linear-gradient(180deg, #ffffff, #f5f7fb);
  color: var(--text);
}
body.theme-mode-light .ai-drawer-title-txt,
body.theme-mode-light .ai-sug-title { color: var(--text); }
body.theme-mode-light .ai-drawer-greet,
body.theme-mode-light .ai-sug-desc { color: rgba(0, 0, 0, 0.6); }
body.theme-mode-light .ai-sug {
  background: linear-gradient(145deg, rgba(0, 0, 0, 0.02), rgba(0, 0, 0, 0.01));
  border-color: rgba(0, 0, 0, 0.06);
}
body.theme-mode-light .insights-page {
  background: linear-gradient(180deg, #ffffff, #f0f4fa);
  color: var(--text);
}
body.theme-mode-light .insight-stat,
body.theme-mode-light .ping-graph {
  background: linear-gradient(145deg, #ffffff, #f8fafc);
  border-color: rgba(0, 0, 0, 0.06);
  color: var(--text);
}

/* ═══════════════════════════════════════════════════════════════════════════
   GUIDED TOUR — spotlight cutout overlay + tooltip card
   ═══════════════════════════════════════════════════════════════════════════ */
.tour-overlay {
  --tour-x: 0px; --tour-y: 0px; --tour-w: 100px; --tour-h: 100px;
  position: fixed;
  inset: 0;
  z-index: 10500;
  pointer-events: auto;
  background: rgba(4, 6, 12, 0.78);
  backdrop-filter: blur(2px);
  /* Cut a hole using a CSS mask (radial-gradient hole at the rect) */
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  /* Replace mask trick with clip-path for wider support */
  clip-path: polygon(
    0% 0%, 100% 0%, 100% 100%, 0% 100%, 0% 0%,
    var(--tour-x) var(--tour-y),
    var(--tour-x) calc(var(--tour-y) + var(--tour-h)),
    calc(var(--tour-x) + var(--tour-w)) calc(var(--tour-y) + var(--tour-h)),
    calc(var(--tour-x) + var(--tour-w)) var(--tour-y),
    var(--tour-x) var(--tour-y)
  );
  transition: clip-path 0.32s cubic-bezier(.4, 0, .2, 1), background 0.32s;
  animation: tourFadeIn 0.25s ease-out;
}
@keyframes tourFadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Glow ring around the spotlight target */
.tour-overlay::after {
  content: '';
  position: fixed;
  top: var(--tour-y);
  left: var(--tour-x);
  width: var(--tour-w);
  height: var(--tour-h);
  border-radius: 12px;
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.65), 0 0 30px rgba(167, 139, 250, 0.45);
  pointer-events: none;
  animation: tourPulse 2s ease-in-out infinite;
  transition: top 0.32s cubic-bezier(.4, 0, .2, 1), left 0.32s cubic-bezier(.4, 0, .2, 1),
              width 0.32s cubic-bezier(.4, 0, .2, 1), height 0.32s cubic-bezier(.4, 0, .2, 1);
}
@keyframes tourPulse {
  0%, 100% { box-shadow: 0 0 0 3px rgba(167,139,250,0.6), 0 0 24px rgba(167,139,250,0.4); }
  50%      { box-shadow: 0 0 0 5px rgba(167,139,250,0.85), 0 0 38px rgba(167,139,250,0.6); }
}

/* Tooltip card */
.tour-tooltip {
  position: fixed;
  width: 320px;
  z-index: 10600;
  background: linear-gradient(160deg, rgba(28, 22, 44, 0.98), rgba(14, 12, 21, 0.98));
  border: 1px solid rgba(167, 139, 250, 0.35);
  border-radius: 18px;
  padding: 18px 20px 14px;
  box-shadow: 0 22px 60px rgba(0, 0, 0, 0.55), 0 0 30px rgba(167, 139, 250, 0.2);
  color: var(--text);
  direction: rtl;
  animation: tourTipIn 0.32s cubic-bezier(.34, 1.56, .64, 1);
  transition: top 0.32s cubic-bezier(.4, 0, .2, 1), left 0.32s cubic-bezier(.4, 0, .2, 1);
}
@keyframes tourTipIn {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}
.tour-tt-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.tour-tt-step {
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.72rem;
  color: rgba(167, 139, 250, 0.9);
  background: rgba(167, 139, 250, 0.12);
  padding: 3px 9px;
  border-radius: 999px;
  border: 1px solid rgba(167, 139, 250, 0.3);
}
.tour-tt-skip {
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: var(--text);
  width: 28px; height: 28px;
  border-radius: 8px;
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.18s;
}
.tour-tt-skip:hover {
  background: rgba(255, 79, 170, 0.15);
  transform: rotate(90deg);
}
.tour-tt-title {
  margin: 0 0 6px;
  font-family: var(--font-ar);
  font-size: 1.05rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.01em;
}
.tour-tt-text {
  margin: 0 0 12px;
  font-family: var(--font-ar);
  font-size: 0.86rem;
  line-height: 1.55;
  color: rgba(232, 238, 247, 0.78);
}
.tour-tt-text code,
.tour-tt-text kbd {
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.78rem;
  padding: 2px 6px;
  border-radius: 5px;
  background: rgba(167, 139, 250, 0.15);
  border: 1px solid rgba(167, 139, 250, 0.3);
  color: #fff;
}
.tour-tt-dots {
  display: flex;
  justify-content: center;
  gap: 5px;
  margin: 8px 0 14px;
}
.tour-tt-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
  transition: all 0.2s;
}
.tour-tt-dot.active {
  width: 22px; border-radius: 999px;
  background: linear-gradient(90deg, #a78bfa, #2dd4bf);
}
.tour-tt-controls {
  display: flex;
  align-items: center;
  gap: 8px;
}
.tour-tt-spacer { flex: 1; }
.tour-tt-btn {
  padding: 8px 14px;
  border-radius: 10px;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.82rem;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.1);
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  transition: all 0.18s;
}
.tour-tt-btn:hover {
  background: rgba(255, 255, 255, 0.08);
  transform: translateY(-1px);
}
.tour-tt-btn.tour-tt-btn-primary {
  background: linear-gradient(135deg, #a78bfa, #8b5cf6);
  border-color: rgba(167, 139, 250, 0.6);
  color: #fff;
  box-shadow: 0 4px 14px rgba(167, 139, 250, 0.35);
}
.tour-tt-btn.tour-tt-btn-primary:hover {
  box-shadow: 0 6px 20px rgba(167, 139, 250, 0.5);
}
.tour-tt-btn.tour-tt-btn-ghost {
  background: transparent;
  color: rgba(232, 238, 247, 0.55);
  border-color: transparent;
}
.tour-tt-btn.tour-tt-btn-ghost:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.04);
}

body.tour-active { overflow: hidden; }

/* Tour suggestion toast (first-time visitors) */
.tour-suggest-toast {
  position: fixed;
  bottom: 24px;
  inset-inline-start: 24px;
  z-index: 10400;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(28, 22, 44, 0.98), rgba(14, 12, 21, 0.98));
  border: 1px solid rgba(167, 139, 250, 0.4);
  box-shadow: 0 18px 50px rgba(0, 0, 0, 0.5), 0 0 30px rgba(167, 139, 250, 0.18);
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.88rem;
  max-width: calc(100vw - 48px);
  animation: tourSuggestIn 0.4s cubic-bezier(.34, 1.56, .64, 1);
  direction: rtl;
}
@keyframes tourSuggestIn {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
.tts-btn {
  padding: 7px 12px;
  border-radius: 9px;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.78rem;
  cursor: pointer;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
  transition: all 0.18s;
  white-space: nowrap;
}
.tts-btn.tts-primary {
  background: linear-gradient(135deg, #a78bfa, #8b5cf6);
  border-color: rgba(167, 139, 250, 0.6);
  color: #fff;
}
.tts-btn:hover { transform: translateY(-1px); }
.tts-btn.tts-ghost { color: rgba(232, 238, 247, 0.6); }

@media (max-width: 600px) {
  .tour-tooltip {
    width: calc(100vw - 32px);
    inset-inline-start: 16px !important;
    inset-inline-end: 16px !important;
    left: auto !important;
    right: auto !important;
  }
  .tour-suggest-toast {
    inset-inline-start: 12px;
    inset-inline-end: 12px;
    bottom: 12px;
    flex-wrap: wrap;
  }
}

@media (prefers-reduced-motion: reduce) {
  .tour-overlay,
  .tour-overlay::after,
  .tour-tooltip,
  .tour-suggest-toast { animation: none !important; transition: none !important; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   STATUS PING GRAPH — sparkline of uptime history on status cards
   ═══════════════════════════════════════════════════════════════════════════ */
.ping-graph {
  margin: 10px 0 8px;
  padding: 10px 12px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.06);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.ping-graph-empty {
  padding: 8px 12px;
  text-align: center;
  border: 1px dashed rgba(255, 255, 255, 0.08);
  background: transparent;
}
.ping-graph-empty-text {
  font-family: var(--font-ar);
  font-size: 0.72rem;
  color: rgba(232, 238, 247, 0.45);
}
.ping-graph-bars {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 32px;
  padding: 2px 0;
}
.pg-bar {
  flex: 1 1 0;
  min-width: 4px;
  border-radius: 2px;
  transition: transform 0.15s ease;
  cursor: help;
}
.pg-bar:hover { transform: scaleY(1.1); }
.pg-bar-up.pg-fast { background: linear-gradient(180deg, #4ade80, #22c55e); box-shadow: 0 0 4px rgba(74, 222, 128, 0.4); }
.pg-bar-up.pg-mid  { background: linear-gradient(180deg, #ffb64c, #f59e0b); box-shadow: 0 0 4px rgba(255, 182, 76, 0.35); }
.pg-bar-up.pg-slow { background: linear-gradient(180deg, #fb923c, #ea580c); box-shadow: 0 0 4px rgba(251, 146, 60, 0.4); }
.pg-bar-down {
  background: linear-gradient(180deg, #ff4d5f, #b91c1c);
  box-shadow: 0 0 5px rgba(255, 77, 95, 0.45);
  border-radius: 2px;
}
.ping-graph-stats {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  font-family: var(--font-ar);
  font-size: 0.72rem;
}
.pg-stat {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 3px 8px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  color: rgba(232, 238, 247, 0.7);
}
.pg-uptime { font-weight: 700; font-family: var(--font-mono, ui-monospace, monospace); }
.pg-uptime.is-good { color: #4ade80; border-color: rgba(74, 222, 128, 0.3); background: rgba(74, 222, 128, 0.08); }
.pg-uptime.is-mid  { color: #ffb64c; border-color: rgba(255, 182, 76, 0.3); background: rgba(255, 182, 76, 0.08); }
.pg-uptime.is-bad  { color: #ff4d5f; border-color: rgba(255, 77, 95, 0.35); background: rgba(255, 77, 95, 0.1); }
.pg-avg { font-family: var(--font-mono, ui-monospace, monospace); }
.pg-count { font-family: var(--font-mono, ui-monospace, monospace); margin-inline-start: auto; opacity: 0.55; }

@media (prefers-reduced-motion: reduce) {
  .pg-bar:hover { transform: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   AI ASSISTANT DRAWER — slide-out smart suggestions panel
   ═══════════════════════════════════════════════════════════════════════════ */

/* Header trigger button — sparkle icon + badge dot */
.header-icon-btn.ai-drawer-trigger {
  position: relative;
}
.header-icon-btn.ai-drawer-trigger svg {
  filter: drop-shadow(0 0 6px rgba(167, 139, 250, 0.5));
  transition: transform 0.3s cubic-bezier(.4, 0, .2, 1);
}
.header-icon-btn.ai-drawer-trigger:hover svg {
  transform: scale(1.1) rotate(-8deg);
  filter: drop-shadow(0 0 10px rgba(167, 139, 250, 0.8));
}
.ai-pulse-dot {
  position: absolute;
  top: 6px;
  inset-inline-end: 6px;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: linear-gradient(135deg, #a78bfa, #2dd4bf);
  box-shadow: 0 0 0 0 rgba(167, 139, 250, 0.7);
  animation: aiPulseDot 2.4s ease-in-out infinite;
  pointer-events: none;
}
@keyframes aiPulseDot {
  0%, 100% { box-shadow: 0 0 0 0 rgba(167, 139, 250, 0.6); transform: scale(1); }
  50%      { box-shadow: 0 0 0 6px rgba(167, 139, 250, 0); transform: scale(1.15); }
}
.ai-suggest-count {
  position: absolute;
  top: -3px;
  inset-inline-end: -3px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: linear-gradient(135deg, #ff4d5f, #ff5c8f);
  color: #fff;
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 0.65rem;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 2px 6px rgba(255, 77, 95, 0.5);
  border: 2px solid #0e0c15;
  z-index: 2;
}
.ai-suggest-count.hidden { display: none; }

/* Backdrop */
.ai-drawer-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(4, 6, 12, 0.55);
  backdrop-filter: blur(4px);
  z-index: 9700;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.28s cubic-bezier(.4, 0, .2, 1);
}
.ai-drawer-backdrop.open {
  opacity: 1;
  pointer-events: auto;
}

/* Drawer — slides in from the END (RTL-aware: from the LEFT in Arabic) */
.ai-drawer {
  position: fixed;
  top: 0;
  bottom: 0;
  inset-inline-end: 0;
  width: min(420px, 92vw);
  z-index: 9800;
  display: flex;
  flex-direction: column;
  background:
    radial-gradient(circle at 100% 0%, rgba(167, 139, 250, 0.18) 0%, transparent 55%),
    linear-gradient(180deg, rgba(14, 12, 21, 0.98), rgba(8, 7, 14, 0.99));
  border-inline-start: 1px solid rgba(167, 139, 250, 0.18);
  box-shadow: -20px 0 60px rgba(0, 0, 0, 0.55);
  transform: translateX(-100%);
  transition: transform 0.32s cubic-bezier(.4, 0, .2, 1);
  direction: rtl;
}
/* RTL note: drawer is anchored to inset-inline-end:0 (= left side in RTL).
   translateX(-100%) hides it off-screen to the left. .open returns to 0. */
.ai-drawer.open,
html[dir="rtl"] .ai-drawer.open {
  transform: translateX(0);
}

/* Drawer header */
.ai-drawer-head {
  flex: 0 0 auto;
  padding: 22px 22px 18px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  background: linear-gradient(180deg, rgba(167, 139, 250, 0.08), transparent);
}
.ai-drawer-head-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}
.ai-drawer-title {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.ai-drawer-spark {
  width: 36px;
  height: 36px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(167, 139, 250, 0.22), rgba(45, 212, 191, 0.12));
  color: #fff;
  border: 1px solid rgba(167, 139, 250, 0.35);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);
  animation: aiSparkPulse 3.2s ease-in-out infinite;
}
@keyframes aiSparkPulse {
  0%, 100% { box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 18px rgba(167,139,250,0.18); }
  50%      { box-shadow: inset 0 1px 0 rgba(255,255,255,0.1), 0 0 28px rgba(167,139,250,0.45); }
}
.ai-drawer-title-txt {
  font-family: var(--font-ar);
  font-weight: 800;
  font-size: 1.15rem;
  color: var(--text);
  letter-spacing: -0.02em;
}
.ai-drawer-close {
  width: 36px;
  height: 36px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text);
  font-size: 1rem;
  cursor: pointer;
  transition: all 0.18s;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.ai-drawer-close:hover {
  background: rgba(255, 79, 170, 0.12);
  border-color: rgba(255, 79, 170, 0.3);
  transform: rotate(90deg);
}
.ai-drawer-greet {
  margin: 0 0 10px;
  font-family: var(--font-ar);
  font-size: 0.88rem;
  color: rgba(232, 238, 247, 0.72);
  line-height: 1.5;
}
.ai-drawer-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.ai-meta-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.08);
  font-family: var(--font-ar);
  font-size: 0.72rem;
  color: rgba(232, 238, 247, 0.78);
}
.ai-meta-pill.ai-meta-accent {
  background: linear-gradient(135deg, rgba(167, 139, 250, 0.22), rgba(45, 212, 191, 0.1));
  border-color: rgba(167, 139, 250, 0.4);
  color: #fff;
}

/* Body — scrollable list */
.ai-drawer-body {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 14px 16px 22px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  scrollbar-width: thin;
  scrollbar-color: rgba(167, 139, 250, 0.3) transparent;
}
.ai-drawer-body::-webkit-scrollbar { width: 6px; }
.ai-drawer-body::-webkit-scrollbar-thumb {
  background: rgba(167, 139, 250, 0.3);
  border-radius: 999px;
}

/* Suggestion item */
.ai-sug {
  --ai-sug-c: #a78bfa;
  display: grid;
  grid-template-columns: 42px 1fr auto;
  gap: 12px;
  align-items: center;
  padding: 12px 14px;
  border-radius: 16px;
  background:
    linear-gradient(145deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.01));
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-inline-start: 3px solid var(--ai-sug-c);
  transition: all 0.2s cubic-bezier(.4, 0, .2, 1);
  animation: aiSugIn 0.4s cubic-bezier(.4, 0, .2, 1) backwards;
}
.ai-drawer-body .ai-sug:nth-child(1) { animation-delay: 0.04s; }
.ai-drawer-body .ai-sug:nth-child(2) { animation-delay: 0.08s; }
.ai-drawer-body .ai-sug:nth-child(3) { animation-delay: 0.12s; }
.ai-drawer-body .ai-sug:nth-child(4) { animation-delay: 0.16s; }
.ai-drawer-body .ai-sug:nth-child(5) { animation-delay: 0.20s; }
.ai-drawer-body .ai-sug:nth-child(6) { animation-delay: 0.24s; }
.ai-drawer-body .ai-sug:nth-child(7) { animation-delay: 0.28s; }
.ai-drawer-body .ai-sug:nth-child(8) { animation-delay: 0.32s; }
.ai-drawer-body .ai-sug:nth-child(n+9) { animation-delay: 0.36s; }
@keyframes aiSugIn {
  from { opacity: 0; transform: translateX(8px); }
  to   { opacity: 1; transform: translateX(0); }
}
html[dir="rtl"] .ai-drawer-body .ai-sug { animation-name: aiSugInRtl; }
@keyframes aiSugInRtl {
  from { opacity: 0; transform: translateX(-8px); }
  to   { opacity: 1; transform: translateX(0); }
}
.ai-sug:hover {
  border-color: color-mix(in srgb, var(--ai-sug-c) 40%, transparent);
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--ai-sug-c) 8%, rgba(255,255,255,0.04)), rgba(255, 255, 255, 0.02));
  transform: translateY(-1px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.35);
}
.ai-sug.is-high {
  border-inline-start-width: 4px;
  background:
    linear-gradient(145deg, color-mix(in srgb, var(--ai-sug-c) 10%, rgba(255,255,255,0.04)), rgba(255, 255, 255, 0.01));
}
.ai-sug.is-high::before {
  content: '';
  position: absolute;
}
.ai-sug-icon {
  width: 42px;
  height: 42px;
  border-radius: 12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.4rem;
  background: color-mix(in srgb, var(--ai-sug-c) 18%, rgba(255,255,255,0.04));
  border: 1px solid color-mix(in srgb, var(--ai-sug-c) 30%, transparent);
  flex-shrink: 0;
}
.ai-sug-body {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.ai-sug-title {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--text);
  line-height: 1.3;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ai-sug-desc {
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(232, 238, 247, 0.65);
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ai-sug-meta {
  font-family: var(--font-ar);
  font-size: 0.7rem;
  color: rgba(232, 238, 247, 0.5);
  margin-top: 2px;
}
.ai-sug-act {
  flex-shrink: 0;
  padding: 6px 12px;
  border-radius: 10px;
  background: color-mix(in srgb, var(--ai-sug-c) 22%, rgba(255,255,255,0.04));
  border: 1px solid color-mix(in srgb, var(--ai-sug-c) 40%, transparent);
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.18s;
  white-space: nowrap;
}
.ai-sug-act:hover {
  background: color-mix(in srgb, var(--ai-sug-c) 35%, rgba(255,255,255,0.04));
  transform: scale(1.04);
}

/* Empty state */
.ai-empty {
  text-align: center;
  padding: 48px 20px;
  color: rgba(232, 238, 247, 0.7);
}
.ai-empty-emoji {
  font-size: 3rem;
  margin-bottom: 14px;
  animation: aiEmptyFloat 4s ease-in-out infinite;
}
@keyframes aiEmptyFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-6px); }
}
@media (prefers-reduced-motion: reduce) {
  .ai-empty-emoji { animation: none; }
}
.ai-empty-title {
  font-family: var(--font-ar);
  font-weight: 800;
  font-size: 1.15rem;
  color: var(--text);
  margin-bottom: 6px;
}
.ai-empty-sub {
  font-family: var(--font-ar);
  font-size: 0.88rem;
  color: rgba(232, 238, 247, 0.55);
  line-height: 1.5;
}

/* Footer — quick actions */
.ai-drawer-foot {
  flex: 0 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  padding: 14px 16px 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
  background: linear-gradient(0deg, rgba(167, 139, 250, 0.05), transparent);
}
.ai-foot-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 11px 14px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.08);
  color: var(--text);
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.85rem;
  cursor: pointer;
  transition: all 0.18s;
}
.ai-foot-btn:hover {
  background: linear-gradient(135deg, rgba(167, 139, 250, 0.18), rgba(45, 212, 191, 0.08));
  border-color: rgba(167, 139, 250, 0.4);
  transform: translateY(-1px);
}
.ai-foot-btn span:first-child {
  font-size: 1rem;
  color: rgba(167, 139, 250, 0.9);
}

/* When drawer is open, slightly dim the body for focus */
body.ai-drawer-active {
  overflow: hidden;
}

/* Mobile tweaks */
@media (max-width: 600px) {
  .ai-drawer {
    width: 100vw;
    border-inline-start: none;
  }
  .ai-drawer-head { padding: 18px 16px 14px; }
  .ai-drawer-foot { padding: 12px 14px 16px; }
  .ai-sug { padding: 11px 12px; gap: 10px; grid-template-columns: 38px 1fr auto; }
  .ai-sug-icon { width: 38px; height: 38px; font-size: 1.25rem; }
  /* Larger touch target for the close button on phones */
  .ai-drawer-close {
    width: 44px;
    height: 44px;
    font-size: 1.1rem;
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .ai-drawer { transition: none; }
  .ai-drawer-backdrop { transition: none; }
  .ai-drawer-spark,
  .ai-pulse-dot,
  .ai-empty-emoji,
  .ai-drawer-body .ai-sug { animation: none !important; }
  .ai-sug:hover,
  .ai-foot-btn:hover { transform: none; }
  .header-icon-btn.ai-drawer-trigger:hover svg { transform: none; }
}


/* ════════════════════════════════════════════════════════════════
   MOBILE FIXES BATCH
   - Input/textarea/select min-font 16px on phones (kills Safari iOS auto-zoom)
   - Card action buttons: larger touch targets + breathing room
   - Defensive overflow-wrap so long Arabic words / URLs don't break layout
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  /* iOS Safari zooms inputs whose computed font-size is <16px on focus.
     Bump every typeable control to 16px while preserving design weight/colors. */
  input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]),
  textarea,
  select {
    font-size: max(16px, 1rem) !important;
  }

  /* Card actions: more breathing room + reliable 40px touch targets */
  .card .card-actions {
    gap: 10px !important;
    padding: 14px 16px 12px !important;
  }
  .card .card-actions button,
  .card .card-actions [role="button"] {
    min-width: 44px;
    min-height: 44px;
    padding: 8px 10px;
  }
}

/* Long Arabic words, URLs, raw IDs — never let them blow horizontal layout */
.card-title,
.card-content,
.modal-input,
.note-content,
.markdown-content {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* ════════════════════════════════════════════════════════════════
   EMAIL REMINDERS — settings panel + per-card "send" button
   ════════════════════════════════════════════════════════════════ */
.email-reminder-section {
  margin-bottom: 18px;
}
.email-emailjs-details {
  margin-top: 8px;
  padding: 12px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 12px;
}
.email-emailjs-details > summary {
  cursor: pointer;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.92rem;
  color: var(--text);
  padding: 4px 0;
  user-select: none;
  list-style: none;
}
.email-emailjs-details > summary::-webkit-details-marker { display: none; }
.email-emailjs-details > summary::before {
  content: '▸';
  display: inline-block;
  margin-inline-end: 8px;
  transition: transform 0.18s ease;
  color: var(--accent2);
}
.email-emailjs-details[open] > summary::before {
  transform: rotate(90deg);
}
.email-emailjs-details code {
  display: inline-block;
  padding: 1px 6px;
  background: rgba(167, 139, 250, 0.12);
  border-radius: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 0.78rem;
  color: #ddd6fe;
}

/* "Send email" + "Calendar" pills on reminder cards (next to ✓ Done in footer) */
.card-email-btn,
.card-cal-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  margin-inline-start: 6px;
  background: rgba(167, 139, 250, 0.10);
  border: 1px solid rgba(167, 139, 250, 0.28);
  border-radius: 8px;
  color: var(--text);
  cursor: pointer;
  font-size: 0.95rem;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
}
.card-email-btn:hover,
.card-cal-btn:hover {
  background: rgba(167, 139, 250, 0.18);
  border-color: rgba(167, 139, 250, 0.5);
}
.card-email-btn:active,
.card-cal-btn:active { transform: scale(0.94); }
/* Calendar uses teal to differentiate from email's purple */
.card-cal-btn {
  background: rgba(45, 212, 191, 0.10);
  border-color: rgba(45, 212, 191, 0.30);
}
.card-cal-btn:hover {
  background: rgba(45, 212, 191, 0.20);
  border-color: rgba(45, 212, 191, 0.55);
}

/* Local-network favicon fallback (when URL points to a private IP) */
.link-favicon-local {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(45, 212, 191, 0.12);
  border-radius: 6px;
  font-size: 0.95em;
}

/* Recommended-box highlight at top of email settings section */
.email-recommended-box {
  margin-bottom: 16px;
  padding: 14px 16px;
  background: linear-gradient(135deg, rgba(45, 212, 191, 0.08), rgba(45, 212, 191, 0.03));
  border: 1px solid rgba(45, 212, 191, 0.25);
  border-radius: 12px;
}
.email-rec-title {
  font-family: var(--font-ar);
  font-weight: 800;
  font-size: 1rem;
  color: #2dd4bf;
  margin-bottom: 6px;
}
.email-rec-text {
  font-family: var(--font-ar);
  font-size: 0.88rem;
  line-height: 1.6;
  color: rgba(232, 238, 247, 0.82);
  margin: 0;
}
.email-rec-text code {
  display: inline-block;
  padding: 0 6px;
  background: rgba(45, 212, 191, 0.15);
  border-radius: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 0.82rem;
  color: #99f6e4;
}
.email-lead-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid rgba(45, 212, 191, 0.18);
}
.email-lead-row label {
  font-family: var(--font-ar);
  font-size: 0.88rem;
  color: var(--text);
  flex: 1;
}
.email-lead-row select {
  font-family: var(--font-ar);
  font-size: 0.92rem;
  background: rgba(45, 212, 191, 0.08);
  color: var(--text);
  border: 1px solid rgba(45, 212, 191, 0.35);
  border-radius: 8px;
  padding: 7px 12px;
  cursor: pointer;
}
.email-lead-row select:focus {
  border-color: rgba(45, 212, 191, 0.7);
  background: rgba(45, 212, 191, 0.14);
}

/* Calendar button on subscription / document card footers */
.dd-foot-btn-cal,
.sd2-cal-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: rgba(45, 212, 191, 0.12);
  border: 1px solid rgba(45, 212, 191, 0.35);
  color: #99f6e4;
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 600;
  padding: 5px 10px;
  border-radius: 7px;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.dd-foot-btn-cal:hover,
.sd2-cal-btn:hover {
  background: rgba(45, 212, 191, 0.22);
  border-color: rgba(45, 212, 191, 0.6);
}

/* ════════════════════════════════════════════════════════════════
   DESIGN-SYSTEM PRIMITIVES — see DESIGN_RULES.md
   Universal button classes + custom confirm dialog. Reuse, don't reinvent.
   ════════════════════════════════════════════════════════════════ */

/* ── Universal button classes ── */
.btn-primary,
.btn-danger,
.btn-secondary,
.btn-ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 40px;
  padding: 10px 18px;
  border-radius: 12px;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0;
  cursor: pointer;
  border: 1px solid transparent;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.1s ease, color 0.18s ease, box-shadow 0.18s ease;
  user-select: none;
  white-space: nowrap;
}

/* Primary — purple */
.btn-primary {
  background: linear-gradient(135deg, #8b5cf6, #7c3aed);
  color: #fff;
  box-shadow: 0 4px 14px rgba(139, 92, 246, 0.28);
}
.btn-primary:hover {
  background: linear-gradient(135deg, #9d6df9, #8b5cf6);
  box-shadow: 0 6px 20px rgba(139, 92, 246, 0.42);
}

/* Danger — red, for destructive actions ONLY */
.btn-danger {
  background: linear-gradient(135deg, #ef4444, #dc2626);
  color: #fff;
  box-shadow: 0 4px 14px rgba(239, 68, 68, 0.28);
}
.btn-danger:hover {
  background: linear-gradient(135deg, #f56565, #ef4444);
  box-shadow: 0 6px 20px rgba(239, 68, 68, 0.42);
}

/* Secondary — outlined */
.btn-secondary {
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  border-color: rgba(255, 255, 255, 0.1);
}
.btn-secondary:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.18);
}

/* Ghost — text only */
.btn-ghost {
  background: transparent;
  color: rgba(232, 238, 247, 0.78);
}
.btn-ghost:hover { color: var(--text); background: rgba(255, 255, 255, 0.04); }

.btn-primary:active,
.btn-danger:active,
.btn-secondary:active,
.btn-ghost:active { transform: scale(0.96); }

.btn-primary:disabled,
.btn-danger:disabled,
.btn-secondary:disabled,
.btn-ghost:disabled {
  opacity: 0.5;
  cursor: not-allowed;
  transform: none !important;
}

/* ── Custom confirm dialog (anaConfirm) ── */
.ana-confirm-overlay {
  position: fixed;
  inset: 0;
  background: rgba(7, 7, 12, 0.72);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  z-index: 12000;
  opacity: 0;
  transition: opacity 0.18s ease;
  direction: rtl;
}
.ana-confirm-overlay.show { opacity: 1; }

.ana-confirm-box {
  width: min(420px, 100%);
  background: linear-gradient(160deg, #1a1525, #0f0d18);
  border: 1px solid rgba(167, 139, 250, 0.18);
  border-radius: 18px;
  padding: 24px 22px 20px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55);
  transform: scale(0.95);
  transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1);
}
.ana-confirm-overlay.show .ana-confirm-box { transform: scale(1); }

.ana-confirm-title {
  margin: 0 0 8px;
  font-family: var(--font-ar);
  font-size: 1.1rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: -0.01em;
}
.ana-confirm-msg {
  margin: 0 0 20px;
  font-family: var(--font-ar);
  font-size: 0.96rem;
  line-height: 1.55;
  color: rgba(232, 238, 247, 0.82);
  white-space: pre-wrap;
}
.ana-confirm-actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}
.ana-confirm-actions .btn-primary,
.ana-confirm-actions .btn-danger,
.ana-confirm-actions .btn-secondary {
  min-width: 96px;
}

@media (max-width: 480px) {
  .ana-confirm-box { padding: 20px 18px 16px; border-radius: 16px; }
  .ana-confirm-actions { flex-direction: column-reverse; }
  .ana-confirm-actions .btn-primary,
  .ana-confirm-actions .btn-danger,
  .ana-confirm-actions .btn-secondary { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  .ana-confirm-overlay,
  .ana-confirm-box { transition: none; }
  .ana-confirm-overlay .ana-confirm-box { transform: scale(1); }
}

/* ════════════════════════════════════════════════════════════════
   TYPE PICKER (Step 1 of "Add card" flow) + Selected-type badge
   See DESIGN_RULES.md
   ════════════════════════════════════════════════════════════════ */

#type-picker-modal { z-index: 250; }
.type-picker-box {
  max-width: 760px;          /* ↑ wider so cards have breathing room (was 560) */
  width: 96vw;
  max-height: 88vh;
  overflow-y: auto;
}
.type-picker-subtitle {
  text-align: center;
  color: var(--muted);
  margin: 8px 0 12px;
  font-size: 0.92rem;
  font-family: var(--font-ar);
}
.tp-header-grid {
  position: relative;
  display: block;
  min-height: 138px;
  padding-bottom: 70px;
}
.tp-header-grid .modal-title {
  position: absolute;
  top: 0;
  right: 0;
  margin: 0;
}
.tp-header-grid .close-btn {
  position: absolute;
  top: 0;
  left: 0;
}
.tp-header-center {
  position: absolute;
  inset-inline: 0;
  bottom: 12px;
  display: flex;
  justify-content: center;
  pointer-events: none;
}
.tp-page-pill {
  -webkit-appearance: none;
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  min-width: 168px;
  min-height: 46px;
  padding: 0 20px;
  background: linear-gradient(180deg, rgba(63, 42, 104, 0.92), rgba(42, 28, 74, 0.92));
  border: 1px solid rgba(126, 87, 194, 0.55);
  border-radius: 999px;
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.05),
    0 10px 22px rgba(16, 10, 30, 0.28);
  color: #f3efff;
  font-family: var(--font-ar);
  font-size: 0.95rem;
  font-weight: 700;
  cursor: pointer;
  direction: rtl;
  white-space: nowrap;
  transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease, background 0.16s ease;
  pointer-events: auto;
}
.tp-page-pill svg {
  width: 18px;
  height: 18px;
  opacity: 0.92;
  color: #d7cdfb;
}
.tp-page-pill:hover {
  background: linear-gradient(180deg, rgba(74, 49, 122, 0.96), rgba(48, 31, 86, 0.96));
  border-color: rgba(147, 112, 219, 0.75);
  box-shadow:
    inset 0 1px 0 rgba(255, 255, 255, 0.06),
    0 14px 28px rgba(16, 10, 30, 0.34);
  transform: translateY(-1px);
}

@media (max-width: 700px) {
  .tp-header-grid {
    min-height: 124px;
    padding-bottom: 62px;
  }

  .tp-page-pill {
    min-width: 152px;
    min-height: 42px;
    padding: 0 18px;
    font-size: 0.9rem;
  }
}
.type-picker-grid {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

/* ── Search ──────────────────────────────────────────────────── */
.type-picker-search-wrap {
  position: relative;
  margin-bottom: 16px;
}
.type-picker-search-icon {
  position: absolute;
  inset-inline-start: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--muted);
  pointer-events: none;
}
.type-picker-search {
  width: 100%;
  padding: 12px 42px;       /* room for icon (start) and clear button (end) */
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.1);
  border-radius: 12px;
  color: var(--text);
  font-family: var(--font-ar);
  font-size: 0.95rem;
  outline: none;
  transition: border-color 0.15s ease, background 0.15s ease;
}
.type-picker-search::placeholder { color: rgba(232, 238, 247, 0.4); }
.type-picker-search:focus {
  border-color: rgba(167, 139, 250, 0.55);
  background: rgba(255, 255, 255, 0.06);
}
.type-picker-search-clear {
  position: absolute;
  inset-inline-end: 8px;
  top: 50%;
  transform: translateY(-50%);
  width: 28px;
  height: 28px;
  border-radius: 8px;
  background: rgba(255, 255, 255, 0.08);
  border: none;
  color: var(--text);
  cursor: pointer;
  font-size: 0.85rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s ease;
}
.type-picker-search-clear:hover { background: rgba(255, 79, 170, 0.18); }

/* Hide search-filtered items without disturbing layout calculations. */
.tp-group.hidden-by-search,
.type-picker-card.hidden-by-search { display: none !important; }

/* Empty state when search has zero matches */
.type-picker-empty {
  text-align: center;
  padding: 40px 20px;
  color: var(--muted);
  font-family: var(--font-ar);
}
.type-picker-empty .tpe-icon {
  font-size: 2.4rem;
  margin-bottom: 10px;
  opacity: 0.7;
}
.type-picker-empty .tpe-text {
  margin: 0;
  font-size: 0.92rem;
}
.type-picker-empty .tpe-text span {
  color: var(--text);
  font-weight: 700;
}

/* ── Recently used types — pinned at top of picker ────────────── */
.tp-recent {
  padding: 14px 16px;
  background: linear-gradient(135deg, rgba(245, 158, 11, 0.06), rgba(245, 158, 11, 0.02));
  border: 1px solid rgba(245, 158, 11, 0.2);
  border-radius: 14px;
  animation: tpGroupIn 0.32s cubic-bezier(0.16, 1, 0.3, 1) backwards;
  animation-delay: calc(var(--tp-group-index, 0) * 70ms);
}
.tp-recent-title {
  display: flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-ar);
  font-weight: 800;
  font-size: 0.92rem;
  color: rgba(252, 211, 77, 0.95);
  margin-bottom: 12px;
}
.tp-recent-title span:first-child { font-size: 1rem; }
.tp-recent-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
  gap: 10px;
}

/* ── Collapsible group ───────────────────────────────────────── */
.tp-group {
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.015);
  overflow: hidden;
  /* Stagger group entry on picker open */
  animation: tpGroupIn 0.32s cubic-bezier(0.16, 1, 0.3, 1) backwards;
  animation-delay: calc(var(--tp-group-index, 0) * 70ms);
}
@keyframes tpGroupIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

.tp-group-header {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 16px;
  background: transparent;
  border: none;
  cursor: pointer;
  font-family: var(--font-ar);
  text-align: start;
  transition: background 0.15s ease;
}
.tp-group-header:hover { background: rgba(255, 255, 255, 0.03); }
.tp-group-title {
  flex: 1;
  font-size: 0.95rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: 0;
}
.tp-group-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  background: rgba(167, 139, 250, 0.14);
  border: 1px solid rgba(167, 139, 250, 0.3);
  border-radius: 999px;
  font-size: 0.72rem;
  font-weight: 700;
  color: #c4b5fd;
  font-family: var(--font-mono, monospace);
}
.tp-group-chevron {
  color: var(--muted);
  transition: transform 0.32s cubic-bezier(0.16, 1, 0.3, 1);
  flex-shrink: 0;
}
.tp-group.collapsed .tp-group-chevron { transform: rotate(-90deg); }

/* Body wraps the description + cards. Collapses with smooth max-height + opacity. */
.tp-group-body {
  max-height: 1200px;
  opacity: 1;
  overflow: hidden;
  transition: max-height 0.4s cubic-bezier(0.16, 1, 0.3, 1),
              opacity 0.25s ease,
              padding 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  padding: 0 16px 16px;
}
.tp-group.collapsed .tp-group-body {
  max-height: 0;
  opacity: 0;
  padding-top: 0;
  padding-bottom: 0;
}

/* Animated description above each section's cards */
.tp-group-desc {
  margin: 0 0 14px;
  padding: 10px 12px;
  font-family: var(--font-ar);
  font-size: 0.86rem;
  line-height: 1.55;
  color: rgba(232, 238, 247, 0.78);
  background: linear-gradient(135deg, rgba(167, 139, 250, 0.07), rgba(45, 212, 191, 0.04));
  border-inline-start: 3px solid rgba(167, 139, 250, 0.4);
  border-radius: 8px;
  animation: tpDescIn 0.45s cubic-bezier(0.16, 1, 0.3, 1) backwards;
  animation-delay: calc(var(--tp-group-index, 0) * 70ms + 120ms);
}
@keyframes tpDescIn {
  from { opacity: 0; transform: translateX(-6px); }
  to   { opacity: 1; transform: translateX(0); }
}
.tp-group.collapsed .tp-group-desc { animation: none; }

.tp-group-cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
  gap: 10px;
}

.type-picker-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 16px 8px;
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 14px;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
  min-height: 92px;
  font-family: var(--font-ar);
  position: relative;  /* anchor for .tpc-tooltip */
  /* Stagger card entry inside each group */
  animation: tpCardIn 0.35s cubic-bezier(0.16, 1, 0.3, 1) backwards;
  animation-delay: calc(var(--tp-group-index, 0) * 70ms + 200ms + var(--tp-card-index, 0) * 25ms);
}
@keyframes tpCardIn {
  from { opacity: 0; transform: translateY(6px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
.tp-group.collapsed .type-picker-card { animation: none; }

.type-picker-card:hover {
  background: rgba(167, 139, 250, 0.08);
  border-color: rgba(167, 139, 250, 0.4);
  transform: translateY(-1px);
}
.type-picker-card:active { transform: scale(0.96); }

/* Floating tooltip for type picker cards.
 * Appended to <body> by JS so it escapes .tp-group-body's overflow:hidden.
 * Positioned via inline styles (top/left) on each show. */
.tpc-floating-tip {
  position: fixed;
  top: 0;
  left: 0;
  background: rgba(15, 17, 26, 0.97);
  color: var(--text);
  padding: 10px 14px;
  border-radius: 10px;
  font-family: var(--font-ar);
  font-size: 0.82rem;
  font-weight: 400;
  line-height: 1.55;
  text-align: center;
  white-space: normal;
  max-width: 260px;
  border: 1px solid rgba(139, 92, 246, 0.45);
  box-shadow: 0 10px 30px rgba(0, 0, 0, 0.55);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  z-index: 10000;
  transition: opacity 0.15s ease, transform 0.15s ease, visibility 0s linear 0.15s;
  transform: translateY(-4px);
}
.tpc-floating-tip.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0s;
}
/* Arrow */
.tpc-floating-tip::after {
  content: '';
  position: absolute;
  left: var(--tpc-arrow-x, 50%);
  transform: translateX(-50%);
  width: 0;
  height: 0;
  border: 6px solid transparent;
}
/* When placed above the card, arrow points DOWN from the bottom of the tip */
.tpc-floating-tip[data-placement="top"]::after {
  top: 100%;
  border-top-color: rgba(15, 17, 26, 0.97);
}
/* When placed below the card, arrow points UP from the top of the tip */
.tpc-floating-tip[data-placement="bottom"]::after {
  bottom: 100%;
  border-bottom-color: rgba(15, 17, 26, 0.97);
}
.tpc-icon {
  font-size: 1.6rem;
  line-height: 1;
}
.tpc-label {
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--text);
  text-align: center;
  line-height: 1.15;
}

@media (prefers-reduced-motion: reduce) {
  .tp-group, .tp-group-desc, .type-picker-card { animation: none; }
  .tp-group-body, .tp-group-chevron { transition: none; }
}

/* Selected-type badge inside #modal — replaces the old collapsible selector */
.type-badge-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0 0 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.selected-type-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  background: linear-gradient(135deg, rgba(139, 92, 246, 0.14), rgba(139, 92, 246, 0.06));
  border: 1px solid rgba(139, 92, 246, 0.35);
  border-radius: 10px;
}
.stb-icon { font-size: 1.1rem; line-height: 1; }
.stb-name {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.95rem;
  color: var(--text);
}
.type-change-link {
  background: none;
  border: none;
  color: rgba(232, 238, 247, 0.6);
  font-family: var(--font-ar);
  font-size: 0.85rem;
  cursor: pointer;
  padding: 6px 10px;
  border-radius: 6px;
  transition: color 0.15s ease, background 0.15s ease;
}
.type-change-link:hover {
  color: #c4b5fd;
  background: rgba(167, 139, 250, 0.08);
}

@media (max-width: 600px) {
  .type-picker-box { max-height: 92vh; }
  .tp-group-header { padding: 12px 14px; }
  .tp-group-title { font-size: 0.9rem; }
  .tp-group-body { padding: 0 14px 14px; }
  .tp-group-desc { font-size: 0.82rem; padding: 9px 10px; margin-bottom: 10px; }
  .tp-group-cards { grid-template-columns: repeat(3, 1fr); gap: 8px; }
  .type-picker-card { padding: 14px 4px; min-height: 84px; }
  .tpc-icon { font-size: 1.4rem; }
  .tpc-label { font-size: 0.78rem; }
}

/* ════════════════════════════════════════════════════════════════
   ADD/EDIT CARD MODAL — redesigned (#modal only, not other modals)
   Wider, better hierarchy, polished sections, refined footer
   ════════════════════════════════════════════════════════════════ */

#modal .modal-box {
  max-width: 720px;
  width: 96vw;
  padding: 28px 32px 24px;
  gap: 18px;
  border-radius: 22px;
}

#modal .modal-header {
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
  padding-bottom: 16px;
  margin-bottom: 0;
}
#modal .modal-title {
  font-size: 1.45rem;
  font-weight: 800;
  letter-spacing: -0.01em;
}

/* Type badge row sits right under the header — give it breathing room */
#modal .type-badge-row {
  margin: 0 0 8px;
  padding-bottom: 18px;
}

/* Field group rhythm: clearer labels + consistent spacing */
#modal .field-group { gap: 10px; }
#modal .field-group > label {
  font-size: 0.82rem;
  font-weight: 700;
  color: rgba(232, 238, 247, 0.7);
  letter-spacing: 0.02em;
}
#modal .field-row { gap: 14px; }

/* Inputs feel a bit larger and more substantial */
#modal .modal-input {
  padding: 13px 16px;
  font-size: 1rem;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.08);
  transition: border-color 0.18s ease, background 0.18s ease, box-shadow 0.18s ease;
}
#modal .modal-input:focus {
  border-color: rgba(167, 139, 250, 0.6);
  background: rgba(167, 139, 250, 0.05);
  box-shadow: 0 0 0 3px rgba(167, 139, 250, 0.12);
}

/* Icon button — bigger, anchors the identity row */
#modal .icon-display-btn {
  width: 56px;
  height: 56px;
  font-size: 1.8rem;
  border-radius: 14px;
}

/* Identity row (icon + name) — align bottoms for clean baseline */
#modal .field-row:has(#card-title) {
  align-items: flex-end;
}
#modal .field-row:has(#card-title) .field-group.center-align {
  align-items: flex-start;
}

/* Sub-section helpers (e.g., habits list, checklist) get a soft container */
#modal .field-group:not(.hidden):has(.checklist-inputs-list),
#modal .field-group:not(.hidden):has(.routine-inputs-list),
#modal .field-group:not(.hidden):has(.linkgroup-inputs-list) {
  padding: 14px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 14px;
}

/* Add-item button (e.g., "+ إضافة عادة") — clearer + full-width feel */
#modal .btn-add-item {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 11px;
  background: rgba(79, 172, 254, 0.08);
  border: 1px dashed rgba(79, 172, 254, 0.4);
  border-radius: 12px;
  color: var(--accent2, #79f);
  font-family: var(--font-ar);
  font-size: 0.9rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
#modal .btn-add-item:hover {
  background: rgba(79, 172, 254, 0.16);
  border-color: rgba(79, 172, 254, 0.7);
  border-style: solid;
}

/* Footer actions — primary on the inline-end (right in RTL), secondary subtler */
#modal .modal-actions {
  display: flex;
  gap: 12px;
  justify-content: flex-end;
  align-items: center;
  margin-top: 20px;
  padding-top: 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
#modal .modal-actions .btn-cancel {
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.1);
  color: rgba(232, 238, 247, 0.75);
  padding: 11px 22px;
  border-radius: 12px;
  font-family: var(--font-ar);
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease;
}
#modal .modal-actions .btn-cancel:hover {
  background: rgba(255, 255, 255, 0.05);
  color: var(--text);
}
#modal .modal-actions .btn-save {
  padding: 12px 28px;
  border-radius: 12px;
  font-size: 0.98rem;
  min-width: 140px;
  box-shadow: 0 4px 16px rgba(139, 92, 246, 0.32);
}
#modal .modal-actions .btn-save:hover {
  box-shadow: 0 8px 24px rgba(139, 92, 246, 0.45);
  transform: translateY(-1px);
}

/* Mobile: stack vertically + full-width save */
@media (max-width: 600px) {
  #modal .modal-box { padding: 22px 18px 18px; gap: 14px; }
  #modal .modal-title { font-size: 1.25rem; }
  #modal .icon-display-btn { width: 48px; height: 48px; font-size: 1.5rem; }
  #modal .modal-actions { flex-direction: column-reverse; gap: 10px; }
  #modal .modal-actions .btn-cancel,
  #modal .modal-actions .btn-save { width: 100%; min-width: 0; }
}

/* ════════════════════════════════════════════════════════════════
   UNIFORM TAG CHIPS — every card shows tags in the same place
   (positioned absolutely near the bottom-start, above the floating
   .card-actions). Injected after renderCards via injectUniformTagChips()
   ════════════════════════════════════════════════════════════════ */
.card { position: relative; }
.card-uniform-tags {
  position: absolute;
  bottom: 10px;
  inset-inline-start: 14px;
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  z-index: 6;
  pointer-events: none;       /* parent: clicks on chips only */
  max-width: calc(100% - 130px);  /* leave room for action buttons (right) */
}
.card-uniform-tag,
.card-uniform-tag-more {
  pointer-events: auto;
  font-family: var(--font-ar);
  font-size: 0.68rem;
  font-weight: 600;
  padding: 3px 9px;
  border-radius: 999px;
  background: rgba(167, 139, 250, 0.12);
  border: 1px solid rgba(167, 139, 250, 0.28);
  color: #c4b5fd;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, transform 0.1s ease;
  white-space: nowrap;
}
.card-uniform-tag:hover {
  background: rgba(167, 139, 250, 0.22);
  border-color: rgba(167, 139, 250, 0.5);
  transform: translateY(-1px);
}
.card-uniform-tag-more {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.12);
  color: rgba(232, 238, 247, 0.65);
  cursor: default;
}

/* Reduce visual conflict: hide the legacy footer-tag chips since uniform row replaces them */
.card .card-footer-tag,
.card .card-footer-meta .card-footer-tag { display: none; }

/* Inline variant — injected INSIDE existing card footers (dash cards, reminder body).
   Sits between the action buttons (start side) and the timestamp (end side). */
.card-uniform-tags-inline {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  flex: 1 1 auto;
  min-width: 0;
  margin: 0 8px;
  justify-content: center;
}
.card-uniform-tags-inline .card-uniform-tag,
.card-uniform-tags-inline .card-uniform-tag-more {
  font-size: 0.66rem;
  padding: 2px 8px;
}
/* Inside common dash-card footers, place tags in the middle of the row */
.link-dash-foot,
.sub-dash-foot,
.doc-dash-foot,
.note-dash-foot,
.wifi-dash-foot,
.status-dash-foot,
.checklist-dash-foot,
.medicine-dash-foot,
.vehicle-dash-foot,
.page-dash-foot,
.trip-dash-foot {
  display: flex !important;
  align-items: center;
  flex-wrap: wrap;
}

/* On hover: card-actions appears at top right (override the bottom default) for consistency */
@media (hover: hover) and (pointer: fine) {
  .card .card-uniform-tags { transition: opacity 0.18s ease; }
  /* Slight fade when card is hovered so action buttons (which appear bottom on hover) don't crowd */
}

@media (max-width: 600px) {
  .card-uniform-tags {
    bottom: 8px;
    inset-inline-start: 10px;
    max-width: calc(100% - 100px);
  }
  .card-uniform-tag,
  .card-uniform-tag-more {
    font-size: 0.62rem;
    padding: 2px 7px;
  }
}

/* ════════════════════════════════════════════════════════════════
   MOBILE TOUCH TARGETS (≥ 44px WCAG) + small-screen polish
   ════════════════════════════════════════════════════════════════ */

/* Close buttons — bumped to safe touch size */
.close-btn {
  min-width: 40px;
  min-height: 40px;
  padding: 9px;
}

/* Accent color swatches — bumped from 28px → 36px desktop, 44px mobile */
.accent-swatch {
  width: 36px;
  height: 36px;
}
@media (max-width: 768px) {
  .accent-swatch {
    width: 44px;
    height: 44px;
  }
  /* Header icon buttons get padding on mobile to expand hit area */
  .header-icon-btn {
    min-width: 40px;
    min-height: 40px;
  }
  /* Card actions: ensure touch-friendly spacing on phones */
  .card-delete,
  .card-edit,
  .card-reset,
  .card-copy {
    min-width: 40px;
    min-height: 40px;
    padding: 8px 12px;
  }
  /* Close button on phones: full WCAG */
  .close-btn { min-width: 44px; min-height: 44px; padding: 12px; }
}

/* ════════════════════════════════════════════════════════════════
   STOCKS CARD — redesigned per DESIGN_RULES.md
   - Semantic colors: up=green, down=red (toned), flat=muted
   - Mono numbers · logical properties · respects prefers-reduced-motion
   - Hero summary, clean rows with accent stripe, footer with refresh
   ════════════════════════════════════════════════════════════════ */

/* Semantic color tokens scoped to stocks card */
.stk-card-body {
  --stk-up:    #22c55e;
  --stk-down:  #ef4444;
  --stk-flat:  rgba(232, 238, 247, 0.55);
  --stk-up-bg:    rgba(34, 197, 94, 0.10);
  --stk-down-bg:  rgba(239, 68, 68, 0.08);
  --stk-flat-bg:  rgba(255, 255, 255, 0.04);
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 4px 2px 0;
  font-family: var(--font-ar);
}

/* ── Hero summary ── */
.stk-hero {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid rgba(255, 255, 255, 0.06);
  background: linear-gradient(135deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0.01));
  transition: border-color 0.2s ease, background 0.2s ease;
}
.stk-hero-up   { border-color: rgba(34, 197, 94, 0.22); background: linear-gradient(135deg, rgba(34, 197, 94, 0.08), rgba(34, 197, 94, 0.02)); }
.stk-hero-down { border-color: rgba(239, 68, 68, 0.22); background: linear-gradient(135deg, rgba(239, 68, 68, 0.06), rgba(239, 68, 68, 0.015)); }
.stk-hero-meta {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.stk-hero-label {
  font-size: 0.78rem;
  color: var(--muted);
  font-weight: 600;
}
.stk-hero-count {
  font-size: 0.7rem;
  color: rgba(232, 238, 247, 0.45);
  font-family: var(--font-mono, monospace);
}
.stk-hero-val {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  font-family: var(--font-mono, monospace);
  font-size: 1.35rem;
  font-weight: 800;
  letter-spacing: -0.01em;
  direction: ltr;
}

/* ── Per-stock rows ── */
.stk-list {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.stk-row {
  display: grid;
  grid-template-columns: 4px 1fr auto auto;
  align-items: center;
  gap: 12px;
  padding: 11px 14px 11px 10px;
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid rgba(255, 255, 255, 0.05);
  border-radius: 10px;
  transition: background 0.15s ease, border-color 0.15s ease;
  position: relative;
  overflow: hidden;
}
.stk-row:hover {
  background: rgba(255, 255, 255, 0.045);
  border-color: rgba(255, 255, 255, 0.1);
}
.stk-row-accent {
  width: 4px;
  height: 100%;
  border-radius: 2px;
  background: var(--stk-flat);
  align-self: stretch;
}
.stk-row-up   .stk-row-accent { background: var(--stk-up); }
.stk-row-down .stk-row-accent { background: var(--stk-down); }
.stk-row-flat .stk-row-accent { background: var(--stk-flat); }

.stk-row-sym {
  font-family: var(--font-mono, monospace);
  font-size: 0.92rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: 0.02em;
}
.stk-row-price {
  font-family: var(--font-mono, monospace);
  font-size: 0.95rem;
  font-weight: 700;
  color: rgba(232, 238, 247, 0.85);
  direction: ltr;
  font-variant-numeric: tabular-nums;
}
.stk-row-chg {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 0.78rem;
  font-weight: 700;
  padding: 4px 9px;
  border-radius: 7px;
  direction: ltr;
}
.stk-chg-up   { color: var(--stk-up);   background: var(--stk-up-bg); }
.stk-chg-down { color: var(--stk-down); background: var(--stk-down-bg); }
.stk-chg-flat { color: var(--stk-flat); background: var(--stk-flat-bg); }
.stk-chg-arrow { font-size: 0.7rem; opacity: 0.85; }

/* Error / loading row */
.stk-row-error {
  grid-template-columns: 4px 1fr auto;
  background: rgba(239, 68, 68, 0.04);
  border-color: rgba(239, 68, 68, 0.15);
}
.stk-row-error .stk-row-accent { background: rgba(239, 68, 68, 0.5); }
.stk-row-status {
  font-size: 1rem;
  color: var(--muted);
  opacity: 0.7;
}

.stk-row-more {
  text-align: center;
  font-size: 0.78rem;
  color: var(--muted);
  padding: 8px;
  font-family: var(--font-ar);
}

/* ── Empty state (per DESIGN_RULES.md) ── */
.stk-empty {
  padding: 28px 16px;
  text-align: center;
}

/* ── Footer: time-ago + refresh button ── */
.stk-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 4px 2px;
  border-top: 1px dashed rgba(255, 255, 255, 0.06);
}
.stk-foot-time {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--font-ar);
  font-size: 0.76rem;
  color: var(--muted);
}
.stk-foot-time svg { opacity: 0.6; }

.stk-refresh-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: rgba(167, 139, 250, 0.08);
  border: 1px solid rgba(167, 139, 250, 0.22);
  border-radius: 8px;
  color: rgba(232, 238, 247, 0.78);
  font-family: var(--font-ar);
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.stk-refresh-btn:hover {
  background: rgba(167, 139, 250, 0.16);
  border-color: rgba(167, 139, 250, 0.42);
  color: var(--text);
}
.stk-refresh-btn svg { transition: transform 0.4s ease; }
.stk-refresh-btn:hover svg { transform: rotate(-180deg); }
.stk-refresh-btn.is-fetching svg {
  animation: stk-spin 0.9s linear infinite;
}
@keyframes stk-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(-360deg); }
}
@media (prefers-reduced-motion: reduce) {
  .stk-refresh-btn svg, .stk-refresh-btn:hover svg { transition: none; transform: none; }
  .stk-refresh-btn.is-fetching svg { animation: none; }
  .stk-row, .stk-hero { transition: none; }
}

/* Mobile tweaks */
@media (max-width: 600px) {
  .stk-hero { padding: 12px 14px; }
  .stk-hero-val { font-size: 1.2rem; }
  .stk-row { padding: 10px 12px 10px 8px; gap: 10px; grid-template-columns: 3px 1fr auto auto; }
  .stk-row-sym { font-size: 0.85rem; }
  .stk-row-price { font-size: 0.88rem; }
  .stk-refresh-btn span { display: none; }
  .stk-refresh-btn { padding: 7px 10px; }
}


/* ════════════════════════════════════════════════════════════════════════════════
   MOBILE — MINIMAL SAFE BASE (rebuilt from scratch, no overrides that broke things)
   ════════════════════════════════════════════════════════════════════════════════ */

/* Mobile top bar: hidden on desktop */
.mob-top-bar { display: none; }

@media (max-width: 768px) {
  /* Tokens (used by mobile cards) */
  :root {
    --mb-bg-1: #07070b;
    --mb-bg-2: #0d0d14;
    --mb-surface: rgba(255, 255, 255, 0.045);
    --mb-surface-2: rgba(255, 255, 255, 0.08);
    --mb-surface-3: rgba(255, 255, 255, 0.12);
    --mb-border: rgba(255, 255, 255, 0.07);
    --mb-border-2: rgba(255, 255, 255, 0.12);
    --mb-text-1: #ffffff;
    --mb-text-2: rgba(255, 255, 255, 0.74);
    --mb-text-3: rgba(255, 255, 255, 0.46);
    --mb-text-4: rgba(255, 255, 255, 0.28);
    --mb-accent: 99, 102, 241;
    --mb-success: 34, 197, 94;
    --mb-warning: 245, 158, 11;
    --mb-danger: 239, 68, 68;
    --mb-info: 59, 130, 246;
    --mb-violet: 168, 85, 247;
    --mb-pink: 236, 72, 153;
    --mb-teal: 20, 184, 166;
    --mb-orange: 249, 115, 22;
    --mb-cyan: 6, 182, 212;
    --mb-amber: 251, 191, 36;
    --mb-r-card: 18px;
    --mb-r-btn: 12px;
    --mb-r-pill: 99px;
    --mb-r-sheet: 24px;
    --mb-pad-card: 16px;
    --mb-ease: cubic-bezier(0.16, 1, 0.3, 1);
    --mb-ease-out: cubic-bezier(0.4, 0, 0.2, 1);
  }

  /* Hide desktop chrome */
  .dash-header { display: none !important; }
  .content-header,
  .tags-bar,
  .page-mode-selector,
  #page-mode-selector,
  #page-mode-divider { display: none !important; }
  .sidebar { display: none !important; }
  .app-shell, .layout-wrap { margin-right: 0 !important; padding-right: 0 !important; }

  /* Show mobile top bar */
  .mob-top-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-direction: row;
    width: 100%;
    box-sizing: border-box;
    padding: calc(env(safe-area-inset-top, 0px) + 10px) 14px 10px;
    min-height: 56px;
    background: linear-gradient(180deg, rgba(12,10,22,0.97) 0%, rgba(8,8,14,0.94) 100%);
    border-bottom: 1px solid rgba(139,92,246,0.12);
    box-shadow: 0 1px 0 rgba(139,92,246,0.08), 0 4px 16px rgba(0,0,0,0.3);
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
    position: sticky;
    top: 0;
    z-index: 60;
  }
  .mob-top-bar .mob-top-logo {
    display: flex;
    align-items: center;
    background: none;
    border: none;
    padding: 4px 6px;
    cursor: pointer;
  }
  .mob-top-bar .mob-top-logo img { width: 30px; height: 30px; object-fit: contain; }
  .mob-top-bar .mob-top-actions {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
  }
  .mob-top-bar .mob-top-btn {
    width: 40px;
    height: 40px;
    border: 1px solid var(--mb-border);
    background: var(--mb-surface);
    color: var(--mb-text-2);
    border-radius: var(--mb-r-btn);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
  }
  .mob-top-bar .mob-top-btn svg { width: 19px; height: 19px; }

  /* Main content */
  .main-content {
    padding: 12px 14px calc(96px + env(safe-area-inset-bottom, 0px)) !important;
    margin: 0 !important;
    width: 100%;
    box-sizing: border-box;
  }

  /* Grid: single column */
  .dash-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
    padding: 0 !important;
  }

  /* Bottom dock */
  .mobile-bottom-nav {
    display: flex !important;
    align-items: center;
    justify-content: space-around;
    flex-direction: row;
    position: fixed !important;
    bottom: 0; left: 0; right: 0;
    padding: 6px 8px calc(env(safe-area-inset-bottom, 0px) + 6px);
    background: linear-gradient(0deg, rgba(5,4,14,0.98) 0%, rgba(9,8,18,0.95) 100%);
    border-top: 1px solid rgba(139,92,246,0.14);
    box-shadow: 0 -4px 24px rgba(0,0,0,0.55), 0 -1px 0 rgba(255,255,255,0.03);
    backdrop-filter: blur(24px);
    -webkit-backdrop-filter: blur(24px);
    z-index: 50;
  }
  .mob-nav-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    padding: 8px 4px;
    border: none;
    background: transparent;
    color: rgba(148,163,184,0.55);
    cursor: pointer;
    min-height: 52px;
    transition: color 0.15s;
  }
  .mob-nav-btn svg { width: 22px; height: 22px; }
  .mob-nav-btn span { font-size: 10.5px; font-weight: 700; letter-spacing: 0.01em; }
  .mob-nav-btn.active {
    color: #a78bfa;
  }
  .mob-nav-btn.active span {
    background: linear-gradient(135deg, #e2d9f3, #a78bfa);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  .mob-nav-btn.mob-nav-add {
    flex: 0 0 auto;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 100%);
    color: #fff;
    margin: -12px 4px 0;
    box-shadow: 0 6px 22px rgba(139,92,246,0.55), 0 2px 0 rgba(255,255,255,0.15) inset;
    transition: transform 0.12s ease, box-shadow 0.12s;
  }
  .mob-nav-btn.mob-nav-add:active { transform: scale(0.92); box-shadow: 0 3px 12px rgba(139,92,246,0.4); }
  .mob-nav-btn.mob-nav-add svg { width: 28px; height: 28px; }
  .mob-nav-btn.mob-nav-add span { display: none; }

  /* Mobile card base */
  .card.mob-card {
    grid-column: auto !important;
    grid-row: auto !important;
    min-height: 96px !important;
  }
  .mob-card {
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid var(--mb-border);
    border-radius: var(--mb-r-card);
    padding: 0;
    overflow: hidden;
    cursor: pointer;
  }
  .mob-card .card-glow,
  .mob-card .glow,
  .mob-card .glow-anim { display: none !important; }
  .mob-card .card-actions,
  .mob-card .mob-card-actions { display: none !important; }

  .mob-card-inner {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 14px;
    height: 100%;
    box-sizing: border-box;
  }
  .mob-card-header {
    display: flex;
    align-items: center;
    gap: 10px;
  }
  .mob-card-icon {
    font-size: 22px;
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255, 255, 255, 0.05);
    border-radius: 10px;
    flex-shrink: 0;
  }
  .mob-card-title {
    flex: 1;
    font-size: 15.5px;
    font-weight: 700;
    color: var(--mb-text-1);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-card-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
    margin-top: auto;
    padding-top: 7px;
    margin-top: 8px;
    border-top: 1px solid rgba(255,255,255,0.04);
    font-size: 11px;
    color: var(--mb-text-3);
  }
  .mob-card-time {
    font-size: 11px;
    color: var(--mb-text-3);
  }

  /* Hero number pattern */
  .mob-hero {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 6px;
    margin: 4px 0;
  }
  .mob-hero-num {
    font-size: 36px;
    font-weight: 800;
    color: var(--mb-text-1);
    letter-spacing: -0.02em;
    font-variant-numeric: tabular-nums;
  }
  .mob-hero-unit {
    font-size: 14px;
    color: var(--mb-text-3);
  }
  .mob-hero-accent { color: rgb(var(--mb-accent)); }

  /* Pills */
  .mob-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 9px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 600;
    background: rgb(var(--mb-info) / 0.14);
    color: rgb(var(--mb-info));
    flex-shrink: 0;
  }
  .mob-pill-success { background: rgb(var(--mb-success) / 0.15); color: rgb(var(--mb-success)); }
  .mob-pill-warning { background: rgb(var(--mb-warning) / 0.15); color: rgb(var(--mb-warning)); }
  .mob-pill-danger  { background: rgb(var(--mb-danger) / 0.15); color: rgb(var(--mb-danger)); }
  .mob-pill-muted   { background: rgb(255 255 255 / 0.06); color: var(--mb-text-3); }
  .mob-pill-wa      { background: rgb(37 211 102 / 0.14); color: #25d366; }

  /* Stat strip */
  .mob-stat-strip {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    padding-top: 4px;
  }
  .mob-stat { display: flex; flex-direction: column; gap: 2px; }
  .mob-stat-k { font-size: 10.5px; color: var(--mb-text-4); text-transform: uppercase; letter-spacing: 0.04em; font-weight: 600; }
  .mob-stat-v { font-size: 14px; font-weight: 600; color: var(--mb-text-2); font-variant-numeric: tabular-nums; }
  .mob-stat-v-pos { color: #22c55e; }
  .mob-stat-v-neg { color: var(--danger); }
  .mob-stat-v-warn { color: rgb(var(--mb-warning)); }

  /* Progress bar */
  .mob-progress-row { display: flex; align-items: center; gap: 10px; }
  .mob-progress-bar {
    flex: 1;
    height: 6px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.06);
    overflow: hidden;
  }
  .mob-progress-fill {
    height: 100%;
    background: rgb(var(--mb-accent));
    transition: width 0.4s ease;
  }
  .mob-progress-bar.mob-bar-warn  .mob-progress-fill { background: rgb(var(--mb-warning)); }
  .mob-progress-bar.mob-bar-over  .mob-progress-fill { background: rgb(var(--mb-danger)); }
  .mob-progress-bar.mob-bar-done  .mob-progress-fill { background: #22c55e; }
  .mob-progress-bar.mob-bar-quran .mob-progress-fill { background: linear-gradient(90deg, #10b981, #22d3ee); }
  .mob-progress-bar.mob-bar-pomo  .mob-progress-fill { background: linear-gradient(90deg, #ef4444, #f97316); }
  .mob-progress-label { font-size: 12px; font-weight: 700; color: var(--mb-text-2); }

  /* Note card preview */
  .mob-note-body { display: flex; flex-direction: column; gap: 3px; }
  .mob-note-line { font-size: 13.5px; color: var(--mb-text-2); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .mob-note-more { font-size: 11.5px; color: var(--mb-text-3); }
  .mob-note-empty { font-size: 13px; color: var(--mb-text-4); font-style: italic; }
  .mob-note-dim   { opacity: .68; }
  .mob-note-faded { opacity: .82; }
  .mob-note-muted { opacity: .72; }

  /* Quicktext/Markdown text preview */
  .mob-quicktext-preview {
    font-size: 0.82rem;
    color: rgba(232, 238, 247, 0.7);
    line-height: 1.5;
    font-family: var(--font-ar);
    white-space: pre-wrap;
    word-break: break-word;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 4;
    -webkit-box-orient: vertical;
  }

  /* Fields card strip — slightly denser column layout */
  .mob-fields-strip {
    flex-direction: column;
    gap: 6px;
  }
  .mob-fields-strip .mob-stat {
    flex-direction: row;
    align-items: center;
    gap: 8px;
    justify-content: space-between;
    padding: 3px 0;
    border-bottom: 1px solid rgba(255,255,255,0.05);
  }
  .mob-fields-strip .mob-stat:last-child { border-bottom: none; }
  .mob-fields-strip .mob-stat-k { min-width: 60px; }
  .mob-fields-strip .mob-stat-v { text-align: start; font-size: 0.82rem; }

  /* Link card */
  .mob-link-row { display: flex; align-items: center; gap: 12px; }
  .mob-link-fav, .mob-link-fav-fallback {
    width: 38px; height: 38px;
    border-radius: 11px;
    flex-shrink: 0;
    object-fit: contain;
    background: var(--mb-surface-2);
    padding: 4px;
    box-sizing: border-box;
  }
  .mob-link-fav-fallback { display: inline-flex; align-items: center; justify-content: center; padding: 0; font-size: 18px; }
  .mob-link-text { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
  .mob-link-title { font-size: 14.5px; font-weight: 700; color: var(--mb-text-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .mob-link-domain { font-size: 12px; color: var(--mb-text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .mob-link-path { opacity: .55; }

  /* Action sheet (used for card tap on mobile) */
  .mob-sheet-overlay {
    position: fixed;
    inset: 0;
    z-index: 2000;
    background: rgba(0, 0, 0, 0.5);
    display: flex;
    align-items: flex-end;
  }
  .mob-sheet {
    width: 100%;
    background: var(--mb-bg-2);
    border-radius: var(--mb-r-sheet) var(--mb-r-sheet) 0 0;
    padding: 0 0 max(20px, env(safe-area-inset-bottom, 16px));
    transform: translateY(100%);
    transition: transform 0.32s var(--mb-ease);
    max-height: 92vh;
    overflow-y: auto;
  }
  .mob-sheet.mob-sheet-in { transform: translateY(0); }
  .mob-sheet.mob-sheet-out { transform: translateY(100%); }
  .mob-sheet-handle {
    width: 38px; height: 4px;
    background: var(--mb-border-2);
    border-radius: 999px;
    margin: 10px auto 4px;
  }
  .mob-sheet-hdr {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 12px 18px 10px;
  }
  .mob-sheet-icon {
    font-size: 28px;
    width: 48px; height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(var(--mb-accent), 0.12);
    border-radius: 12px;
  }
  .mob-sheet-meta { flex: 1; min-width: 0; }
  .mob-sheet-title { font-size: 16px; font-weight: 800; color: var(--mb-text-1); }
  .mob-sheet-type { font-size: 11px; color: var(--mb-text-3); margin-top: 2px; }
  .mob-sheet-actions {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px 16px;
  }
  .msb-primary {
    width: 100%;
    padding: 14px;
    border-radius: var(--mb-r-btn);
    border: none;
    background: rgb(var(--mb-accent));
    color: #fff;
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
  }
  .msb-secondary {
    width: 100%;
    padding: 12px;
    border-radius: var(--mb-r-btn);
    border: 1px solid var(--mb-border);
    background: var(--mb-surface);
    color: var(--mb-text-1);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
  }
  .mob-sheet-footer {
    display: flex;
    gap: 10px;
    padding: 10px 16px 0;
    border-top: 1px solid var(--mb-border);
  }
  .msb-edit {
    flex: 2;
    padding: 13px 10px;
    border-radius: var(--mb-r-btn);
    border: 1px solid var(--mb-border);
    background: var(--mb-surface);
    color: var(--mb-text-1);
    font-size: 14px;
    font-weight: 700;
  }
  .msb-archive {
    flex: 1;
    padding: 13px 10px;
    border-radius: var(--mb-r-btn);
    border: 1px solid rgba(245,158,11, 0.22);
    background: rgba(245,158,11, 0.08);
    color: #fbbf24;
    font-size: 14px;
    font-weight: 700;
  }
  .msb-delete {
    flex: 1;
    padding: 13px 10px;
    border-radius: var(--mb-r-btn);
    border: 1px solid rgba(var(--mb-danger), 0.22);
    background: rgba(var(--mb-danger), 0.08);
    color: rgb(var(--mb-danger));
    font-size: 14px;
    font-weight: 700;
  }

  /* Mobile search overlay */
  .mob-search-overlay {
    position: fixed;
    inset: 0;
    z-index: 2100;
    background: var(--mb-bg-1);
    display: flex;
    flex-direction: column;
  }
  .mob-search-bar {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: calc(env(safe-area-inset-top, 0px) + 12px) 14px 14px;
    border-bottom: 1px solid var(--mb-border);
  }
  .mob-search-back {
    width: 40px; height: 40px;
    border: 1px solid var(--mb-border);
    background: var(--mb-surface);
    color: var(--mb-text-1);
    border-radius: var(--mb-r-btn);
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .mob-search-input {
    flex: 1;
    height: 44px;
    border: 1px solid var(--mb-border);
    background: var(--mb-surface);
    border-radius: var(--mb-r-btn);
    padding: 0 14px;
    color: var(--mb-text-1);
    font-size: 15px;
    direction: rtl;
    outline: none;
  }
  .mob-search-clear {
    width: 32px; height: 32px;
    border: none;
    background: var(--mb-surface-2);
    color: var(--mb-text-2);
    border-radius: 50%;
    display: none;
  }
  .mob-search-results { flex: 1; overflow-y: auto; padding: 12px 14px; }
  .mob-search-hint, .mob-search-empty {
    text-align: center;
    color: var(--mb-text-3);
    font-size: 14px;
    padding: 40px 20px;
  }
  .mob-sr-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px;
    background: var(--mb-surface);
    border: 1px solid var(--mb-border);
    border-radius: 14px;
    margin-bottom: 8px;
    cursor: pointer;
  }
  .mob-sr-icon {
    font-size: 22px;
    width: 38px; height: 38px;
    background: var(--mb-surface-2);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .mob-sr-text { flex: 1; min-width: 0; }
  .mob-sr-title { font-size: 14px; font-weight: 700; color: var(--mb-text-1); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .mob-sr-sub { font-size: 12px; color: var(--mb-text-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px; }
  .mob-sr-type { font-size: 10px; padding: 3px 8px; border-radius: 999px; border: 1px solid transparent; flex-shrink: 0; align-self: center; white-space: nowrap; }

  /* Edit modal as bottom sheet on mobile */
  .modal-overlay { align-items: flex-end !important; padding: 0 !important; }
  .modal-box {
    width: 100% !important;
    max-width: 100% !important;
    border-radius: var(--mb-r-sheet) var(--mb-r-sheet) 0 0 !important;
    max-height: 92vh !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════════
   SIDEBAR — DESKTOP DEFENSIVE FIX
   Ensures sidebar always renders correctly: 210px expanded with labels, or 68px collapsed.
   ════════════════════════════════════════════════════════════════════════════════ */
@media (min-width: 769px) {
  /* Sidebar collapsed: icon-only, NO labels */
  .sidebar:not(.expanded) {
    width: 68px !important;
  }
  .sidebar:not(.expanded) .sidebar-label {
    display: none !important;
  }

  /* Sidebar expanded: 210px, labels visible */
  .sidebar.expanded {
    width: 210px !important;
  }
  .sidebar.expanded .sidebar-label {
    display: block !important;
  }
  .sidebar.expanded .sidebar-nav-btn,
  .sidebar.expanded .sidebar-icon-btn {
    width: calc(100% - 16px) !important;
    justify-content: flex-start !important;
    padding: 0 10px !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════════
   CRITICAL FIX: login-screen click-blocker
   When the dashboard is visible (user logged in) but login-screen still in DOM
   without .hidden class for any reason, FORCE-hide it so it doesn't block clicks.
   ════════════════════════════════════════════════════════════════════════════════ */

/* If dashboard is visible (no .hidden), force login-screen out of the way */
body:has(#dashboard:not(.hidden)) #login-screen {
  display: none !important;
  pointer-events: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
}

/* Fallback for browsers without :has() — login-screen with opacity:0 from
   fadeOut animation should NEVER block clicks */
#login-screen[style*="opacity: 0"],
#login-screen[style*="animation: fadeOut"] {
  pointer-events: none !important;
}

/* ════════════════════════════════════════════════════════════════════════════════
   CARD ACTION BUTTONS — Unified style (consistent with rest of site)
   ════════════════════════════════════════════════════════════════════════════════ */

/* Unified circle-pill buttons for card actions */
.card-actions .card-edit,
.card-actions .card-delete,
.card-actions .card-more-btn,
.card-actions .card-move-btn,
.card-actions .card-reset,
.card-actions .card-copy {
  width: 34px;
  height: 34px;
  min-width: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border-radius: 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.65);
  font-size: 0.85rem;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
}

.card-actions .card-more-btn:hover,
.card-actions .card-move-btn:hover,
.card-actions .card-reset:hover,
.card-actions .card-copy:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(255, 255, 255, 0.12);
  color: rgba(255, 255, 255, 0.95);
}

/* Edit button → orange on hover (high specificity beats desktop/mobile overrides) */
.dash-grid .card .card-actions .card-edit:hover,
#page-grid .card .card-actions .card-edit:hover,
.card-actions .card-edit:hover {
  background: rgba(255, 159, 10, 0.22) !important;
  border-color: rgba(255, 159, 10, 0.50) !important;
  color: #FF9F0A !important;
}

/* Delete button → red on hover (high specificity beats desktop/mobile overrides) */
.dash-grid .card .card-actions .card-delete:hover,
#page-grid .card .card-actions .card-delete:hover,
.card-actions .card-delete:hover {
  background: rgba(255, 69, 58, 0.22) !important;
  border-color: rgba(255, 69, 58, 0.50) !important;
  color: #FF453A !important;
}

.card-actions .card-edit:active,
.card-actions .card-delete:active,
.card-actions .card-more-btn:active,
.card-actions .card-move-btn:active,
.card-actions .card-reset:active,
.card-actions .card-copy:active {
  transform: scale(0.94);
}

/* Reset letter-spacing on more button (inherited from old rule) */
.card-actions .card-more-btn { letter-spacing: 0; }

/* Reminder cards: keep action buttons pinned to the same corner as the
   rest of the card system, even under older/mobile overrides. */
.dash-grid .card[data-type="reminder"]:not(.nc-dash-card) .card-actions,
#page-grid .card[data-type="reminder"]:not(.nc-dash-card) .card-actions {
  top: 10px !important;
  left: 10px !important;
  right: auto !important;
  padding: 0 !important;
  justify-content: flex-start !important;
  transform-origin: top left !important;
}

/* ════════════════════════════════════════════════════════════════════════════════
   MEDICINE ROW — Better visibility for empty/sparse entries
   ════════════════════════════════════════════════════════════════════════════════ */

/* Make the row container clearer */
.med-row {
  background: rgba(255, 255, 255, 0.04) !important;
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
}

.med-row:hover {
  background: rgba(255, 255, 255, 0.07) !important;
  border-color: rgba(255, 255, 255, 0.14) !important;
}

/* Add empty-state placeholder when name is blank */
.med-row .med-row-name:empty::before {
  content: 'بدون اسم';
  color: rgba(255, 255, 255, 0.3);
  font-style: italic;
}

/* Make dose text more visible */
.med-row-dose {
  color: rgba(255, 255, 255, 0.55) !important;
}

/* Index badge contrast */
.med-row-index {
  background: rgba(255, 255, 255, 0.08) !important;
  border-color: rgba(255, 255, 255, 0.12) !important;
  color: rgba(255, 255, 255, 0.75) !important;
}

/* ════════════════════════════════════════════════════════════════════════════════
   NEW CARD TYPES — birthday, password, book, watchlist
   ════════════════════════════════════════════════════════════════════════════════ */

/* ── Birthday card ─────────────────────────────────────────── */
.birthday-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 6px 0 2px;
}
.birthday-hero {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  justify-content: flex-end;
  gap: 8px;
  padding: 0 8px 8px;
  background: transparent;
  border: none;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 0;
  margin-bottom: 0;
}
.birthday-hero-urgent {
  border-bottom-color: rgba(245, 158, 11, 0.26);
}
.birthday-hero-today {
  border-bottom-color: rgba(251, 191, 36, 0.34);
}
@keyframes birthdayPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(236, 72, 153, 0.3); }
  50%      { box-shadow: 0 0 0 6px rgba(236, 72, 153, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .birthday-cake-icon, .birthday-badge { animation: none; }
}
.birthday-num {
  font-size: 1.32rem;
  font-weight: 800;
  color: var(--text);
  letter-spacing: 0;
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.birthday-num-emoji {
  font-size: 1.15rem;
  line-height: 1;
  filter: none;
  opacity: 0.88;
}
.birthday-num-label {
  font-size: 0.76rem;
  color: var(--muted);
  font-weight: 600;
}
.birthday-special-note {
  margin: 0 8px 4px;
  padding: 5px 10px;
  border-radius: 999px;
  background: rgba(251, 191, 36, 0.08);
  border: 1px solid rgba(251, 191, 36, 0.16);
  color: #f7d77a;
  font-size: 0.72rem;
  font-weight: 700;
  text-align: center;
  align-self: flex-start;
}
.birthday-meta-row {
  display: flex;
  justify-content: space-between;
  font-size: 0.74rem;
  padding: 3px 8px;
  border-bottom: 1px dashed rgba(255, 255, 255, 0.06);
}
.birthday-meta-row:last-of-type { border-bottom: none; }
.birthday-meta-label { color: var(--muted); }
.birthday-meta-val   { color: var(--text); font-weight: 600; }
.birthday-note {
  font-size: 0.72rem;
  color: var(--muted);
  font-style: italic;
  padding: 2px 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ── Password card ─────────────────────────────────────────── */
.password-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 6px 0;
}
.password-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 7px 10px;
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 9px;
}
.password-row-label {
  font-size: 0.66rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  flex-shrink: 0;
  min-width: 48px;
}
.password-row-val {
  flex: 1;
  font-size: 0.84rem;
  color: var(--text);
  font-weight: 600;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: var(--font-mono, monospace);
}
.password-row-masked {
  letter-spacing: 2px;
}
.password-eye-btn,
.password-copy-btn {
  border: none;
  background: rgba(255, 255, 255, 0.06);
  color: rgba(255, 255, 255, 0.7);
  border-radius: 6px;
  padding: 4px 8px;
  font-size: 0.8rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: background 0.15s, color 0.15s;
}
.password-eye-btn:hover,
.password-copy-btn:hover {
  background: rgba(255, 255, 255, 0.12);
  color: var(--text);
}
.password-url-link {
  display: block;
  font-size: 0.74rem;
  color: rgba(99, 102, 241, 0.85);
  text-decoration: none;
  padding: 4px 10px;
  margin-top: 2px;
  border-radius: 6px;
  background: rgba(99, 102, 241, 0.06);
  text-overflow: ellipsis;
  overflow: hidden;
  white-space: nowrap;
}
.password-url-link:hover {
  background: rgba(99, 102, 241, 0.14);
  color: #a5b4fc;
}

/* ── Book card ─────────────────────────────────────────────── */
.book-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 0;
}
.book-author {
  font-size: 0.82rem;
  color: var(--muted);
  font-style: italic;
}
.book-progress-meta {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 0.82rem;
}
.book-pages-num { color: var(--text); }
.book-pages-num strong { font-size: 1.05rem; color: #fbbf24; }
.book-pct {
  font-size: 0.92rem;
  font-weight: 700;
  color: #fbbf24;
  font-variant-numeric: tabular-nums;
}
.book-progress-bar {
  height: 8px;
  background: rgba(255, 255, 255, 0.06);
  border-radius: 4px;
  overflow: hidden;
}
.book-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, #fbbf24, #f59e0b);
  border-radius: 4px;
  transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 0 8px rgba(251, 191, 36, 0.4);
}
.book-remaining-text {
  font-size: 0.74rem;
  color: var(--muted);
}
.book-done-text {
  font-size: 0.84rem;
  color: #22c55e;
  font-weight: 700;
}
.book-note {
  font-size: 0.76rem;
  color: var(--muted);
  font-style: italic;
  padding: 4px 8px;
  border-inline-start: 2px solid rgba(251, 191, 36, 0.3);
  margin-top: 4px;
}

/* ── Watchlist card ────────────────────────────────────────── */
.watchlist-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 4px 0;
}
.watchlist-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
}
.watchlist-mediatype {
  font-size: 0.82rem;
  color: var(--text);
  font-weight: 600;
}
.watchlist-status {
  font-size: 0.7rem;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 999px;
  white-space: nowrap;
}
.wl-status-towatch  { background: rgba(99, 102, 241, 0.15); color: #a5b4fc; border: 1px solid rgba(99, 102, 241, 0.3); }
.wl-status-watching { background: rgba(251, 191, 36, 0.15); color: #fde68a; border: 1px solid rgba(251, 191, 36, 0.3); }
.wl-status-watched  { background: rgba(34, 197, 94, 0.15);  color: #86efac; border: 1px solid rgba(34, 197, 94, 0.3); }
.watchlist-rating {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 0.78rem;
  padding: 6px 10px;
  background: rgba(255, 255, 255, 0.04);
  border-radius: 8px;
}
.watchlist-rating-label { color: var(--muted); }
.watchlist-rating-val   { color: #fbbf24; font-weight: 700; }
.watchlist-note {
  font-size: 0.76rem;
  color: var(--muted);
  font-style: italic;
  padding: 4px 8px;
  border-inline-start: 2px solid rgba(168, 85, 247, 0.3);
}

/* ════════════════════════════════════════════════════════════════════════════════
   BIRTHDAY CARD — Festive decorations (cake, balloons, confetti)
   ════════════════════════════════════════════════════════════════════════════════ */

/* Make the body relative so decorations can be absolutely positioned inside */
.birthday-card-body {
  position: relative;
  overflow: hidden;
  min-height: 100%;
}

.birthday-content {
  position: relative;
  z-index: 2;
}

/* Decoration layer (behind content) */
.birthday-decor {
  display: none;
}

/* Big cake in the corner */
.bd-art-cake {
  position: absolute;
  top: -10px;
  inset-inline-start: -8px;
  font-size: 90px;
  opacity: 0.10;
  filter: blur(0.5px);
  transform: rotate(-12deg);
}

/* Floating balloons */
.bd-art-balloon {
  position: absolute;
  font-size: 22px;
  opacity: 0.18;
  animation: bdBalloonFloat 4s ease-in-out infinite;
}
.bd-art-balloon-1 {
  top: 8px;
  inset-inline-end: 18px;
  font-size: 28px;
  animation-delay: 0s;
}
.bd-art-balloon-2 {
  top: 32px;
  inset-inline-end: 56px;
  font-size: 18px;
  opacity: 0.14;
  animation-delay: 1.5s;
}

@keyframes bdBalloonFloat {
  0%, 100% { transform: translateY(0) rotate(-3deg); }
  50%      { transform: translateY(-6px) rotate(3deg); }
}

/* Confetti / sparkles */
.bd-art-confetti {
  position: absolute;
  font-size: 14px;
  opacity: 0.18;
  animation: bdSparkle 2.4s ease-in-out infinite;
}
.bd-art-confetti-1 {
  bottom: 18px;
  inset-inline-start: 24px;
  animation-delay: 0.3s;
}
.bd-art-confetti-2 {
  top: 48%;
  inset-inline-start: 12px;
  font-size: 18px;
  animation-delay: 1.2s;
  opacity: 0.12;
}
.bd-art-confetti-3 {
  bottom: 32px;
  inset-inline-end: 12px;
  font-size: 12px;
  animation-delay: 0.8s;
}

@keyframes bdSparkle {
  0%, 100% { opacity: 0.05; transform: scale(0.85); }
  50%      { opacity: 0.30; transform: scale(1.15); }
}
@media (prefers-reduced-motion: reduce) {
  .bd-art-balloon, .bd-art-confetti { animation: none; }
}

/* Tiny color dots scattered */
.bd-art-dot {
  position: absolute;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  opacity: 0.4;
}
.bd-art-dot-1 { top: 15%;  inset-inline-end: 30%; background: #f9a8d4; }
.bd-art-dot-2 { top: 70%;  inset-inline-end: 18%; background: #c4b5fd; }
.bd-art-dot-3 { top: 35%;  inset-inline-start: 8%; background: #fde68a; }
.bd-art-dot-4 { bottom: 8%; inset-inline-start: 38%; background: #86efac; }

/* When card is urgent (birthday within 7 days) — boost the festive feel */
.card[data-type="birthday"] .birthday-hero-urgent ~ .birthday-decor .bd-art-cake,
.card[data-type="birthday"] .birthday-decor .bd-art-cake {
  /* keep cake stable but balloons get more lively */
}

/* Subtle animated background gradient for the whole card body */
.birthday-card-body::before {
  content: none;
}
.birthday-card-today::before {
  content: none;
}
.card.birthday-is-today .card-icon {
  border-color: rgba(251, 191, 36, 0.24) !important;
  box-shadow: 0 0 16px rgba(251, 191, 36, 0.10) !important;
}

/* ════════════════════════════════════════════════════════════════════════════
 * NEW CARD TYPES (Wave 1 + 2 + 3) — shared styles
 * Most cards reuse mob-* classes (mob-card-inner, mob-pill, mob-hero, etc.).
 * What's added here: action buttons inside cards, modal list rows, and a
 * thin host wrapper for the desktop fallback render.
 * ════════════════════════════════════════════════════════════════════════════ */

/* Card-internal action button (e.g. "+1 صفحة" on quran, "▶ ابدأ" on pomodoro) */
.mob-counter-btn {
  width: 100%;
  margin-top: 8px;
  padding: 10px 12px;
  background: linear-gradient(135deg, rgba(139, 92, 246, 0.15), rgba(139, 92, 246, 0.08));
  color: var(--text);
  border: 1px solid rgba(139, 92, 246, 0.35);
  border-radius: 10px;
  font-family: var(--font-ar);
  font-size: 0.92rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s, transform 0.1s;
}
.mob-counter-btn:hover { background: linear-gradient(135deg, rgba(139, 92, 246, 0.25), rgba(139, 92, 246, 0.12)); }
.mob-counter-btn:active { transform: scale(0.97); }
.mob-counter-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.mob-counter-btn.mob-counter-inc { background: linear-gradient(135deg, #8b5cf6, #6366f1); color: #fff; border-color: transparent; }
.mob-counter-btn.mob-counter-inc:hover { background: linear-gradient(135deg, #9b6bf6, #7376f1); }
.mob-counter-btn.mob-counter-inc:disabled { background: rgba(139, 92, 246, 0.2); color: var(--muted); }
.mob-counter-btn.mob-counter-done { background: rgba(34,197,94,0.12); border-color: rgba(34,197,94,0.28); color: #4ade80; cursor: default; }
.mob-counter-btn.mob-counter-done:hover { background: rgba(34,197,94,0.12); }

.mob-routine-grid { display: flex; gap: 6px; flex-wrap: wrap; margin: 4px 0; }
.mob-habit-dot {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.12);
  background: rgba(255,255,255,0.04);
  font-size: 1.1rem; cursor: pointer;
  transition: background .12s, border-color .12s, transform .08s;
  color: rgba(255,255,255,0.5);
  user-select: none;
}
.mob-habit-dot:hover { background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.22); }
.mob-habit-dot:active { transform: scale(0.9); }
.mob-habit-dot.done { background: rgba(34,197,94,0.18); border-color: rgba(34,197,94,0.4); color: #4ade80; }

/* ─── Tracker control row (mobile) ─── */
.mob-tracker-ctrl {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 12px;
  padding: 6px 10px;
  margin: 2px 0;
}
.mob-tc-btn {
  width: 34px; height: 34px;
  border-radius: 50%;
  border: 1.5px solid rgba(255,255,255,0.14);
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.8);
  font-size: 1.2rem; font-weight: 700;
  cursor: pointer; display: flex; align-items: center; justify-content: center;
  transition: background .12s, transform .08s;
  flex-shrink: 0;
}
.mob-tc-btn:hover { background: rgba(255,255,255,0.12); }
.mob-tc-btn:active { transform: scale(0.9); }
.mob-tc-inc { border-color: rgba(99,102,241,0.4); background: rgba(99,102,241,0.12); color: #a5b4fc; }
.mob-tc-inc:hover { background: rgba(99,102,241,0.22); }
.mob-tc-dec { border-color: rgba(248,113,113,0.35); background: rgba(248,113,113,0.08); color: #fca5a5; }
.mob-tc-dec:hover { background: rgba(248,113,113,0.16); }
.mob-tc-center { font-size: 1.05rem; font-weight: 700; color: rgba(255,255,255,0.9); font-family: var(--font-en); text-align: center; flex: 1; }
.mob-tc-unit { font-size: 0.75rem; color: rgba(255,255,255,0.45); font-weight: 400; margin-inline-start: 3px; }

/* ─── Inline copy button (code / command / quote cards) ─── */
.mob-copy-btn {
  background: rgba(20,184,166,0.1);
  border: 1px solid rgba(20,184,166,0.25);
  border-radius: 8px;
  color: #2dd4bf;
  font-size: 0.77rem; font-weight: 600;
  cursor: pointer; padding: 4px 10px;
  font-family: var(--font-ar);
  transition: background .14s;
  white-space: nowrap;
}
.mob-copy-btn:hover { background: rgba(20,184,166,0.2); }
.mob-copy-inline { align-self: flex-end; }

/* Markdown content preview (mirrors .mob-quicktext-preview) */
.mob-md-preview {
  font-size: 0.82rem;
  color: rgba(232, 238, 247, 0.7);
  line-height: 1.55;
  font-family: var(--font-ar);
  white-space: pre-wrap;
  word-break: break-word;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
}

/* ─── Wifi card password row ─── */
.mob-wifi-pw {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 8px;
  background: rgba(6,182,212,0.06);
  border: 1px solid rgba(6,182,212,0.15);
  border-radius: 8px;
}
.mob-wifi-dots {
  flex: 1;
  font-family: var(--font-mono, monospace);
  font-size: 0.82rem;
  letter-spacing: 3px;
  color: rgba(255,255,255,0.5);
}
.mob-wifi-eye, .mob-wifi-copy {
  background: rgba(6,182,212,0.1);
  border: 1px solid rgba(6,182,212,0.22);
  border-radius: 6px;
  color: #22d3ee;
  font-size: 0.75rem;
  font-weight: 600;
  cursor: pointer;
  padding: 3px 8px;
  transition: background .14s;
  font-family: var(--font-ar);
  white-space: nowrap;
}
.mob-wifi-eye:hover, .mob-wifi-copy:hover { background: rgba(6,182,212,0.2); }

/* ─── Password card row ─── */
.mob-pw-row {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 8px;
  background: rgba(124,58,237,0.06);
  border: 1px solid rgba(124,58,237,0.15);
  border-radius: 8px;
}
.mob-pw-label { font-size: 0.72rem; color: rgba(255,255,255,0.45); flex-shrink: 0; }
.mob-pw-val   { flex: 1; font-size: 0.82rem; color: rgba(255,255,255,0.8); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mob-pw-dots  { flex: 1; font-family: var(--font-mono, monospace); font-size: 0.82rem; letter-spacing: 3px; color: rgba(255,255,255,0.5); }

/* ─── Code / command card preview ─── */
.mob-code-preview {
  font-family: 'Courier New', Courier, monospace;
  font-size: 0.77rem;
  color: rgba(255,255,255,0.7);
  background: rgba(0,0,0,0.3);
  border-radius: 8px;
  padding: 6px 10px;
  margin: 4px 0;
  overflow: hidden;
  white-space: pre;
  text-overflow: ellipsis;
  max-height: 48px;
  line-height: 1.5;
}

/* ─── Contact card chips row ─── */
.mob-contact-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 2px 0;
}

/* ─── Linkgroup domain chips ─── */
.mob-link-domain-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 2px 0;
}
.mob-link-domain-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 10px;
  background: rgba(59,130,246,0.1);
  border: 1px solid rgba(59,130,246,0.22);
  border-radius: 6px;
  color: #93c5fd;
  font-size: 0.76rem;
  font-weight: 600;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 120px;
  cursor: pointer;
  transition: background .14s;
}
.mob-link-domain-chip:hover { background: rgba(59,130,246,0.2); }

/* ─── Stocks list base (normal mobile view) ─── */
.mob-stocks-list {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.mob-stock-row {
  display: flex;
  align-items: center;
  gap: 8px;
  direction: ltr;
}
.mob-stock-sym {
  font-weight: 700;
  font-size: 0.88rem;
  color: rgba(255,255,255,0.9);
  font-family: var(--font-en);
  flex-shrink: 0;
}
.mob-stock-price {
  flex: 1;
  font-size: 0.85rem;
  color: rgba(255,255,255,0.65);
  font-family: var(--font-en);
}

/* ─── Week plan card items ─── */
.mob-week-day-label {
  font-size: 0.72rem;
  font-weight: 600;
  color: rgba(99,102,241,0.8);
  font-family: var(--font-ar);
  letter-spacing: 0.02em;
  margin-bottom: 4px;
}
.mob-week-item {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.8);
  font-family: var(--font-ar);
  line-height: 1.4;
  padding: 2px 0;
}
.mob-week-num {
  font-size: 0.75rem;
  color: rgba(99,102,241,0.7);
  font-weight: 700;
  flex-shrink: 0;
  min-width: 14px;
  font-family: var(--font-ar);
}
.mob-week-text { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Empty placeholder for cards with no entries */
.mob-note-empty {
  text-align: center;
  color: var(--muted);
  font-size: 0.85rem;
  padding: 6px 0;
  opacity: 0.7;
}

/* Modal: dynamic list row (used by iou, gold, project-tasks, goal-kr, crypto) */
.mod-list-row {
  display: flex;
  gap: 6px;
  align-items: center;
  margin-bottom: 6px;
  flex-wrap: wrap;
}
.mod-list-row > .modal-input,
.mod-list-row > select.modal-input,
.mod-list-row > input.modal-input {
  flex: 1 1 auto;
  min-width: 0;
}
.mod-list-row > input[type="checkbox"] { flex: 0 0 auto; width: 18px; height: 18px; cursor: pointer; }
.mod-list-row > input[type="number"].modal-input { max-width: 110px; }
.mod-list-row > input[type="date"].modal-input  { max-width: 150px; }

.btn-remove-row {
  flex: 0 0 auto;
  width: 32px;
  height: 32px;
  background: rgba(239, 68, 68, 0.1);
  border: 1px solid rgba(239, 68, 68, 0.3);
  border-radius: 8px;
  color: var(--danger);
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.15s;
}
.btn-remove-row:hover { background: rgba(239, 68, 68, 0.2); }

/* Mobile: stack list rows so multi-input forms stay tappable */
@media (max-width: 768px) {
  .mod-list-row {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 10px;
    background: rgba(255, 255, 255, 0.02);
    border: 1px solid var(--border1);
    border-radius: 10px;
  }
  .mod-list-row > .modal-input,
  .mod-list-row > input.modal-input,
  .mod-list-row > select.modal-input { max-width: none; width: 100%; }
  .mod-list-row > input[type="checkbox"] { align-self: flex-start; }
  .btn-remove-row { align-self: flex-end; width: 100%; max-width: 80px; height: 28px; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * DESKTOP RENDER FOR NEW CARD TYPES — today-widget pattern
 *
 * The 39 new card types render via .new-card-host wrapper (which contains the
 * mobile builder output). On desktop, the @media(max-width:768px) styling
 * doesn't apply, so the content was looking bare. This block re-applies the
 * same .widget-card pattern (used by مواقيت الصلاة / الطقس today widgets)
 * directly to .new-card-host, OUTSIDE the mobile media query.
 * ════════════════════════════════════════════════════════════════════════════ */

.new-card-host {
  padding: 0;
  display: block;
  width: 100%;
}
.new-card-host .mob-card-actions { display: none !important; }

/* Inner — widget-card recipe */
.new-card-host .mob-card-inner {
  padding: 4px 0 0 !important;  /* desktop card already has outer padding */
  background: transparent;
  box-shadow: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

/* Header — desktop already has its own H3 + icon-wrap, so we hide the
 * duplicate icon/title from the mobile builder and only keep the pill,
 * which we position absolutely at the top-end (matches the status-pill
 * pattern used by status / document / vehicle cards). */
.new-card-host .mob-card-header {
  /* Use display:contents so .mob-pill child can be positioned absolute
   * relative to the outer .card, not constrained by this flex header */
  display: contents;
}
.new-card-host .mob-card-icon,
.new-card-host .mob-card-title {
  display: none !important;
}
/* Make the desktop card a positioning context for the absolute pill */
.dash-grid .card:has(.new-card-host),
#page-grid .card:has(.new-card-host) {
  position: relative;
}
/* Pills — bigger, prominent, top-end of the card (matches existing cards) */
.new-card-host .mob-pill {
  position: absolute;
  top: 14px;
  inset-inline-end: 16px;
  z-index: 5;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.78rem;
  padding: 5px 12px;
  border-radius: 999px;
  letter-spacing: 0;
  text-shadow: none;
  /* Default: subtle violet */
  color: #a78bfa;
  background: rgba(167, 139, 250, 0.12);
  border: 1px solid rgba(167, 139, 250, 0.30);
}
.new-card-host .mob-pill-success {
  color: #5eead4;
  background: rgba(94, 234, 212, 0.12);
  border-color: rgba(94, 234, 212, 0.30);
}
.new-card-host .mob-pill-warning {
  color: #fbbf24;
  background: rgba(251, 191, 36, 0.12);
  border-color: rgba(251, 191, 36, 0.30);
}
.new-card-host .mob-pill-danger {
  color: #f87171;
  background: rgba(248, 113, 113, 0.12);
  border-color: rgba(248, 113, 113, 0.30);
}
.new-card-host .mob-pill-muted {
  color: rgba(232, 238, 247, 0.55);
  background: rgba(255, 255, 255, 0.04);
  border-color: rgba(255, 255, 255, 0.06);
}

/* Hero — widget-prayer-next pattern (cyan-violet gradient panel) */
.new-card-host .mob-hero {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 12px 14px;
  background: linear-gradient(135deg, rgba(89, 216, 255, 0.10), rgba(139, 92, 246, 0.08));
  border-radius: 12px;
  border: 1px solid rgba(89, 216, 255, 0.15);
  margin: 4px 0 6px;
  align-items: flex-start;
}
.new-card-host .mob-hero-num,
.new-card-host .mob-hero-num.mob-hero-accent,
.new-card-host .mob-hero-accent {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 1.6rem;
  line-height: 1;
  color: #59d8ff;
  background: none;
  -webkit-text-fill-color: #59d8ff;
  text-shadow: none;
  filter: none;
  letter-spacing: -0.005em;
  font-variant-numeric: tabular-nums;
}
.new-card-host .mob-hero-unit {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 1rem;
  color: var(--text);
}

/* Stat strip — widget-prayer-list 3-col tile grid */
.new-card-host .mob-stat-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  font-size: 0.78rem;
  border-top: none;
  padding-top: 0;
  margin-top: 4px;
}
.new-card-host .mob-stat {
  flex: unset;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: 8px 4px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid transparent;
  border-radius: 8px;
}
.new-card-host .mob-stat-k {
  font-family: var(--font-ar);
  font-weight: 600;
  color: rgba(232, 238, 247, 0.7);
  font-size: 0.72rem;
  text-transform: none;
  letter-spacing: 0;
}
.new-card-host .mob-stat-v {
  font-family: var(--font-mono);
  color: var(--text);
  font-weight: 700;
  font-size: 0.92rem;
  font-variant-numeric: tabular-nums;
}

/* Progress bar — slim cyan */
.new-card-host .mob-progress-row {
  display: flex;
  align-items: center;
  gap: 10px;
}
.new-card-host .mob-progress-bar {
  flex: 1;
  height: 5px;
  border-radius: 3px;
  background: rgba(255, 255, 255, 0.05);
  box-shadow: none;
  overflow: hidden;
}
.new-card-host .mob-progress-fill {
  height: 100%;
  background: #59d8ff;
  box-shadow: none;
  border-radius: 3px;
  transition: width 0.4s ease;
}
.new-card-host .mob-progress-bar.mob-bar-warn .mob-progress-fill { background: #fbbf24; }
.new-card-host .mob-progress-bar.mob-bar-over .mob-progress-fill { background: #f87171; }

/* CTA button — quiet cyan-violet */
.new-card-host .mob-counter-btn {
  background: linear-gradient(135deg, rgba(89, 216, 255, 0.18), rgba(139, 92, 246, 0.15));
  border: 1px solid rgba(89, 216, 255, 0.25);
  color: #59d8ff;
  border-radius: 10px;
  padding: 9px 14px;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.85rem;
  box-shadow: none;
  cursor: pointer;
  letter-spacing: 0;
  margin-top: 6px;
  transition: filter 0.15s, transform 0.1s;
}
.new-card-host .mob-counter-btn:hover { filter: brightness(1.15); }
.new-card-host .mob-counter-btn:active { transform: scale(0.97); }

/* Footer + note lines */
.new-card-host .mob-card-foot {
  display: none !important;  /* desktop card has its own time/footer */
}
.new-card-host .mob-note-line {
  font-size: 0.85rem;
  color: rgba(232, 238, 247, 0.7);
  line-height: 1.55;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.new-card-host .mob-note-empty {
  color: rgba(232, 238, 247, 0.35);
  font-style: italic;
}
.new-card-host .mob-note-body {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

/* ─── Birthday card override (desktop): keep Person1 horizontal layout ─── */
.new-card-host .mob-birthday-card .mob-bd-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 0;
  border-bottom: none;
}
.new-card-host .mob-birthday-card .mob-bd-title {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 1rem;
  color: var(--text);
}
.new-card-host .mob-birthday-card .mob-bd-sub {
  font-size: 0.75rem;
  color: rgba(232, 238, 247, 0.55);
}
.new-card-host .mob-birthday-card .mob-bd-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 1.15rem;
  background: linear-gradient(135deg,
    color-mix(in oklch, #f472b6 50%, #000),
    color-mix(in oklch, #f472b6 80%, #000));
  border: 1px solid color-mix(in oklch, #f472b6 40%, transparent);
}
.new-card-host .mob-birthday-card .mob-bd-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px 0;
}
.new-card-host .mob-birthday-card .mob-bd-num {
  font-family: var(--font-en, "Inter", system-ui);
  font-weight: 800;
  font-size: 56px;
  line-height: 0.9;
  color: #fff;
  letter-spacing: -0.04em;
  font-variant-numeric: tabular-nums;
}
.new-card-host .mob-birthday-card .mob-bd-num-unit {
  font-size: 16px;
  color: rgba(255, 255, 255, 0.74);
}
.new-card-host .mob-birthday-card .mob-bd-side {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 8px;
}
.new-card-host .mob-birthday-card .mob-bd-age-pill {
  padding: 4px 12px;
  border-radius: 999px;
  background: color-mix(in oklch, #f472b6 18%, transparent);
  color: #f472b6;
  border: 1px solid color-mix(in oklch, #f472b6 40%, transparent);
  font-family: var(--font-ar);
  font-weight: 600;
  font-size: 0.78rem;
  font-variant-numeric: tabular-nums;
}
.new-card-host .mob-birthday-card .mob-bd-bars { display: flex; gap: 3px; }
.new-card-host .mob-birthday-card .mob-bd-bar {
  width: 7px; height: 18px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.10);
}
.new-card-host .mob-birthday-card .mob-bd-bar.is-filled {
  background: #f472b6;
  box-shadow: 0 0 6px color-mix(in oklch, #f472b6 50%, transparent);
}

/* ════════════════════════════════════════════════════════════════════════════
 * MOBILE CARD VISUAL UPGRADE — watch-face style language
 * Touches the SHARED building blocks (mob-card, mob-card-inner, mob-hero-*,
 * mob-pill, mob-progress, mob-stat) so every card type benefits without
 * touching its individual builder. Specificity is bumped where needed to
 * win against the inside-@media originals further up.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* Bigger radii for the watch-face vibe */
  :root {
    --mb-r-card: 22px;
    --mb-r-pill: 999px;
    --mb-r-chip: 12px;
  }

  /* ─── Outer shell: deeper black, softer shadow, rounder ──────────────────── */
  .card.mob-card {
    background: linear-gradient(180deg, #0c0c11 0%, #06060a 100%);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: var(--mb-r-card);
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.05) inset,
      0 12px 28px rgba(0, 0, 0, 0.45),
      0 2px 6px rgba(0, 0, 0, 0.35);
    position: relative;
    overflow: hidden;
    transition: transform 0.18s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.18s;
    /* Off-screen rendering skip for scroll perf */
    content-visibility: auto;
    contain-intrinsic-size: 0 190px;
  }
  /* Subtle radial highlight from top-right (watch-face style sheen) */
  .card.mob-card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
      ellipse 70% 50% at 85% 0%,
      rgba(255, 255, 255, 0.04) 0%,
      transparent 65%
    );
    pointer-events: none;
    z-index: 0;
  }
  .card.mob-card:active { transform: scale(0.985); }

  /* Pinned cards keep their accent edge but adopt the new bg */
  .card.mob-card.pinned-card {
    border-color: rgba(168, 85, 247, 0.35);
    box-shadow:
      0 1px 0 rgba(255, 255, 255, 0.05) inset,
      0 12px 28px rgba(0, 0, 0, 0.45),
      0 0 0 1px rgba(168, 85, 247, 0.2);
  }

  /* ─── Inner: more breathing room, content sits above ::before ───────────── */
  .mob-card-inner {
    padding: 16px 18px 14px !important;
    gap: 11px !important;
    position: relative;
    z-index: 1;
  }

  /* ─── Header: title weight up, icon chip bigger and softer ──────────────── */
  .mob-card-header {
    gap: 11px !important;
    padding-bottom: 2px;
  }
  .mob-card-icon {
    font-size: 20px !important;
    width: 36px !important;
    height: 36px !important;
    border-radius: var(--mb-r-chip);
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.04);
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
  }
  .mob-card-title {
    font-size: 14.5px !important;
    font-weight: 700;
    letter-spacing: -0.005em;
    color: rgba(255, 255, 255, 0.92);
  }

  /* ─── Hero number: BIG, tight, optically aligned ─────────────────────────── */
  .mob-hero {
    margin: 6px 0 4px !important;
    align-items: baseline;
  }
  .mob-hero-num {
    font-size: 46px !important;
    font-weight: 800 !important;
    letter-spacing: -0.035em !important;
    line-height: 1 !important;
    color: #fff;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.4);
    font-variant-numeric: tabular-nums;
  }
  .mob-hero-num span { font-weight: 700; }
  .mob-hero-unit {
    font-size: 13px !important;
    color: rgba(255, 255, 255, 0.5);
    font-weight: 600;
    letter-spacing: -0.01em;
  }
  /* Accent variant: bright violet/indigo gradient text */
  .mob-hero-num.mob-hero-accent,
  .mob-hero-accent {
    background: linear-gradient(135deg, #a78bfa 0%, #818cf8 50%, #60a5fa 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent !important;
  }

  /* ─── Pills: refined chip with subtle border ─────────────────────────────── */
  .mob-pill {
    padding: 4px 10px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: 0.01em;
    border: 1px solid transparent;
    background: rgba(99, 102, 241, 0.16) !important;
    color: #a5b4fc !important;
  }
  .mob-pill-success {
    background: rgba(34, 197, 94, 0.14) !important;
    color: #4ade80 !important;
    border-color: rgba(34, 197, 94, 0.25);
  }
  .mob-pill-warning {
    background: rgba(245, 158, 11, 0.14) !important;
    color: #fbbf24 !important;
    border-color: rgba(245, 158, 11, 0.25);
  }
  .mob-pill-danger {
    background: rgba(239, 68, 68, 0.14) !important;
    color: #f87171 !important;
    border-color: rgba(239, 68, 68, 0.25);
  }
  .mob-pill-muted {
    background: rgba(255, 255, 255, 0.05) !important;
    color: rgba(255, 255, 255, 0.55) !important;
    border-color: rgba(255, 255, 255, 0.07);
  }

  /* ─── Progress bar: thicker, glowing fill ────────────────────────────────── */
  .mob-progress-row { gap: 8px; }
  .mob-progress-bar {
    height: 8px !important;
    border-radius: 6px !important;
    background: rgba(255, 255, 255, 0.05) !important;
    box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.4);
    position: relative;
  }
  .mob-progress-fill {
    border-radius: 6px;
    background: linear-gradient(90deg, #6366f1 0%, #8b5cf6 100%) !important;
    box-shadow: 0 0 8px rgba(139, 92, 246, 0.4);
    transition: width 0.5s cubic-bezier(0.16, 1, 0.3, 1);
  }
  .mob-progress-bar.mob-bar-warn .mob-progress-fill {
    background: linear-gradient(90deg, #f59e0b 0%, #ef4444 100%) !important;
    box-shadow: 0 0 8px rgba(245, 158, 11, 0.4);
  }
  .mob-progress-bar.mob-bar-over  .mob-progress-fill {
    background: linear-gradient(90deg, #ef4444 0%, #dc2626 100%) !important;
    box-shadow: 0 0 10px rgba(239, 68, 68, 0.5);
  }
  .mob-progress-bar.mob-bar-done  .mob-progress-fill { background: #22c55e !important; }
  .mob-progress-bar.mob-bar-quran .mob-progress-fill { background: linear-gradient(90deg, #10b981, #22d3ee) !important; }
  .mob-progress-bar.mob-bar-pomo  .mob-progress-fill { background: linear-gradient(90deg, #ef4444, #f97316) !important; }

  /* ─── Stat strip: divider lines between stats for crisp grid feel ────────── */
  .mob-stat-strip {
    gap: 0 !important;
    padding: 8px 0 4px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.05);
    margin-top: 4px;
  }
  .mob-stat {
    flex: 1;
    align-items: flex-start;
    padding: 0 12px;
    border-inline-start: 1px solid rgba(255, 255, 255, 0.05);
  }
  .mob-stat:first-child {
    padding-inline-start: 0;
    border-inline-start: none;
  }
  .mob-stat:last-child { padding-inline-end: 0; }
  .mob-stat-k {
    font-size: 9.5px !important;
    color: rgba(255, 255, 255, 0.42) !important;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-weight: 700;
  }
  .mob-stat-v {
    font-size: 14.5px !important;
    font-weight: 700 !important;
    color: rgba(255, 255, 255, 0.92) !important;
  }

  /* ─── Action button (the "+1 page" / "▶ Start" CTA) ──────────────────────── */
  .mob-counter-btn {
    margin-top: 10px !important;
    padding: 12px 14px !important;
    font-size: 0.9rem !important;
    font-weight: 800 !important;
    letter-spacing: -0.005em;
    border-radius: 12px !important;
  }
  .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%) !important;
    box-shadow:
      0 6px 14px rgba(99, 102, 241, 0.35),
      0 1px 0 rgba(255, 255, 255, 0.15) inset;
    border: none !important;
    color: #fff !important;
  }
  .mob-counter-btn.mob-counter-inc:active {
    transform: scale(0.97);
    box-shadow: 0 3px 8px rgba(99, 102, 241, 0.3);
  }

  /* ─── Footer: smaller, subtler ───────────────────────────────────────────── */
  .mob-card-foot {
    padding-top: 8px !important;
    margin-top: 4px;
    font-size: 10.5px !important;
    color: rgba(255, 255, 255, 0.32) !important;
    border-top: 1px solid rgba(255, 255, 255, 0.04);
  }
  .mob-card-time {
    font-size: 10.5px !important;
    color: rgba(255, 255, 255, 0.32) !important;
  }

  /* ─── Note line: better readability ──────────────────────────────────────── */
  .mob-note-line {
    font-size: 13.5px !important;
    color: rgba(255, 255, 255, 0.78) !important;
    line-height: 1.55;
    /* P293: allow wrapping in 1-col full-width cards (was nowrap for 2-col) */
    white-space: normal !important;
    overflow: visible !important;
    text-overflow: unset !important;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden !important;
  }
  .mob-note-empty {
    color: rgba(255, 255, 255, 0.3) !important;
    font-size: 12.5px;
  }
  .mob-note-dim   { opacity: .7; }
  .mob-note-faded { opacity: .85; }
  .mob-note-muted { opacity: .75; }
  .mob-frac-muted { opacity: .45; }
  .mob-hero-emoji    { font-size: 2.5rem; line-height: 1; display: block; }
  .mob-hero-emoji-lg { font-size: 3rem;   line-height: 1; display: block; }
  .mob-hero-ssid-text { font-size: 24px; letter-spacing: .5px; }
  .mob-hero-inline-text { font-size: 1rem; line-height: 1.3; }
  .mob-mood-row { display: flex; gap: 6px; justify-content: center; flex-wrap: wrap; margin: 8px 0; }
  .mob-mood-active { background: rgba(139,92,246,0.3) !important; }
  .empty-icon-2xl { font-size: 2.5rem; margin-bottom: 10px; }

  /* (Old ::after stripe approach replaced by box-shadow inset further down,
   *  which is more reliable across overflow:hidden parents.) */
  .card.mob-card::after { content: none !important; }
  .mob-card:has(.mob-quran-card)::after    { background: linear-gradient(180deg, #10b981, #059669); }
  .mob-card:has(.mob-zakat-card)::after    { background: linear-gradient(180deg, #f59e0b, #d97706); }
  .mob-card:has(.mob-fasting-card)::after  { background: linear-gradient(180deg, #6366f1, #4f46e5); }
  .mob-card:has(.mob-iou-card)::after      { background: linear-gradient(180deg, #f97316, #ea580c); }
  .mob-card:has(.mob-savings-card)::after  { background: linear-gradient(180deg, #22d3ee, #06b6d4); }
  .mob-card:has(.mob-gold-card)::after     { background: linear-gradient(180deg, #fbbf24, #f59e0b); }
  .mob-card:has(.mob-nw-card)::after       { background: linear-gradient(180deg, #a78bfa, #8b5cf6); }
  .mob-card:has(.mob-pd-card)::after       { background: linear-gradient(180deg, #f59e0b, #ef4444); }
  .mob-card:has(.mob-appliance-card)::after{ background: linear-gradient(180deg, #94a3b8, #64748b); }
  .mob-card:has(.mob-gift-card)::after     { background: linear-gradient(180deg, #ec4899, #db2777); }
  .mob-card:has(.mob-chore-card)::after    { background: linear-gradient(180deg, #06b6d4, #0891b2); }
  .mob-card:has(.mob-pomo-card)::after     { background: linear-gradient(180deg, #ef4444, #dc2626); }
  .mob-card:has(.mob-project-card)::after  { background: linear-gradient(180deg, #8b5cf6, #6366f1); }
  .mob-card:has(.mob-inbox-card)::after    { background: linear-gradient(180deg, #64748b, #475569); }
  .mob-card:has(.mob-mood-card)::after     { background: linear-gradient(180deg, #fbbf24, #f59e0b); }
  .mob-card:has(.mob-workout-card)::after  { background: linear-gradient(180deg, #ef4444, #dc2626); }
  .mob-card:has(.mob-med-card)::after      { background: linear-gradient(180deg, #a78bfa, #8b5cf6); }
  .mob-card:has(.mob-vitals-card)::after   { background: linear-gradient(180deg, #f43f5e, #e11d48); }
  .mob-card:has(.mob-course-card)::after   { background: linear-gradient(180deg, #3b82f6, #2563eb); }
  .mob-card:has(.mob-lang-card)::after     { background: linear-gradient(180deg, #14b8a6, #0d9488); }
  .mob-card:has(.mob-idea-card)::after     { background: linear-gradient(180deg, #fbbf24, #f59e0b); }
  .mob-card:has(.mob-quote-card)::after    { background: linear-gradient(180deg, #a78bfa, #8b5cf6); }
  .mob-card:has(.mob-recipe-card)::after   { background: linear-gradient(180deg, #f97316, #ea580c); }
  .mob-card:has(.mob-goal-card)::after     { background: linear-gradient(180deg, #8b5cf6, #6366f1); }
  .mob-card:has(.mob-meet-card)::after     { background: linear-gradient(180deg, #3b82f6, #2563eb); }
  .mob-card:has(.mob-loan-card)::after     { background: linear-gradient(180deg, #ef4444, #dc2626); }
  .mob-card:has(.mob-crypto-card)::after   { background: linear-gradient(180deg, #f59e0b, #fbbf24); }
  .mob-card:has(.mob-plant-card)::after    { background: linear-gradient(180deg, #22c55e, #16a34a); }
  .mob-card:has(.mob-journal-card)::after  { background: linear-gradient(180deg, #a78bfa, #ec4899); }
  .mob-card:has(.mob-week-card)::after     { background: linear-gradient(180deg, #6366f1, #8b5cf6); }
  .mob-card:has(.mob-review-card)::after   { background: linear-gradient(180deg, #06b6d4, #0891b2); }
  .mob-card:has(.mob-meals-card)::after    { background: linear-gradient(180deg, #f97316, #ea580c); }
  .mob-card:has(.mob-pod-card)::after      { background: linear-gradient(180deg, #a78bfa, #8b5cf6); }
  .mob-card:has(.mob-pl-card)::after       { background: linear-gradient(180deg, #22c55e, #16a34a); }
  .mob-card:has(.mob-trip-card)::after     { background: linear-gradient(180deg, #06b6d4, #3b82f6); }
  .mob-card:has(.mob-book-card)::after      { background: linear-gradient(180deg, #f59e0b, #d97706); }
  .mob-card:has(.mob-watchlist-card)::after { background: linear-gradient(180deg, #ef4444, #b91c1c); }
  .mob-card:has(.mob-birthday-card)::after  { background: linear-gradient(180deg, #ec4899, #be185d); }
  .mob-card:has(.mob-routine-card)::after   { background: linear-gradient(180deg, #14b8a6, #0d9488); }
  .mob-card:has(.mob-checklist-card)::after { background: linear-gradient(180deg, #22c55e, #16a34a); }
  .mob-card:has(.mob-reminder-card)::after  { background: linear-gradient(180deg, #8b5cf6, #7c3aed); }
  .mob-card:has(.mob-countdown-card)::after { background: linear-gradient(180deg, #6366f1, #4f46e5); }
  .mob-card:has(.mob-sub-card)::after       { background: linear-gradient(180deg, #f97316, #c2410c); }
  .mob-card:has(.mob-doc-card)::after       { background: linear-gradient(180deg, #fbbf24, #b45309); }
  .mob-card:has(.mob-vehicle-card)::after   { background: linear-gradient(180deg, #64748b, #475569); }
  .mob-card:has(.mob-stocks-card)::after    { background: linear-gradient(180deg, #22c55e, #16a34a); }
  .mob-card:has(.mob-link-card)::after      { background: linear-gradient(180deg, #3b82f6, #2563eb); }
  .mob-card:has(.mob-lg-card)::after        { background: linear-gradient(180deg, #3b82f6, #1d4ed8); }
  .mob-card:has(.mob-wifi-card)::after      { background: linear-gradient(180deg, #06b6d4, #0891b2); }
  .mob-card:has(.mob-contact-card)::after   { background: linear-gradient(180deg, #10b981, #059669); }
  .mob-card:has(.mob-expense-card)::after   { background: linear-gradient(180deg, #f97316, #ea580c); }
  .mob-card:has(.mob-fields-card)::after    { background: linear-gradient(180deg, #0ea5e9, #0369a1); }
  .mob-card:has(.mob-quicktext-card)::after { background: linear-gradient(180deg, #14b8a6, #0f766e); }
  .mob-card:has(.mob-code-card)::after      { background: linear-gradient(180deg, #6366f1, #4338ca); }
  .mob-card:has(.mob-markdown-card)::after  { background: linear-gradient(180deg, #a78bfa, #7c3aed); }
  .mob-card:has(.mob-page-card)::after      { background: linear-gradient(180deg, #6366f1, #8b5cf6); }
  .mob-card:has(.mob-tracker-card)::after   { background: linear-gradient(180deg, #8b5cf6, #6366f1); }
  .mob-card:has(.mob-counter-card)::after   { background: linear-gradient(180deg, #3b82f6, #6366f1); }
  .mob-card:has(.mob-note-card)::after      { background: linear-gradient(180deg, #64748b, #475569); }
  .mob-card:has(.mob-status-card)::after    { background: linear-gradient(180deg, #06b6d4, #0284c7); }
  .mob-card:has(.mob-password-card)::after  { background: linear-gradient(180deg, #a78bfa, #7c3aed); }

  /* Quran: rich emerald hero gradient */
  .mob-quran-card .mob-hero-num {
    background: linear-gradient(135deg, #10b981 0%, #06b6d4 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  .mob-quran-card .mob-progress-fill {
    background: linear-gradient(90deg, #10b981 0%, #22d3ee 100%) !important;
    box-shadow: 0 0 10px rgba(16, 185, 129, 0.4);
  }

  /* Pomodoro: warm red/orange */
  .mob-pomo-card .mob-hero-num {
    background: linear-gradient(135deg, #ef4444 0%, #f97316 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }
  .mob-pomo-card .mob-progress-fill {
    background: linear-gradient(90deg, #ef4444 0%, #f97316 100%) !important;
    box-shadow: 0 0 10px rgba(239, 68, 68, 0.4);
  }
  .mob-pomo-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #ef4444 0%, #f97316 100%) !important;
    box-shadow: 0 6px 14px rgba(239, 68, 68, 0.4);
  }

  /* Gold: warm amber gradient */
  .mob-gold-card .mob-hero-num {
    background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
  }



  /* Plant: emerald */
  .mob-plant-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #06b6d4 0%, #22c55e 100%) !important;
    box-shadow: 0 6px 14px rgba(34, 197, 94, 0.35);
  }

  /* Workout: red gradient */
  .mob-workout-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #ef4444 0%, #f97316 100%) !important;
    box-shadow: 0 6px 14px rgba(239, 68, 68, 0.4);
  }

  /* Mood emoji buttons: cleaner */
  .mob-mood-btn {
    font-size: 1.4rem;
    background: rgba(255,255,255,0.05);
    border: none;
    padding: 6px 10px;
    border-radius: 8px;
    cursor: pointer;
    transition: transform 0.15s, background 0.15s;
  }
  .mob-mood-btn:active { transform: scale(0.85); }

  /* Document/visa-style card: gold accent stripe (when hawiya/passport severity is gold) */
  .mob-card[class*="card-gold-edge"]::after,
  .mob-card[data-edge="gold"]::after {
    background: linear-gradient(180deg, #fbbf24, #f59e0b) !important;
  }
}

/* Reduced motion: kill the smooth transitions on the new shell */
@media (prefers-reduced-motion: reduce) {
  .card.mob-card,
  .mob-progress-fill { transition: none !important; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * MOBILE REFINEMENT PASS — design brief polish
 *  · Subtle dark-blue → deep-purple body gradient
 *  · Avatar circle in top-right (replaces ANA monogram)
 *  · +10% card internal padding
 *  · Stock danger pill: charcoal bg + vibrant red text
 *  · Birthday "يوم" unit: +30% size, pure white
 *  · Bottom nav: solid filled icons + pure black background
 *  · Goal Progress empty-state widget
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* Body gradient — subtle dark-blue → deep-purple wash */
  body {
    background-color: #050511 !important;
    background-image:
      radial-gradient(ellipse 120% 60% at 80% 0%, rgba(124, 58, 237, 0.18), transparent 55%),
      radial-gradient(ellipse 100% 50% at 20% 100%, rgba(30, 58, 138, 0.20), transparent 55%),
      linear-gradient(180deg, #0a0a18 0%, #060611 50%, #0a0518 100%) !important;
    background-size: auto !important;
    background-attachment: fixed !important;
  }

  /* Top-right avatar (mob-top-logo) — minimalist line-art portrait */
  .mob-top-bar .mob-top-logo.mob-top-avatar {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.18);
    color: rgba(255, 255, 255, 0.82);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background 0.15s, border-color 0.15s, transform 0.1s;
  }
  .mob-top-bar .mob-top-logo.mob-top-avatar:hover,
  .mob-top-bar .mob-top-logo.mob-top-avatar:active {
    background: rgba(167, 139, 250, 0.12);
    border-color: rgba(167, 139, 250, 0.4);
  }
  .mob-top-bar .mob-top-logo.mob-top-avatar:active { transform: scale(0.94); }
  .mob-top-bar .mob-top-logo.mob-top-avatar svg { display: block; }

  /* +10% card internal padding (16px → 18px end/inline, 14px → 16px block-end) */
  .card.mob-card .mob-card-inner {
    padding: 18px 20px 16px !important;
    padding-inline-start: 20px !important;
    gap: 12px !important;
  }

  /* Card 1 — Stock danger pill: charcoal background + vibrant bright red text.
   * Targets the percentage badge inside stocks-card specifically. */
  .card.mob-card:has(.mob-stocks-card) .mob-pill-danger,
  .mob-stocks-card .mob-pill-danger,
  .mob-stocks-card .mob-pill.mob-pill-danger {
    background: #1c1c22 !important;
    color: #ff3b3b !important;
    border: 1px solid rgba(255, 59, 59, 0.35) !important;
    text-shadow: 0 0 8px rgba(255, 59, 59, 0.4);
    font-weight: 800 !important;
    letter-spacing: 0.02em;
  }
  /* Same treatment for the success variant on stocks (green up-tick) */
  .card.mob-card:has(.mob-stocks-card) .mob-pill-success,
  .mob-stocks-card .mob-pill-success {
    background: #1c1c22 !important;
    color: #22ff77 !important;
    border: 1px solid rgba(34, 255, 119, 0.35) !important;
    text-shadow: 0 0 8px rgba(34, 255, 119, 0.4);
    font-weight: 800 !important;
  }

  /* Card 2 — Birthday "يوم" unit: +30% size, pure white */
  .card.mob-card:has(.mob-birthday-card) .mob-hero-unit,
  .mob-birthday-card .mob-hero-unit {
    font-size: 17.5px !important;  /* was 13.5px → +30% */
    color: #ffffff !important;
    font-weight: 700 !important;
    letter-spacing: -0.005em !important;
  }

  /* Lighter-grey timestamp text (Cards 1 & 2 — the design brief calls this out) */
  .card.mob-card .mob-card-time {
    color: rgba(255, 255, 255, 0.42) !important;
    font-weight: 500;
  }

  /* ─── Bottom Navigation — pure black bg + solid (filled) icons ────────────── */
  .mobile-bottom-nav {
    background: #000000 !important;
    border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
  }
  /* The new SVGs use fill="currentColor" so color drives both fill and outline.
   * Default = muted; active = full white/violet. */
  .mob-nav-btn {
    color: rgba(255, 255, 255, 0.42) !important;
  }
  .mob-nav-btn svg {
    width: 24px !important;
    height: 24px !important;
    transition: transform 0.15s, color 0.15s;
  }
  .mob-nav-btn.active {
    color: var(--accent2, #a78bfa) !important;
  }
  .mob-nav-btn.active svg {
    transform: translateY(-1px);
    filter: drop-shadow(0 4px 10px rgba(167, 139, 250, 0.4));
  }
  .mob-nav-btn span {
    font-size: 0.62rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.01em;
  }

  /* ─── Goal Progress empty-state widget ──────────────────────────────────────
   * Appears below the card grid when user has goals. Shows aggregate progress
   * with a mini multi-point line chart. Static visual — wired up by app.js. */
  .mob-goal-progress-card {
    margin: 14px 0;
    padding: 18px 20px;
    background:
      radial-gradient(ellipse 80% 50% at 100% 0%, rgba(96, 165, 250, 0.18), transparent 60%),
      linear-gradient(180deg, #0a0a18 0%, #050510 100%);
    border: 1px solid rgba(96, 165, 250, 0.35);
    border-radius: 22px;
    box-shadow:
      inset 4px 0 0 0 #60a5fa,
      0 0 22px rgba(96, 165, 250, 0.15),
      0 12px 28px rgba(0, 0, 0, 0.45);
    position: relative;
    overflow: hidden;
  }
  .mgp-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
  }
  .mgp-title {
    font-size: 13px;
    font-weight: 700;
    color: rgba(255, 255, 255, 0.85);
    letter-spacing: 0.01em;
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .mgp-title::before {
    content: '🎯';
    font-size: 16px;
  }
  .mgp-add {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    background: rgba(96, 165, 250, 0.15);
    border: 1px solid rgba(96, 165, 250, 0.3);
    color: #93c5fd;
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s;
  }
  .mgp-add:active { transform: scale(0.92); }
  .mgp-chart {
    width: 100%;
    height: 60px;
    margin: 6px 0 10px;
    display: block;
  }
  .mgp-meta {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
  }
  .mgp-stat {
    font-size: 22px;
    font-weight: 800;
    color: #ffffff;
    letter-spacing: -0.02em;
    font-variant-numeric: tabular-nums;
  }
  .mgp-stat-suffix {
    color: rgba(255, 255, 255, 0.48);
    font-size: 16px;
    font-weight: 600;
  }
  .mgp-label {
    font-size: 11.5px;
    color: rgba(255, 255, 255, 0.6);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
 * DIRECTION A — RICH GLOW (final design pass)
 * Source: /Volumes/SSD 990 Pro/Downloads/Claude Design card
 *
 * Replaces previous left-edge stripes with INSIDE-CARD glow halos. The accent
 * color comes from a soft radial-gradient ::before with blur(28px), positioned
 * at varied corners per card type. Cards are deep-violet base, no border
 * accent — just the inside glow gives them personality.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ─── Design tokens ──────────────────────────────────────────────────────── */
  :root {
    /* OKLCH primary (modern browsers) */
    --da-bg-1: oklch(0.155 0.012 280);
    --da-bg-2: oklch(0.13 0.012 280);
    --da-card: oklch(0.19 0.014 280);
    --da-card-edge: oklch(0.24 0.018 280);
    --da-ink: oklch(0.97 0.005 280);
    --da-ink-dim: oklch(0.75 0.012 280);
    --da-ink-mute: oklch(0.55 0.012 280);
    --da-green: oklch(0.78 0.18 145);
    --da-red: oklch(0.68 0.22 22);
    --da-violet: oklch(0.7 0.2 295);
    --da-amber: oklch(0.82 0.16 80);
    --da-cyan: oklch(0.78 0.13 200);
    --da-pink: oklch(0.72 0.2 350);
    --da-blue: oklch(0.7 0.18 255);
    /* Per-card glow placement: cx cy spread% */
    --da-glow-pos-default: 100% 0%;
  }

  /* ─── BODY: deep violet-black gradient + soft glow blobs ─────────────────── */
  body {
    background-color: #0e0a17 !important;
    background-image:
      radial-gradient(ellipse 70% 40% at 80% 12%, color-mix(in oklch, var(--da-violet) 22%, transparent), transparent 65%),
      radial-gradient(ellipse 55% 35% at 18% 78%, color-mix(in oklch, var(--da-pink) 14%, transparent), transparent 65%),
      linear-gradient(180deg, #0e0a17 0%, #15101e 50%, #0e0a17 100%) !important;
    background-attachment: fixed !important;
    background-size: auto !important;
  }

  /* ─── CARD SHELL — clean violet-grey with no edge stripe ─────────────────── */
  .card.mob-card {
    background: var(--da-card) !important;
    border: 1px solid var(--da-card-edge) !important;
    border-radius: 28px !important;
    /* Override ALL previous box-shadow patterns (stripe, etc.) */
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.04),
      0 24px 48px -24px rgba(0, 0, 0, 0.6) !important;
    overflow: hidden !important;
    position: relative !important;
    transition: transform 0.25s cubic-bezier(0.2, 0.7, 0.3, 1) !important;
    padding: 0 !important;
  }
  .card.mob-card:active { transform: scale(0.985); }

  /* ─── INSIDE GLOW — colored radial gradient, blurred ─────────────────────── */
  .card.mob-card::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: radial-gradient(circle at 100% 0%, var(--da-violet), transparent 60%) !important;
    opacity: 0.55 !important;
    filter: blur(28px) !important;
    pointer-events: none !important;
    z-index: 0 !important;
    transition: opacity 0.3s ease;
  }
  .card.mob-card::after { content: none !important; }  /* kill old stripe */

  /* Make inner content sit ABOVE the glow */
  .card.mob-card .mob-card-inner {
    position: relative !important;
    z-index: 1 !important;
    padding: 18px !important;
    gap: 14px !important;
  }

  /* ─── Per-type glow color + corner placement ─────────────────────────────── */
  /* Stocks: green from bottom-right (price chart vibe) */
  .card.mob-card:has(.mob-stocks-card)::before {
    background: radial-gradient(circle at 90% 100%, var(--da-green), transparent 60%) !important;
  }
  /* Person/Birthday: pink from top-left */
  .card.mob-card:has(.mob-birthday-card)::before,
  .card.mob-card:has(.mob-contact-card)::before,
  .card.mob-card:has(.mob-gift-card)::before {
    background: radial-gradient(circle at 0% 0%, var(--da-pink), transparent 55%) !important;
  }
  /* Streak/reading: amber from bottom-center */
  .card.mob-card:has(.mob-routine-card)::before,
  .card.mob-card:has(.mob-fasting-card)::before,
  .card.mob-card:has(.mob-mood-card)::before,
  .card.mob-card:has(.mob-idea-card)::before {
    background: radial-gradient(circle at 50% 100%, var(--da-amber), transparent 55%) !important;
  }
  /* Countdown/Trip/Travel: violet from top-right */
  .card.mob-card:has(.mob-countdown-card)::before,
  .card.mob-card:has(.mob-trip-card)::before,
  .card.mob-card:has(.mob-meet-card)::before,
  .card.mob-card:has(.mob-reminder-card)::before {
    background: radial-gradient(circle at 100% 0%, var(--da-violet), transparent 60%) !important;
  }
  /* Goal/Savings/Crypto: cyan from bottom-left */
  .card.mob-card:has(.mob-savings-card)::before,
  .card.mob-card:has(.mob-goal-card)::before,
  .card.mob-card:has(.mob-nw-card)::before,
  .card.mob-card:has(.mob-crypto-card)::before,
  .card.mob-card:has(.mob-tracker-card)::before,
  .card.mob-card:has(.mob-counter-card)::before {
    background: radial-gradient(circle at 0% 100%, var(--da-cyan), transparent 55%) !important;
  }
  /* Health/Vitals/Workout/Pomodoro: red from top-center */
  .card.mob-card:has(.mob-vitals-card)::before,
  .card.mob-card:has(.mob-workout-card)::before,
  .card.mob-card:has(.mob-pomo-card)::before,
  .card.mob-card:has(.mob-loan-card)::before,
  .card.mob-card:has(.mob-pd-card)::before {
    background: radial-gradient(circle at 50% 0%, var(--da-red), transparent 55%) !important;
  }
  /* Quran/Steps/Plant/Checklist: green from various corners */
  .card.mob-card:has(.mob-quran-card)::before,
  .card.mob-card:has(.mob-plant-card)::before,
  .card.mob-card:has(.mob-checklist-card)::before {
    background: radial-gradient(circle at 50% 100%, var(--da-green), transparent 55%) !important;
  }
  /* Gold/Zakat/Book/Document: amber */
  .card.mob-card:has(.mob-gold-card)::before,
  .card.mob-card:has(.mob-zakat-card)::before,
  .card.mob-card:has(.mob-book-card)::before,
  .card.mob-card:has(.mob-doc-card)::before {
    background: radial-gradient(circle at 100% 50%, var(--da-amber), transparent 55%) !important;
  }
  /* Watchlist/Anime/Recipe: pink from right */
  .card.mob-card:has(.mob-watchlist-card)::before,
  .card.mob-card:has(.mob-recipe-card)::before,
  .card.mob-card:has(.mob-meals-card)::before,
  .card.mob-card:has(.mob-iou-card)::before,
  .card.mob-card:has(.mob-expense-card)::before {
    background: radial-gradient(circle at 100% 50%, var(--da-pink), transparent 55%) !important;
  }
  /* Status/WiFi/Vehicle/Medicine/Subscription: cyan */
  .card.mob-card:has(.mob-status-card)::before,
  .card.mob-card:has(.mob-wifi-card)::before,
  .card.mob-card:has(.mob-vehicle-card)::before,
  .card.mob-card:has(.mob-medicine-card)::before,
  .card.mob-card:has(.mob-sub-card)::before,
  .card.mob-card:has(.mob-meditation-card)::before,
  .card.mob-card:has(.mob-med-card)::before {
    background: radial-gradient(circle at 0% 50%, var(--da-cyan), transparent 55%) !important;
  }
  /* Note/Markdown/Code/Link: violet from various */
  .card.mob-card:has(.mob-note-card)::before,
  .card.mob-card:has(.mob-markdown-card)::before,
  .card.mob-card:has(.mob-code-card)::before,
  .card.mob-card:has(.mob-link-card)::before,
  .card.mob-card:has(.mob-linkgroup-card)::before,
  .card.mob-card:has(.mob-lg-card)::before,
  .card.mob-card:has(.mob-quicktext-card)::before,
  .card.mob-card:has(.mob-quote-card)::before,
  .card.mob-card:has(.mob-language-card)::before,
  .card.mob-card:has(.mob-lang-card)::before,
  .card.mob-card:has(.mob-course-card)::before,
  .card.mob-card:has(.mob-podcast-card)::before,
  .card.mob-card:has(.mob-pod-card)::before,
  .card.mob-card:has(.mob-playlist-card)::before,
  .card.mob-card:has(.mob-pl-card)::before,
  .card.mob-card:has(.mob-page-card)::before,
  .card.mob-card:has(.mob-fields-card)::before,
  .card.mob-card:has(.mob-password-card)::before,
  .card.mob-card:has(.mob-project-card)::before,
  .card.mob-card:has(.mob-inbox-card)::before,
  .card.mob-card:has(.mob-week-card)::before,
  .card.mob-card:has(.mob-review-card)::before,
  .card.mob-card:has(.mob-journal-card)::before {
    background: radial-gradient(circle at 100% 0%, var(--da-violet), transparent 60%) !important;
  }

  /* ─── TYPOGRAPHY (per Direction A spec) ──────────────────────────────────── */
  .card.mob-card .mob-card-title {
    font-size: 15px !important;
    font-weight: 600 !important;
    color: var(--da-ink) !important;
    letter-spacing: -0.01em !important;
    -webkit-text-fill-color: var(--da-ink) !important;
    background: none !important;
  }
  .card.mob-card .mob-hero {
    margin: 8px 0 6px !important;
  }
  .card.mob-card .mob-hero-num,
  .card.mob-card .mob-hero-num.mob-hero-accent,
  .card.mob-card .mob-hero-accent {
    font-size: 48px !important;
    font-weight: 800 !important;
    letter-spacing: -0.035em !important;
    line-height: 0.95 !important;
    color: var(--da-ink) !important;
    background: none !important;
    -webkit-text-fill-color: var(--da-ink) !important;
    filter: none !important;
    text-shadow: none !important;
    font-variant-numeric: tabular-nums !important;
    font-family: var(--font-en, "Inter", system-ui, sans-serif) !important;
  }
  .card.mob-card .mob-hero-unit {
    font-size: 14px !important;
    font-weight: 500 !important;
    color: var(--da-ink-dim) !important;
    letter-spacing: -0.005em !important;
  }
  .card.mob-card .mob-card-time,
  .card.mob-card .mob-card-foot {
    color: var(--da-ink-mute) !important;
    border-top: none !important;
    font-size: 11px !important;
  }
  .card.mob-card .mob-stat-k {
    font-size: 10.5px !important;
    color: var(--da-ink-mute) !important;
    letter-spacing: 0.05em !important;
    text-transform: uppercase;
    font-weight: 600 !important;
  }
  .card.mob-card .mob-stat-v {
    font-size: 14px !important;
    color: var(--da-ink) !important;
    font-weight: 600 !important;
    font-variant-numeric: tabular-nums;
  }
  .card.mob-card .mob-note-line {
    font-size: 13px !important;
    color: var(--da-ink-dim) !important;
  }

  /* ─── ICON CHIP: gradient bg matching the card's accent color ────────────── */
  .card.mob-card .mob-card-icon {
    width: 36px !important;
    height: 36px !important;
    border-radius: 10px !important;
    background: linear-gradient(135deg,
      color-mix(in oklch, var(--da-violet) 50%, #000),
      color-mix(in oklch, var(--da-violet) 80%, #000)
    ) !important;
    border: 1px solid color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
    font-size: 18px !important;
    box-shadow: none !important;
  }
  .card.mob-card:has(.mob-stocks-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-green) 50%, #000), color-mix(in oklch, var(--da-green) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-green) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-birthday-card) .mob-card-icon,
  .card.mob-card:has(.mob-contact-card) .mob-card-icon,
  .card.mob-card:has(.mob-gift-card) .mob-card-icon,
  .card.mob-card:has(.mob-watchlist-card) .mob-card-icon,
  .card.mob-card:has(.mob-recipe-card) .mob-card-icon,
  .card.mob-card:has(.mob-meals-card) .mob-card-icon,
  .card.mob-card:has(.mob-iou-card) .mob-card-icon,
  .card.mob-card:has(.mob-expense-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-pink) 50%, #000), color-mix(in oklch, var(--da-pink) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-pink) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-fasting-card) .mob-card-icon,
  .card.mob-card:has(.mob-routine-card) .mob-card-icon,
  .card.mob-card:has(.mob-mood-card) .mob-card-icon,
  .card.mob-card:has(.mob-idea-card) .mob-card-icon,
  .card.mob-card:has(.mob-gold-card) .mob-card-icon,
  .card.mob-card:has(.mob-zakat-card) .mob-card-icon,
  .card.mob-card:has(.mob-book-card) .mob-card-icon,
  .card.mob-card:has(.mob-doc-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-amber) 50%, #000), color-mix(in oklch, var(--da-amber) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-savings-card) .mob-card-icon,
  .card.mob-card:has(.mob-goal-card) .mob-card-icon,
  .card.mob-card:has(.mob-nw-card) .mob-card-icon,
  .card.mob-card:has(.mob-crypto-card) .mob-card-icon,
  .card.mob-card:has(.mob-tracker-card) .mob-card-icon,
  .card.mob-card:has(.mob-counter-card) .mob-card-icon,
  .card.mob-card:has(.mob-status-card) .mob-card-icon,
  .card.mob-card:has(.mob-wifi-card) .mob-card-icon,
  .card.mob-card:has(.mob-vehicle-card) .mob-card-icon,
  .card.mob-card:has(.mob-medicine-card) .mob-card-icon,
  .card.mob-card:has(.mob-sub-card) .mob-card-icon,
  .card.mob-card:has(.mob-med-card) .mob-card-icon,
  .card.mob-card:has(.mob-quran-card) .mob-card-icon,
  .card.mob-card:has(.mob-plant-card) .mob-card-icon,
  .card.mob-card:has(.mob-checklist-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-cyan) 50%, #000), color-mix(in oklch, var(--da-cyan) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-vitals-card) .mob-card-icon,
  .card.mob-card:has(.mob-workout-card) .mob-card-icon,
  .card.mob-card:has(.mob-pomo-card) .mob-card-icon,
  .card.mob-card:has(.mob-loan-card) .mob-card-icon,
  .card.mob-card:has(.mob-pd-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-red) 50%, #000), color-mix(in oklch, var(--da-red) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-red) 40%, transparent) !important;
  }
  /* Violet icon group */
  .card.mob-card:has(.mob-code-card) .mob-card-icon,
  .card.mob-card:has(.mob-countdown-card) .mob-card-icon,
  .card.mob-card:has(.mob-course-card) .mob-card-icon,
  .card.mob-card:has(.mob-inbox-card) .mob-card-icon,
  .card.mob-card:has(.mob-lg-card) .mob-card-icon,
  .card.mob-card:has(.mob-markdown-card) .mob-card-icon,
  .card.mob-card:has(.mob-page-card) .mob-card-icon,
  .card.mob-card:has(.mob-password-card) .mob-card-icon,
  .card.mob-card:has(.mob-pl-card) .mob-card-icon,
  .card.mob-card:has(.mob-pod-card) .mob-card-icon,
  .card.mob-card:has(.mob-project-card) .mob-card-icon,
  .card.mob-card:has(.mob-quote-card) .mob-card-icon,
  .card.mob-card:has(.mob-reminder-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-violet) 50%, #000), color-mix(in oklch, var(--da-violet) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
  /* Blue icon group */
  .card.mob-card:has(.mob-lang-card) .mob-card-icon,
  .card.mob-card:has(.mob-link-card) .mob-card-icon,
  .card.mob-card:has(.mob-meet-card) .mob-card-icon,
  .card.mob-card:has(.mob-review-card) .mob-card-icon,
  .card.mob-card:has(.mob-week-card) .mob-card-icon,
  .card.mob-card:has(.mob-fields-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-blue) 50%, #000), color-mix(in oklch, var(--da-blue) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-blue) 40%, transparent) !important;
  }
  /* Amber icon — journal */
  .card.mob-card:has(.mob-journal-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-amber) 50%, #000), color-mix(in oklch, var(--da-amber) 80%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
  }
  /* Teal icon group */
  .card.mob-card:has(.mob-chore-card) .mob-card-icon,
  .card.mob-card:has(.mob-quicktext-card) .mob-card-icon,
  .card.mob-card:has(.mob-trip-card) .mob-card-icon {
    background: linear-gradient(135deg, color-mix(in oklch, var(--da-cyan) 60%, #000), color-mix(in oklch, var(--da-cyan) 85%, #000)) !important;
    border-color: color-mix(in oklch, var(--da-cyan) 45%, transparent) !important;
  }
  /* Neutral icon group */
  .card.mob-card:has(.mob-note-card) .mob-card-icon,
  .card.mob-card:has(.mob-appliance-card) .mob-card-icon {
    background: linear-gradient(135deg, rgba(100,116,139,0.5), rgba(100,116,139,0.8)) !important;
    border-color: rgba(100,116,139,0.35) !important;
  }

  /* ─── PILLS — Direction A solid + faint pattern ──────────────────────────── */
  .card.mob-card .mob-pill {
    padding: 4px 10px !important;
    border-radius: 999px !important;
    font-family: var(--font-en, "Inter", system-ui) !important;
    font-weight: 600 !important;
    font-size: 11px !important;
    letter-spacing: 0.01em !important;
    font-variant-numeric: tabular-nums;
    background: color-mix(in oklch, var(--da-violet) 18%, transparent) !important;
    color: var(--da-violet) !important;
    border: 1px solid color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
    text-shadow: none !important;
  }
  .card.mob-card .mob-pill-success {
    background: color-mix(in oklch, var(--da-green) 18%, transparent) !important;
    color: var(--da-green) !important;
    border-color: color-mix(in oklch, var(--da-green) 40%, transparent) !important;
  }
  .card.mob-card .mob-pill-danger {
    background: color-mix(in oklch, var(--da-red) 18%, transparent) !important;
    color: var(--da-red) !important;
    border-color: color-mix(in oklch, var(--da-red) 40%, transparent) !important;
  }
  .card.mob-card .mob-pill-warning {
    background: color-mix(in oklch, var(--da-amber) 18%, transparent) !important;
    color: var(--da-amber) !important;
    border-color: color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
  }
  .card.mob-card .mob-pill-muted {
    background: rgba(255, 255, 255, 0.05) !important;
    color: var(--da-ink-mute) !important;
    border-color: rgba(255, 255, 255, 0.08) !important;
  }

  /* ─── PROGRESS BAR — slim, color-mixed track ─────────────────────────────── */
  .card.mob-card .mob-progress-bar {
    height: 4px !important;
    border-radius: 2px !important;
    background: rgba(255, 255, 255, 0.08) !important;
    box-shadow: none !important;
  }
  .card.mob-card .mob-progress-fill {
    background: var(--da-violet) !important;
    box-shadow: none !important;
    border-radius: 2px;
  }
  .card.mob-card:has(.mob-quran-card) .mob-progress-fill,
  .card.mob-card:has(.mob-checklist-card) .mob-progress-fill { background: var(--da-green) !important; }
  .card.mob-card:has(.mob-savings-card) .mob-progress-fill,
  .card.mob-card:has(.mob-goal-card) .mob-progress-fill,
  .card.mob-card:has(.mob-tracker-card) .mob-progress-fill { background: var(--da-cyan) !important; }
  .card.mob-card:has(.mob-pomo-card) .mob-progress-fill { background: var(--da-red) !important; }
  .card.mob-card:has(.mob-gold-card) .mob-progress-fill,
  .card.mob-card:has(.mob-book-card) .mob-progress-fill,
  .card.mob-card:has(.mob-expense-card) .mob-progress-fill,
  .card.mob-card:has(.mob-course-card) .mob-progress-fill,
  .card.mob-card:has(.mob-inbox-card) .mob-progress-fill { background: var(--da-amber) !important; }
  .card.mob-card:has(.mob-counter-card) .mob-progress-fill { background: var(--da-cyan) !important; }
  .card.mob-card:has(.mob-workout-card) .mob-progress-fill,
  .card.mob-card:has(.mob-routine-card) .mob-progress-fill,
  .card.mob-card:has(.mob-meals-card) .mob-progress-fill,
  .card.mob-card:has(.mob-chore-card) .mob-progress-fill,
  .card.mob-card:has(.mob-plant-card) .mob-progress-fill { background: var(--da-green) !important; }
  .card.mob-card:has(.mob-loan-card) .mob-progress-fill { background: var(--da-red) !important; }
  .card.mob-card:has(.mob-med-card) .mob-progress-fill { background: var(--da-violet) !important; }
  .card.mob-card:has(.mob-gift-card) .mob-progress-fill { background: var(--da-pink) !important; }
  .card.mob-card:has(.mob-trip-card) .mob-progress-fill { background: var(--da-blue) !important; }
  .card.mob-card:has(.mob-project-card) .mob-progress-fill { background: var(--da-violet) !important; }
  .card.mob-card:has(.mob-review-card) .mob-progress-fill { background: var(--da-cyan) !important; }
  .card.mob-card .mob-progress-bar.mob-bar-done .mob-progress-fill { background: var(--da-green) !important; }

  /* ─── STAT STRIP — minimal divider ───────────────────────────────────────── */
  .card.mob-card .mob-stat-strip {
    border-top: 1px solid var(--da-card-edge) !important;
    padding-top: 10px !important;
    margin-top: 6px !important;
    gap: 0 !important;
  }
  .card.mob-card .mob-stat {
    border-inline-start: 1px solid var(--da-card-edge) !important;
    padding: 0 10px !important;
  }
  .card.mob-card .mob-stat:first-child {
    border-inline-start: none !important;
    padding-inline-start: 0 !important;
  }

  /* ─── CTA BUTTON inside cards ────────────────────────────────────────────── */
  .card.mob-card .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    color: #fff !important;
    border: none !important;
    border-radius: 12px !important;
    padding: 10px 14px !important;
    font-weight: 700 !important;
    font-family: var(--font-ar) !important;
    font-size: 13px !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-pomo-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-red), color-mix(in oklch, var(--da-red) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-red) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-quran-card) .mob-counter-btn,
  .card.mob-card:has(.mob-plant-card) .mob-counter-btn,
  .card.mob-card:has(.mob-fasting-card) .mob-counter-btn,
  .card.mob-card:has(.mob-chore-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-green), color-mix(in oklch, var(--da-green) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-green) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-vitals-card) .mob-counter-btn,
  .card.mob-card:has(.mob-loan-card) .mob-counter-btn,
  .card.mob-card:has(.mob-watchlist-card) .mob-counter-btn,
  .card.mob-card:has(.mob-vehicle-card) .mob-counter-btn,
  .card.mob-card:has(.mob-pd-card) .mob-counter-btn,
  .card.mob-card:has(.mob-workout-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-red), color-mix(in oklch, var(--da-red) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-red) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-gold-card) .mob-counter-btn,
  .card.mob-card:has(.mob-zakat-card) .mob-counter-btn,
  .card.mob-card:has(.mob-crypto-card) .mob-counter-btn,
  .card.mob-card:has(.mob-iou-card) .mob-counter-btn,
  .card.mob-card:has(.mob-appliance-card) .mob-counter-btn,
  .card.mob-card:has(.mob-expense-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-amber), color-mix(in oklch, var(--da-amber) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
    color: #0f0e0a !important;
  }
  .card.mob-card:has(.mob-savings-card) .mob-counter-btn,
  .card.mob-card:has(.mob-med-card) .mob-counter-btn,
  .card.mob-card:has(.mob-meals-card) .mob-counter-btn,
  .card.mob-card:has(.mob-counter-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-cyan), color-mix(in oklch, var(--da-cyan) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-gift-card) .mob-counter-btn,
  .card.mob-card:has(.mob-birthday-card) .mob-counter-btn,
  .card.mob-card:has(.mob-journal-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-pink), color-mix(in oklch, var(--da-pink) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-pink) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-meet-card) .mob-counter-btn,
  .card.mob-card:has(.mob-lang-card) .mob-counter-btn,
  .card.mob-card:has(.mob-week-card) .mob-counter-btn,
  .card.mob-card:has(.mob-review-card) .mob-counter-btn,
  .card.mob-card:has(.mob-pl-card) .mob-counter-btn,
  .card.mob-card:has(.mob-podcast-card) .mob-counter-btn,
  .card.mob-card:has(.mob-pod-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-blue), color-mix(in oklch, var(--da-blue) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-blue) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-routine-card) .mob-counter-btn,
  .card.mob-card:has(.mob-trip-card) .mob-counter-btn,
  .card.mob-card:has(.mob-checklist-card) .mob-counter-btn,
  .card.mob-card:has(.mob-nw-card) .mob-counter-btn,
  .card.mob-card:has(.mob-goal-card) .mob-counter-btn,
  .card.mob-card:has(.mob-stocks-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-green), color-mix(in oklch, var(--da-green) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-green) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-recipe-card) .mob-counter-btn,
  .card.mob-card:has(.mob-idea-card) .mob-counter-btn,
  .card.mob-card:has(.mob-mood-card) .mob-counter-btn,
  .card.mob-card:has(.mob-book-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-amber), color-mix(in oklch, var(--da-amber) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
    color: #0f0e0a !important;
  }
  .card.mob-card:has(.mob-project-card) .mob-counter-btn,
  .card.mob-card:has(.mob-inbox-card) .mob-counter-btn,
  .card.mob-card:has(.mob-course-card) .mob-counter-btn,
  .card.mob-card:has(.mob-reminder-card) .mob-counter-btn,
  .card.mob-card:has(.mob-password-card) .mob-counter-btn,
  .card.mob-card:has(.mob-markdown-card) .mob-counter-btn,
  .card.mob-card:has(.mob-code-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-status-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-cyan), color-mix(in oklch, var(--da-cyan) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
  }
  .card.mob-card:has(.mob-sub-card) .mob-counter-btn,
  .card.mob-card:has(.mob-doc-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-amber), color-mix(in oklch, var(--da-amber) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
    color: #0f0e0a !important;
  }
  .card.mob-card:has(.mob-countdown-card) .mob-counter-btn,
  .card.mob-card:has(.mob-link-card) .mob-counter-btn,
  .card.mob-card:has(.mob-lg-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-blue), color-mix(in oklch, var(--da-blue) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-blue) 40%, transparent) !important;
  }

  /* ─── FLOATING BOTTOM NAV — pill shape with backdrop blur ────────────────── */
  .mobile-bottom-nav {
    position: fixed !important;
    inset-block-end: calc(14px + env(safe-area-inset-bottom, 0px)) !important;
    inset-inline: 14px !important;
    height: auto !important;
    padding: 8px 14px !important;
    border-radius: 24px !important;
    background: rgba(20, 16, 30, 0.78) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    backdrop-filter: blur(20px) saturate(160%) !important;
    -webkit-backdrop-filter: blur(20px) saturate(160%) !important;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.5) !important;
    border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
    gap: 4px !important;
    align-items: center !important;
  }
  .mob-nav-btn {
    color: rgba(255, 255, 255, 0.45) !important;
    flex: 1 !important;
    padding: 6px 4px !important;
    gap: 3px !important;
  }
  .mob-nav-btn svg { width: 22px !important; height: 22px !important; }
  .mob-nav-btn.active {
    color: var(--da-violet) !important;
  }
  .mob-nav-btn.active::after { display: none !important; }  /* kill old underline */
  .mob-nav-btn.active svg {
    filter: drop-shadow(0 4px 10px color-mix(in oklch, var(--da-violet) 50%, transparent));
  }
  .mob-nav-btn span {
    font-size: 10px !important;
    font-weight: 600 !important;
  }
  .mob-nav-btn.active span { font-weight: 700 !important; }

  /* Center "+" button: gradient pill, glowing */
  .mob-nav-btn.mob-nav-add {
    flex: 0 0 auto !important;
    width: 44px !important;
    height: 44px !important;
    border-radius: 14px !important;
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 20px color-mix(in oklch, var(--da-violet) 50%, transparent) !important;
    margin: 0 4px !important;
  }
  .mob-nav-btn.mob-nav-add svg {
    width: 22px !important;
    height: 22px !important;
    color: #fff !important;
    margin: 0 !important;
  }

  /* ─── TOP BAR: round buttons with backdrop-blur ──────────────────────────── */
  .mob-top-bar {
    padding: 12px 16px 10px !important;
  }
  .mob-top-btn,
  .mob-top-bar .mob-top-logo.mob-top-avatar {
    width: 36px !important;
    height: 36px !important;
    border-radius: 12px !important;
    background: rgba(30, 25, 42, 0.6) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    backdrop-filter: blur(10px) !important;
    -webkit-backdrop-filter: blur(10px) !important;
    color: rgba(255, 255, 255, 0.7) !important;
  }
  .mob-top-bar .mob-top-logo.mob-top-avatar { width: 36px !important; height: 36px !important; }

  /* ─── Goal Progress widget — adopt Direction A vibe ──────────────────────── */
  .mob-goal-progress-card {
    background: var(--da-card) !important;
    border: 1px solid var(--da-card-edge) !important;
    border-radius: 28px !important;
    box-shadow:
      inset 0 1px 0 rgba(255, 255, 255, 0.04),
      0 24px 48px -24px rgba(0, 0, 0, 0.6) !important;
    padding: 18px !important;
    overflow: hidden;
  }
  .mob-goal-progress-card::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 0% 100%, var(--da-cyan), transparent 55%);
    opacity: 0.55;
    filter: blur(28px);
    pointer-events: none;
  }
  .mob-goal-progress-card > * { position: relative; z-index: 1; }
  .mob-goal-progress-card .mgp-title { color: var(--da-ink) !important; }
  .mob-goal-progress-card .mgp-stat { color: var(--da-ink) !important; }

  /* Reserve space at the bottom so floating nav doesn't cover the last card */
  .dash-grid {
    padding-bottom: 80px !important;
  }
}

/* Reduced motion: kill transitions */
@media (prefers-reduced-motion: reduce) and (max-width: 768px) {
  .card.mob-card,
  .card.mob-card::before,
  .mob-progress-fill { transition: none !important; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * VISUAL INTENSITY PASS — make the upgrade impossible to miss.
 * Bigger hero numbers, gradient by default, glowing left edge on every card,
 * subtle per-type color tint on the background.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* HERO: massive, gradient default, with glow halo behind it */
  .card.mob-card .mob-hero {
    margin: 10px 0 6px !important;
    position: relative;
  }
  .card.mob-card .mob-hero-num {
    font-size: 60px !important;
    font-weight: 800 !important;
    letter-spacing: -0.045em !important;
    line-height: 0.95 !important;
    background: linear-gradient(135deg, #ffffff 0%, #d8dcec 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    text-shadow: none !important;
    filter: drop-shadow(0 4px 18px rgba(167, 139, 250, 0.25));
  }
  /* Accent variant overrides default white-ish gradient with vibrant color */
  .card.mob-card .mob-hero-num.mob-hero-accent,
  .card.mob-card .mob-hero-accent {
    background: linear-gradient(135deg, #a78bfa 0%, #818cf8 50%, #60a5fa 100%) !important;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent !important;
    filter: drop-shadow(0 4px 18px rgba(99, 102, 241, 0.45));
  }
  .card.mob-card .mob-hero-unit {
    font-size: 13.5px !important;
    color: rgba(255, 255, 255, 0.55) !important;
    font-weight: 600;
  }

  /* LEFT-EDGE STRIPE — using box-shadow inset (always visible, never clipped).
   * Default = violet for any card without a per-type override below. */
  .card.mob-card {
    box-shadow:
      inset 4px 0 0 0 #818cf8,
      0 1px 0 rgba(255, 255, 255, 0.05) inset,
      0 12px 28px rgba(0, 0, 0, 0.45),
      0 2px 6px rgba(0, 0, 0, 0.35) !important;
  }

  /* Per-type stripe colors — covers ALL card types (legacy + new) */
  .card.mob-card:has(.mob-stocks-card)    { box-shadow: inset 4px 0 0 0 #22c55e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-birthday-card)  { box-shadow: inset 4px 0 0 0 #ec4899, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-book-card)      { box-shadow: inset 4px 0 0 0 #f59e0b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-watchlist-card) { box-shadow: inset 4px 0 0 0 #ef4444, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-password-card)  { box-shadow: inset 4px 0 0 0 #64748b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-status-card)    { box-shadow: inset 4px 0 0 0 #06b6d4, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-note-card)      { box-shadow: inset 4px 0 0 0 #6366f1, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-checklist-card) { box-shadow: inset 4px 0 0 0 #22c55e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-reminder-card)  { box-shadow: inset 4px 0 0 0 #f59e0b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-countdown-card) { box-shadow: inset 4px 0 0 0 #f43f5e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-sub-card)       { box-shadow: inset 4px 0 0 0 #06b6d4, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-expense-card)   { box-shadow: inset 4px 0 0 0 #f97316, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-tracker-card)   { box-shadow: inset 4px 0 0 0 #8b5cf6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-counter-card)   { box-shadow: inset 4px 0 0 0 #14b8a6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-doc-card)        { box-shadow: inset 4px 0 0 0 #fbbf24, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-vehicle-card)   { box-shadow: inset 4px 0 0 0 #3b82f6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-medicine-card)  { box-shadow: inset 4px 0 0 0 #06b6d4, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-routine-card)   { box-shadow: inset 4px 0 0 0 #22c55e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-wifi-card)      { box-shadow: inset 4px 0 0 0 #14b8a6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-contact-card)   { box-shadow: inset 4px 0 0 0 #a78bfa, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-code-card)      { box-shadow: inset 4px 0 0 0 #64748b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-link-card)      { box-shadow: inset 4px 0 0 0 #818cf8, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-quran-card)     { box-shadow: inset 4px 0 0 0 #10b981, 0 12px 28px rgba(0,0,0,0.45), 0 0 14px rgba(16,185,129,0.25) !important; }
  .card.mob-card:has(.mob-zakat-card)     { box-shadow: inset 4px 0 0 0 #fbbf24, 0 12px 28px rgba(0,0,0,0.45), 0 0 14px rgba(251,191,36,0.2) !important; }
  .card.mob-card:has(.mob-fasting-card)   { box-shadow: inset 4px 0 0 0 #6366f1, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-iou-card)       { box-shadow: inset 4px 0 0 0 #f97316, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-savings-card)   { box-shadow: inset 4px 0 0 0 #22d3ee, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-gold-card)      { box-shadow: inset 4px 0 0 0 #fbbf24, 0 12px 28px rgba(0,0,0,0.45), 0 0 14px rgba(251,191,36,0.25) !important; }
  .card.mob-card:has(.mob-pomo-card)      { box-shadow: inset 4px 0 0 0 #ef4444, 0 12px 28px rgba(0,0,0,0.45), 0 0 14px rgba(239,68,68,0.2) !important; }
  .card.mob-card:has(.mob-mood-card)      { box-shadow: inset 4px 0 0 0 #fbbf24, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-vitals-card)    { box-shadow: inset 4px 0 0 0 #f43f5e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-trip-card)      { box-shadow: inset 4px 0 0 0 #06b6d4, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-gift-card)      { box-shadow: inset 4px 0 0 0 #ec4899, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-chore-card)     { box-shadow: inset 4px 0 0 0 #06b6d4, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-appliance-card) { box-shadow: inset 4px 0 0 0 #94a3b8, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-project-card)   { box-shadow: inset 4px 0 0 0 #8b5cf6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-inbox-card)     { box-shadow: inset 4px 0 0 0 #64748b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-pd-card)        { box-shadow: inset 4px 0 0 0 #f59e0b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-nw-card)        { box-shadow: inset 4px 0 0 0 #a78bfa, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-workout-card)   { box-shadow: inset 4px 0 0 0 #ef4444, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-med-card)       { box-shadow: inset 4px 0 0 0 #a78bfa, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-course-card)    { box-shadow: inset 4px 0 0 0 #3b82f6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-lang-card)      { box-shadow: inset 4px 0 0 0 #14b8a6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-idea-card)      { box-shadow: inset 4px 0 0 0 #fbbf24, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-quote-card)     { box-shadow: inset 4px 0 0 0 #a78bfa, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-recipe-card)    { box-shadow: inset 4px 0 0 0 #f97316, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-goal-card)      { box-shadow: inset 4px 0 0 0 #8b5cf6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-meet-card)      { box-shadow: inset 4px 0 0 0 #3b82f6, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-loan-card)      { box-shadow: inset 4px 0 0 0 #ef4444, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-crypto-card)    { box-shadow: inset 4px 0 0 0 #f59e0b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-plant-card)     { box-shadow: inset 4px 0 0 0 #22c55e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-journal-card)   { box-shadow: inset 4px 0 0 0 #ec4899, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-week-card)      { box-shadow: inset 4px 0 0 0 #6366f1, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-review-card)    { box-shadow: inset 4px 0 0 0 #06b6d4, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-meals-card)     { box-shadow: inset 4px 0 0 0 #f97316, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-pod-card)       { box-shadow: inset 4px 0 0 0 #a78bfa, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-pl-card)        { box-shadow: inset 4px 0 0 0 #22c55e, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-fields-card)    { box-shadow: inset 4px 0 0 0 #94a3b8, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-quicktext-card) { box-shadow: inset 4px 0 0 0 #64748b, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-markdown-card)  { box-shadow: inset 4px 0 0 0 #818cf8, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-page-card)      { box-shadow: inset 4px 0 0 0 #a78bfa, 0 12px 28px rgba(0,0,0,0.45) !important; }
  .card.mob-card:has(.mob-linkgroup-card),
  .card.mob-card:has(.mob-lg-card)        { box-shadow: inset 4px 0 0 0 #3b82f6, 0 12px 28px rgba(0,0,0,0.45) !important; }

  /* Push content right of the stripe so text doesn't overlap it */
  .card.mob-card .mob-card-inner {
    padding-inline-start: 18px !important;
  }

  /* Card BG: subtle color tint per type via radial gradient — gives the card "personality" */
  .card.mob-card:has(.mob-stocks-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(34, 197, 94, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-birthday-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(236, 72, 153, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-quran-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(16, 185, 129, 0.12), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-gold-card),
  .card.mob-card:has(.mob-zakat-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(251, 191, 36, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-pomo-card),
  .card.mob-card:has(.mob-vitals-card),
  .card.mob-card:has(.mob-workout-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(239, 68, 68, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-savings-card),
  .card.mob-card:has(.mob-checklist-card),
  .card.mob-card:has(.mob-routine-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(34, 197, 94, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-trip-card),
  .card.mob-card:has(.mob-meet-card),
  .card.mob-card:has(.mob-status-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(6, 182, 212, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-iou-card),
  .card.mob-card:has(.mob-expense-card),
  .card.mob-card:has(.mob-recipe-card),
  .card.mob-card:has(.mob-meals-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(249, 115, 22, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-fasting-card),
  .card.mob-card:has(.mob-project-card),
  .card.mob-card:has(.mob-tracker-card),
  .card.mob-card:has(.mob-week-card),
  .card.mob-card:has(.mob-goal-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(99, 102, 241, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-loan-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(239, 68, 68, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-nw-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(167, 139, 250, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  /* ─── Polish 109: background tints for remaining card types ─── */
  .card.mob-card:has(.mob-book-card),
  .card.mob-card:has(.mob-reminder-card),
  .card.mob-card:has(.mob-mood-card),
  .card.mob-card:has(.mob-idea-card),
  .card.mob-card:has(.mob-crypto-card),
  .card.mob-card:has(.mob-doc-card),
  .card.mob-card:has(.mob-pd-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(245, 158, 11, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-vehicle-card),
  .card.mob-card:has(.mob-lg-card),
  .card.mob-card:has(.mob-course-card),
  .card.mob-card:has(.mob-meet-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(59, 130, 246, 0.09), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-note-card),
  .card.mob-card:has(.mob-markdown-card),
  .card.mob-card:has(.mob-link-card),
  .card.mob-card:has(.mob-code-card),
  .card.mob-card:has(.mob-page-card),
  .card.mob-card:has(.mob-password-card),
  .card.mob-card:has(.mob-quicktext-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(99, 102, 241, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-sub-card),
  .card.mob-card:has(.mob-wifi-card),
  .card.mob-card:has(.mob-chore-card),
  .card.mob-card:has(.mob-review-card),
  .card.mob-card:has(.mob-counter-card),
  .card.mob-card:has(.mob-lang-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(6, 182, 212, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-gift-card),
  .card.mob-card:has(.mob-journal-card),
  .card.mob-card:has(.mob-pod-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(236, 72, 153, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-contact-card),
  .card.mob-card:has(.mob-quote-card),
  .card.mob-card:has(.mob-med-card),
  .card.mob-card:has(.mob-inbox-card),
  .card.mob-card:has(.mob-fields-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(139, 92, 246, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-plant-card),
  .card.mob-card:has(.mob-pl-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(34, 197, 94, 0.08), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .card.mob-card:has(.mob-watchlist-card),
  .card.mob-card:has(.mob-countdown-card) {
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(239, 68, 68, 0.09), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }

  /* Card icon: bigger and slightly tinted per card */
  .card.mob-card .mob-card-icon {
    font-size: 22px !important;
    width: 40px !important;
    height: 40px !important;
    border-radius: 12px;
  }

  /* Pills: bigger and more prominent */
  .card.mob-card .mob-pill {
    padding: 5px 12px !important;
    font-size: 11.5px !important;
  }

  /* Add pulsing glow to the stripe on pinned cards */
  .card.mob-card.pinned-card::after {
    animation: mobStripePulse 2.4s ease-in-out infinite;
  }
  @keyframes mobStripePulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.55; }
  }
}

/* Mobile widget cards: final art direction pass inspired by the reference */
@media (max-width: 768px) {
  .main-content {
    background:
      radial-gradient(circle at 78% -8%, rgba(126, 87, 255, 0.14), transparent 32%),
      linear-gradient(180deg, #11101b 0%, #07070d 34%, #07070b 100%) !important;
  }

  .dash-grid {
    gap: 16px !important;
  }

  .card.mob-card {
    --mob-widget-accent: 129, 140, 248;
    min-height: 218px !important;
    border-radius: 30px !important;
    border: 1px solid rgba(var(--mob-widget-accent), 0.16) !important;
    background:
      radial-gradient(circle at 88% 20%, rgba(var(--mob-widget-accent), 0.16), transparent 38%),
      linear-gradient(145deg, rgba(17, 18, 24, 0.98), rgba(5, 5, 9, 0.99) 72%) !important;
    box-shadow:
      0 22px 44px rgba(0, 0, 0, 0.48),
      inset 0 1px 0 rgba(255, 255, 255, 0.05) !important;
    overflow: hidden !important;
    position: relative !important;
  }

  .card.mob-card::before {
    content: '' !important;
    position: absolute !important;
    inset: 0 auto 0 0 !important;
    width: 6px !important;
    border-radius: 30px 0 0 30px !important;
    background: linear-gradient(180deg, rgb(var(--mob-widget-accent)), rgba(var(--mob-widget-accent), 0.45)) !important;
    box-shadow: 0 0 24px rgba(var(--mob-widget-accent), 0.5) !important;
    opacity: 0.98 !important;
    pointer-events: none !important;
    z-index: 2 !important;
  }

  .card.mob-card::after {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.035), transparent 44%) !important;
    pointer-events: none !important;
    z-index: 0 !important;
  }

  .card.mob-card[data-type="stocks"],
  .card.mob-card:has(.mob-stocks-card) { --mob-widget-accent: 82, 226, 124; }
  .card.mob-card[data-type="reminder"],
  .card.mob-card:has(.mob-reminder-card),
  .card.mob-card[data-type="birthday"],
  .card.mob-card:has(.mob-birthday-card) { --mob-widget-accent: 244, 98, 173; }
  .card.mob-card[data-type="vehicle"],
  .card.mob-card:has(.mob-vehicle-card),
  .card.mob-card[data-type="document"],
  .card.mob-card:has(.mob-doc-card) { --mob-widget-accent: 251, 191, 36; }
  .card.mob-card[data-type="medicine"],
  .card.mob-card:has(.mob-med-card),
  .card.mob-card[data-type="status"],
  .card.mob-card:has(.mob-status-card) { --mob-widget-accent: 45, 212, 191; }
  .card.mob-card[data-type="link"],
  .card.mob-card:has(.mob-link-card),
  .card.mob-card[data-type="linkgroup"],
  .card.mob-card:has(.mob-lg-card),
  .card.mob-card[data-type="page"],
  .card.mob-card:has(.mob-page-card) { --mob-widget-accent: 139, 92, 246; }
  .card.mob-card[data-type="expense"],
  .card.mob-card:has(.mob-expense-card),
  .card.mob-card[data-type="subscription"],
  .card.mob-card:has(.mob-sub-card) { --mob-widget-accent: 249, 115, 22; }
  .card.mob-card[data-type="checklist"],
  .card.mob-card:has(.mob-checklist-card),
  .card.mob-card[data-type="routine"],
  .card.mob-card:has(.mob-routine-card),
  .card.mob-card[data-type="goal"],
  .card.mob-card:has(.mob-goal-card) { --mob-widget-accent: 34, 197, 94; }
  .card.mob-card[data-type="loan"],
  .card.mob-card:has(.mob-loan-card) { --mob-widget-accent: 239, 68, 68; }
  .card.mob-card[data-type="net_worth"],
  .card.mob-card:has(.mob-nw-card) { --mob-widget-accent: 167, 139, 250; }

  /* Amber/gold group */
  .card.mob-card:has(.mob-book-card)    { --mob-widget-accent: 245, 158, 11; }
  .card.mob-card:has(.mob-gold-card)    { --mob-widget-accent: 251, 191, 36; }
  .card.mob-card:has(.mob-recipe-card)  { --mob-widget-accent: 217, 119, 6; }
  .card.mob-card:has(.mob-meals-card)   { --mob-widget-accent: 249, 115, 22; }
  .card.mob-card:has(.mob-journal-card) { --mob-widget-accent: 217, 119, 6; }
  .card.mob-card:has(.mob-savings-card) { --mob-widget-accent: 34, 197, 94; }
  .card.mob-card:has(.mob-zakat-card)   { --mob-widget-accent: 202, 138, 4; }

  /* Red group */
  .card.mob-card:has(.mob-watchlist-card) { --mob-widget-accent: 239, 68, 68; }
  .card.mob-card:has(.mob-iou-card)       { --mob-widget-accent: 239, 68, 68; }
  .card.mob-card:has(.mob-pomo-card)      { --mob-widget-accent: 220, 38, 38; }

  /* Pink group */
  .card.mob-card:has(.mob-mood-card) { --mob-widget-accent: 236, 72, 153; }
  .card.mob-card:has(.mob-gift-card) { --mob-widget-accent: 244, 114, 182; }

  /* Green / health group */
  .card.mob-card:has(.mob-workout-card) { --mob-widget-accent: 21, 128, 61; }
  .card.mob-card:has(.mob-plant-card)   { --mob-widget-accent: 22, 163, 74; }

  /* Teal group */
  .card.mob-card:has(.mob-quran-card)     { --mob-widget-accent: 20, 184, 166; }
  .card.mob-card:has(.mob-fasting-card)   { --mob-widget-accent: 45, 212, 191; }
  .card.mob-card:has(.mob-chore-card)     { --mob-widget-accent: 13, 148, 136; }
  .card.mob-card:has(.mob-trip-card)      { --mob-widget-accent: 13, 148, 136; }
  .card.mob-card:has(.mob-quicktext-card) { --mob-widget-accent: 20, 184, 166; }

  /* Cyan group */
  .card.mob-card:has(.mob-wifi-card)   { --mob-widget-accent: 6, 182, 212; }
  .card.mob-card:has(.mob-vitals-card) { --mob-widget-accent: 8, 145, 178; }

  /* Sky / blue group */
  .card.mob-card:has(.mob-fields-card)  { --mob-widget-accent: 14, 165, 233; }
  .card.mob-card:has(.mob-tracker-card) { --mob-widget-accent: 14, 165, 233; }
  .card.mob-card:has(.mob-contact-card) { --mob-widget-accent: 16, 185, 129; }
  .card.mob-card:has(.mob-meet-card)    { --mob-widget-accent: 59, 130, 246; }
  .card.mob-card:has(.mob-review-card)  { --mob-widget-accent: 59, 130, 246; }
  .card.mob-card:has(.mob-week-card)    { --mob-widget-accent: 3, 105, 161; }
  .card.mob-card:has(.mob-lang-card)    { --mob-widget-accent: 37, 99, 235; }
  .card.mob-card:has(.mob-pd-card)      { --mob-widget-accent: 3, 105, 161; }
  .card.mob-card:has(.mob-pl-card)      { --mob-widget-accent: 29, 78, 216; }

  /* Indigo group */
  .card.mob-card:has(.mob-countdown-card) { --mob-widget-accent: 99, 102, 241; }
  .card.mob-card:has(.mob-counter-card)   { --mob-widget-accent: 79, 70, 229; }
  .card.mob-card:has(.mob-pod-card)       { --mob-widget-accent: 99, 102, 241; }
  .card.mob-card:has(.mob-crypto-card)    { --mob-widget-accent: 245, 158, 11; }

  /* Violet / purple group */
  .card.mob-card:has(.mob-password-card) { --mob-widget-accent: 124, 58, 237; }
  .card.mob-card:has(.mob-markdown-card) { --mob-widget-accent: 167, 139, 250; }
  .card.mob-card:has(.mob-quote-card)    { --mob-widget-accent: 167, 139, 250; }
  .card.mob-card:has(.mob-inbox-card)    { --mob-widget-accent: 139, 92, 246; }
  .card.mob-card:has(.mob-project-card)  { --mob-widget-accent: 124, 58, 237; }
  .card.mob-card:has(.mob-course-card)   { --mob-widget-accent: 139, 92, 246; }
  .card.mob-card:has(.mob-code-card)     { --mob-widget-accent: 99, 102, 241; }

  /* Neutral / slate group */
  .card.mob-card:has(.mob-note-card)      { --mob-widget-accent: 100, 116, 139; }
  .card.mob-card:has(.mob-appliance-card) { --mob-widget-accent: 71, 85, 105; }

  /* Idea — yellow */
  .card.mob-card:has(.mob-idea-card) { --mob-widget-accent: 234, 179, 8; }

  /* Remaining types */
  .card.mob-card:has(.mob-checklist-card) { --mob-widget-accent: 22, 163, 74; }
  .card.mob-card:has(.mob-reminder-card)  { --mob-widget-accent: 139, 92, 246; }
  .card.mob-card:has(.mob-expense-card)   { --mob-widget-accent: 249, 115, 22; }
  .card.mob-card:has(.mob-vehicle-card)   { --mob-widget-accent: 100, 116, 139; }
  .card.mob-card:has(.mob-med-card)       { --mob-widget-accent: 167, 139, 250; }
  .card.mob-card:has(.mob-routine-card)   { --mob-widget-accent: 20, 184, 166; }
  .card.mob-card:has(.mob-link-card)      { --mob-widget-accent: 59, 130, 246; }
  .card.mob-card:has(.mob-lg-card)        { --mob-widget-accent: 59, 130, 246; }

  .card.mob-card .mob-card-inner {
    min-height: 218px !important;
    height: 100% !important;
    padding: 24px 26px 18px 30px !important;
    gap: 14px !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: space-between !important;
    position: relative !important;
    z-index: 1 !important;
  }

  .card.mob-card .mob-card-header {
    direction: rtl !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-start !important;
    gap: 14px !important;
    min-height: 60px !important;
    padding: 0 !important;
  }

  .card.mob-card .mob-card-icon {
    width: 58px !important;
    height: 58px !important;
    min-width: 58px !important;
    border-radius: 19px !important;
    font-size: 28px !important;
    background:
      radial-gradient(circle at 35% 25%, rgba(255, 255, 255, 0.12), transparent 44%),
      rgba(255, 255, 255, 0.07) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
    box-shadow:
      0 12px 24px rgba(0, 0, 0, 0.34),
      inset 0 1px 0 rgba(255, 255, 255, 0.08) !important;
  }

  .card.mob-card .mob-card-title,
  .card.mob-card .mob-link-title {
    color: #f8fafc !important;
    font-size: 24px !important;
    font-weight: 900 !important;
    line-height: 1.15 !important;
    letter-spacing: 0 !important;
    text-align: right !important;
    white-space: normal !important;
    overflow-wrap: anywhere !important;
    text-shadow: 0 10px 26px rgba(0, 0, 0, 0.46) !important;
  }

  .card.mob-card .mob-pill {
    border-radius: 999px !important;
    padding: 8px 15px !important;
    font-size: 14px !important;
    font-weight: 900 !important;
    letter-spacing: 0 !important;
    color: rgb(var(--mob-widget-accent)) !important;
    border: 1px solid rgba(var(--mob-widget-accent), 0.38) !important;
    background: rgba(var(--mob-widget-accent), 0.12) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06) !important;
  }

  .card.mob-card .mob-pill-danger {
    color: #ff5a5a !important;
    border-color: rgba(255, 90, 90, 0.45) !important;
    background: rgba(255, 90, 90, 0.12) !important;
  }

  .card.mob-card .mob-pill-success {
    color: #4ade80 !important;
    border-color: rgba(74, 222, 128, 0.42) !important;
    background: rgba(74, 222, 128, 0.12) !important;
  }

  .card.mob-card .mob-hero {
    flex: 1 1 auto !important;
    min-height: 78px !important;
    margin: 4px 0 2px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    gap: 10px !important;
  }

  .card.mob-card .mob-hero-num,
  .card.mob-card .mob-hero-num.mob-hero-accent {
    font-size: 66px !important;
    line-height: 0.95 !important;
    font-weight: 950 !important;
    letter-spacing: 0 !important;
    color: #f8fafc !important;
    background: none !important;
    -webkit-text-fill-color: #f8fafc !important;
    text-shadow:
      0 0 22px rgba(var(--mob-widget-accent), 0.45),
      0 16px 34px rgba(0, 0, 0, 0.45) !important;
    filter: none !important;
    font-variant-numeric: tabular-nums !important;
  }

  .card.mob-card .mob-hero-unit {
    color: rgba(248, 250, 252, 0.9) !important;
    font-size: 24px !important;
    font-weight: 900 !important;
    letter-spacing: 0 !important;
  }

  .card.mob-card .mob-stat-strip,
  .card.mob-card .mob-stocks-list,
  .card.mob-card .mob-vehicle-list,
  .card.mob-card .mob-note-body {
    border-top: 1px solid rgba(255, 255, 255, 0.08) !important;
    margin-top: auto !important;
    padding-top: 14px !important;
  }

  .card.mob-card .mob-card-foot {
    min-height: 26px !important;
    margin-top: 0 !important;
    padding-top: 10px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.07) !important;
    justify-content: flex-end !important;
  }

  .card.mob-card .mob-card-time {
    color: rgba(255, 255, 255, 0.38) !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    letter-spacing: 0 !important;
  }

  .card.mob-card .mob-stocks-list {
    flex: 1 1 auto !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    gap: 10px !important;
    border-top: 0 !important;
    padding-top: 0 !important;
  }

  .card.mob-card .mob-stock-row {
    direction: ltr !important;
    display: flex !important;
    align-items: center !important;
    justify-content: flex-end !important;
    gap: 10px !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
  }

  .card.mob-card .mob-stock-row:first-child .mob-stock-sym,
  .card.mob-card .mob-stock-row:first-child .mob-stock-price {
    color: #f8fafc !important;
    font-size: 25px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
  }

  .card.mob-card .mob-stock-row:not(:first-child) {
    opacity: 0.55 !important;
    transform: scale(0.92);
    transform-origin: right center;
  }

  .card.mob-card .mob-stock-row:first-child .mob-pill {
    order: -1;
    min-width: 82px;
    justify-content: center;
  }

  .card.mob-card .mob-link-row {
    min-height: 166px !important;
    display: grid !important;
    grid-template-columns: 78px 1fr !important;
    grid-template-areas:
      "icon title"
      "icon domain";
    align-items: center !important;
    column-gap: 18px !important;
    direction: rtl !important;
    position: relative !important;
  }

  .card.mob-card .mob-link-fav,
  .card.mob-card .mob-link-fav-fallback {
    grid-area: icon !important;
    width: 78px !important;
    height: 78px !important;
    border-radius: 24px !important;
    font-size: 40px !important;
    opacity: 0.9 !important;
  }

  .card.mob-card .mob-link-text {
    grid-area: title !important;
    min-width: 0 !important;
  }

  .card.mob-card .mob-link-domain {
    grid-area: domain !important;
    color: rgba(255, 255, 255, 0.58) !important;
    font-size: 16px !important;
    font-weight: 700 !important;
    text-align: right !important;
  }

  .card.mob-card .mob-link-row > .mob-pill {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    min-width: 42px !important;
    height: 36px !important;
    padding: 0 12px !important;
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .card.mob-card .mob-stat {
    align-items: flex-end !important;
  }

  .card.mob-card .mob-stat-k {
    color: rgba(255, 255, 255, 0.44) !important;
    font-size: 12px !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
  }

  .card.mob-card .mob-stat-v {
    color: rgba(255, 255, 255, 0.9) !important;
    font-size: 16px !important;
    font-weight: 850 !important;
    letter-spacing: 0 !important;
  }

  .card.mob-card[data-type="birthday"],
  .card.mob-card[data-type="reminder"],
  .card.mob-card[data-type="stocks"] {
    min-height: 238px !important;
  }

  .add-card {
    min-height: 214px !important;
    border-radius: 28px !important;
    background: rgba(255, 255, 255, 0.035) !important;
    border: 1px solid rgba(255, 255, 255, 0.08) !important;
  }
}

@media (max-width: 380px) {
  .card.mob-card .mob-card-inner {
    padding: 22px 22px 16px 26px !important;
  }

  .card.mob-card .mob-card-title,
  .card.mob-card .mob-link-title {
    font-size: 21px !important;
  }

  .card.mob-card .mob-hero-num,
  .card.mob-card .mob-hero-num.mob-hero-accent {
    font-size: 56px !important;
  }

  .card.mob-card .mob-hero-unit {
    font-size: 20px !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
 * PRAYER-CARD STYLE FINAL — replaces Direction A "Rich Glow"
 *
 * Mirrors the existing prayer-times widget design (which the user explicitly
 * asked to clone): subtle gradient + cyan accent, NO aggressive glow halos.
 *
 * Pattern from .widget-card / .widget-prayer-next / .widget-prayer-row:
 *   · bg: linear-gradient(155deg, rgba(139,92,246,0.06), rgba(255,255,255,0.02)) over rgba(12,17,26,0.72)
 *   · border: 1px solid rgba(255,255,255,0.07)  (VERY subtle)
 *   · radius: 18px
 *   · hero zone: soft cyan→violet gradient with cyan border tint
 *   · active state: cyan #59d8ff
 *   · times: var(--font-mono) for tabular crispness
 *
 * Kill all previous: stripe, radial-glow ::before, oklch shell, etc.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ═══ KILL all previous mobile-card noise ═══ */
  .card.mob-card::before { display: none !important; }
  .card.mob-card::after  { display: none !important; }

  /* ═══ CARD SHELL — exact widget-card recipe ═══ */
  .card.mob-card {
    background:
      linear-gradient(155deg, rgba(139, 92, 246, 0.06), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    border-radius: 18px !important;
    box-shadow: none !important;
    overflow: hidden !important;
    transition: border-color 0.25s ease, transform 0.18s !important;
  }
  .card.mob-card:active {
    transform: scale(0.99);
    border-color: rgba(139, 92, 246, 0.22) !important;
  }
  /* Pinned cards: gentle violet edge highlight */
  .card.mob-card.pinned-card {
    border-color: rgba(139, 92, 246, 0.22) !important;
    box-shadow: 0 0 0 1px rgba(139, 92, 246, 0.15) !important;
  }

  /* ═══ INNER — clean padding, no z-index needed (no ::before glow) ═══ */
  .card.mob-card .mob-card-inner {
    padding: 14px 16px 16px !important;
    gap: 12px !important;
    z-index: auto !important;
  }

  /* ═══ HEADER (mirrors .widget-head) ═══ */
  .card.mob-card .mob-card-header {
    padding-bottom: 8px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    gap: 8px !important;
  }
  .card.mob-card .mob-card-icon {
    font-size: 1.15rem !important;
    width: auto !important;
    height: auto !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
  }
  .card.mob-card .mob-card-title {
    font-family: var(--font-ar) !important;
    font-weight: 700 !important;
    font-size: 0.88rem !important;
    color: var(--text) !important;
    -webkit-text-fill-color: var(--text) !important;
    background: none !important;
    letter-spacing: 0 !important;
    flex: 1;
  }
  /* Pill on the START side (e.g. "Kuwait City" equivalent — status/age/streak chip) */
  .card.mob-card .mob-pill {
    font-size: 0.68rem !important;
    color: rgba(232, 238, 247, 0.5) !important;
    font-family: var(--font-ar) !important;
    font-weight: 500 !important;
    padding: 3px 8px !important;
    border-radius: 10px !important;
    background: rgba(255, 255, 255, 0.04) !important;
    border: none !important;
    text-shadow: none !important;
    letter-spacing: 0 !important;
  }
  /* Tone pills keep a faint color hint */
  .card.mob-card .mob-pill-success {
    color: #5eead4 !important;
    background: rgba(94, 234, 212, 0.08) !important;
  }
  .card.mob-card .mob-pill-warning {
    color: #fbbf24 !important;
    background: rgba(251, 191, 36, 0.08) !important;
  }
  .card.mob-card .mob-pill-danger {
    color: #f87171 !important;
    background: rgba(248, 113, 113, 0.08) !important;
  }
  .card.mob-card .mob-pill-muted {
    color: rgba(232, 238, 247, 0.5) !important;
    background: rgba(255, 255, 255, 0.04) !important;
  }

  /* ═══ HERO ZONE (mirrors .widget-prayer-next) ═══
   * The big number + unit gets wrapped in a subtle rounded panel with
   * cyan→violet gradient and a cyan border. Same vibe as the "الفجر 03:39"
   * "next prayer" panel. */
  .card.mob-card .mob-hero {
    padding: 12px 14px !important;
    background: linear-gradient(135deg, rgba(89, 216, 255, 0.10), rgba(139, 92, 246, 0.08)) !important;
    border: 1px solid rgba(89, 216, 255, 0.15) !important;
    border-radius: 12px !important;
    margin: 4px 0 6px !important;
    align-items: baseline !important;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 8px !important;
  }
  .card.mob-card .mob-hero-num,
  .card.mob-card .mob-hero-num.mob-hero-accent,
  .card.mob-card .mob-hero-accent {
    font-family: var(--font-mono, "JetBrains Mono", "SF Mono", monospace) !important;
    font-weight: 700 !important;
    font-size: 2rem !important;
    line-height: 1 !important;
    color: #59d8ff !important;          /* cyan accent — exact prayer time color */
    background: none !important;
    -webkit-text-fill-color: #59d8ff !important;
    text-shadow: none !important;
    filter: none !important;
    letter-spacing: -0.01em !important;
    font-variant-numeric: tabular-nums !important;
  }
  .card.mob-card .mob-hero-unit {
    font-family: var(--font-ar) !important;
    font-weight: 800 !important;
    font-size: 1.1rem !important;
    color: var(--text) !important;
    -webkit-text-fill-color: var(--text) !important;
    margin-inline-end: 8px;
  }

  /* ═══ STAT STRIP / TILES (mirrors .widget-prayer-list grid) ═══ */
  .card.mob-card .mob-stat-strip {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 6px !important;
    border-top: none !important;
    padding-top: 0 !important;
    margin-top: 4px !important;
  }
  .card.mob-card .mob-stat {
    flex: unset !important;
    flex-direction: column !important;
    align-items: center !important;
    padding: 6px 4px !important;
    background: rgba(255, 255, 255, 0.02) !important;
    border: 1px solid transparent !important;
    border-radius: 8px !important;
    gap: 2px !important;
  }
  .card.mob-card .mob-stat-k {
    font-family: var(--font-ar) !important;
    font-weight: 600 !important;
    color: rgba(232, 238, 247, 0.7) !important;
    font-size: 0.72rem !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
  }
  .card.mob-card .mob-stat-v {
    font-family: var(--font-mono) !important;
    color: var(--text) !important;
    font-weight: 700 !important;
    font-size: 0.85rem !important;
    font-variant-numeric: tabular-nums;
  }

  /* ═══ PROGRESS BAR — quiet ═══ */
  .card.mob-card .mob-progress-bar {
    height: 4px !important;
    border-radius: 2px !important;
    background: rgba(255, 255, 255, 0.05) !important;
    box-shadow: none !important;
  }
  .card.mob-card .mob-progress-fill {
    background: #59d8ff !important;
    box-shadow: none !important;
  }
  .card.mob-card .mob-progress-bar.mob-bar-warn .mob-progress-fill { background: #fbbf24 !important; }
  .card.mob-card .mob-progress-bar.mob-bar-over .mob-progress-fill { background: #f87171 !important; }

  /* ═══ CTA BUTTON — match the "بعد 3س 16د" subtle cyan-violet vibe ═══ */
  .card.mob-card .mob-counter-btn {
    background: linear-gradient(135deg, rgba(89, 216, 255, 0.18), rgba(139, 92, 246, 0.15)) !important;
    border: 1px solid rgba(89, 216, 255, 0.25) !important;
    color: #59d8ff !important;
    border-radius: 10px !important;
    padding: 10px 14px !important;
    font-family: var(--font-ar) !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    box-shadow: none !important;
    letter-spacing: 0 !important;
  }
  .card.mob-card .mob-counter-btn:active { transform: scale(0.97); }
  .card.mob-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, rgba(89, 216, 255, 0.20), rgba(139, 92, 246, 0.18)) !important;
    color: #59d8ff !important;
    border-color: rgba(89, 216, 255, 0.30) !important;
  }

  /* ═══ FOOTER (timestamp) — quiet ═══ */
  .card.mob-card .mob-card-foot {
    border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
    padding-top: 8px !important;
    margin-top: 4px;
    color: rgba(232, 238, 247, 0.42) !important;
    font-size: 0.72rem !important;
  }
  .card.mob-card .mob-card-time { color: rgba(232, 238, 247, 0.42) !important; font-size: 0.72rem !important; }

  /* ═══ NOTE LINES inside cards — quiet ═══ */
  .card.mob-card .mob-note-line {
    color: rgba(232, 238, 247, 0.7) !important;
    font-size: 0.85rem !important;
  }
  .card.mob-card .mob-note-empty {
    color: rgba(232, 238, 247, 0.35) !important;
  }

  /* ═══ Goal Progress widget — adopt the same calm style ═══ */
  .mob-goal-progress-card {
    background:
      linear-gradient(155deg, rgba(89, 216, 255, 0.06), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    border-radius: 18px !important;
    box-shadow: none !important;
  }
  .mob-goal-progress-card::before { display: none !important; }
  .mob-goal-progress-card .mgp-stat { color: #59d8ff !important; }

  /* ═══ Smart Feed control chip (top of home page) ═══ */
  .mob-sf-chip-row {
    display: flex;
    gap: 8px;
    margin: 0 0 12px;
    align-items: center;
  }
  .mob-sf-chip,
  .mob-sf-hidden-chip {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 14px;
    border-radius: 14px;
    background:
      linear-gradient(155deg, rgba(89, 216, 255, 0.07), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72);
    border: 1px solid rgba(89, 216, 255, 0.18);
    color: var(--text);
    font-family: var(--font-ar);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: border-color 0.2s, transform 0.1s;
  }
  .mob-sf-chip:active,
  .mob-sf-hidden-chip:active { transform: scale(0.98); }
  .mob-sf-chip.is-off {
    background:
      linear-gradient(155deg, rgba(139, 92, 246, 0.07), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72);
    border-color: rgba(139, 92, 246, 0.22);
  }
  .mob-sf-ico { font-size: 1.05rem; }
  .mob-sf-lbl { flex: 1; text-align: start; color: var(--text); }
  .mob-sf-state {
    font-size: 0.66rem;
    color: rgba(232, 238, 247, 0.5);
    font-weight: 500;
    background: rgba(255, 255, 255, 0.04);
    padding: 2px 8px;
    border-radius: 8px;
  }
  .mob-sf-hidden-chip {
    flex: 0 0 auto;
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(255, 255, 255, 0.07);
    color: rgba(232, 238, 247, 0.7);
    font-size: 0.72rem;
  }

  /* ═══ Mob-sheet Pin / Hide tile buttons ═══ */
  .mob-sheet-row {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr;
    gap: 8px;
    margin-top: 8px;
    padding: 0 14px;
  }
  .msb-tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 12px 10px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.06);
    border-radius: 12px;
    color: rgba(232, 238, 247, 0.85);
    font-family: var(--font-ar);
    font-weight: 600;
    font-size: 0.78rem;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s, border-color 0.15s;
  }
  .msb-tile:active { transform: scale(0.96); }
  .msb-tile-ico { font-size: 1.2rem; }
  .msb-tile-lbl { font-size: 0.74rem; }
  .msb-tile.is-active {
    background: rgba(89, 216, 255, 0.10);
    border-color: rgba(89, 216, 255, 0.30);
    color: #59d8ff;
  }

  /* ════════════════════════════════════════════════════════════════════════
   * BIRTHDAY CARD — Person1 design (rich-glow recipe just for this type)
   * Pink radial glow at top-start corner, big tabular number + age pill +
   * 7-bar countdown. Overrides the universal prayer-style for this card only.
   * ════════════════════════════════════════════════════════════════════════ */

  /* Restore a colored glow halo just for the birthday card.
   * Match Person1 exact recipe: pink at 0% 0% (top-start), 55% spread,
   * opacity 0.55 (Card.glow style), blur(28px). */
  .card.mob-card:has(.mob-birthday-card) {
    overflow: hidden !important;
    position: relative !important;
    /* Slightly bigger min-height so the layout breathes (Person1 spec h=200) */
    min-height: 168px !important;
    background:
      linear-gradient(155deg, rgba(244, 114, 182, 0.05), rgba(255, 255, 255, 0.015)),
      rgba(12, 10, 18, 0.92) !important;
    border: 1px solid rgba(255, 255, 255, 0.05) !important;
    border-radius: 22px !important;
  }
  .card.mob-card:has(.mob-birthday-card)::before {
    content: '' !important;
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    background: radial-gradient(circle at 0% 0%, #f472b6, transparent 55%) !important;
    opacity: 0.55 !important;
    filter: blur(28px) !important;
    pointer-events: none !important;
    z-index: 0 !important;
  }
  /* Force inner padding to match Person1 (18px) and stack as flex column */
  .card.mob-card:has(.mob-birthday-card) .mob-card-inner {
    padding: 20px !important;
    gap: 0 !important;
  }
  .mob-birthday-card {
    position: relative;
    z-index: 1;
    height: 100%;
    display: flex !important;
    flex-direction: column !important;
  }

  /* ── Header row: title+sub on the start, icon on the end ───────── */
  .mob-birthday-card .mob-bd-head {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding-bottom: 0 !important;
    border-bottom: none !important;
  }
  .mob-birthday-card .mob-bd-head-text {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 3px;
    min-width: 0;
    flex: 1;
    text-align: right;
  }
  .mob-birthday-card .mob-bd-title {
    width: 100%;
    font-family: var(--font-ar);
    font-weight: 700;
    font-size: 18px;
    color: rgba(255, 255, 255, 0.97);
    letter-spacing: -0.01em;
    line-height: 1.2;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mob-birthday-card .mob-bd-sub {
    width: 100%;
    font-family: var(--font-ar);
    font-size: 12px;
    color: rgba(255, 255, 255, 0.55);
    font-weight: 500;
    line-height: 1.15;
  }
  .mob-birthday-card.is-today .mob-bd-sub {
    color: #ffe7a8;
    font-weight: 700;
  }
  .mob-birthday-card .mob-bd-icon {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
    background: linear-gradient(135deg,
      color-mix(in oklch, #f472b6 50%, #000),
      color-mix(in oklch, #f472b6 80%, #000)
    );
    border: 1px solid color-mix(in oklch, #f472b6 40%, transparent);
    box-shadow: 0 4px 12px color-mix(in oklch, #f472b6 25%, transparent);
  }
  .mob-birthday-card.is-today .mob-bd-icon {
    background: linear-gradient(135deg, #f59e0b, #f472b6) !important;
    border-color: rgba(251, 191, 36, 0.35) !important;
    box-shadow: 0 8px 20px rgba(245, 158, 11, 0.18);
  }

  /* ── Body row: HUGE number on start, pill+bars stack on end ────── */
  .mob-birthday-card .mob-bd-body {
    flex: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    gap: 14px !important;
    padding: 14px 0 4px !important;
  }
  .mob-birthday-card .mob-bd-num-group {
    display: flex !important;
    align-items: baseline !important;
    gap: 8px !important;
  }
  .mob-birthday-card .mob-bd-num {
    font-family: var(--font-en, "Inter", -apple-system, system-ui, sans-serif) !important;
    font-weight: 800 !important;
    font-size: 76px !important;
    line-height: 0.85 !important;
    color: #ffffff !important;
    letter-spacing: -0.045em !important;
    font-variant-numeric: tabular-nums !important;
    -webkit-text-fill-color: #ffffff !important;
    background: none !important;
  }
  .mob-birthday-card .mob-bd-num.is-emoji {
    font-size: 58px !important;
    line-height: 1 !important;
    letter-spacing: 0 !important;
    filter: drop-shadow(0 10px 22px rgba(245, 158, 11, 0.26));
  }
  .mob-birthday-card .mob-bd-num-unit {
    font-family: var(--font-ar);
    font-size: 18px;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.78);
  }
  .mob-birthday-card.is-today .mob-bd-num-unit {
    color: #ffe7a8;
    font-weight: 700;
  }
  .mob-birthday-card .mob-bd-side {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 12px;
  }
  /* Pink "age" pill — faint variant from Person1 */
  .mob-birthday-card .mob-bd-age-pill {
    display: inline-flex;
    align-items: center;
    padding: 5px 14px;
    border-radius: 999px;
    background: color-mix(in oklch, #f472b6 18%, transparent);
    color: #f472b6;
    border: 1px solid color-mix(in oklch, #f472b6 40%, transparent);
    font-family: var(--font-ar);
    font-weight: 600;
    font-size: 12.5px;
    letter-spacing: 0.01em;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  .mob-birthday-card.is-today .mob-bd-age-pill {
    background: rgba(251, 191, 36, 0.14);
    color: #ffe08a;
    border-color: rgba(251, 191, 36, 0.28);
  }
  /* 7-bar countdown — bigger, taller bars to match the reference */
  .mob-birthday-card .mob-bd-bars {
    display: flex;
    gap: 4px;
    align-items: stretch;
  }
  .mob-birthday-card .mob-bd-bar {
    width: 8px;
    height: 22px;
    border-radius: 3px;
    background: rgba(255, 255, 255, 0.10);
    transition: background 0.25s ease;
  }
  .mob-birthday-card .mob-bd-bar.is-filled {
    background: #f472b6;
    box-shadow: 0 0 8px color-mix(in oklch, #f472b6 50%, transparent);
  }

  /* Footer — quiet, no top border (Person1 has no foot border) */
  .mob-birthday-card .mob-card-foot {
    border-top: none !important;
    padding-top: 0 !important;
    margin-top: 0 !important;
    display: none !important;  /* hide footer to match Person1 clean look */
  }
  .mob-birthday-card.is-today {
    position: relative;
  }
  .mob-birthday-card.is-today::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background:
      radial-gradient(circle at 15% 0%, rgba(251, 191, 36, 0.18), transparent 34%),
      radial-gradient(circle at 100% 100%, rgba(244, 114, 182, 0.14), transparent 44%);
    pointer-events: none;
    z-index: 0;
  }
  .mob-birthday-card.is-today > * {
    position: relative;
    z-index: 1;
  }
  .mob-bd-special {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    align-self: flex-start;
    margin-top: -2px;
    padding: 6px 10px;
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(251, 191, 36, 0.14), rgba(244, 114, 182, 0.1));
    border: 1px solid rgba(251, 191, 36, 0.18);
    color: #ffe7a8;
    font-family: var(--font-ar);
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 0;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
 * MOBILE UI — REFERENCE-DESIGN ALIGNMENT (Track 2)
 * Source: /Volumes/SSD 990 Pro/Downloads/Claude Design card/home-screen.jsx
 *
 * Brings the mobile shell up to the home-screen.jsx reference: floating glass
 * nav pill, transparent top bar with backdrop-blur round buttons, body
 * gradient with two soft glow blobs, and proper typography (Inter / IBM Plex
 * Sans Arabic / JetBrains Mono).
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {
  /* Wire reference fonts onto existing variables for mobile only */
  :root {
    --font-en: 'Inter', -apple-system, system-ui, sans-serif;
    --font-ar: 'IBM Plex Sans Arabic', 'Cairo', 'Noto Sans Arabic', sans-serif;
    --font-mono: 'JetBrains Mono', 'IBM Plex Mono', 'SF Mono', ui-monospace, monospace;
  }

  /* ─── BODY: vertical purple gradient + 2 soft glow blobs ─────────────────── */
  body {
    background-color: transparent !important;
    background-image:
      radial-gradient(240px 240px at calc(100% + 60px) 100px, rgba(168, 85, 247, 0.18), transparent 70%),
      radial-gradient(200px 200px at -60px 480px, rgba(236, 72, 153, 0.12), transparent 70%),
      linear-gradient(180deg, #0e0a17 0%, #15101e 50%, #0e0a17 100%) !important;
    background-attachment: fixed !important;
    background-size: auto, auto, 100% 100% !important;
  }
  /* Kill any prior body::before/after gradient/grid overlays on mobile */
  body::before, body::after { display: none !important; }

  /* ─── TOP BAR: transparent, no border, padding for safe-area notch ───────── */
  .mob-top-bar {
    background: transparent !important;
    border-bottom: none !important;
    padding: calc(env(safe-area-inset-top, 0px) + 12px) 16px 10px !important;
    min-height: 0 !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }
  .mob-top-bar .mob-top-logo,
  .mob-top-bar .mob-top-avatar {
    background: transparent !important;
    border: none !important;
    padding: 0 !important;
    color: rgba(255, 255, 255, 0.85) !important;
  }
  .mob-top-bar .mob-top-actions { gap: 8px !important; }
  .mob-top-bar .mob-top-btn {
    width: 36px !important;
    height: 36px !important;
    border-radius: 12px !important;
    background: rgba(30, 25, 42, 0.6) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    backdrop-filter: blur(10px) !important;
    -webkit-backdrop-filter: blur(10px) !important;
    color: rgba(255, 255, 255, 0.7) !important;
  }
  .mob-top-bar .mob-top-btn svg {
    width: 16px !important;
    height: 16px !important;
    stroke-width: 1.6 !important;
  }

  /* ─── CARD CONTAINER: tighter, room for floating nav ─────────────────────── */
  .main-content {
    padding: 0 14px calc(96px + env(safe-area-inset-bottom, 0px)) !important;
  }
  .dash-grid {
    gap: 12px !important;
    padding: 0 !important;
    padding-bottom: 0 !important;
  }

  /* ─── BOTTOM NAV: floating glass pill with outline icons ────────────────── */
  .mobile-bottom-nav {
    inset-block-end: calc(env(safe-area-inset-bottom, 0px) + 14px) !important;
    inset-inline: 14px !important;
    height: auto !important;
    padding: 8px 14px !important;
    border-radius: 24px !important;
    background: rgba(20, 16, 30, 0.78) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    border-top: 1px solid rgba(255, 255, 255, 0.06) !important;
    backdrop-filter: blur(20px) saturate(160%) !important;
    -webkit-backdrop-filter: blur(20px) saturate(160%) !important;
    gap: 4px !important;
    box-shadow: 0 12px 36px rgba(0, 0, 0, 0.45) !important;
    align-items: center !important;
  }
  .mob-nav-btn {
    flex: 1 !important;
    background: none !important;
    border: none !important;
    gap: 3px !important;
    padding: 6px 4px !important;
    min-height: 0 !important;
    color: rgba(255, 255, 255, 0.5) !important;
    font-family: var(--font-ar) !important;
  }
  .mob-nav-btn svg {
    width: 20px !important;
    height: 20px !important;
    stroke-width: 1.6 !important;
  }
  .mob-nav-btn span {
    font-size: 10px !important;
    font-weight: 500 !important;
    letter-spacing: 0;
  }
  /* Active state: violet stroke + bolder label */
  .mob-nav-btn.active {
    color: #b794f6 !important;
  }
  .mob-nav-btn.active svg path,
  .mob-nav-btn.active svg circle,
  .mob-nav-btn.active svg rect { stroke: #b794f6 !important; }
  .mob-nav-btn.active svg [fill="currentColor"] { fill: #b794f6 !important; }
  .mob-nav-btn.active span { font-weight: 700 !important; }
  .mob-nav-btn.active::after { display: none !important; }

  /* Center "+" — gradient-filled rounded square (44×44) */
  .mob-nav-btn.mob-nav-add {
    flex: 0 0 auto !important;
    width: 44px !important;
    height: 44px !important;
    border-radius: 14px !important;
    background: linear-gradient(135deg, #b794f6, #6b46c1) !important;
    color: #fff !important;
    margin: 0 4px !important;
    box-shadow: 0 6px 20px rgba(168, 85, 247, 0.5) !important;
    padding: 0 !important;
  }
  .mob-nav-btn.mob-nav-add svg {
    width: 20px !important;
    height: 20px !important;
    stroke: #fff !important;
    margin: 0 !important;
  }
  .mob-nav-btn.mob-nav-add::after { display: none !important; }
}

/* ════════════════════════════════════════════════════════════════════════════
 * TRACK 1 — Per-card rich glow (39 new cards)
 * Applies a corner radial-gradient halo + accent color theme per card type,
 * while keeping prayer-card-quality typography (no oversize hero text, mono
 * numerals, calm tone). Variant mapping comes from the design canvas at
 * /Volumes/SSD 990 Pro/Downloads/Claude Design card/cards-a-set1.jsx.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ─── Shared "rich glow" base — all 39 cards opt-in via class selector ─── */
  .card.mob-card:has(.mob-quran-card),
  .card.mob-card:has(.mob-pomo-card),
  .card.mob-card:has(.mob-mood-card),
  .card.mob-card:has(.mob-iou-card),
  .card.mob-card:has(.mob-savings-card),
  .card.mob-card:has(.mob-goal-card),
  .card.mob-card:has(.mob-week-card),
  .card.mob-card:has(.mob-inbox-card),
  .card.mob-card:has(.mob-fasting-card),
  .card.mob-card:has(.mob-zakat-card),
  .card.mob-card:has(.mob-gold-card),
  .card.mob-card:has(.mob-nw-card),
  .card.mob-card:has(.mob-pd-card),
  .card.mob-card:has(.mob-appliance-card),
  .card.mob-card:has(.mob-gift-card),
  .card.mob-card:has(.mob-chore-card),
  .card.mob-card:has(.mob-project-card),
  .card.mob-card:has(.mob-workout-card),
  .card.mob-card:has(.mob-med-card),
  .card.mob-card:has(.mob-vitals-card),
  .card.mob-card:has(.mob-course-card),
  .card.mob-card:has(.mob-lang-card),
  .card.mob-card:has(.mob-idea-card),
  .card.mob-card:has(.mob-quote-card),
  .card.mob-card:has(.mob-recipe-card),
  .card.mob-card:has(.mob-meet-card),
  .card.mob-card:has(.mob-loan-card),
  .card.mob-card:has(.mob-crypto-card),
  .card.mob-card:has(.mob-plant-card),
  .card.mob-card:has(.mob-journal-card),
  .card.mob-card:has(.mob-review-card),
  .card.mob-card:has(.mob-meals-card),
  .card.mob-card:has(.mob-pod-card),
  .card.mob-card:has(.mob-pl-card),
  .card.mob-card:has(.mob-trip-card),
  .card.mob-card:has(.mob-birthday-card),
  .card.mob-card:has(.mob-book-card),
  .card.mob-card:has(.mob-watchlist-card),
  .card.mob-card:has(.mob-checklist-card),
  .card.mob-card:has(.mob-reminder-card),
  .card.mob-card:has(.mob-countdown-card),
  .card.mob-card:has(.mob-sub-card),
  .card.mob-card:has(.mob-expense-card),
  .card.mob-card:has(.mob-tracker-card),
  .card.mob-card:has(.mob-counter-card),
  .card.mob-card:has(.mob-stocks-card),
  .card.mob-card:has(.mob-doc-card),
  .card.mob-card:has(.mob-vehicle-card),
  .card.mob-card:has(.mob-routine-card),
  .card.mob-card:has(.mob-status-card) {
    overflow: hidden !important;
    position: relative !important;
  }

  /* The glow ::before — color & corner overridden per type below */
  .card.mob-card:has(.mob-quran-card)::before,
  .card.mob-card:has(.mob-pomo-card)::before,
  .card.mob-card:has(.mob-mood-card)::before,
  .card.mob-card:has(.mob-iou-card)::before,
  .card.mob-card:has(.mob-savings-card)::before,
  .card.mob-card:has(.mob-goal-card)::before,
  .card.mob-card:has(.mob-week-card)::before,
  .card.mob-card:has(.mob-inbox-card)::before,
  .card.mob-card:has(.mob-fasting-card)::before,
  .card.mob-card:has(.mob-zakat-card)::before,
  .card.mob-card:has(.mob-gold-card)::before,
  .card.mob-card:has(.mob-nw-card)::before,
  .card.mob-card:has(.mob-pd-card)::before,
  .card.mob-card:has(.mob-appliance-card)::before,
  .card.mob-card:has(.mob-gift-card)::before,
  .card.mob-card:has(.mob-chore-card)::before,
  .card.mob-card:has(.mob-project-card)::before,
  .card.mob-card:has(.mob-workout-card)::before,
  .card.mob-card:has(.mob-med-card)::before,
  .card.mob-card:has(.mob-vitals-card)::before,
  .card.mob-card:has(.mob-course-card)::before,
  .card.mob-card:has(.mob-lang-card)::before,
  .card.mob-card:has(.mob-idea-card)::before,
  .card.mob-card:has(.mob-quote-card)::before,
  .card.mob-card:has(.mob-recipe-card)::before,
  .card.mob-card:has(.mob-meet-card)::before,
  .card.mob-card:has(.mob-loan-card)::before,
  .card.mob-card:has(.mob-crypto-card)::before,
  .card.mob-card:has(.mob-plant-card)::before,
  .card.mob-card:has(.mob-journal-card)::before,
  .card.mob-card:has(.mob-review-card)::before,
  .card.mob-card:has(.mob-meals-card)::before,
  .card.mob-card:has(.mob-pod-card)::before,
  .card.mob-card:has(.mob-pl-card)::before,
  .card.mob-card:has(.mob-trip-card)::before,
  .card.mob-card:has(.mob-birthday-card)::before,
  .card.mob-card:has(.mob-book-card)::before,
  .card.mob-card:has(.mob-watchlist-card)::before,
  .card.mob-card:has(.mob-checklist-card)::before,
  .card.mob-card:has(.mob-reminder-card)::before,
  .card.mob-card:has(.mob-countdown-card)::before,
  .card.mob-card:has(.mob-sub-card)::before,
  .card.mob-card:has(.mob-expense-card)::before,
  .card.mob-card:has(.mob-tracker-card)::before,
  .card.mob-card:has(.mob-counter-card)::before,
  .card.mob-card:has(.mob-stocks-card)::before,
  .card.mob-card:has(.mob-doc-card)::before,
  .card.mob-card:has(.mob-vehicle-card)::before,
  .card.mob-card:has(.mob-routine-card)::before,
  .card.mob-card:has(.mob-status-card)::before {
    content: '' !important;
    display: block !important;
    position: absolute !important;
    inset: 0 !important;
    opacity: 0.5 !important;
    filter: blur(28px) !important;
    pointer-events: none !important;
    z-index: 0 !important;
  }

  /* Per-type glow color + corner placement (mirrors design-A glow= prop) */
  .card.mob-card:has(.mob-quran-card)::before    { background: radial-gradient(circle at 50% 100%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-fasting-card)::before  { background: radial-gradient(circle at 0% 100%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-zakat-card)::before    { background: radial-gradient(circle at 100% 0%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-iou-card)::before      { background: radial-gradient(circle at 100% 0%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-savings-card)::before  { background: radial-gradient(circle at 0% 100%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-gold-card)::before     { background: radial-gradient(circle at 90% 100%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-nw-card)::before       { background: radial-gradient(circle at 100% 0%, oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-pd-card)::before       { background: radial-gradient(circle at 50% 0%, oklch(0.68 0.22 22), transparent 55%) !important; }
  .card.mob-card:has(.mob-appliance-card)::before{ background: radial-gradient(circle at 100% 50%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-gift-card)::before     { background: radial-gradient(circle at 50% 0%, oklch(0.72 0.2 350), transparent 55%) !important; }
  .card.mob-card:has(.mob-chore-card)::before    { background: radial-gradient(circle at 50% 100%, oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-pomo-card)::before     { background: radial-gradient(circle at 100% 100%, oklch(0.68 0.22 22), transparent 55%) !important; }
  .card.mob-card:has(.mob-project-card)::before  { background: radial-gradient(circle at 100% 100%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-inbox-card)::before    { background: radial-gradient(circle at 0% 0%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-mood-card)::before     { background: radial-gradient(circle at 100% 100%, oklch(0.7 0.2 295), transparent 60%) !important; }
  .card.mob-card:has(.mob-workout-card)::before  { background: radial-gradient(circle at 50% 100%, oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-med-card)::before      { background: radial-gradient(circle at 100% 50%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-vitals-card)::before   { background: radial-gradient(circle at 50% 0%, oklch(0.68 0.22 22), transparent 55%) !important; }
  .card.mob-card:has(.mob-course-card)::before   { background: radial-gradient(circle at 0% 100%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-lang-card)::before     { background: radial-gradient(circle at 100% 50%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-idea-card)::before     { background: radial-gradient(circle at 0% 100%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-quote-card)::before    { background: radial-gradient(circle at 100% 100%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-recipe-card)::before   { background: radial-gradient(circle at 50% 0%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-goal-card)::before     { background: radial-gradient(circle at 0% 100%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-meet-card)::before     { background: radial-gradient(circle at 0% 0%, oklch(0.7 0.18 255), transparent 55%) !important; }
  .card.mob-card:has(.mob-loan-card)::before     { background: radial-gradient(circle at 100% 0%, oklch(0.68 0.22 22), transparent 55%) !important; }
  .card.mob-card:has(.mob-crypto-card)::before   { background: radial-gradient(circle at 100% 0%, oklch(0.82 0.16 80), transparent 55%) !important; }
  .card.mob-card:has(.mob-plant-card)::before    { background: radial-gradient(circle at 100% 50%, oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-journal-card)::before  { background: radial-gradient(circle at 100% 100%, oklch(0.72 0.2 350), transparent 55%) !important; }
  .card.mob-card:has(.mob-week-card)::before     { background: radial-gradient(circle at 100% 0%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-review-card)::before   { background: radial-gradient(circle at 0% 50%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-meals-card)::before    { background: radial-gradient(circle at 0% 100%, oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-pod-card)::before      { background: radial-gradient(circle at 0% 100%, oklch(0.7 0.2 295), transparent 55%) !important; }
  .card.mob-card:has(.mob-pl-card)::before       { background: radial-gradient(circle at 50% 0%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-trip-card)::before     { background: radial-gradient(circle at 100% 0%, oklch(0.7 0.2 295), transparent 55%) !important; }

  /* Polish 70 — glow for previously-missing rich data cards */
  .card.mob-card:has(.mob-birthday-card)::before { background: radial-gradient(circle at 50% 0%,   oklch(0.72 0.2 350),  transparent 55%) !important; }
  .card.mob-card:has(.mob-book-card)::before     { background: radial-gradient(circle at 100% 0%,  oklch(0.82 0.16 80),  transparent 55%) !important; }
  .card.mob-card:has(.mob-watchlist-card)::before{ background: radial-gradient(circle at 0% 100%,  oklch(0.82 0.16 80),  transparent 55%) !important; }
  .card.mob-card:has(.mob-expense-card)::before  { background: radial-gradient(circle at 50% 100%, oklch(0.82 0.16 80),  transparent 55%) !important; }
  .card.mob-card:has(.mob-checklist-card)::before{ background: radial-gradient(circle at 0% 0%,    oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-routine-card)::before  { background: radial-gradient(circle at 0% 50%,   oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-stocks-card)::before   { background: radial-gradient(circle at 100% 0%,  oklch(0.78 0.18 145), transparent 55%) !important; }
  .card.mob-card:has(.mob-sub-card)::before      { background: radial-gradient(circle at 100% 50%, oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-tracker-card)::before  { background: radial-gradient(circle at 100% 100%,oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-counter-card)::before  { background: radial-gradient(circle at 0% 100%,  oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-status-card)::before   { background: radial-gradient(circle at 100% 0%,  oklch(0.78 0.13 200), transparent 55%) !important; }
  .card.mob-card:has(.mob-reminder-card)::before { background: radial-gradient(circle at 50% 100%, oklch(0.7 0.2 295),   transparent 55%) !important; }
  .card.mob-card:has(.mob-countdown-card)::before{ background: radial-gradient(circle at 0% 50%,   oklch(0.7 0.2 295),   transparent 55%) !important; }
  .card.mob-card:has(.mob-doc-card)::before      { background: radial-gradient(circle at 0% 100%,  oklch(0.68 0.22 22),  transparent 55%) !important; }
  .card.mob-card:has(.mob-vehicle-card)::before  { background: radial-gradient(circle at 50% 0%,   oklch(0.68 0.22 22),  transparent 55%) !important; }

  /* Make sure the inner content sits ABOVE the glow */
  .card.mob-card:has(.mob-quran-card) .mob-card-inner,
  .card.mob-card:has(.mob-pomo-card) .mob-card-inner,
  .card.mob-card:has(.mob-mood-card) .mob-card-inner,
  .card.mob-card:has(.mob-iou-card) .mob-card-inner,
  .card.mob-card:has(.mob-savings-card) .mob-card-inner,
  .card.mob-card:has(.mob-goal-card) .mob-card-inner,
  .card.mob-card:has(.mob-week-card) .mob-card-inner,
  .card.mob-card:has(.mob-inbox-card) .mob-card-inner,
  .card.mob-card:has(.mob-fasting-card) .mob-card-inner,
  .card.mob-card:has(.mob-zakat-card) .mob-card-inner,
  .card.mob-card:has(.mob-gold-card) .mob-card-inner,
  .card.mob-card:has(.mob-nw-card) .mob-card-inner,
  .card.mob-card:has(.mob-pd-card) .mob-card-inner,
  .card.mob-card:has(.mob-appliance-card) .mob-card-inner,
  .card.mob-card:has(.mob-gift-card) .mob-card-inner,
  .card.mob-card:has(.mob-chore-card) .mob-card-inner,
  .card.mob-card:has(.mob-project-card) .mob-card-inner,
  .card.mob-card:has(.mob-workout-card) .mob-card-inner,
  .card.mob-card:has(.mob-med-card) .mob-card-inner,
  .card.mob-card:has(.mob-vitals-card) .mob-card-inner,
  .card.mob-card:has(.mob-course-card) .mob-card-inner,
  .card.mob-card:has(.mob-lang-card) .mob-card-inner,
  .card.mob-card:has(.mob-idea-card) .mob-card-inner,
  .card.mob-card:has(.mob-quote-card) .mob-card-inner,
  .card.mob-card:has(.mob-recipe-card) .mob-card-inner,
  .card.mob-card:has(.mob-meet-card) .mob-card-inner,
  .card.mob-card:has(.mob-loan-card) .mob-card-inner,
  .card.mob-card:has(.mob-crypto-card) .mob-card-inner,
  .card.mob-card:has(.mob-plant-card) .mob-card-inner,
  .card.mob-card:has(.mob-journal-card) .mob-card-inner,
  .card.mob-card:has(.mob-review-card) .mob-card-inner,
  .card.mob-card:has(.mob-meals-card) .mob-card-inner,
  .card.mob-card:has(.mob-pod-card) .mob-card-inner,
  .card.mob-card:has(.mob-pl-card) .mob-card-inner,
  .card.mob-card:has(.mob-trip-card) .mob-card-inner,
  .card.mob-card:has(.mob-birthday-card) .mob-card-inner,
  .card.mob-card:has(.mob-book-card) .mob-card-inner,
  .card.mob-card:has(.mob-watchlist-card) .mob-card-inner,
  .card.mob-card:has(.mob-checklist-card) .mob-card-inner,
  .card.mob-card:has(.mob-reminder-card) .mob-card-inner,
  .card.mob-card:has(.mob-countdown-card) .mob-card-inner,
  .card.mob-card:has(.mob-sub-card) .mob-card-inner,
  .card.mob-card:has(.mob-expense-card) .mob-card-inner,
  .card.mob-card:has(.mob-tracker-card) .mob-card-inner,
  .card.mob-card:has(.mob-counter-card) .mob-card-inner,
  .card.mob-card:has(.mob-stocks-card) .mob-card-inner,
  .card.mob-card:has(.mob-doc-card) .mob-card-inner,
  .card.mob-card:has(.mob-vehicle-card) .mob-card-inner,
  .card.mob-card:has(.mob-routine-card) .mob-card-inner,
  .card.mob-card:has(.mob-status-card) .mob-card-inner {
    position: relative !important;
    z-index: 1 !important;
  }

  /* Per-type accent: hero number color + progress fill match the glow */
  .mob-quran-card .mob-hero-num    { color: oklch(0.82 0.16 80) !important; -webkit-text-fill-color: oklch(0.82 0.16 80) !important; background: none !important; }
  .mob-quran-card .mob-progress-fill { background: oklch(0.82 0.16 80) !important; }

  .mob-pomo-card .mob-hero-num     { color: oklch(0.68 0.22 22) !important; -webkit-text-fill-color: oklch(0.68 0.22 22) !important; background: none !important; }
  .mob-pomo-card .mob-progress-fill { background: oklch(0.68 0.22 22) !important; }
  .mob-pomo-card .mob-counter-btn  {
    background: linear-gradient(135deg, oklch(0.68 0.22 22 / 0.18), oklch(0.78 0.18 50 / 0.12)) !important;
    border: 1px solid oklch(0.68 0.22 22 / 0.30) !important;
    color: oklch(0.78 0.18 50) !important;
  }

  .mob-savings-card .mob-hero-num,
  .mob-iou-card .mob-hero-num,
  .mob-goal-card .mob-hero-num,
  .mob-week-card .mob-hero-num,
  .mob-lang-card .mob-hero-num,
  .mob-sub-card .mob-hero-num,
  .mob-lg-card .mob-hero-num,
  .mob-tracker-card .mob-hero-num,
  .mob-counter-card .mob-hero-num,
  .mob-status-card .mob-hero-num,
  .mob-pl-card .mob-hero-num     { color: oklch(0.78 0.13 200) !important; -webkit-text-fill-color: oklch(0.78 0.13 200) !important; background: none !important; }
  .mob-savings-card .mob-progress-fill,
  .mob-iou-card .mob-progress-fill,
  .mob-goal-card .mob-progress-fill,
  .mob-week-card .mob-progress-fill,
  .mob-tracker-card .mob-progress-fill,
  .mob-counter-card .mob-progress-fill { background: oklch(0.78 0.13 200) !important; }

  .mob-zakat-card .mob-hero-num,
  .mob-gold-card .mob-hero-num,
  .mob-inbox-card .mob-hero-num,
  .mob-recipe-card .mob-hero-num,
  .mob-course-card .mob-hero-num,
  .mob-watchlist-card .mob-hero-num,
  .mob-book-card .mob-hero-num,
  .mob-expense-card .mob-hero-num,
  .mob-crypto-card .mob-hero-num   { color: oklch(0.82 0.16 80) !important; -webkit-text-fill-color: oklch(0.82 0.16 80) !important; background: none !important; }
  .mob-zakat-card .mob-progress-fill,
  .mob-gold-card .mob-progress-fill,
  .mob-recipe-card .mob-progress-fill,
  .mob-book-card .mob-progress-fill,
  .mob-course-card .mob-progress-fill,
  .mob-expense-card .mob-progress-fill { background: oklch(0.82 0.16 80) !important; }

  .mob-chore-card .mob-hero-num,
  .mob-plant-card .mob-hero-num,
  .mob-meals-card .mob-hero-num,
  .mob-workout-card .mob-hero-num,
  .mob-routine-card .mob-hero-num,
  .mob-checklist-card .mob-hero-num,
  .mob-stocks-card .mob-hero-num,
  .mob-nw-card .mob-hero-num       { color: oklch(0.78 0.18 145) !important; -webkit-text-fill-color: oklch(0.78 0.18 145) !important; background: none !important; }
  .mob-chore-card .mob-progress-fill,
  .mob-plant-card .mob-progress-fill,
  .mob-meals-card .mob-progress-fill,
  .mob-workout-card .mob-progress-fill,
  .mob-routine-card .mob-progress-fill,
  .mob-checklist-card .mob-progress-fill { background: oklch(0.78 0.18 145) !important; }

  .mob-vitals-card .mob-hero-num,
  .mob-loan-card .mob-hero-num,
  .mob-doc-card .mob-hero-num,
  .mob-vehicle-card .mob-hero-num,
  .mob-pd-card .mob-hero-num       { color: oklch(0.68 0.22 22) !important; -webkit-text-fill-color: oklch(0.68 0.22 22) !important; background: none !important; }
  .mob-vitals-card .mob-progress-fill,
  .mob-loan-card .mob-progress-fill { background: oklch(0.68 0.22 22) !important; }

  .mob-mood-card .mob-hero-num,
  .mob-fasting-card .mob-hero-num,
  .mob-meet-card .mob-hero-num,
  .mob-trip-card .mob-hero-num,
  .mob-project-card .mob-hero-num,
  .mob-quote-card .mob-hero-num,
  .mob-idea-card .mob-hero-num,
  .mob-pod-card .mob-hero-num,
  .mob-review-card .mob-hero-num,
  .mob-journal-card .mob-hero-num,
  .mob-gift-card .mob-hero-num,
  .mob-appliance-card .mob-hero-num,
  .mob-countdown-card .mob-hero-num,
  .mob-reminder-card .mob-hero-num,
  .mob-med-card .mob-hero-num      { color: oklch(0.7 0.2 295) !important; -webkit-text-fill-color: oklch(0.7 0.2 295) !important; background: none !important; }
  .mob-mood-card .mob-progress-fill,
  .mob-fasting-card .mob-progress-fill,
  .mob-meet-card .mob-progress-fill,
  .mob-trip-card .mob-progress-fill,
  .mob-project-card .mob-progress-fill,
  .mob-gift-card .mob-progress-fill,
  .mob-appliance-card .mob-progress-fill,
  .mob-med-card .mob-progress-fill { background: oklch(0.7 0.2 295) !important; }

  /* Per-type pill/CTA also match the accent — keeps cards visually coherent */
  .mob-savings-card .mob-pill, .mob-goal-card .mob-pill, .mob-iou-card .mob-pill,
  .mob-week-card .mob-pill, .mob-lang-card .mob-pill, .mob-pl-card .mob-pill,
  .mob-lg-card .mob-pill, .mob-sub-card .mob-pill,
  .mob-tracker-card .mob-pill, .mob-counter-card .mob-pill {
    background: oklch(0.78 0.13 200 / 0.12) !important;
    color: oklch(0.78 0.13 200) !important;
    border: 1px solid oklch(0.78 0.13 200 / 0.25) !important;
  }
  .mob-zakat-card .mob-pill, .mob-gold-card .mob-pill, .mob-inbox-card .mob-pill,
  .mob-recipe-card .mob-pill, .mob-course-card .mob-pill,
  .mob-watchlist-card .mob-pill, .mob-book-card .mob-pill,
  .mob-crypto-card .mob-pill, .mob-quran-card .mob-pill, .mob-expense-card .mob-pill {
    background: oklch(0.82 0.16 80 / 0.12) !important;
    color: oklch(0.82 0.16 80) !important;
    border: 1px solid oklch(0.82 0.16 80 / 0.25) !important;
  }
  .mob-chore-card .mob-pill, .mob-plant-card .mob-pill,
  .mob-meals-card .mob-pill, .mob-workout-card .mob-pill, .mob-nw-card .mob-pill,
  .mob-routine-card .mob-pill, .mob-checklist-card .mob-pill {
    background: oklch(0.78 0.18 145 / 0.12) !important;
    color: oklch(0.78 0.18 145) !important;
    border: 1px solid oklch(0.78 0.18 145 / 0.25) !important;
  }
  .mob-vitals-card .mob-pill, .mob-loan-card .mob-pill, .mob-pomo-card .mob-pill,
  .mob-pd-card .mob-pill, .mob-doc-card .mob-pill, .mob-vehicle-card .mob-pill {
    background: oklch(0.68 0.22 22 / 0.12) !important;
    color: oklch(0.68 0.22 22) !important;
    border: 1px solid oklch(0.68 0.22 22 / 0.25) !important;
  }
  .mob-mood-card .mob-pill, .mob-fasting-card .mob-pill, .mob-meet-card .mob-pill,
  .mob-trip-card .mob-pill, .mob-project-card .mob-pill,
  .mob-gift-card .mob-pill, .mob-appliance-card .mob-pill, .mob-med-card .mob-pill,
  .mob-quote-card .mob-pill, .mob-idea-card .mob-pill, .mob-pod-card .mob-pill,
  .mob-review-card .mob-pill, .mob-journal-card .mob-pill,
  .mob-countdown-card .mob-pill, .mob-reminder-card .mob-pill {
    background: oklch(0.7 0.2 295 / 0.12) !important;
    color: oklch(0.7 0.2 295) !important;
    border: 1px solid oklch(0.7 0.2 295 / 0.25) !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
 * TODAY-WIDGET STYLE → APPLIED TO ALL HOME CARDS
 *
 * The user wants the home-page mobile cards to mirror the "Today" page
 * widgets (مواقيت الصلاة، الطقس، حكمة اليوم). Source patterns from
 * style.css lines 28116–28261:
 *   .widget-card        → quiet violet-grey shell, 18px radius
 *   .widget-head        → icon + title + meta-chip, with bottom-border
 *   .widget-prayer-next → cyan/violet gradient hero panel for big metric
 *   .widget-prayer-list → 3-col tile grid for secondary stats
 *
 * This block:
 *   1. Kills the Track 1 rich-glow ::before halos on all home cards.
 *   2. Forces the widget-card shell on every .card.mob-card.
 *   3. Replaces the per-type accent glow with a single shared cyan accent
 *      on the hero panel (matches "الفجر 03:39" → "AAPL 270.17" feel).
 * ════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* Disable Track 1 colored halos — the widgets pattern is calm, not glowing */
  .card.mob-card::before { display: none !important; }
  .card.mob-card::after  { display: none !important; }

  /* Shell — widget-card recipe (style.css line 28124) */
  .card.mob-card {
    background:
      linear-gradient(155deg, rgba(139, 92, 246, 0.06), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border: 1px solid rgba(255, 255, 255, 0.07) !important;
    border-radius: 20px !important;
    box-shadow: none !important;
    overflow: hidden !important;
    position: relative !important;
    transition: border-color 0.25s ease, transform 0.18s !important;
  }
  .card.mob-card:active {
    transform: scale(0.99);
    border-color: rgba(139, 92, 246, 0.22) !important;
  }
  .card.mob-card.pinned-card {
    border-color: rgba(139, 92, 246, 0.22) !important;
    box-shadow: 0 0 0 1px rgba(139, 92, 246, 0.15) !important;
  }

  /* Inner padding — match .widget-card (14px 16px 16px) */
  .card.mob-card .mob-card-inner {
    padding: 14px 16px 16px !important;
    gap: 12px !important;
    z-index: auto !important;
  }

  /* Header — exact .widget-head pattern */
  .card.mob-card .mob-card-header {
    padding-bottom: 8px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
    gap: 8px !important;
    align-items: center !important;
  }
  .card.mob-card .mob-card-icon {
    font-size: 1.15rem !important;
    width: auto !important;
    height: auto !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    flex-shrink: 0;
  }
  .card.mob-card .mob-card-title {
    font-family: var(--font-ar) !important;
    font-weight: 700 !important;
    font-size: 0.88rem !important;
    color: var(--text) !important;
    -webkit-text-fill-color: var(--text) !important;
    background: none !important;
    letter-spacing: 0 !important;
    flex: 1 !important;
    min-width: 0 !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
  }

  /* Pill (e.g. "Kuwait City" equivalent — status, age, streak) — small chip */
  .card.mob-card .mob-pill {
    font-size: 0.68rem !important;
    color: rgba(232, 238, 247, 0.5) !important;
    font-family: var(--font-ar) !important;
    font-weight: 500 !important;
    padding: 3px 8px !important;
    border-radius: 10px !important;
    background: rgba(255, 255, 255, 0.04) !important;
    border: none !important;
    text-shadow: none !important;
    letter-spacing: 0 !important;
  }
  /* Tone-coded pills keep a hint of color but stay subtle */
  .card.mob-card .mob-pill-success {
    color: #5eead4 !important;
    background: rgba(94, 234, 212, 0.08) !important;
  }
  .card.mob-card .mob-pill-warning {
    color: #fbbf24 !important;
    background: rgba(251, 191, 36, 0.08) !important;
  }
  .card.mob-card .mob-pill-danger {
    color: #f87171 !important;
    background: rgba(248, 113, 113, 0.08) !important;
  }
  .card.mob-card .mob-pill-muted {
    color: rgba(232, 238, 247, 0.5) !important;
    background: rgba(255, 255, 255, 0.04) !important;
  }

  /* Hero zone — the EXACT .widget-prayer-next recipe */
  .card.mob-card .mob-hero {
    display: flex !important;
    flex-direction: column !important;
    gap: 3px !important;
    padding: 10px 12px !important;
    background: linear-gradient(135deg, rgba(89, 216, 255, 0.1), rgba(139, 92, 246, 0.08)) !important;
    border-radius: 12px !important;
    border: 1px solid rgba(89, 216, 255, 0.15) !important;
    margin: 4px 0 6px !important;
    align-items: flex-start !important;
  }
  .card.mob-card .mob-hero-num,
  .card.mob-card .mob-hero-num.mob-hero-accent,
  .card.mob-card .mob-hero-accent {
    font-family: var(--font-mono) !important;
    font-weight: 700 !important;
    font-size: 1.4rem !important;
    line-height: 1 !important;
    color: #59d8ff !important;
    background: none !important;
    -webkit-text-fill-color: #59d8ff !important;
    text-shadow: none !important;
    filter: none !important;
    letter-spacing: -0.005em !important;
    font-variant-numeric: tabular-nums !important;
  }
  .card.mob-card .mob-hero-num.mob-hero-accent,
  .card.mob-card .mob-hero-accent {
    color: #fbbf24 !important;
    -webkit-text-fill-color: #fbbf24 !important;
  }
  .card.mob-card .mob-hero-unit {
    font-family: var(--font-ar) !important;
    font-weight: 800 !important;
    font-size: 0.95rem !important;
    color: var(--text) !important;
    -webkit-text-fill-color: var(--text) !important;
  }

  /* Stat strip — EXACT .widget-prayer-list pattern (3-col tile grid) */
  .card.mob-card .mob-stat-strip {
    display: grid !important;
    grid-template-columns: repeat(3, 1fr) !important;
    gap: 6px !important;
    font-size: 0.78rem !important;
    border-top: none !important;
    padding-top: 0 !important;
    margin-top: 4px !important;
  }
  .card.mob-card .mob-stat {
    flex: unset !important;
    flex-direction: column !important;
    align-items: center !important;
    gap: 2px !important;
    padding: 6px 4px !important;
    background: rgba(255, 255, 255, 0.02) !important;
    border: 1px solid transparent !important;
    border-radius: 8px !important;
  }
  .card.mob-card .mob-stat-k {
    font-family: var(--font-ar) !important;
    font-weight: 600 !important;
    color: rgba(232, 238, 247, 0.7) !important;
    font-size: 0.72rem !important;
    text-transform: none !important;
    letter-spacing: 0 !important;
  }
  .card.mob-card .mob-stat-v {
    font-family: var(--font-mono) !important;
    color: var(--text) !important;
    font-weight: 700 !important;
    font-size: 0.85rem !important;
    font-variant-numeric: tabular-nums;
  }
  .card.mob-card .mob-stat-v.mob-stat-v-pos  { color: #22c55e !important; }
  .card.mob-card .mob-stat-v.mob-stat-v-neg  { color: #f87171 !important; }
  .card.mob-card .mob-stat-v.mob-stat-v-warn { color: #fbbf24 !important; }

  /* Progress bar — slim cyan, matches widget tone */
  .card.mob-card .mob-progress-bar {
    height: 4px !important;
    border-radius: 2px !important;
    background: rgba(255, 255, 255, 0.05) !important;
    box-shadow: none !important;
  }
  .card.mob-card .mob-progress-fill {
    background: #59d8ff !important;
    box-shadow: none !important;
  }
  .card.mob-card .mob-progress-bar.mob-bar-warn  .mob-progress-fill { background: #fbbf24 !important; }
  .card.mob-card .mob-progress-bar.mob-bar-over  .mob-progress-fill { background: #f87171 !important; }
  .card.mob-card .mob-progress-bar.mob-bar-done  .mob-progress-fill { background: #22c55e !important; }
  .card.mob-card .mob-progress-bar.mob-bar-quran .mob-progress-fill { background: linear-gradient(90deg, #10b981, #22d3ee) !important; }
  .card.mob-card .mob-progress-bar.mob-bar-pomo  .mob-progress-fill { background: linear-gradient(90deg, #ef4444, #f97316) !important; }

  /* CTA button — quiet cyan-violet, mirrors the hero panel gradient */
  .card.mob-card .mob-counter-btn {
    background: linear-gradient(135deg, rgba(89, 216, 255, 0.18), rgba(139, 92, 246, 0.15)) !important;
    border: 1px solid rgba(89, 216, 255, 0.25) !important;
    color: #59d8ff !important;
    border-radius: 10px !important;
    padding: 10px 14px !important;
    font-family: var(--font-ar) !important;
    font-weight: 700 !important;
    font-size: 13px !important;
    box-shadow: none !important;
    letter-spacing: 0 !important;
    margin-top: 6px !important;
  }
  .card.mob-card .mob-counter-btn:active { transform: scale(0.97); }
  .card.mob-card .mob-counter-btn.mob-counter-done {
    background: rgba(34, 197, 94, 0.10) !important;
    border-color: rgba(34, 197, 94, 0.25) !important;
    color: #4ade80 !important;
    cursor: default !important;
  }
  .card.mob-card .mob-counter-btn.mob-counter-done:hover { background: rgba(34, 197, 94, 0.10) !important; }

  /* Footer + note lines — quiet ink */
  .card.mob-card .mob-card-foot {
    border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
    padding-top: 8px !important;
    margin-top: 4px;
    color: rgba(232, 238, 247, 0.42) !important;
    font-size: 0.72rem !important;
  }
  .card.mob-card .mob-card-time { color: rgba(232, 238, 247, 0.42) !important; font-size: 0.72rem !important; }
  .card.mob-card .mob-note-line {
    font-size: 0.85rem !important;
    color: rgba(232, 238, 247, 0.7) !important;
  }
  .card.mob-card .mob-note-empty { color: rgba(232, 238, 247, 0.35) !important; }

  /* ─── Polish 72 — Reminder urgency visual states (overdue/urgent) ─────────── */
  /* Card-shell background + border tint — overdue gets rose wash */
  .card.mob-card:has(.mob-reminder-card.mob-rem-overdue) {
    background:
      linear-gradient(155deg, rgba(248, 113, 113, 0.09), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(248, 113, 113, 0.22) !important;
  }
  /* Urgent (today/tomorrow) — amber wash */
  .card.mob-card:has(.mob-reminder-card.mob-rem-urgent) {
    background:
      linear-gradient(155deg, rgba(251, 191, 36, 0.08), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(251, 191, 36, 0.20) !important;
  }
  /* Hero panel border + background tint per urgency */
  .card.mob-card:has(.mob-rem-overdue) .mob-hero {
    border-color: rgba(248, 113, 113, 0.40) !important;
    background: linear-gradient(135deg, rgba(248, 113, 113, 0.13), rgba(139, 92, 246, 0.06)) !important;
  }
  .card.mob-card:has(.mob-rem-urgent) .mob-hero {
    border-color: rgba(251, 191, 36, 0.40) !important;
    background: linear-gradient(135deg, rgba(251, 191, 36, 0.11), rgba(139, 92, 246, 0.06)) !important;
  }

  /* ── P284 Live countdown (due ≤ 2h) — vivid red card + pulsing ticker ── */
  .card.mob-card:has(.mob-reminder-card.mob-rem-live) {
    background:
      linear-gradient(155deg, rgba(239,68,68,0.12), rgba(255,255,255,0.02)),
      rgba(12,17,26,0.72) !important;
    border-color: rgba(239,68,68,0.35) !important;
    box-shadow: 0 0 0 1px rgba(239,68,68,0.18), 0 4px 20px rgba(239,68,68,0.1) !important;
  }
  .mob-rem-live-hero {
    border-color: rgba(239,68,68,0.4) !important;
    background: linear-gradient(135deg, rgba(239,68,68,0.14), rgba(139,92,246,0.06)) !important;
  }
  .mob-live-tick {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .mob-live-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #ef4444;
    flex-shrink: 0;
    animation: mob-live-dot-pulse 1s ease-in-out infinite;
  }
  @keyframes mob-live-dot-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.4; transform: scale(0.7); }
  }
  .mob-live-num {
    font-size: 2rem;
    font-weight: 800;
    color: #f87171;
    letter-spacing: -1px;
    line-height: 1;
    font-variant-numeric: tabular-nums;
  }
  .mob-live-unit {
    font-size: 0.7rem;
    font-weight: 700;
    color: rgba(248,113,113,0.7);
    align-self: flex-end;
    padding-bottom: 4px;
  }

  /* ─── Polish 75 — Overdue indicator tints for time-sensitive cards ─────────
   * mob-hero-accent only appears when these cards are overdue/expired, so
   * :has(.mob-hero-accent) reliably detects the urgency state.           */
  .card.mob-card:has(.mob-sub-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-med-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(248, 113, 113, 0.09), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(248, 113, 113, 0.22) !important;
  }
  .card.mob-card:has(.mob-doc-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-vehicle-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(251, 191, 36, 0.08), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(251, 191, 36, 0.20) !important;
  }
  /* Hero panel tint for these overdue states */
  .card.mob-card:has(.mob-sub-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-med-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(248, 113, 113, 0.40) !important;
    background: linear-gradient(135deg, rgba(248, 113, 113, 0.12), rgba(139, 92, 246, 0.06)) !important;
  }
  .card.mob-card:has(.mob-doc-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-vehicle-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(251, 191, 36, 0.40) !important;
    background: linear-gradient(135deg, rgba(251, 191, 36, 0.11), rgba(139, 92, 246, 0.06)) !important;
  }

  /* ─── Polish 78 — Overdue urgency tints for chore / plant / loan / appliance ─
   * Mirrors Polish 75's pattern: mob-hero-accent appears only when overdue,
   * so :has(.mob-hero-accent) is a reliable urgency proxy.                   */
  /* Chore + plant overdue → amber (maintenance overdue) */
  .card.mob-card:has(.mob-chore-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-plant-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(251, 191, 36, 0.08), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(251, 191, 36, 0.20) !important;
  }
  .card.mob-card:has(.mob-chore-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-plant-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(251, 191, 36, 0.40) !important;
    background: linear-gradient(135deg, rgba(251, 191, 36, 0.11), rgba(139, 92, 246, 0.06)) !important;
  }
  /* Loan + appliance overdue → red (financial/warranty urgency) */
  .card.mob-card:has(.mob-loan-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-appliance-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(248, 113, 113, 0.09), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(248, 113, 113, 0.22) !important;
  }
  .card.mob-card:has(.mob-loan-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-appliance-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(248, 113, 113, 0.40) !important;
    background: linear-gradient(135deg, rgba(248, 113, 113, 0.13), rgba(139, 92, 246, 0.06)) !important;
  }
  /* Expense overrun + project deadline overdue → red */
  .card.mob-card:has(.mob-expense-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-project-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(248, 113, 113, 0.09), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(248, 113, 113, 0.22) !important;
  }
  .card.mob-card:has(.mob-expense-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-project-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(248, 113, 113, 0.40) !important;
    background: linear-gradient(135deg, rgba(248, 113, 113, 0.13), rgba(139, 92, 246, 0.06)) !important;
  }
  /* Gift expired + goal deadline overdue + zakat due → amber */
  .card.mob-card:has(.mob-gift-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-goal-card):has(.mob-hero-accent),
  .card.mob-card:has(.mob-zakat-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(251, 191, 36, 0.08), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(251, 191, 36, 0.20) !important;
  }
  .card.mob-card:has(.mob-gift-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-goal-card):has(.mob-hero-accent) .mob-hero,
  .card.mob-card:has(.mob-zakat-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(251, 191, 36, 0.40) !important;
    background: linear-gradient(135deg, rgba(251, 191, 36, 0.11), rgba(139, 92, 246, 0.06)) !important;
  }
  /* Meeting starting < 1 hour → orange/amber urgency */
  .card.mob-card:has(.mob-meet-card):has(.mob-hero-accent) {
    background:
      linear-gradient(155deg, rgba(251, 146, 60, 0.10), rgba(255, 255, 255, 0.02)),
      rgba(12, 17, 26, 0.72) !important;
    border-color: rgba(251, 146, 60, 0.28) !important;
  }
  .card.mob-card:has(.mob-meet-card):has(.mob-hero-accent) .mob-hero {
    border-color: rgba(251, 146, 60, 0.45) !important;
    background: linear-gradient(135deg, rgba(251, 146, 60, 0.14), rgba(139, 92, 246, 0.06)) !important;
  }

  /* ─── Birthday card override: keep the Person1 layout but adopt today-widget shell ───
   * (The custom .mob-bd-* layout still wins inside this card; we only restore
   *  the warmer pink glow halo because birthday is a special "person" card.) */
  .card.mob-card:has(.mob-birthday-card)::before {
    display: block !important;
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: radial-gradient(circle at 0% 0%, #f472b6, transparent 55%) !important;
    opacity: 0.35 !important;
    filter: blur(28px) !important;
    pointer-events: none !important;
    z-index: 0 !important;
  }
  .card.mob-card:has(.mob-birthday-card) .mob-card-inner { z-index: 1 !important; }

  /* ─── Goal Progress widget — already widget-card style (no change needed) ─── */
}

/* ════════════════════════════════════════════════════════════════════════════
 * DESKTOP NEW-CARD BODY ALIGNMENT
 *
 * New card types reuse the mobile builders as their dashboard body. On desktop
 * the outer card shell already owns the icon, type label, title, footer, and
 * actions, so the inner mobile header/footer must collapse into a clean summary
 * block instead of rendering a duplicated card inside the card.
 * ════════════════════════════════════════════════════════════════════════════ */

@media (min-width: 769px) {
  .dash-grid .card:has(.new-card-host) .card-meta,
  #page-grid .card:has(.new-card-host) .card-meta {
    display: flex !important;
    flex-direction: column !important;
    flex: 1 1 auto !important;
    overflow: visible !important;
    padding: 0 !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .card-body,
  #page-grid .card-featured:has(.new-card-host) .card-body {
    gap: 8px !important;
    padding-top: 0 !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .card-title,
  #page-grid .card-featured:has(.new-card-host) .card-title {
    font-size: 1.18rem !important;
    line-height: 1.38 !important;
    padding: 2px 0 0 !important;
    margin: 0 !important;
    letter-spacing: 0 !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .card-icon,
  #page-grid .card-featured:has(.new-card-host) .card-icon {
    width: 46px !important;
    height: 46px !important;
    border-radius: 14px !important;
    font-size: 1.45rem !important;
    box-shadow: 0 0 18px rgba(var(--card-color, 89, 216, 255), 0.18) !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host,
  #page-grid .card:has(.new-card-host) .new-card-host {
    display: flex !important;
    flex: 1 1 auto !important;
    min-height: 0 !important;
    width: 100% !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-inner,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-inner {
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;
    gap: 8px !important;
    min-height: 0 !important;
    height: auto !important;
    width: 100% !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-header,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-foot,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-actions,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-header,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-foot,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-actions {
    display: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero {
    display: flex !important;
    flex-direction: row !important;
    align-items: baseline !important;
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
    gap: 6px 9px !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 0 9px !important;
    direction: rtl !important;
    text-align: start !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.055) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-num,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-num.mob-hero-accent,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-accent,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-num,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-num.mob-hero-accent,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-accent {
    font-family: var(--font-mono) !important;
    font-size: 1.38rem !important;
    font-weight: 800 !important;
    line-height: 1.05 !important;
    letter-spacing: 0 !important;
    color: rgb(var(--card-color, 89, 216, 255)) !important;
    background: none !important;
    -webkit-text-fill-color: rgb(var(--card-color, 89, 216, 255)) !important;
    text-shadow: none !important;
    filter: none !important;
    font-variant-numeric: tabular-nums !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-unit,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-unit {
    font-family: var(--font-ar) !important;
    min-width: 0 !important;
    max-width: 100% !important;
    font-size: 0.78rem !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    letter-spacing: 0 !important;
    color: rgba(232, 238, 247, 0.72) !important;
    -webkit-text-fill-color: rgba(232, 238, 247, 0.72) !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat-strip,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat-strip {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(82px, 1fr)) !important;
    gap: 0 !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 2px 0 0 !important;
    border: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 2px !important;
    min-width: 0 !important;
    padding: 5px 10px 4px 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-inline-start: 1px solid rgba(255, 255, 255, 0.055) !important;
    border-radius: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat:last-child,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat:last-child {
    border-inline-start: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat-k,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat-k {
    font-family: var(--font-ar) !important;
    font-size: 0.66rem !important;
    font-weight: 650 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: rgba(232, 238, 247, 0.56) !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat-v,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat-v {
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-family: var(--font-mono) !important;
    font-size: 0.82rem !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    color: var(--text) !important;
    font-variant-numeric: tabular-nums !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-progress-row,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-progress-row {
    display: flex !important;
    align-items: center !important;
    width: 100% !important;
    gap: 8px !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-progress-bar,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-progress-bar {
    flex: 1 1 auto !important;
    height: 5px !important;
    border-radius: 999px !important;
    background: rgba(255, 255, 255, 0.06) !important;
    box-shadow: none !important;
    overflow: hidden !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-progress-fill,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-progress-fill {
    height: 100% !important;
    border-radius: inherit !important;
    background: rgb(var(--card-color, 89, 216, 255)) !important;
    box-shadow: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-note-line,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-note-line {
    color: rgba(232, 238, 247, 0.7) !important;
    font-size: 0.84rem !important;
    line-height: 1.55 !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .new-card-host .mob-card-inner,
  #page-grid .card-featured:has(.new-card-host) .new-card-host .mob-card-inner {
    justify-content: flex-start !important;
    gap: 9px !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero,
  #page-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero {
    min-height: 0 !important;
    padding: 0 0 10px !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-num,
  .dash-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-num.mob-hero-accent,
  .dash-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-accent,
  #page-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-num,
  #page-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-num.mob-hero-accent,
  #page-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-accent {
    font-size: 1.55rem !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-unit,
  #page-grid .card-featured:has(.new-card-host) .new-card-host .mob-hero-unit {
    font-size: 0.84rem !important;
  }
}

.card.card-featured:has(.new-card-host)::after,
.card.card-featured.pinned-card:has(.new-card-host)::after {
  display: none !important;
}

@media (max-width: 768px) {
  .dash-grid .card:has(.new-card-host),
  #page-grid .card:has(.new-card-host) {
    display: block !important;
    grid-column: span 1 !important;
    grid-row: auto !important;
    min-height: 0 !important;
    height: auto !important;
    padding: 16px !important;
  }

  .dash-grid .card:has(.new-card-host) .card-shell,
  #page-grid .card:has(.new-card-host) .card-shell {
    grid-column: 1 / -1 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 10px !important;
    width: 100% !important;
    height: auto !important;
  }

  .dash-grid .card:has(.new-card-host) .card-header,
  #page-grid .card:has(.new-card-host) .card-header {
    flex-direction: row-reverse !important;
    align-items: center !important;
    gap: 10px !important;
  }

  .dash-grid .card:has(.new-card-host) .card-header .card-icon,
  #page-grid .card:has(.new-card-host) .card-header .card-icon {
    width: 42px !important;
    height: 42px !important;
    border-radius: 13px !important;
    font-size: 1.28rem !important;
  }

  .dash-grid .card-featured:has(.new-card-host) .card-header .card-icon,
  #page-grid .card-featured:has(.new-card-host) .card-header .card-icon {
    width: 44px !important;
    height: 44px !important;
    font-size: 1.36rem !important;
  }

  .dash-grid .card:has(.new-card-host) .card-body,
  #page-grid .card:has(.new-card-host) .card-body {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    padding: 0 !important;
    overflow: visible !important;
    clip-path: none !important;
  }

  .dash-grid .card:has(.new-card-host) .card-title,
  #page-grid .card:has(.new-card-host) .card-title,
  .dash-grid .card-featured:has(.new-card-host) .card-title,
  #page-grid .card-featured:has(.new-card-host) .card-title {
    display: block !important;
    overflow: visible !important;
    font-size: 1.02rem !important;
    line-height: 1.35 !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .card-meta,
  #page-grid .card:has(.new-card-host) .card-meta {
    display: block !important;
    max-height: none !important;
    overflow: visible !important;
    -webkit-line-clamp: unset !important;
    -webkit-box-orient: unset !important;
    padding: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host,
  #page-grid .card:has(.new-card-host) .new-card-host {
    display: block !important;
    width: 100% !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-inner,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-inner {
    display: flex !important;
    flex-direction: column !important;
    gap: 7px !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-header,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-foot,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-card-actions,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-header,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-foot,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-card-actions {
    display: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero {
    display: flex !important;
    flex-direction: row !important;
    align-items: baseline !important;
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
    gap: 5px 8px !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 0 0 8px !important;
    direction: rtl !important;
    text-align: start !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.055) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-num,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-num.mob-hero-accent,
  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-accent,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-num,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-num.mob-hero-accent,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-accent {
    font-family: var(--font-mono) !important;
    font-size: 1.28rem !important;
    font-weight: 800 !important;
    line-height: 1.05 !important;
    letter-spacing: 0 !important;
    color: rgb(var(--card-color, 89, 216, 255)) !important;
    background: none !important;
    -webkit-text-fill-color: rgb(var(--card-color, 89, 216, 255)) !important;
    text-shadow: none !important;
    filter: none !important;
    font-variant-numeric: tabular-nums !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-hero-unit,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-hero-unit {
    min-width: 0 !important;
    max-width: 100% !important;
    font-size: 0.78rem !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    color: rgba(232, 238, 247, 0.72) !important;
    -webkit-text-fill-color: rgba(232, 238, 247, 0.72) !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat-strip,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat-strip {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(78px, 1fr)) !important;
    gap: 0 !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 1px 0 0 !important;
    border: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 2px !important;
    min-width: 0 !important;
    padding: 4px 8px 3px 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-inline-start: 1px solid rgba(255, 255, 255, 0.055) !important;
    border-radius: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat:last-child,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat:last-child {
    border-inline-start: 0 !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat-k,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat-k {
    font-size: 0.66rem !important;
    font-weight: 650 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: rgba(232, 238, 247, 0.56) !important;
  }

  .dash-grid .card:has(.new-card-host) .new-card-host .mob-stat-v,
  #page-grid .card:has(.new-card-host) .new-card-host .mob-stat-v {
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-family: var(--font-mono) !important;
    font-size: 0.82rem !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    color: var(--text) !important;
    font-variant-numeric: tabular-nums !important;
  }

  .dash-grid .card:has(.new-card-host) .card-footer,
  #page-grid .card:has(.new-card-host) .card-footer {
    margin-top: 0 !important;
    padding-top: 8px !important;
    min-height: 0 !important;
  }
}

@media (max-width: 768px) {
  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) {
    background:
      linear-gradient(180deg, rgba(13, 13, 18, 0.96), rgba(10, 10, 15, 0.92)) !important;
    border: 1px solid rgba(255, 255, 255, 0.06) !important;
    border-radius: 22px !important;
    box-shadow: 0 14px 28px rgba(0, 0, 0, 0.34), 0 0 0 1px rgba(255, 255, 255, 0.02) inset !important;
    overflow: hidden !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  ))::before,
  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  ))::after {
    display: none !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-card-inner {
    padding: 14px 16px 13px !important;
    gap: 9px !important;
    background: transparent !important;
    box-shadow: none !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-card-header {
    align-items: center !important;
    gap: 9px !important;
    padding-bottom: 8px !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.055) !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-card-icon {
    width: 38px !important;
    height: 38px !important;
    border-radius: 12px !important;
    font-size: 1.16rem !important;
    background: rgba(255, 255, 255, 0.05) !important;
    border: 1px solid rgba(255, 255, 255, 0.05) !important;
    box-shadow: none !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-card-title {
    font-family: var(--font-ar) !important;
    font-size: 1rem !important;
    font-weight: 800 !important;
    line-height: 1.35 !important;
    letter-spacing: 0 !important;
    color: var(--text) !important;
    -webkit-text-fill-color: var(--text) !important;
    background: none !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-pill {
    padding: 3px 8px !important;
    border-radius: 10px !important;
    font-family: var(--font-ar) !important;
    font-size: 0.67rem !important;
    font-weight: 700 !important;
    letter-spacing: 0 !important;
    background: rgba(255, 255, 255, 0.045) !important;
    color: rgba(232, 238, 247, 0.62) !important;
    border: 0 !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-hero {
    display: flex !important;
    flex-direction: row !important;
    align-items: baseline !important;
    justify-content: flex-start !important;
    flex-wrap: wrap !important;
    gap: 5px 8px !important;
    margin: 0 !important;
    padding: 0 0 8px !important;
    background: transparent !important;
    border: 0 !important;
    border-bottom: 1px solid rgba(255, 255, 255, 0.055) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    direction: rtl !important;
    text-align: start !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-hero-num,
  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-hero-num.mob-hero-accent,
  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-hero-accent {
    font-family: var(--font-mono) !important;
    font-size: 1.28rem !important;
    font-weight: 800 !important;
    line-height: 1.05 !important;
    letter-spacing: 0 !important;
    color: rgb(var(--card-color, 89, 216, 255)) !important;
    background: none !important;
    -webkit-text-fill-color: rgb(var(--card-color, 89, 216, 255)) !important;
    text-shadow: none !important;
    filter: none !important;
    font-variant-numeric: tabular-nums !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-hero-unit {
    min-width: 0 !important;
    max-width: 100% !important;
    font-size: 0.78rem !important;
    font-weight: 700 !important;
    line-height: 1.35 !important;
    color: rgba(232, 238, 247, 0.72) !important;
    -webkit-text-fill-color: rgba(232, 238, 247, 0.72) !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-stat-strip {
    display: grid !important;
    grid-template-columns: repeat(auto-fit, minmax(78px, 1fr)) !important;
    gap: 0 !important;
    width: 100% !important;
    margin: 0 !important;
    padding: 1px 0 0 !important;
    border: 0 !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-stat {
    display: flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    gap: 2px !important;
    min-width: 0 !important;
    padding: 4px 8px 3px 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-inline-start: 1px solid rgba(255, 255, 255, 0.055) !important;
    border-radius: 0 !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-stat:last-child {
    border-inline-start: 0 !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-stat-k {
    font-family: var(--font-ar) !important;
    font-size: 0.66rem !important;
    font-weight: 650 !important;
    letter-spacing: 0 !important;
    text-transform: none !important;
    color: rgba(232, 238, 247, 0.56) !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-stat-v {
    max-width: 100% !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    font-family: var(--font-mono) !important;
    font-size: 0.82rem !important;
    font-weight: 800 !important;
    letter-spacing: 0 !important;
    color: var(--text) !important;
    font-variant-numeric: tabular-nums !important;
  }

  .card.mob-card:has(:is(
    .mob-quran-card, .mob-pomo-card, .mob-mood-card, .mob-iou-card,
    .mob-savings-card, .mob-goal-card, .mob-week-card,
    .mob-inbox-card, .mob-fasting-card, .mob-zakat-card, .mob-gold-card,
    .mob-nw-card, .mob-pd-card, .mob-appliance-card, .mob-gift-card,
    .mob-chore-card, .mob-project-card, .mob-workout-card,
    .mob-med-card, .mob-vitals-card, .mob-course-card, .mob-lang-card,
    .mob-idea-card, .mob-quote-card, .mob-recipe-card, .mob-meet-card,
    .mob-loan-card, .mob-crypto-card, .mob-plant-card, .mob-journal-card,
    .mob-review-card, .mob-meals-card, .mob-pod-card,
    .mob-pl-card, .mob-trip-card
  )) .mob-card-foot {
    margin-top: 0 !important;
    padding-top: 7px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.055) !important;
    color: rgba(232, 238, 247, 0.42) !important;
    font-size: 0.72rem !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════
 * GENERIC VIEW MODAL (#new-card-view) — shared by all 39 new card types
 * Mirrors widget-card design language: cyan accents, mono numerals, calm
 * sections with subtle dividers. Content is built by openNewCardView()
 * in app.js — this file only styles it.
 * ════════════════════════════════════════════════════════════════════════════ */

#new-card-view .new-card-view-box {
  display: flex;
  flex-direction: column;
}
#new-card-view #new-card-view-title {
  display: flex;
  align-items: center;
  flex: 1;
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 1rem;
  color: var(--text);
}
#new-card-view .modal-content {
  padding: 18px 20px;
  max-height: 70vh;
  overflow-y: auto;
}

/* Hero preview card sits at the top of the modal body */
#new-card-view .ncv-hero {
  margin-bottom: 16px;
  padding: 14px 16px;
  background:
    linear-gradient(155deg, rgba(139, 92, 246, 0.06), rgba(255, 255, 255, 0.02)),
    rgba(12, 17, 26, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 16px;
}
#new-card-view .ncv-hero .mob-card-actions { display: none !important; }
#new-card-view .ncv-hero .mob-card-foot { display: none !important; }

/* Section: title + body block */
.ncv-section { margin-bottom: 14px; }
.ncv-section:last-child { margin-bottom: 0; }
.ncv-section-head {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.82rem;
  color: rgba(232, 238, 247, 0.65);
  margin-bottom: 8px;
  padding-bottom: 6px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}
.ncv-section-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

/* Row inside a section: label-value pair */
.ncv-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 12px;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 8px;
}
.ncv-row-k {
  font-family: var(--font-ar);
  color: rgba(232, 238, 247, 0.55);
  font-size: 0.78rem;
  font-weight: 500;
  flex-shrink: 0;
}
.ncv-row-v {
  font-family: var(--font-mono);
  color: var(--text);
  font-size: 0.85rem;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  text-align: end;
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ncv-row-v strong { color: #59d8ff; font-weight: 800; }
.ncv-currency { opacity: .55; }
.ncv-days-hint { opacity: .55; }
.ncv-flex-val { display: flex; gap: 6px; align-items: center; }
.field-actions { display: flex; gap: 6px; }
.cv-empty-msg      { color: var(--muted); text-align: center; padding: 14px; }
.cv-empty-msg-lg   { color: var(--muted); text-align: center; padding: 20px; }
.cv-empty-msg-sm   { color: var(--muted); text-align: center; padding: 12px; }
.cv-bar { height: 6px; background: rgba(255,255,255,0.06); border-radius: 3px; overflow: hidden; margin: 8px 0; }
.cv-bar-fill { height: 100%; border-radius: 3px; transition: width 0.4s ease; background: linear-gradient(90deg, var(--accent), var(--accent2)); }
.cv-bar-fill-done { background: linear-gradient(90deg, #22c55e, #16a34a); }
.cv-bar-fill-mid  { background: linear-gradient(90deg, #f97316, #ea580c); }
.cv-bar-fill-low  { background: linear-gradient(90deg, #ef4444, #dc2626); }
.cv-stat-row { display: flex; justify-content: space-between; align-items: center; padding: 4px 0; }
.cv-stat-label { font-size: 0.82rem; color: var(--muted); }
.cv-stat-val { font-size: 0.82rem; font-weight: 700; color: var(--text); font-family: var(--font-mono); }
.stats-meta-row { display: flex; align-items: center; gap: 14px; }
.heatmap-legend-row { display: flex; align-items: center; gap: 3px; }
.heatmap-period { color: var(--muted); font-size: 0.72rem; }

/* List item — for iou debts, gold pieces, project tasks, etc. */
.ncv-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid rgba(255, 255, 255, 0.04);
  border-radius: 10px;
}
.ncv-item-top {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
}
.ncv-item-name {
  font-family: var(--font-ar);
  color: var(--text);
  font-weight: 600;
  font-size: 0.92rem;
}
.ncv-item-amount {
  font-family: var(--font-mono);
  font-weight: 700;
  font-size: 0.92rem;
  font-variant-numeric: tabular-nums;
}
.ncv-item-sub {
  font-family: var(--font-ar);
  color: rgba(232, 238, 247, 0.55);
  font-size: 0.74rem;
}
.ncv-task {
  flex-direction: row !important;
  align-items: center !important;
  font-family: var(--font-ar);
  color: rgba(232, 238, 247, 0.85);
}
.ncv-task-done { opacity: 0.5; text-decoration: line-through; }
.ncv-date-mono { font-family: var(--font-mono); opacity: 0.6; }
.ncv-amount-neg  { color: #f87171; }
.ncv-amount-pos  { color: #5eead4; }
.ncv-label-neg   { color: #f87171; font-weight: 700; }
.ncv-label-pos   { color: #5eead4; font-weight: 700; }
.ncv-row-neg     { background: rgba(248,113,113,0.06); border: 1px solid rgba(248,113,113,0.18); }
.ncv-row-neg-mt  { background: rgba(248,113,113,0.06); border: 1px solid rgba(248,113,113,0.18); margin-top: 8px; }
.ncv-row-pos-mt  { background: rgba(94,234,212,0.06);  border: 1px solid rgba(94,234,212,0.18);  margin-top: 6px; }
.ncv-progress-fill-neg { background: #f87171; }

/* Inline progress bar */
.ncv-progress {
  height: 4px;
  border-radius: 2px;
  background: rgba(255, 255, 255, 0.06);
  overflow: hidden;
  margin-top: 4px;
}
.ncv-progress-fill {
  height: 100%;
  background: #59d8ff;
  border-radius: 2px;
}

/* Quote block */
.ncv-quote {
  font-family: var(--font-ar);
  font-style: italic;
  font-size: 1rem;
  line-height: 1.7;
  color: rgba(232, 238, 247, 0.85);
  padding: 12px 16px;
  background: rgba(139, 92, 246, 0.06);
  border-inline-start: 3px solid rgba(139, 92, 246, 0.45);
  border-radius: 10px;
}

/* Pre-formatted (recipe, idea, agenda) */
.ncv-link { color: #59d8ff; text-decoration: none; }
.ncv-link:hover { text-decoration: underline; }
.ncv-pre {
  font-family: var(--font-ar);
  white-space: pre-wrap;
  word-wrap: break-word;
  margin: 0;
  padding: 10px 12px;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 8px;
  color: rgba(232, 238, 247, 0.78);
  font-size: 0.85rem;
  line-height: 1.65;
  max-height: 220px;
  overflow-y: auto;
}

.ncv-empty {
  text-align: center;
  color: rgba(232, 238, 247, 0.4);
  font-family: var(--font-ar);
  font-size: 0.82rem;
  padding: 16px 0;
  font-style: italic;
}

/* Footer buttons */
#new-card-view .modal-actions {
  display: flex;
  gap: 10px;
  padding: 14px 18px;
  border-top: 1px solid rgba(255, 255, 255, 0.06);
}
#new-card-view .modal-actions .btn-cancel,
#new-card-view .modal-actions .btn-save { flex: 1; }

/* ─── Loan card: "آخر قسط" small footer row (works on both mobile + desktop) ─── */
.mob-loan-last-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-top: 6px;
  padding: 6px 12px;
  background: rgba(255, 255, 255, 0.02);
  border-radius: 8px;
}
.mob-loan-last-k {
  font-family: var(--font-ar);
  color: rgba(232, 238, 247, 0.55);
  font-size: 0.74rem;
  font-weight: 500;
}
.mob-loan-last-v {
  font-family: var(--font-ar);
  color: var(--text);
  font-size: 0.82rem;
  font-weight: 700;
}
.new-card-host .mob-loan-last-row {
  margin-top: 8px;
  padding: 8px 12px;
}

/* ─── Vehicle multi-row list (mobile + NCD) ─── */
.mob-vehicle-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
  margin: 4px 0;
}
.mob-vehicle-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.mob-vehicle-name {
  font-size: 0.82rem;
  color: rgba(232, 238, 247, 0.8);
  font-family: var(--font-ar);
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ─── Loan form live preview (matches bank statement) ─── */
.loan-preview {
  margin: 14px 0 6px;
  padding: 12px 14px;
  background: linear-gradient(155deg, rgba(89, 216, 255, 0.06), rgba(255, 255, 255, 0.02)), rgba(12, 17, 26, 0.55);
  border: 1px solid rgba(89, 216, 255, 0.18);
  border-radius: 12px;
}
.loan-preview.hidden { display: none; }
.loan-preview-title {
  font-family: var(--font-ar);
  font-weight: 700;
  font-size: 0.82rem;
  color: rgba(232, 238, 247, 0.85);
  margin-bottom: 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}
.loan-preview-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 6px 0;
  font-family: var(--font-ar);
  font-size: 0.78rem;
  color: rgba(232, 238, 247, 0.75);
}
.loan-preview-row span:last-child {
  font-family: var(--font-mono);
  color: var(--text);
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}
.loan-preview-row.loan-preview-hilite {
  margin-top: 4px;
  padding: 8px 10px;
  background: rgba(89, 216, 255, 0.08);
  border: 1px solid rgba(89, 216, 255, 0.20);
  border-radius: 8px;
}
.loan-preview-row.loan-preview-hilite span:last-child {
  color: #59d8ff;
  font-size: 0.95rem;
}

/* ─── Polish 71 — Status card mobile elements ────────────────────────────── */
.mob-status-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #6b7280;
  flex-shrink: 0;
  vertical-align: middle;
  margin-inline-end: 4px;
}
.mob-dot-online  { background: #22c55e; box-shadow: 0 0 5px rgba(34,197,94,0.75); }
.mob-dot-offline { background: #f87171; box-shadow: 0 0 5px rgba(248,113,113,0.65); }
.mob-dot-unknown { background: #6b7280; }
@media (prefers-reduced-motion: no-preference) {
  .mob-dot-unknown { animation: mob-dot-pulse 1.5s ease-in-out infinite; }
}
@keyframes mob-dot-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.35; }
}

.mob-ping-mini {
  display: flex;
  align-items: flex-end;
  gap: 3px;
  height: 18px;
  margin: 4px 0;
}
.mob-ping-bar {
  width: 7px;
  height: 100%;
  border-radius: 2px;
  background: #22c55e;
  flex-shrink: 0;
  opacity: 0.85;
}
.mob-ping-bar.offline {
  background: #f87171;
  opacity: 0.75;
}

/* ─── Polish 79 — Urgency hero-num colors (overrides Block 3 cyan) ─────────
 * Block 3 forces mob-hero-accent to cyan for all wave-2 cards. When a card's
 * urgency tint (Polish 72/75/78) is active, the hero number should match the
 * urgency color — red for expired/overdue, amber for warnings.               */
@media (max-width: 768px) {
  /* Reminder: overdue=red, urgent=amber */
  .card.mob-card:has(.mob-rem-overdue) .mob-hero-num { color: #f87171 !important; -webkit-text-fill-color: #f87171 !important; background: none !important; }
  .card.mob-card:has(.mob-rem-urgent)  .mob-hero-num { color: #fbbf24 !important; -webkit-text-fill-color: #fbbf24 !important; background: none !important; }

  /* Polish 75 cards — sub/med=red, doc/vehicle=amber */
  .card.mob-card:has(.mob-sub-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-med-card):has(.mob-hero-accent) .mob-hero-num,
  /* Polish 78: loan/appliance=red, expense/project=red */
  .card.mob-card:has(.mob-loan-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-appliance-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-expense-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-project-card):has(.mob-hero-accent) .mob-hero-num { color: #f87171 !important; -webkit-text-fill-color: #f87171 !important; background: none !important; }

  .card.mob-card:has(.mob-doc-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-vehicle-card):has(.mob-hero-accent) .mob-hero-num,
  /* Polish 78: chore/plant=amber, gift/goal/zakat=amber */
  .card.mob-card:has(.mob-chore-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-plant-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-gift-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-goal-card):has(.mob-hero-accent) .mob-hero-num,
  .card.mob-card:has(.mob-zakat-card):has(.mob-hero-accent) .mob-hero-num { color: #fbbf24 !important; -webkit-text-fill-color: #fbbf24 !important; background: none !important; }

  /* Meeting < 1 hour → orange */
  .card.mob-card:has(.mob-meet-card):has(.mob-hero-accent) .mob-hero-num { color: #fb923c !important; -webkit-text-fill-color: #fb923c !important; background: none !important; }

  /* ─── Polish 80 — Utility card type-specific accent borders + icon glows ────
   * All utility cards get the generic rgba(255,255,255,0.07) border from Block 3.
   * These overrides give each type a distinct accent so they're visually
   * distinguishable at a glance in the unified dark shell.                    */
  .card.mob-card:has(.mob-note-card)       { border-color: rgba(245, 158,  11, 0.22) !important; }
  .card.mob-card:has(.mob-wifi-card)       { border-color: rgba(  6, 182, 212, 0.22) !important; }
  .card.mob-card:has(.mob-code-card)       { border-color: rgba( 99, 102, 241, 0.22) !important; }
  .card.mob-card:has(.mob-markdown-card)   { border-color: rgba(167, 139, 250, 0.22) !important; }
  .card.mob-card:has(.mob-contact-card)    { border-color: rgba( 16, 185, 129, 0.22) !important; }
  .card.mob-card:has(.mob-fields-card)     { border-color: rgba( 14, 165, 233, 0.22) !important; }
  .card.mob-card:has(.mob-quicktext-card)  { border-color: rgba( 20, 184, 166, 0.22) !important; }
  .card.mob-card:has(.mob-page-card)       { border-color: rgba(139,  92, 246, 0.25) !important; }
  .card.mob-card:has(.mob-link-card)       { border-color: rgba( 59, 130, 246, 0.22) !important; }
  .card.mob-card:has(.mob-lg-card)         { border-color: rgba( 59, 130, 246, 0.22) !important; }
  .card.mob-card:has(.mob-password-card)   { border-color: rgba(148, 163, 184, 0.22) !important; }

  /* Icon accent glow — emoji drop-shadow so each type "reads" its color identity */
  .card.mob-card:has(.mob-note-card)      .mob-card-icon { filter: drop-shadow(0 0 5px rgba(245, 158,  11, 0.50)); }
  .card.mob-card:has(.mob-wifi-card)      .mob-card-icon { filter: drop-shadow(0 0 5px rgba(  6, 182, 212, 0.50)); }
  .card.mob-card:has(.mob-code-card)      .mob-card-icon { filter: drop-shadow(0 0 5px rgba( 99, 102, 241, 0.50)); }
  .card.mob-card:has(.mob-markdown-card)  .mob-card-icon { filter: drop-shadow(0 0 5px rgba(167, 139, 250, 0.50)); }
  .card.mob-card:has(.mob-contact-card)   .mob-card-icon { filter: drop-shadow(0 0 5px rgba( 16, 185, 129, 0.50)); }
  .card.mob-card:has(.mob-fields-card)    .mob-card-icon { filter: drop-shadow(0 0 5px rgba( 14, 165, 233, 0.50)); }
  .card.mob-card:has(.mob-quicktext-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba( 20, 184, 166, 0.50)); }
  .card.mob-card:has(.mob-page-card)      .mob-card-icon { filter: drop-shadow(0 0 5px rgba(139,  92, 246, 0.50)); }
  .card.mob-card:has(.mob-link-card)      .mob-card-icon { filter: drop-shadow(0 0 5px rgba( 59, 130, 246, 0.50)); }
  .card.mob-card:has(.mob-lg-card)        .mob-card-icon { filter: drop-shadow(0 0 5px rgba( 59, 130, 246, 0.50)); }
  .card.mob-card:has(.mob-password-card)  .mob-card-icon { filter: drop-shadow(0 0 5px rgba(148, 163, 184, 0.40)); }

  /* Note/quote card body — remove the "push-to-bottom" margin from Block 1 */
  .card.mob-card .mob-note-body {
    border-top: none !important;
    margin-top: 0 !important;
    padding-top: 0 !important;
  }

  /* Copy button — match the CTA .mob-counter-btn aesthetic in Block 3 */
  .card.mob-card .mob-copy-btn {
    background: linear-gradient(135deg, rgba(89, 216, 255, 0.14), rgba(139, 92, 246, 0.12)) !important;
    border: 1px solid rgba(89, 216, 255, 0.20) !important;
    color: rgba(89, 216, 255, 0.90) !important;
    border-radius: 10px !important;
    padding: 9px 14px !important;
    font-size: 12.5px !important;
    font-weight: 700 !important;
    box-shadow: none !important;
    margin-top: 4px !important;
  }
  .card.mob-card .mob-copy-btn:hover  { background: linear-gradient(135deg, rgba(89, 216, 255, 0.22), rgba(139, 92, 246, 0.18)) !important; }
  .card.mob-card .mob-copy-btn:active { transform: scale(0.97); }
}

/* ─── Polish 82 — Dark shell integration: wifi/password rows, contact chips ─
 * The wifi pw row, password pw row, and WhatsApp chip were using base-CSS
 * teal/green tones that clashed with Block 3's unified dark shell palette.
 * These overrides bring them in line without losing functional color cues.   */
@media (max-width: 768px) {
  /* Wifi password panel — darker teal-tinted row */
  .card.mob-card .mob-wifi-pw {
    background: rgba(6, 182, 212, 0.05) !important;
    border-color: rgba(6, 182, 212, 0.14) !important;
    border-radius: 10px !important;
  }
  /* Wifi eye/copy buttons — match dark shell CTA gradient (teal tone) */
  .card.mob-card .mob-wifi-pw .mob-wifi-eye,
  .card.mob-card .mob-wifi-pw .mob-wifi-copy {
    background: linear-gradient(135deg, rgba(6, 182, 212, 0.16), rgba(89, 216, 255, 0.10)) !important;
    border: 1px solid rgba(6, 182, 212, 0.28) !important;
    color: #22d3ee !important;
    border-radius: 8px !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    padding: 4px 10px !important;
    transition: background .15s !important;
  }
  .card.mob-card .mob-wifi-pw .mob-wifi-eye:active,
  .card.mob-card .mob-wifi-pw .mob-wifi-copy:active { transform: scale(0.96); }

  /* Password card row — darker purple-tinted row */
  .card.mob-card .mob-pw-row {
    background: rgba(124, 58, 237, 0.05) !important;
    border-color: rgba(124, 58, 237, 0.14) !important;
    border-radius: 10px !important;
  }
  /* Password eye/copy buttons — purple gradient to match password accent */
  .card.mob-card .mob-pw-row .mob-wifi-eye,
  .card.mob-card .mob-pw-row .mob-wifi-copy {
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.20), rgba(167, 139, 250, 0.12)) !important;
    border: 1px solid rgba(139, 92, 246, 0.30) !important;
    color: #c4b5fd !important;
    border-radius: 8px !important;
    font-size: 0.72rem !important;
    font-weight: 700 !important;
    padding: 4px 10px !important;
    transition: background .15s !important;
  }
  .card.mob-card .mob-pw-row .mob-wifi-eye:active,
  .card.mob-card .mob-pw-row .mob-wifi-copy:active { transform: scale(0.96); }

  /* WhatsApp pill — muted green to fit dark shell (was bright #25d366) */
  .card.mob-card .mob-pill-wa {
    background: rgba(37, 211, 102, 0.09) !important;
    color: #4ade80 !important;
    border: none !important;
  }

  /* Contact chips spacing — tighter gap in the compact dark shell */
  .card.mob-card .mob-contact-chips { gap: 5px !important; }

  /* SSID / phone hero text — non-numeric hero values need different sizing */
  .card.mob-card .mob-hero-ssid-text {
    font-family: var(--font-en), monospace !important;
    font-size: 1.15rem !important;
    letter-spacing: 0.02em !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
    max-width: 100% !important;
  }
}

/* ─── Polish 83 — Quote body accent, link-domain chips, link card CTA ────────
 * Brings quote bar, linkgroup chips, and the new link card open-button into
 * alignment with Block 3's dark shell palette.                               */
@media (max-width: 768px) {
  /* Quote body — replace desktop --accent2 with the dark shell teal stripe */
  .card.mob-card .mob-quote-body {
    border-inline-start-color: rgba(89, 216, 255, 0.35) !important;
    padding-inline-start: 12px !important;
    font-style: italic !important;
    color: rgba(232, 238, 247, 0.80) !important;
    line-height: 1.6 !important;
    font-size: 0.9rem !important;
  }
  .card.mob-card .mob-quote-attr {
    font-size: 0.75rem !important;
    color: rgba(232, 238, 247, 0.42) !important;
    text-align: start !important;
  }

  /* Linkgroup domain chips — keep blue identity but soften to dark shell tone */
  .card.mob-card .mob-link-domain-chip {
    background: rgba(59, 130, 246, 0.09) !important;
    border-color: rgba(59, 130, 246, 0.20) !important;
    color: rgba(147, 197, 253, 0.85) !important;
    border-radius: 8px !important;
    font-size: 0.73rem !important;
  }
  .card.mob-card .mob-link-domain-chip:hover,
  .card.mob-card .mob-link-domain-chip:active {
    background: rgba(59, 130, 246, 0.18) !important;
  }

  /* Link card row — remove the ↗ pill (replaced by CTA button) */
  .card.mob-card .mob-link-row > .mob-pill { display: none !important; }

  /* Link card foot — show footer like other cards */
  .card.mob-card:has(.mob-link-card) .mob-card-foot {
    display: flex !important;
    border-top: 1px solid rgba(255, 255, 255, 0.05) !important;
    padding-top: 8px !important;
    margin-top: 4px !important;
  }
}

/* ─── Polish 84 — Block 1 residual push-to-bottom fix for vehicle/stocks ────
 * Block 1 (Track 1 layout) sets margin-top:auto on mob-vehicle-list and
 * mob-stocks-list, pushing them to the card bottom. Block 3 already fixed
 * mob-stat-strip and mob-note-body (Polish 80). This completes the set.      */
@media (max-width: 768px) {
  /* Vehicle list — restore natural flow */
  .card.mob-card .mob-vehicle-list {
    border-top: none !important;
    margin-top: 0 !important;
    padding-top: 0 !important;
  }
  /* Stocks list — restore natural flow (flex:1 from Block 1 also removed) */
  .card.mob-card .mob-stocks-list {
    border-top: none !important;
    margin-top: 0 !important;
    padding-top: 0 !important;
    flex: unset !important;
    justify-content: flex-start !important;
  }
}

/* ─── Polish 85 — Link card Block 1 text bleed fix + compact layout ──────────
 * Block 1 styled mob-link-title at 24px/900/text-shadow and mob-link-domain
 * at 16px/700. Block 3 never overrides these, so they bleed through into the
 * dark shell. Also shrinks the row to match dark shell proportions.          */
@media (max-width: 768px) {
  /* Link row — compact height and smaller icon column */
  .card.mob-card .mob-link-row {
    min-height: 88px !important;
    grid-template-columns: 56px 1fr !important;
    column-gap: 14px !important;
  }
  /* Favicon — scale down from 78px to 56px */
  .card.mob-card .mob-link-fav,
  .card.mob-card .mob-link-fav-fallback {
    width: 56px !important;
    height: 56px !important;
    border-radius: 18px !important;
    font-size: 28px !important;
  }
  /* Link title — match Block 3 card-title style */
  .card.mob-card .mob-link-title {
    font-size: 1.05rem !important;
    font-weight: 700 !important;
    color: var(--text) !important;
    -webkit-text-fill-color: var(--text) !important;
    text-shadow: none !important;
    line-height: 1.3 !important;
    letter-spacing: 0 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  /* Domain — match Block 3 muted text style */
  .card.mob-card .mob-link-domain {
    font-size: 0.78rem !important;
    font-weight: 600 !important;
    color: rgba(232, 238, 247, 0.48) !important;
    -webkit-text-fill-color: rgba(232, 238, 247, 0.48) !important;
    text-align: start !important;
    letter-spacing: 0 !important;
  }
  .card.mob-card .mob-link-path {
    opacity: 0.6 !important;
  }
}

/* ─── Polish 86 — Meeting date hero text + subtle card depth shadow ──────────
 * mob-hero-inline-text (meeting date/time) renders at Block 3's 1.4rem mono
 * which is too large for a locale date string. Override to Arabic font at a
 * readable size. Also adds a very faint depth shadow to all mob-card shells.  */
@media (max-width: 768px) {
  /* Meeting date/time inline text — readable Arabic locale format */
  .card.mob-card .mob-hero-inline-text {
    font-family: var(--font-ar) !important;
    font-size: 0.9rem !important;
    letter-spacing: 0 !important;
    line-height: 1.4 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    max-width: 100% !important;
  }

  /* Very faint depth shadow — Block 3 defaults to none; this adds presence */
  .card.mob-card {
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.22) !important;
  }
  .card.mob-card.pinned-card {
    box-shadow: 0 0 0 1px rgba(139, 92, 246, 0.20), 0 3px 14px rgba(0, 0, 0, 0.28) !important;
  }
}

/* ─── Polish 87 — Emoji hero centering, week-plan label, lg-card open btn ──
 * Three targeted overrides for card UI improvements:
 * 1. mob-hero-emoji-lg inside dark shell — center and pad properly
 * 2. Week plan today label — brighter indigo tint, readable in dark shell
 * 3. lg-card (link group) counter-btn — blue accent to match card stripe     */
@media (max-width: 768px) {
  /* Emoji hero (journal, idea, recipe empty state) — center in dark shell */
  .card.mob-card .mob-hero.mob-hero-emoji-lg {
    text-align: center !important;
    padding: 4px 0 6px !important;
    font-size: 3.2rem !important;
  }

  /* Week plan today label — brighter in dark context */
  .card.mob-card .mob-week-day-label {
    color: rgba(129, 140, 248, 0.90) !important;
    font-size: 0.75rem !important;
    font-weight: 700 !important;
    letter-spacing: 0.04em !important;
    text-transform: uppercase !important;
  }

  /* Week item text — slightly brighter in dark shell */
  .card.mob-card .mob-week-item { color: rgba(232, 238, 247, 0.82) !important; }
  .card.mob-card .mob-week-num  { color: rgba(129, 140, 248, 0.75) !important; }

  /* LinkGroup open button — blue tint matching the lg-card accent stripe */
  .card.mob-card:has(.mob-lg-card) .mob-counter-btn {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.20), rgba(96, 165, 250, 0.12)) !important;
    border-color: rgba(59, 130, 246, 0.30) !important;
    color: #93c5fd !important;
  }
  .card.mob-card:has(.mob-lg-card) .mob-counter-btn:active {
    background: rgba(59, 130, 246, 0.30) !important;
  }
}

/* ─── Polish 88 — Touch target improvements + tracker / habit dot sizing ────
 * DESIGN_RULES minimum touch target: 44px. This fixes two sub-44px controls:
 * 1. Tracker +/− control buttons (34px → 44px)
 * 2. Routine habit dots (36px → 40px; capped to keep 6 per row on 375px phones)
 * 3. Tracker control row — stronger contrast inside dark shell               */
@media (max-width: 768px) {
  /* Tracker ± buttons — proper 44px touch target */
  .card.mob-card .mob-tc-btn {
    width: 44px !important;
    height: 44px !important;
    font-size: 1.3rem !important;
  }

  /* Tracker control row — tighter contrast in dark shell */
  .card.mob-card .mob-tracker-ctrl {
    background: rgba(255, 255, 255, 0.03) !important;
    border-color: rgba(255, 255, 255, 0.07) !important;
    border-radius: 14px !important;
    padding: 6px 12px !important;
  }

  /* Habit dots — 40px (6 fit in 343px card: 6×40+5×6=270px) */
  .card.mob-card .mob-habit-dot {
    width: 40px !important;
    height: 40px !important;
    font-size: 1.2rem !important;
  }
}

/* ─── Polish 77 — Status card latency badge ──────────────────────────────── */
.mob-latency {
  font-size: 0.7rem;
  font-family: var(--font-mono, monospace);
  color: rgba(89, 216, 255, 0.75);
  font-weight: 600;
  letter-spacing: 0.02em;
  margin-inline-start: 4px;
  vertical-align: middle;
}

/* ─── Polish 92 — Code preview scrollability + text-card empty-state fixes ──
 * 1. mob-code-preview: overflow-x:auto so long lines scroll instead of clip
 * 2. Quote card body text — brighter in dark shell for readability
 * 3. Playlist / Podcast hero emoji — consistent sizing via mob-hero-emoji-lg  */
@media (max-width: 768px) {
  /* Code & command previews — horizontal scroll for long lines */
  .card.mob-card .mob-code-preview {
    overflow-x: auto !important;
    overflow-y: hidden !important;
    -webkit-overflow-scrolling: touch !important;
    text-overflow: clip !important;
    scrollbar-width: thin !important;
    scrollbar-color: rgba(255,255,255,0.12) transparent !important;
  }

  /* Quote body — slightly brighter in dark-shell context */
  .card.mob-card:has(.mob-quote-card) .mob-note-body.mob-quote-body {
    color: rgba(232, 238, 247, 0.88) !important;
    font-style: italic !important;
    border-inline-start: 2px solid rgba(129, 140, 248, 0.35) !important;
    padding-inline-start: 10px !important;
    margin: 4px 0 !important;
  }

  /* Quote attribution line — dimmer than quote text */
  .card.mob-card:has(.mob-quote-card) .mob-note-line.mob-quote-attr {
    color: rgba(232, 238, 247, 0.52) !important;
    font-size: 0.78rem !important;
    font-style: normal !important;
  }
}

/* ─── Polish 98 — Empty-state emoji hero float + card UX micro-polish ─────────
 * 1. Gentle float animation for mob-hero-emoji-lg (signals "add data here")
 * 2. Link card favicon — subtle glow in dark shell
 * 3. Wifi card SSID — stronger text in dark shell
 * 4. Mood button active ring — more visible in dark context               */
@media (max-width: 768px) and (prefers-reduced-motion: no-preference) {
  /* Empty-state emoji heroes float gently — subtle life signal */
  .card.mob-card .mob-hero.mob-hero-emoji-lg {
    animation: mob-emoji-float 3.5s ease-in-out infinite !important;
  }
}
@media (max-width: 768px) {

  /* Wifi card SSID in dark shell — brighter and bolder */
  .card.mob-card:has(.mob-wifi-card) .mob-hero-ssid-text {
    font-size: 1.05rem !important;
    font-weight: 600 !important;
    color: rgba(232, 238, 247, 0.95) !important;
    letter-spacing: 0.01em !important;
  }

  /* Mood active dot — stronger ring so selected mood is obvious in dark shell */
  .card.mob-card .mob-mood-btn.mob-mood-active {
    box-shadow: 0 0 0 2px rgba(129, 140, 248, 0.7), 0 0 8px rgba(129, 140, 248, 0.3) !important;
    transform: scale(1.18) !important;
  }

  /* Contact hero phone — tap target highlight */
  .card.mob-card:has(.mob-contact-card) .mob-hero a {
    border-radius: 8px !important;
    padding: 2px 6px !important;
    background: rgba(255, 255, 255, 0.04) !important;
    transition: background 0.15s !important;
  }
  .card.mob-card:has(.mob-contact-card) .mob-hero a:active {
    background: rgba(255, 255, 255, 0.10) !important;
  }
}

/* Float keyframe — outside media so it's always registered */
@keyframes mob-emoji-float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-5px); }
}

/* ─── Polish 102 — Birthday empty-state layout + micro-polish ─────────────────
 * 1. Birthday card empty state — flex-grow so emoji fills available height
 * 2. Reminder card no-date state — neutral appearance (no urgency color)
 * 3. WeekPlan empty hero — tighten spacing before the day label             */
@media (max-width: 768px) {
  /* Birthday card: when no birthday date, emoji hero stretches to fill card */
  .card.mob-card:has(.mob-birthday-card) .mob-hero.mob-hero-emoji-lg {
    flex: 1 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 3.6rem !important;
    padding: 8px 0 !important;
  }

  /* WeekPlan: tighter gap between emoji hero and the day-name label */
  .card.mob-card:has(.mob-week-card) .mob-hero.mob-hero-emoji-lg {
    padding-bottom: 2px !important;
    font-size: 3rem !important;
  }

  /* Journal: tighter hero padding — entry count fits card height better */
  .card.mob-card:has(.mob-journal-card) .mob-hero.mob-hero-emoji-lg {
    padding: 4px 0 2px !important;
  }

  /* Chore & Plant "never done/watered" emoji — slightly smaller so stat strip
     and button remain comfortably visible in the card without scrolling */
  .card.mob-card:has(.mob-chore-card) .mob-hero.mob-hero-emoji-lg,
  .card.mob-card:has(.mob-plant-card) .mob-hero.mob-hero-emoji-lg {
    font-size: 2.8rem !important;
    padding: 4px 0 4px !important;
  }
}

/* ─── Polish 110 — Per-type hero panel accent tints ──────────────────────────
 * Hero panel background gradient + border-color echo each card's background
 * tint group (established in the NCD block and Polish 109).
 * hero-num text color is tinted to match, with accent semantics re-applied
 * at the end so loss/overdue indicators remain amber.                       */
@media (max-width: 768px) {

  /* ── Amber / Gold group ── */
  .card.mob-card:has(.mob-book-card) .mob-hero,
  .card.mob-card:has(.mob-reminder-card) .mob-hero,
  .card.mob-card:has(.mob-mood-card) .mob-hero,
  .card.mob-card:has(.mob-idea-card) .mob-hero,
  .card.mob-card:has(.mob-crypto-card) .mob-hero,
  .card.mob-card:has(.mob-doc-card) .mob-hero,
  .card.mob-card:has(.mob-pd-card) .mob-hero,
  .card.mob-card:has(.mob-zakat-card) .mob-hero,
  .card.mob-card:has(.mob-gold-card) .mob-hero {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.13), rgba(251, 191, 36, 0.05)) !important;
    border-color: rgba(245, 158, 11, 0.32) !important;
  }
  .card.mob-card:has(.mob-book-card) .mob-hero-num,
  .card.mob-card:has(.mob-reminder-card) .mob-hero-num,
  .card.mob-card:has(.mob-mood-card) .mob-hero-num,
  .card.mob-card:has(.mob-idea-card) .mob-hero-num,
  .card.mob-card:has(.mob-crypto-card) .mob-hero-num,
  .card.mob-card:has(.mob-doc-card) .mob-hero-num,
  .card.mob-card:has(.mob-pd-card) .mob-hero-num,
  .card.mob-card:has(.mob-zakat-card) .mob-hero-num,
  .card.mob-card:has(.mob-gold-card) .mob-hero-num { color: #fbbf24 !important; -webkit-text-fill-color: #fbbf24 !important; }

  /* ── Blue group ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-hero,
  .card.mob-card:has(.mob-lg-card) .mob-hero,
  .card.mob-card:has(.mob-course-card) .mob-hero,
  .card.mob-card:has(.mob-meet-card) .mob-hero {
    background: linear-gradient(135deg, rgba(59, 130, 246, 0.13), rgba(96, 165, 250, 0.05)) !important;
    border-color: rgba(59, 130, 246, 0.32) !important;
  }
  .card.mob-card:has(.mob-vehicle-card) .mob-hero-num,
  .card.mob-card:has(.mob-lg-card) .mob-hero-num,
  .card.mob-card:has(.mob-course-card) .mob-hero-num,
  .card.mob-card:has(.mob-meet-card) .mob-hero-num { color: #93c5fd !important; -webkit-text-fill-color: #93c5fd !important; }

  /* ── Indigo group ── */
  .card.mob-card:has(.mob-note-card) .mob-hero,
  .card.mob-card:has(.mob-markdown-card) .mob-hero,
  .card.mob-card:has(.mob-link-card) .mob-hero,
  .card.mob-card:has(.mob-code-card) .mob-hero,
  .card.mob-card:has(.mob-page-card) .mob-hero,
  .card.mob-card:has(.mob-password-card) .mob-hero,
  .card.mob-card:has(.mob-quicktext-card) .mob-hero,
  .card.mob-card:has(.mob-fasting-card) .mob-hero,
  .card.mob-card:has(.mob-project-card) .mob-hero,
  .card.mob-card:has(.mob-tracker-card) .mob-hero,
  .card.mob-card:has(.mob-week-card) .mob-hero,
  .card.mob-card:has(.mob-goal-card) .mob-hero {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.13), rgba(129, 140, 248, 0.05)) !important;
    border-color: rgba(99, 102, 241, 0.32) !important;
  }
  .card.mob-card:has(.mob-note-card) .mob-hero-num,
  .card.mob-card:has(.mob-markdown-card) .mob-hero-num,
  .card.mob-card:has(.mob-link-card) .mob-hero-num,
  .card.mob-card:has(.mob-code-card) .mob-hero-num,
  .card.mob-card:has(.mob-page-card) .mob-hero-num,
  .card.mob-card:has(.mob-password-card) .mob-hero-num,
  .card.mob-card:has(.mob-quicktext-card) .mob-hero-num,
  .card.mob-card:has(.mob-fasting-card) .mob-hero-num,
  .card.mob-card:has(.mob-project-card) .mob-hero-num,
  .card.mob-card:has(.mob-tracker-card) .mob-hero-num,
  .card.mob-card:has(.mob-week-card) .mob-hero-num,
  .card.mob-card:has(.mob-goal-card) .mob-hero-num { color: #a5b4fc !important; -webkit-text-fill-color: #a5b4fc !important; }

  /* ── Cyan group ── */
  .card.mob-card:has(.mob-sub-card) .mob-hero,
  .card.mob-card:has(.mob-wifi-card) .mob-hero,
  .card.mob-card:has(.mob-chore-card) .mob-hero,
  .card.mob-card:has(.mob-review-card) .mob-hero,
  .card.mob-card:has(.mob-counter-card) .mob-hero,
  .card.mob-card:has(.mob-lang-card) .mob-hero,
  .card.mob-card:has(.mob-trip-card) .mob-hero,
  .card.mob-card:has(.mob-status-card) .mob-hero {
    background: linear-gradient(135deg, rgba(6, 182, 212, 0.13), rgba(34, 211, 238, 0.05)) !important;
    border-color: rgba(6, 182, 212, 0.32) !important;
  }
  .card.mob-card:has(.mob-sub-card) .mob-hero-num,
  .card.mob-card:has(.mob-wifi-card) .mob-hero-num,
  .card.mob-card:has(.mob-chore-card) .mob-hero-num,
  .card.mob-card:has(.mob-review-card) .mob-hero-num,
  .card.mob-card:has(.mob-counter-card) .mob-hero-num,
  .card.mob-card:has(.mob-lang-card) .mob-hero-num,
  .card.mob-card:has(.mob-trip-card) .mob-hero-num,
  .card.mob-card:has(.mob-status-card) .mob-hero-num { color: #22d3ee !important; -webkit-text-fill-color: #22d3ee !important; }

  /* ── Pink / Rose group ── */
  .card.mob-card:has(.mob-gift-card) .mob-hero,
  .card.mob-card:has(.mob-journal-card) .mob-hero,
  .card.mob-card:has(.mob-pod-card) .mob-hero,
  .card.mob-card:has(.mob-birthday-card) .mob-hero {
    background: linear-gradient(135deg, rgba(236, 72, 153, 0.13), rgba(244, 114, 182, 0.05)) !important;
    border-color: rgba(236, 72, 153, 0.30) !important;
  }
  .card.mob-card:has(.mob-gift-card) .mob-hero-num,
  .card.mob-card:has(.mob-journal-card) .mob-hero-num,
  .card.mob-card:has(.mob-pod-card) .mob-hero-num,
  .card.mob-card:has(.mob-birthday-card) .mob-hero-num { color: #f472b6 !important; -webkit-text-fill-color: #f472b6 !important; }

  /* ── Purple group ── */
  .card.mob-card:has(.mob-contact-card) .mob-hero,
  .card.mob-card:has(.mob-quote-card) .mob-hero,
  .card.mob-card:has(.mob-med-card) .mob-hero,
  .card.mob-card:has(.mob-inbox-card) .mob-hero,
  .card.mob-card:has(.mob-fields-card) .mob-hero,
  .card.mob-card:has(.mob-nw-card) .mob-hero {
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.13), rgba(192, 132, 252, 0.05)) !important;
    border-color: rgba(139, 92, 246, 0.32) !important;
  }
  .card.mob-card:has(.mob-contact-card) .mob-hero-num,
  .card.mob-card:has(.mob-quote-card) .mob-hero-num,
  .card.mob-card:has(.mob-med-card) .mob-hero-num,
  .card.mob-card:has(.mob-inbox-card) .mob-hero-num,
  .card.mob-card:has(.mob-fields-card) .mob-hero-num,
  .card.mob-card:has(.mob-nw-card) .mob-hero-num { color: #c084fc !important; -webkit-text-fill-color: #c084fc !important; }

  /* ── Green group ── */
  .card.mob-card:has(.mob-plant-card) .mob-hero,
  .card.mob-card:has(.mob-pl-card) .mob-hero,
  .card.mob-card:has(.mob-stocks-card) .mob-hero,
  .card.mob-card:has(.mob-savings-card) .mob-hero,
  .card.mob-card:has(.mob-checklist-card) .mob-hero,
  .card.mob-card:has(.mob-routine-card) .mob-hero,
  .card.mob-card:has(.mob-quran-card) .mob-hero {
    background: linear-gradient(135deg, rgba(34, 197, 94, 0.12), rgba(16, 185, 129, 0.05)) !important;
    border-color: rgba(34, 197, 94, 0.28) !important;
  }
  .card.mob-card:has(.mob-plant-card) .mob-hero-num,
  .card.mob-card:has(.mob-pl-card) .mob-hero-num,
  .card.mob-card:has(.mob-stocks-card) .mob-hero-num,
  .card.mob-card:has(.mob-savings-card) .mob-hero-num,
  .card.mob-card:has(.mob-checklist-card) .mob-hero-num,
  .card.mob-card:has(.mob-routine-card) .mob-hero-num,
  .card.mob-card:has(.mob-quran-card) .mob-hero-num { color: #4ade80 !important; -webkit-text-fill-color: #4ade80 !important; }

  /* ── Red group ── */
  .card.mob-card:has(.mob-watchlist-card) .mob-hero,
  .card.mob-card:has(.mob-countdown-card) .mob-hero,
  .card.mob-card:has(.mob-loan-card) .mob-hero,
  .card.mob-card:has(.mob-pomo-card) .mob-hero,
  .card.mob-card:has(.mob-vitals-card) .mob-hero,
  .card.mob-card:has(.mob-workout-card) .mob-hero {
    background: linear-gradient(135deg, rgba(239, 68, 68, 0.13), rgba(248, 113, 113, 0.05)) !important;
    border-color: rgba(239, 68, 68, 0.30) !important;
  }
  .card.mob-card:has(.mob-watchlist-card) .mob-hero-num,
  .card.mob-card:has(.mob-countdown-card) .mob-hero-num,
  .card.mob-card:has(.mob-loan-card) .mob-hero-num,
  .card.mob-card:has(.mob-pomo-card) .mob-hero-num,
  .card.mob-card:has(.mob-vitals-card) .mob-hero-num,
  .card.mob-card:has(.mob-workout-card) .mob-hero-num { color: #f87171 !important; -webkit-text-fill-color: #f87171 !important; }

  /* ── Orange group ── */
  .card.mob-card:has(.mob-iou-card) .mob-hero,
  .card.mob-card:has(.mob-expense-card) .mob-hero,
  .card.mob-card:has(.mob-recipe-card) .mob-hero,
  .card.mob-card:has(.mob-meals-card) .mob-hero {
    background: linear-gradient(135deg, rgba(249, 115, 22, 0.13), rgba(251, 146, 60, 0.05)) !important;
    border-color: rgba(249, 115, 22, 0.30) !important;
  }
  .card.mob-card:has(.mob-iou-card) .mob-hero-num,
  .card.mob-card:has(.mob-expense-card) .mob-hero-num,
  .card.mob-card:has(.mob-recipe-card) .mob-hero-num,
  .card.mob-card:has(.mob-meals-card) .mob-hero-num { color: #fb923c !important; -webkit-text-fill-color: #fb923c !important; }

  /* Re-apply accent semantics — accent numbers stay amber regardless of group */
  .card.mob-card .mob-hero-num.mob-hero-accent,
  .card.mob-card .mob-hero-accent { color: #fbbf24 !important; -webkit-text-fill-color: #fbbf24 !important; }
}

/* ─── Polish 111 — Missing per-type CTA accent colors ────────────────────────
 * Adds CTA button accent colors for card types not covered by the NCD block
 * (36628-36723): note, quicktext (indigo); wifi (cyan); contact, fields (violet).
 * These use the same --da-* gradient formula as the existing NCD CTA rules.  */
@media (max-width: 768px) {
  /* note / quicktext — indigo / violet accent */
  .card.mob-card:has(.mob-note-card) .mob-counter-btn,
  .card.mob-card:has(.mob-quicktext-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
  /* wifi — cyan accent */
  .card.mob-card:has(.mob-wifi-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-cyan), color-mix(in oklch, var(--da-cyan) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
  }
  /* contact / fields — violet / purple accent */
  .card.mob-card:has(.mob-contact-card) .mob-counter-btn,
  .card.mob-card:has(.mob-fields-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
}

/* ─── Polish 112 — Per-type copy-btn theming + code preview tint + appliance hero ─
 * 1. mob-copy-btn accent colors for text-content cards (indigo & purple groups)
 *    to match their Polish-110 hero-panel hues instead of the uniform cyan-violet.
 * 2. Code / command card preview block gets a subtle indigo tint for group coherence.
 * 3. Markdown preview text is lightly indigo-tinted to echo the card's hero color.
 * 4. Appliance card hero-panel gets an amber tint (consistent with its NCD CTA).  */
@media (max-width: 768px) {

  /* ── Indigo group copy buttons: note / quicktext / code / command / markdown ── */
  .card.mob-card:has(.mob-note-card) .mob-copy-btn,
  .card.mob-card:has(.mob-quicktext-card) .mob-copy-btn,
  .card.mob-card:has(.mob-code-card) .mob-copy-btn,
  .card.mob-card:has(.mob-markdown-card) .mob-copy-btn {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.15), rgba(129, 140, 248, 0.09)) !important;
    border: 1px solid rgba(99, 102, 241, 0.28) !important;
    color: #a5b4fc !important;
  }
  .card.mob-card:has(.mob-note-card) .mob-copy-btn:hover,
  .card.mob-card:has(.mob-quicktext-card) .mob-copy-btn:hover,
  .card.mob-card:has(.mob-code-card) .mob-copy-btn:hover,
  .card.mob-card:has(.mob-markdown-card) .mob-copy-btn:hover {
    background: linear-gradient(135deg, rgba(99, 102, 241, 0.26), rgba(129, 140, 248, 0.17)) !important;
    border-color: rgba(99, 102, 241, 0.44) !important;
  }

  /* ── Purple group copy button: quote card ── */
  .card.mob-card:has(.mob-quote-card) .mob-copy-btn {
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.15), rgba(167, 139, 250, 0.09)) !important;
    border: 1px solid rgba(139, 92, 246, 0.28) !important;
    color: #c084fc !important;
  }
  .card.mob-card:has(.mob-quote-card) .mob-copy-btn:hover {
    background: linear-gradient(135deg, rgba(139, 92, 246, 0.26), rgba(167, 139, 250, 0.17)) !important;
    border-color: rgba(139, 92, 246, 0.44) !important;
  }

  /* ── Code & command preview — subtle indigo tint ── */
  .card.mob-card:has(.mob-code-card) .mob-code-preview {
    background: rgba(99, 102, 241, 0.05) !important;
    border: 1px solid rgba(99, 102, 241, 0.17) !important;
    color: rgba(165, 180, 252, 0.88) !important;
  }

  /* ── Markdown preview text — light indigo tint ── */
  .card.mob-card:has(.mob-markdown-card) .mob-md-preview {
    color: rgba(165, 180, 252, 0.72) !important;
    border-inline-start: 2px solid rgba(99, 102, 241, 0.22) !important;
    padding-inline-start: 8px !important;
  }

  /* ── Appliance card hero panel — amber tint (matches NCD CTA amber group) ──
   * The per-type accent rule at (0,5,0) for appliance-accent still wins and
   * shows red (#f87171) when warranty has expired (mob-hero-accent present).   */
  .card.mob-card:has(.mob-appliance-card) .mob-hero {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.13), rgba(251, 191, 36, 0.05)) !important;
    border-color: rgba(245, 158, 11, 0.32) !important;
  }
  .card.mob-card:has(.mob-appliance-card) .mob-hero-num {
    color: #fbbf24 !important;
    -webkit-text-fill-color: #fbbf24 !important;
  }
}

/* ─── Polish 113 — Week-plan item borders + note body tint + pw-card hero ────
 * 1. Week-plan items get a subtle indigo left border to complete the group
 *    theming started in Polish 87 (day-label) and continued in Polish 112.
 * 2. Note / quicktext card body lines get a very light indigo text hint,
 *    echoing the hero-panel and copy-button colors from Polish 110 & 112.
 * 3. Password card hero already handled by JS (app.js v418) — no CSS needed
 *    beyond what Polish 110 indigo group provides (#a5b4fc + amber accent).  */
@media (max-width: 768px) {

  /* ── Week plan items — indigo left border (completes day-label theming) ── */
  .card.mob-card:has(.mob-week-card) .mob-week-item {
    border-inline-start: 2px solid rgba(99, 102, 241, 0.20) !important;
    padding-inline-start: 8px !important;
    margin-inline-start: 2px !important;
  }

  /* ── Note / quicktext body lines — subtle indigo text hint ── */
  .card.mob-card:has(.mob-note-card) .mob-note-body .mob-note-line:not(.mob-note-dim),
  .card.mob-card:has(.mob-quicktext-card) .mob-note-body .mob-note-line:not(.mob-note-dim) {
    color: rgba(165, 180, 252, 0.78) !important;
  }

  /* ── Password card — indigo row labels (mob-pw-label) for group coherence ── */
  .card.mob-card:has(.mob-password-card) .mob-pw-label {
    color: rgba(99, 102, 241, 0.70) !important;
  }
}

/* ─── Polish 114 — Quote card CTA + Mood card active ring per-group accent ────
 * 1. Quote card "أضف اقتباساً" counter-btn was missing from NCD CTA block and
 *    Polish 111 (which covered note/quicktext/wifi/contact/fields). Adding it
 *    now with var(--da-violet) consistent with NCD's violet CTA family.
 * 2. Mood card active-mood ring was using the generic indigo token (#a5b4fc)
 *    from the widget block. Mood is in the amber/gold group (Polish 110), so
 *    the ring should be amber — providing visual coherence with hero & CTA.    */
@media (max-width: 768px) {

  /* ── Quote card empty-state CTA — violet (matches NCD violet family) ── */
  .card.mob-card:has(.mob-quote-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }

  /* ── Mood active button — amber ring (matches Polish-110 amber group) ── */
  .card.mob-card:has(.mob-mood-card) .mob-mood-btn.mob-mood-active {
    box-shadow: 0 0 0 2px rgba(245, 158, 11, 0.65), 0 0 10px rgba(251, 191, 36, 0.22) !important;
  }
}

/* ─── Polish 115 — Per-group hero-unit chromatic tinting + detail accents ───
 * The global widget block forces mob-hero-unit to var(--text) at (0,3,0).
 * These per-type-group rules at (0,4,0) bring the unit label into the same
 * chromatic family as its hero-num, unifying the hero panel aesthetically.
 * Opacity 0.55–0.60 keeps it readable without competing with the number.
 * Also: vehicle-name blue tint + recipe ingredient line orange tint.        */
@media (max-width: 768px) {

  /* ── AMBER/GOLD group — book, reminder, mood, idea, crypto, doc, pd, zakat, gold, appliance ── */
  .card.mob-card:has(.mob-book-card) .mob-hero-unit,
  .card.mob-card:has(.mob-reminder-card) .mob-hero-unit,
  .card.mob-card:has(.mob-mood-card) .mob-hero-unit,
  .card.mob-card:has(.mob-idea-card) .mob-hero-unit,
  .card.mob-card:has(.mob-crypto-card) .mob-hero-unit,
  .card.mob-card:has(.mob-doc-card) .mob-hero-unit,
  .card.mob-card:has(.mob-pd-card) .mob-hero-unit,
  .card.mob-card:has(.mob-zakat-card) .mob-hero-unit,
  .card.mob-card:has(.mob-gold-card) .mob-hero-unit,
  .card.mob-card:has(.mob-appliance-card) .mob-hero-unit {
    color: rgba(251, 191, 36, 0.58) !important;
    -webkit-text-fill-color: rgba(251, 191, 36, 0.58) !important;
  }

  /* ── BLUE group — vehicle, lg, course, meet ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-hero-unit,
  .card.mob-card:has(.mob-lg-card) .mob-hero-unit,
  .card.mob-card:has(.mob-course-card) .mob-hero-unit,
  .card.mob-card:has(.mob-meet-card) .mob-hero-unit {
    color: rgba(147, 197, 253, 0.58) !important;
    -webkit-text-fill-color: rgba(147, 197, 253, 0.58) !important;
  }

  /* ── INDIGO group — note, markdown, link, code, page, password, quicktext,
                       fasting, project, tracker, week, goal ── */
  .card.mob-card:has(.mob-note-card) .mob-hero-unit,
  .card.mob-card:has(.mob-markdown-card) .mob-hero-unit,
  .card.mob-card:has(.mob-link-card) .mob-hero-unit,
  .card.mob-card:has(.mob-code-card) .mob-hero-unit,
  .card.mob-card:has(.mob-page-card) .mob-hero-unit,
  .card.mob-card:has(.mob-password-card) .mob-hero-unit,
  .card.mob-card:has(.mob-quicktext-card) .mob-hero-unit,
  .card.mob-card:has(.mob-fasting-card) .mob-hero-unit,
  .card.mob-card:has(.mob-project-card) .mob-hero-unit,
  .card.mob-card:has(.mob-tracker-card) .mob-hero-unit,
  .card.mob-card:has(.mob-week-card) .mob-hero-unit,
  .card.mob-card:has(.mob-goal-card) .mob-hero-unit {
    color: rgba(165, 180, 252, 0.58) !important;
    -webkit-text-fill-color: rgba(165, 180, 252, 0.58) !important;
  }

  /* ── CYAN group — sub, wifi, chore, review, counter, lang, trip, status ── */
  .card.mob-card:has(.mob-sub-card) .mob-hero-unit,
  .card.mob-card:has(.mob-wifi-card) .mob-hero-unit,
  .card.mob-card:has(.mob-chore-card) .mob-hero-unit,
  .card.mob-card:has(.mob-review-card) .mob-hero-unit,
  .card.mob-card:has(.mob-counter-card) .mob-hero-unit,
  .card.mob-card:has(.mob-lang-card) .mob-hero-unit,
  .card.mob-card:has(.mob-trip-card) .mob-hero-unit,
  .card.mob-card:has(.mob-status-card) .mob-hero-unit {
    color: rgba(34, 211, 238, 0.55) !important;
    -webkit-text-fill-color: rgba(34, 211, 238, 0.55) !important;
  }

  /* ── PINK/ROSE group — gift, journal, pod, birthday ── */
  .card.mob-card:has(.mob-gift-card) .mob-hero-unit,
  .card.mob-card:has(.mob-journal-card) .mob-hero-unit,
  .card.mob-card:has(.mob-pod-card) .mob-hero-unit,
  .card.mob-card:has(.mob-birthday-card) .mob-hero-unit {
    color: rgba(244, 114, 182, 0.58) !important;
    -webkit-text-fill-color: rgba(244, 114, 182, 0.58) !important;
  }

  /* ── PURPLE group — contact, quote, med, inbox, fields, nw ── */
  .card.mob-card:has(.mob-contact-card) .mob-hero-unit,
  .card.mob-card:has(.mob-quote-card) .mob-hero-unit,
  .card.mob-card:has(.mob-med-card) .mob-hero-unit,
  .card.mob-card:has(.mob-inbox-card) .mob-hero-unit,
  .card.mob-card:has(.mob-fields-card) .mob-hero-unit,
  .card.mob-card:has(.mob-nw-card) .mob-hero-unit {
    color: rgba(192, 132, 252, 0.58) !important;
    -webkit-text-fill-color: rgba(192, 132, 252, 0.58) !important;
  }

  /* ── GREEN group — plant, pl, stocks, savings, checklist, routine, quran ── */
  .card.mob-card:has(.mob-plant-card) .mob-hero-unit,
  .card.mob-card:has(.mob-pl-card) .mob-hero-unit,
  .card.mob-card:has(.mob-stocks-card) .mob-hero-unit,
  .card.mob-card:has(.mob-savings-card) .mob-hero-unit,
  .card.mob-card:has(.mob-checklist-card) .mob-hero-unit,
  .card.mob-card:has(.mob-routine-card) .mob-hero-unit,
  .card.mob-card:has(.mob-quran-card) .mob-hero-unit {
    color: rgba(74, 222, 128, 0.55) !important;
    -webkit-text-fill-color: rgba(74, 222, 128, 0.55) !important;
  }

  /* ── RED group — watchlist, countdown, loan, pomo, vitals, workout ── */
  .card.mob-card:has(.mob-watchlist-card) .mob-hero-unit,
  .card.mob-card:has(.mob-countdown-card) .mob-hero-unit,
  .card.mob-card:has(.mob-loan-card) .mob-hero-unit,
  .card.mob-card:has(.mob-pomo-card) .mob-hero-unit,
  .card.mob-card:has(.mob-vitals-card) .mob-hero-unit,
  .card.mob-card:has(.mob-workout-card) .mob-hero-unit {
    color: rgba(248, 113, 113, 0.58) !important;
    -webkit-text-fill-color: rgba(248, 113, 113, 0.58) !important;
  }

  /* ── ORANGE group — iou, expense, recipe, meals ── */
  .card.mob-card:has(.mob-iou-card) .mob-hero-unit,
  .card.mob-card:has(.mob-expense-card) .mob-hero-unit,
  .card.mob-card:has(.mob-recipe-card) .mob-hero-unit,
  .card.mob-card:has(.mob-meals-card) .mob-hero-unit {
    color: rgba(251, 146, 60, 0.58) !important;
    -webkit-text-fill-color: rgba(251, 146, 60, 0.58) !important;
  }

  /* ── Vehicle card — subtle blue tint on vehicle-name list rows ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-vehicle-name {
    color: rgba(147, 197, 253, 0.80) !important;
  }

  /* ── Recipe card — subtle orange tint on ingredients preview line ── */
  .card.mob-card:has(.mob-recipe-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 146, 60, 0.60) !important;
  }
}

/* ─── Polish 116 — Complete border + icon-glow system for all card types ─────
 * Polish 80 added borders/glows for 11 cards but used inconsistent colors.
 * This block uses the Polish-110 9-group palette uniformly:
 *   Amber #fbbf24 · Blue #93c5fd · Indigo #6366f1 · Cyan #22d3ee
 *   Pink #f472b6 · Purple #8b5cf6 · Green #4ade80 · Red #f87171 · Orange #fb923c
 * Source-order wins over Polish 80's (0,3,0) selectors at the same specificity. */
@media (max-width: 768px) {

  /* ── AMBER group borders — book, reminder, mood, idea, crypto, doc, pd, zakat, gold, appliance ── */
  .card.mob-card:has(.mob-book-card),
  .card.mob-card:has(.mob-reminder-card),
  .card.mob-card:has(.mob-mood-card),
  .card.mob-card:has(.mob-idea-card),
  .card.mob-card:has(.mob-crypto-card),
  .card.mob-card:has(.mob-doc-card),
  .card.mob-card:has(.mob-pd-card),
  .card.mob-card:has(.mob-zakat-card),
  .card.mob-card:has(.mob-gold-card),
  .card.mob-card:has(.mob-appliance-card) { border-color: rgba(251, 191, 36, 0.22) !important; }

  .card.mob-card:has(.mob-book-card) .mob-card-icon,
  .card.mob-card:has(.mob-reminder-card) .mob-card-icon,
  .card.mob-card:has(.mob-mood-card) .mob-card-icon,
  .card.mob-card:has(.mob-idea-card) .mob-card-icon,
  .card.mob-card:has(.mob-crypto-card) .mob-card-icon,
  .card.mob-card:has(.mob-doc-card) .mob-card-icon,
  .card.mob-card:has(.mob-pd-card) .mob-card-icon,
  .card.mob-card:has(.mob-zakat-card) .mob-card-icon,
  .card.mob-card:has(.mob-gold-card) .mob-card-icon,
  .card.mob-card:has(.mob-appliance-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(251, 191, 36, 0.50)); }

  /* ── BLUE group borders — vehicle, course, meet (lg/link already covered) ── */
  .card.mob-card:has(.mob-vehicle-card),
  .card.mob-card:has(.mob-course-card),
  .card.mob-card:has(.mob-meet-card) { border-color: rgba(147, 197, 253, 0.22) !important; }

  .card.mob-card:has(.mob-vehicle-card) .mob-card-icon,
  .card.mob-card:has(.mob-course-card) .mob-card-icon,
  .card.mob-card:has(.mob-meet-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(147, 197, 253, 0.50)); }

  /* ── INDIGO group borders — fasting, project, tracker, week, goal +
     fix quicktext/password which Polish 80 set to wrong colors ── */
  .card.mob-card:has(.mob-quicktext-card),
  .card.mob-card:has(.mob-password-card),
  .card.mob-card:has(.mob-fasting-card),
  .card.mob-card:has(.mob-project-card),
  .card.mob-card:has(.mob-tracker-card),
  .card.mob-card:has(.mob-week-card),
  .card.mob-card:has(.mob-goal-card) { border-color: rgba(99, 102, 241, 0.22) !important; }

  .card.mob-card:has(.mob-quicktext-card) .mob-card-icon,
  .card.mob-card:has(.mob-password-card) .mob-card-icon,
  .card.mob-card:has(.mob-fasting-card) .mob-card-icon,
  .card.mob-card:has(.mob-project-card) .mob-card-icon,
  .card.mob-card:has(.mob-tracker-card) .mob-card-icon,
  .card.mob-card:has(.mob-week-card) .mob-card-icon,
  .card.mob-card:has(.mob-goal-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(99, 102, 241, 0.50)); }

  /* ── CYAN group borders — sub, chore, review, counter, lang, trip, status ── */
  .card.mob-card:has(.mob-sub-card),
  .card.mob-card:has(.mob-chore-card),
  .card.mob-card:has(.mob-review-card),
  .card.mob-card:has(.mob-counter-card),
  .card.mob-card:has(.mob-lang-card),
  .card.mob-card:has(.mob-trip-card),
  .card.mob-card:has(.mob-status-card) { border-color: rgba(34, 211, 238, 0.22) !important; }

  .card.mob-card:has(.mob-sub-card) .mob-card-icon,
  .card.mob-card:has(.mob-chore-card) .mob-card-icon,
  .card.mob-card:has(.mob-review-card) .mob-card-icon,
  .card.mob-card:has(.mob-counter-card) .mob-card-icon,
  .card.mob-card:has(.mob-lang-card) .mob-card-icon,
  .card.mob-card:has(.mob-trip-card) .mob-card-icon,
  .card.mob-card:has(.mob-status-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(34, 211, 238, 0.50)); }

  /* ── PINK group borders — gift, journal, pod, birthday ── */
  .card.mob-card:has(.mob-gift-card),
  .card.mob-card:has(.mob-journal-card),
  .card.mob-card:has(.mob-pod-card),
  .card.mob-card:has(.mob-birthday-card) { border-color: rgba(244, 114, 182, 0.22) !important; }

  .card.mob-card:has(.mob-gift-card) .mob-card-icon,
  .card.mob-card:has(.mob-journal-card) .mob-card-icon,
  .card.mob-card:has(.mob-pod-card) .mob-card-icon,
  .card.mob-card:has(.mob-birthday-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(244, 114, 182, 0.50)); }

  /* ── PURPLE group borders — quote, med, inbox, nw +
     fix contact/fields which Polish 80 set to wrong colors ── */
  .card.mob-card:has(.mob-contact-card),
  .card.mob-card:has(.mob-fields-card),
  .card.mob-card:has(.mob-quote-card),
  .card.mob-card:has(.mob-med-card),
  .card.mob-card:has(.mob-inbox-card),
  .card.mob-card:has(.mob-nw-card) { border-color: rgba(139, 92, 246, 0.25) !important; }

  .card.mob-card:has(.mob-contact-card) .mob-card-icon,
  .card.mob-card:has(.mob-fields-card) .mob-card-icon,
  .card.mob-card:has(.mob-quote-card) .mob-card-icon,
  .card.mob-card:has(.mob-med-card) .mob-card-icon,
  .card.mob-card:has(.mob-inbox-card) .mob-card-icon,
  .card.mob-card:has(.mob-nw-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(139, 92, 246, 0.50)); }

  /* ── GREEN group borders — plant, pl, stocks, savings, checklist, routine, quran ── */
  .card.mob-card:has(.mob-plant-card),
  .card.mob-card:has(.mob-pl-card),
  .card.mob-card:has(.mob-stocks-card),
  .card.mob-card:has(.mob-savings-card),
  .card.mob-card:has(.mob-checklist-card),
  .card.mob-card:has(.mob-routine-card),
  .card.mob-card:has(.mob-quran-card) { border-color: rgba(74, 222, 128, 0.22) !important; }

  .card.mob-card:has(.mob-plant-card) .mob-card-icon,
  .card.mob-card:has(.mob-pl-card) .mob-card-icon,
  .card.mob-card:has(.mob-stocks-card) .mob-card-icon,
  .card.mob-card:has(.mob-savings-card) .mob-card-icon,
  .card.mob-card:has(.mob-checklist-card) .mob-card-icon,
  .card.mob-card:has(.mob-routine-card) .mob-card-icon,
  .card.mob-card:has(.mob-quran-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(74, 222, 128, 0.50)); }

  /* ── RED group borders — watchlist, countdown, loan, pomo, vitals, workout ── */
  .card.mob-card:has(.mob-watchlist-card),
  .card.mob-card:has(.mob-countdown-card),
  .card.mob-card:has(.mob-loan-card),
  .card.mob-card:has(.mob-pomo-card),
  .card.mob-card:has(.mob-vitals-card),
  .card.mob-card:has(.mob-workout-card) { border-color: rgba(248, 113, 113, 0.22) !important; }

  .card.mob-card:has(.mob-watchlist-card) .mob-card-icon,
  .card.mob-card:has(.mob-countdown-card) .mob-card-icon,
  .card.mob-card:has(.mob-loan-card) .mob-card-icon,
  .card.mob-card:has(.mob-pomo-card) .mob-card-icon,
  .card.mob-card:has(.mob-vitals-card) .mob-card-icon,
  .card.mob-card:has(.mob-workout-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(248, 113, 113, 0.50)); }

  /* ── ORANGE group borders — iou, expense, recipe, meals ── */
  .card.mob-card:has(.mob-iou-card),
  .card.mob-card:has(.mob-expense-card),
  .card.mob-card:has(.mob-recipe-card),
  .card.mob-card:has(.mob-meals-card) { border-color: rgba(251, 146, 60, 0.22) !important; }

  .card.mob-card:has(.mob-iou-card) .mob-card-icon,
  .card.mob-card:has(.mob-expense-card) .mob-card-icon,
  .card.mob-card:has(.mob-recipe-card) .mob-card-icon,
  .card.mob-card:has(.mob-meals-card) .mob-card-icon { filter: drop-shadow(0 0 5px rgba(251, 146, 60, 0.50)); }
}

/* ─── Polish 117 — Per-group stat-key label tinting + frac-muted chromatic ───
 * mob-stat-k is globally forced to rgba(232,238,247,0.70) at (0,3,0).
 * These per-type-group rules at (0,4,0) tint the key labels (like "التالي",
 * "الهدف", "المتبقي") with a subtle group accent — ~0.48 opacity so they
 * don't compete with the value but feel part of the card's colour family.
 * mob-frac-muted (X/Y fractional separators) gets the same treatment.      */
@media (max-width: 768px) {

  /* ── AMBER group stat-key ── */
  .card.mob-card:has(.mob-book-card) .mob-stat-k,
  .card.mob-card:has(.mob-reminder-card) .mob-stat-k,
  .card.mob-card:has(.mob-mood-card) .mob-stat-k,
  .card.mob-card:has(.mob-idea-card) .mob-stat-k,
  .card.mob-card:has(.mob-crypto-card) .mob-stat-k,
  .card.mob-card:has(.mob-doc-card) .mob-stat-k,
  .card.mob-card:has(.mob-pd-card) .mob-stat-k,
  .card.mob-card:has(.mob-zakat-card) .mob-stat-k,
  .card.mob-card:has(.mob-gold-card) .mob-stat-k,
  .card.mob-card:has(.mob-appliance-card) .mob-stat-k { color: rgba(251, 191, 36, 0.48) !important; }

  /* ── BLUE group stat-key ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-stat-k,
  .card.mob-card:has(.mob-lg-card) .mob-stat-k,
  .card.mob-card:has(.mob-course-card) .mob-stat-k,
  .card.mob-card:has(.mob-meet-card) .mob-stat-k { color: rgba(147, 197, 253, 0.48) !important; }

  /* ── INDIGO group stat-key ── */
  .card.mob-card:has(.mob-note-card) .mob-stat-k,
  .card.mob-card:has(.mob-markdown-card) .mob-stat-k,
  .card.mob-card:has(.mob-link-card) .mob-stat-k,
  .card.mob-card:has(.mob-code-card) .mob-stat-k,
  .card.mob-card:has(.mob-page-card) .mob-stat-k,
  .card.mob-card:has(.mob-password-card) .mob-stat-k,
  .card.mob-card:has(.mob-quicktext-card) .mob-stat-k,
  .card.mob-card:has(.mob-fasting-card) .mob-stat-k,
  .card.mob-card:has(.mob-project-card) .mob-stat-k,
  .card.mob-card:has(.mob-tracker-card) .mob-stat-k,
  .card.mob-card:has(.mob-week-card) .mob-stat-k,
  .card.mob-card:has(.mob-goal-card) .mob-stat-k { color: rgba(165, 180, 252, 0.48) !important; }

  /* ── CYAN group stat-key ── */
  .card.mob-card:has(.mob-sub-card) .mob-stat-k,
  .card.mob-card:has(.mob-wifi-card) .mob-stat-k,
  .card.mob-card:has(.mob-chore-card) .mob-stat-k,
  .card.mob-card:has(.mob-review-card) .mob-stat-k,
  .card.mob-card:has(.mob-counter-card) .mob-stat-k,
  .card.mob-card:has(.mob-lang-card) .mob-stat-k,
  .card.mob-card:has(.mob-trip-card) .mob-stat-k,
  .card.mob-card:has(.mob-status-card) .mob-stat-k { color: rgba(34, 211, 238, 0.45) !important; }

  /* ── PINK group stat-key ── */
  .card.mob-card:has(.mob-gift-card) .mob-stat-k,
  .card.mob-card:has(.mob-journal-card) .mob-stat-k,
  .card.mob-card:has(.mob-pod-card) .mob-stat-k,
  .card.mob-card:has(.mob-birthday-card) .mob-stat-k { color: rgba(244, 114, 182, 0.48) !important; }

  /* ── PURPLE group stat-key ── */
  .card.mob-card:has(.mob-contact-card) .mob-stat-k,
  .card.mob-card:has(.mob-quote-card) .mob-stat-k,
  .card.mob-card:has(.mob-med-card) .mob-stat-k,
  .card.mob-card:has(.mob-inbox-card) .mob-stat-k,
  .card.mob-card:has(.mob-fields-card) .mob-stat-k,
  .card.mob-card:has(.mob-nw-card) .mob-stat-k { color: rgba(192, 132, 252, 0.48) !important; }

  /* ── GREEN group stat-key ── */
  .card.mob-card:has(.mob-plant-card) .mob-stat-k,
  .card.mob-card:has(.mob-pl-card) .mob-stat-k,
  .card.mob-card:has(.mob-stocks-card) .mob-stat-k,
  .card.mob-card:has(.mob-savings-card) .mob-stat-k,
  .card.mob-card:has(.mob-checklist-card) .mob-stat-k,
  .card.mob-card:has(.mob-routine-card) .mob-stat-k,
  .card.mob-card:has(.mob-quran-card) .mob-stat-k { color: rgba(74, 222, 128, 0.45) !important; }

  /* ── RED group stat-key ── */
  .card.mob-card:has(.mob-watchlist-card) .mob-stat-k,
  .card.mob-card:has(.mob-countdown-card) .mob-stat-k,
  .card.mob-card:has(.mob-loan-card) .mob-stat-k,
  .card.mob-card:has(.mob-pomo-card) .mob-stat-k,
  .card.mob-card:has(.mob-vitals-card) .mob-stat-k,
  .card.mob-card:has(.mob-workout-card) .mob-stat-k { color: rgba(248, 113, 113, 0.48) !important; }

  /* ── ORANGE group stat-key ── */
  .card.mob-card:has(.mob-iou-card) .mob-stat-k,
  .card.mob-card:has(.mob-expense-card) .mob-stat-k,
  .card.mob-card:has(.mob-recipe-card) .mob-stat-k,
  .card.mob-card:has(.mob-meals-card) .mob-stat-k { color: rgba(251, 146, 60, 0.48) !important; }

  /* ── frac-muted per-group — X/Y fractions in hero panels ── */
  /* Indigo group (routine/goal/project/checklist use X/Y patterns) */
  .card.mob-card:has(.mob-project-card) .mob-frac-muted,
  .card.mob-card:has(.mob-tracker-card) .mob-frac-muted,
  .card.mob-card:has(.mob-goal-card) .mob-frac-muted { color: rgba(165, 180, 252, 0.40) !important; opacity: 1 !important; }

  .card.mob-card:has(.mob-checklist-card) .mob-frac-muted,
  .card.mob-card:has(.mob-routine-card) .mob-frac-muted,
  .card.mob-card:has(.mob-quran-card) .mob-frac-muted { color: rgba(74, 222, 128, 0.40) !important; opacity: 1 !important; }

  .card.mob-card:has(.mob-course-card) .mob-frac-muted { color: rgba(147, 197, 253, 0.40) !important; opacity: 1 !important; }

  .card.mob-card:has(.mob-vitals-card) .mob-frac-muted { color: rgba(248, 113, 113, 0.40) !important; opacity: 1 !important; }
}

/* ─── Polish 118 — Per-group card background atmospheric tint ────────────────
 * The widget block gives every .card.mob-card the same violet-biased dark shell:
 *   linear-gradient(155deg, rgba(139,92,246,0.06), rgba(255,255,255,0.02)),rgba(12,17,26,0.72)
 * These per-type-group overrides at (0,3,0) replace only the first gradient stop
 * with the group's own hue at the same 0.06 opacity, giving each group a subtly
 * distinct atmosphere while keeping the dark, consistent card shell.           */
@media (max-width: 768px) {

  /* ── AMBER group ── */
  .card.mob-card:has(.mob-book-card),
  .card.mob-card:has(.mob-reminder-card),
  .card.mob-card:has(.mob-mood-card),
  .card.mob-card:has(.mob-idea-card),
  .card.mob-card:has(.mob-crypto-card),
  .card.mob-card:has(.mob-doc-card),
  .card.mob-card:has(.mob-pd-card),
  .card.mob-card:has(.mob-zakat-card),
  .card.mob-card:has(.mob-gold-card),
  .card.mob-card:has(.mob-appliance-card) {
    background: linear-gradient(155deg, rgba(245, 158, 11, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }

  /* ── BLUE group ── */
  .card.mob-card:has(.mob-vehicle-card),
  .card.mob-card:has(.mob-lg-card),
  .card.mob-card:has(.mob-course-card),
  .card.mob-card:has(.mob-meet-card) {
    background: linear-gradient(155deg, rgba(59, 130, 246, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }

  /* ── CYAN group ── */
  .card.mob-card:has(.mob-sub-card),
  .card.mob-card:has(.mob-wifi-card),
  .card.mob-card:has(.mob-chore-card),
  .card.mob-card:has(.mob-review-card),
  .card.mob-card:has(.mob-counter-card),
  .card.mob-card:has(.mob-lang-card),
  .card.mob-card:has(.mob-trip-card),
  .card.mob-card:has(.mob-status-card) {
    background: linear-gradient(155deg, rgba(6, 182, 212, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }

  /* ── PINK/ROSE group ── */
  .card.mob-card:has(.mob-gift-card),
  .card.mob-card:has(.mob-journal-card),
  .card.mob-card:has(.mob-pod-card),
  .card.mob-card:has(.mob-birthday-card) {
    background: linear-gradient(155deg, rgba(236, 72, 153, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }

  /* ── GREEN group ── */
  .card.mob-card:has(.mob-plant-card),
  .card.mob-card:has(.mob-pl-card),
  .card.mob-card:has(.mob-stocks-card),
  .card.mob-card:has(.mob-savings-card),
  .card.mob-card:has(.mob-checklist-card),
  .card.mob-card:has(.mob-routine-card),
  .card.mob-card:has(.mob-quran-card) {
    background: linear-gradient(155deg, rgba(34, 197, 94, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }

  /* ── RED group ── */
  .card.mob-card:has(.mob-watchlist-card),
  .card.mob-card:has(.mob-countdown-card),
  .card.mob-card:has(.mob-loan-card),
  .card.mob-card:has(.mob-pomo-card),
  .card.mob-card:has(.mob-vitals-card),
  .card.mob-card:has(.mob-workout-card) {
    background: linear-gradient(155deg, rgba(239, 68, 68, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }

  /* ── ORANGE group ── */
  .card.mob-card:has(.mob-iou-card),
  .card.mob-card:has(.mob-expense-card),
  .card.mob-card:has(.mob-recipe-card),
  .card.mob-card:has(.mob-meals-card) {
    background: linear-gradient(155deg, rgba(249, 115, 22, 0.07), rgba(255, 255, 255, 0.01)), rgba(12, 17, 26, 0.72) !important;
  }
  /* Indigo/Purple groups keep the default violet tint from the widget block */
}

/* ─── Polish 119 — Per-group mob-note-line.mob-note-dim chromatic tinting ────
 * .mob-note-dim is globally opacity:.70, showing in faded white.
 * These overrides set color + opacity:1 so the secondary text lines (author,
 * provider, destination, recipient, etc.) echo the card's group accent hue,
 * making them feel integrated rather than generically faded.
 * Opacity on the color rgba is kept ~0.62 to stay visually lighter than the
 * main text while still being tinted.                                         */
@media (max-width: 768px) {

  /* ── AMBER dim lines — book (author), crypto (holdings), doc (name preview) ── */
  .card.mob-card:has(.mob-book-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-crypto-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-doc-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-idea-card) .mob-note-body.mob-note-dim,
  .card.mob-card:has(.mob-gold-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── BLUE dim lines — course (provider), vehicle (service info) ── */
  .card.mob-card:has(.mob-course-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-vehicle-card) .mob-note-line.mob-note-dim {
    color: rgba(147, 197, 253, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── CYAN dim lines — trip (destination + duration), status (hostname) ── */
  .card.mob-card:has(.mob-trip-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.60) !important;
    opacity: 1 !important;
  }

  /* ── PINK dim lines — gift (recipient + occasion) ── */
  .card.mob-card:has(.mob-gift-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-journal-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── PINK journal entry preview ── */
  .card.mob-card:has(.mob-journal-card) .mob-note-faded {
    color: rgba(244, 114, 182, 0.55) !important;
    opacity: 1 !important;
  }

  /* ── RED dim lines — watchlist (user note), podcast takeaways ── */
  .card.mob-card:has(.mob-watchlist-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── PURPLE dim lines — quote (attribution already handled, but inline text) ── */
  .card.mob-card:has(.mob-contact-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-med-card) .mob-note-line.mob-note-dim {
    color: rgba(192, 132, 252, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── BLUE dim lines — podcast show info (pod is pink group, but has show name) ── */
  .card.mob-card:has(.mob-pod-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.60) !important;
    opacity: 1 !important;
  }
}

/* ─── Polish 120 — Correct progress-fill color inconsistencies ───────────────
 * The NCD block (36570-36598) set some fills before Polish-110 groups were
 * established, so several cards ended up with the wrong group color.
 * These source-order overrides at the same (0,4,0) specificity correct them.
 *
 * Fixes:
 *   savings → was --da-cyan,   should be --da-green  (green group)
 *   workout → was --da-green,  should be --da-red    (red group)
 *   meals   → was --da-green,  should be --da-amber  (orange group)
 *   chore   → was --da-green,  should be --da-cyan   (cyan group)
 *   inbox   → was --da-amber,  should be --da-violet (purple group)
 *   course  → was --da-amber,  should be --da-blue   (blue group)
 *   trip    → was --da-blue,   should be --da-cyan   (cyan group)      */
@media (max-width: 768px) {

  .card.mob-card:has(.mob-savings-card) .mob-progress-fill { background: var(--da-green) !important; }
  .card.mob-card:has(.mob-workout-card) .mob-progress-fill { background: var(--da-red) !important; }
  .card.mob-card:has(.mob-meals-card) .mob-progress-fill { background: var(--da-amber) !important; }
  .card.mob-card:has(.mob-chore-card) .mob-progress-fill { background: var(--da-cyan) !important; }
  .card.mob-card:has(.mob-inbox-card) .mob-progress-fill { background: var(--da-violet) !important; }
  .card.mob-card:has(.mob-course-card) .mob-progress-fill { background: var(--da-blue) !important; }
  .card.mob-card:has(.mob-trip-card) .mob-progress-fill { background: var(--da-cyan) !important; }

  /* mob-bar-done always green regardless of group (completion indicator) */
  .card.mob-card .mob-progress-bar.mob-bar-done .mob-progress-fill { background: var(--da-green) !important; }
}

/* ─── Polish 121 — Correct counter-btn group color inconsistencies ───────────
 * The NCD block (36628-36723) assigned counter-btn colors before the Polish 110
 * 9-group system was established. These source-order overrides at (0,4,0)
 * specificity correct 13 mismatches to align with the established groups.
 *
 * Fixes:
 *   vehicle   → was red,    should be blue    (blue group)
 *   pd        → was red,    should be amber   (amber group)
 *   med       → was cyan,   should be violet  (purple group)
 *   meals     → was cyan,   should be amber   (orange group)
 *   savings   → was cyan,   should be green   (green group)
 *   nw        → was green,  should be violet  (purple group)
 *   trip      → was green,  should be cyan    (cyan group)
 *   pod       → was blue,   should be pink    (pink group)
 *   pl        → was blue,   should be green   (green group)
 *   lang      → was blue,   should be cyan    (cyan group)
 *   review    → was blue,   should be cyan    (cyan group)
 *   week      → was blue,   should be violet  (indigo group)
 *   countdown → was blue,   should be red     (red group)   */
@media (max-width: 768px) {

  /* ── BLUE — vehicle ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-blue), color-mix(in oklch, var(--da-blue) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-blue) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── AMBER — pd (amber group) + meals (orange group) ── */
  .card.mob-card:has(.mob-pd-card) .mob-counter-btn,
  .card.mob-card:has(.mob-meals-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-amber), color-mix(in oklch, var(--da-amber) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
    color: #0f0e0a !important;
  }

  /* ── VIOLET — med + nw (purple group) + week (indigo group) ── */
  .card.mob-card:has(.mob-med-card) .mob-counter-btn,
  .card.mob-card:has(.mob-nw-card) .mob-counter-btn,
  .card.mob-card:has(.mob-week-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── GREEN — savings + pl (green group) ── */
  .card.mob-card:has(.mob-savings-card) .mob-counter-btn,
  .card.mob-card:has(.mob-pl-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-green), color-mix(in oklch, var(--da-green) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-green) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── CYAN — trip + lang + review (cyan group) ── */
  .card.mob-card:has(.mob-trip-card) .mob-counter-btn,
  .card.mob-card:has(.mob-lang-card) .mob-counter-btn,
  .card.mob-card:has(.mob-review-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-cyan), color-mix(in oklch, var(--da-cyan) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── PINK — pod / podcast (pink group) ── */
  .card.mob-card:has(.mob-pod-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-pink), color-mix(in oklch, var(--da-pink) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-pink) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── RED — countdown (red group) ── */
  .card.mob-card:has(.mob-countdown-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-red), color-mix(in oklch, var(--da-red) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-red) 40%, transparent) !important;
    color: #fff !important;
  }
}

/* ─── Polish 122 — Orange group note-dim tinting (iou, expense, meals) ───────
 * Polish 119 covered amber/blue/cyan/pink/red/purple group dim lines.
 * The orange group (iou, expense, meals) was missing — iou and expense now
 * have note-dim detail lines added in Polish 122 JS, so tinting follows.    */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-iou-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-expense-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-meals-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 146, 60, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ─── Polish 123 — Missing note-dim tints: appliance(amber) + plant(green) + countdown(red) ──
 * Polish 119 missed three cards with mob-note-line.mob-note-dim content:
 *   appliance: type label + serial number (amber group)
 *   plant:     species name (green group)
 *   countdown: user note text (red group — watchlist was done, countdown was missed) */
@media (max-width: 768px) {

  /* ── AMBER — appliance (type label · serial) ── */
  .card.mob-card:has(.mob-appliance-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.58) !important;
    opacity: 1 !important;
  }

  /* ── GREEN — plant (species name) ── */
  .card.mob-card:has(.mob-plant-card) .mob-note-line.mob-note-dim {
    color: rgba(74, 222, 128, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── RED — countdown (user note) ── */
  .card.mob-card:has(.mob-countdown-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ─── Polish 124 — Counter-btn fixes (round 2) + appliance hero tint ─────────
 * Five counter-btn mismatches missed in Polish 121, now corrected:
 *   fasting  → was green,  should be violet  (indigo group in Polish 110)
 *   goal     → was green,  should be violet  (indigo group in Polish 110)
 *   course   → was violet, should be blue    (blue group in Polish 110)
 *   reminder → was violet, should be amber   (amber group in Polish 110)
 *   link     → was blue,   should be violet  (indigo group in Polish 110)
 *
 * Also: appliance card hero panel gets the amber group tint (Polish 110
 * covered book/reminder/mood/idea/crypto/doc/pd/zakat/gold but missed appliance). */
@media (max-width: 768px) {

  /* ── Appliance hero panel — amber (missed in Polish 110) ── */
  .card.mob-card:has(.mob-appliance-card) .mob-hero {
    background: linear-gradient(135deg, rgba(245, 158, 11, 0.13), rgba(251, 191, 36, 0.05)) !important;
    border-color: rgba(245, 158, 11, 0.32) !important;
  }
  .card.mob-card:has(.mob-appliance-card) .mob-hero-num {
    color: #fbbf24 !important;
    -webkit-text-fill-color: #fbbf24 !important;
  }

  /* ── VIOLET — fasting + goal (indigo group) + link (indigo group) ── */
  .card.mob-card:has(.mob-fasting-card) .mob-counter-btn,
  .card.mob-card:has(.mob-goal-card) .mob-counter-btn,
  .card.mob-card:has(.mob-link-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-violet), color-mix(in oklch, var(--da-violet) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── BLUE — course (blue group) ── */
  .card.mob-card:has(.mob-course-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-blue), color-mix(in oklch, var(--da-blue) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-blue) 40%, transparent) !important;
    color: #fff !important;
  }

  /* ── AMBER — reminder (amber group) ── */
  .card.mob-card:has(.mob-reminder-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-amber), color-mix(in oklch, var(--da-amber) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
    color: #0f0e0a !important;
  }
}

/* ─── Polish 125 — Per-group neutral pill tinting ──────────────────────────────
 * Unmodified .mob-pill (no -success/-danger/-warning/-muted) echoes each card's
 * group accent color. Uses :not(...) so semantic pill variants are unaffected.
 * INDIGO + PURPLE groups already default to violet — no override needed.       */
@media (max-width: 768px) {

  /* ── AMBER — book, reminder, mood, idea, crypto, doc, pd, zakat, gold, appliance ── */
  .card.mob-card:has(.mob-book-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-reminder-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-mood-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-idea-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-crypto-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-doc-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-pd-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-zakat-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-gold-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-appliance-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-amber) 18%, transparent) !important;
    color: var(--da-amber) !important;
    border-color: color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
  }

  /* ── BLUE — vehicle, course, meet, lg ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-course-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-meet-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-lg-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-blue) 18%, transparent) !important;
    color: var(--da-blue) !important;
    border-color: color-mix(in oklch, var(--da-blue) 40%, transparent) !important;
  }

  /* ── CYAN — sub, chore, review, counter, lang, trip, status, tracker ── */
  .card.mob-card:has(.mob-sub-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-chore-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-review-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-counter-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-tracker-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-lang-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-trip-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-status-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-cyan) 18%, transparent) !important;
    color: var(--da-cyan) !important;
    border-color: color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
  }

  /* ── PINK — gift, journal, pod, birthday ── */
  .card.mob-card:has(.mob-gift-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-journal-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-pod-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-birthday-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-pink) 18%, transparent) !important;
    color: var(--da-pink) !important;
    border-color: color-mix(in oklch, var(--da-pink) 40%, transparent) !important;
  }

  /* ── GREEN — plant, pl, stocks, savings, checklist, routine, quran ── */
  .card.mob-card:has(.mob-plant-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-pl-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-stocks-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-savings-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-checklist-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-routine-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-quran-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-green) 18%, transparent) !important;
    color: var(--da-green) !important;
    border-color: color-mix(in oklch, var(--da-green) 40%, transparent) !important;
  }

  /* ── RED — watchlist, countdown, loan, pomo, vitals, workout ── */
  .card.mob-card:has(.mob-watchlist-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-countdown-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-loan-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-pomo-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-vitals-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-workout-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-red) 18%, transparent) !important;
    color: var(--da-red) !important;
    border-color: color-mix(in oklch, var(--da-red) 40%, transparent) !important;
  }

  /* ── ORANGE (amber) — iou, expense, recipe, meals ── */
  .card.mob-card:has(.mob-iou-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-expense-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-recipe-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-meals-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-amber) 18%, transparent) !important;
    color: var(--da-amber) !important;
    border-color: color-mix(in oklch, var(--da-amber) 40%, transparent) !important;
  }
}

/* ── P126: VIOLET group neutral pills — med, nw, week, fasting, goal, link ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-med-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-nw-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-week-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-fasting-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-goal-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted),
  .card.mob-card:has(.mob-link-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-violet) 18%, transparent) !important;
    color: var(--da-violet) !important;
    border-color: color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
}

/* ── P127: VIOLET group — project pill + note-dim for nw/goal/project ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-project-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted) {
    background: color-mix(in oklch, var(--da-violet) 18%, transparent) !important;
    color: var(--da-violet) !important;
    border-color: color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }

  .card.mob-card:has(.mob-nw-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-goal-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-project-card) .mob-note-line.mob-note-dim {
    color: rgba(192, 132, 252, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ── P128: Fill remaining note-dim group tinting gaps ── */
@media (max-width: 768px) {
  /* CYAN — subscription items list */
  .card.mob-card:has(.mob-sub-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.60) !important;
    opacity: 1 !important;
  }

  /* RED — watchlist note text */
  .card.mob-card:has(.mob-watchlist-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }

  /* PINK — gift recipient · journal mood line */
  .card.mob-card:has(.mob-gift-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-journal-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.60) !important;
    opacity: 1 !important;
  }

  /* ORANGE — recipe ingredients preview */
  .card.mob-card:has(.mob-recipe-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 146, 60, 0.62) !important;
    opacity: 1 !important;
  }

  /* BLUE — meeting agenda / attendees */
  .card.mob-card:has(.mob-meet-card) .mob-note-line.mob-note-dim {
    color: rgba(147, 197, 253, 0.62) !important;
    opacity: 1 !important;
  }

  /* VIOLET — inbox processed items */
  .card.mob-card:has(.mob-inbox-card) .mob-note-line.mob-note-dim {
    color: rgba(192, 132, 252, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ── P129: Contact card violet pill (SMS chip) + medicine note-dim coverage ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-contact-card) .mob-pill:not(.mob-pill-success, .mob-pill-danger, .mob-pill-warning, .mob-pill-muted, .mob-pill-wa) {
    background: color-mix(in oklch, var(--da-violet) 18%, transparent) !important;
    color: var(--da-violet) !important;
    border-color: color-mix(in oklch, var(--da-violet) 40%, transparent) !important;
  }
}

/* ── P130: GREEN note-dim for checklist pending items ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-checklist-card) .mob-note-line.mob-note-dim {
    color: rgba(74, 222, 128, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ── P131: GREEN note-dim for routine card upcoming habits ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-routine-card) .mob-note-line.mob-note-dim {
    color: rgba(74, 222, 128, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ── P132: note-dim tinting — reminder (amber), savings (green), chore (cyan) ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-reminder-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.62) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-savings-card) .mob-note-line.mob-note-dim {
    color: rgba(74, 222, 128, 0.62) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-chore-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.60) !important;
    opacity: 1 !important;
  }
}

/* ── P133: note-dim tinting — tracker/counter (cyan), vitals (red) ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-tracker-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-counter-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.60) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-vitals-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ── P134: note-dim tinting — workout (red), mood (amber), language (cyan) ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-workout-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-mood-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.62) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-lang-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.60) !important;
    opacity: 1 !important;
  }
}

/* ── P135: note-dim tinting — birthday (pink), pomo (red), fasting (violet) ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-birthday-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.62) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-pomo-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }
  .card.mob-card:has(.mob-fasting-card) .mob-note-line.mob-note-dim {
    color: rgba(192, 132, 252, 0.62) !important;
    opacity: 1 !important;
  }
}

/* ── P135: Fix savings CTA — group is GREEN not cyan (legacy P121 mismatch) ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-savings-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-green), color-mix(in oklch, var(--da-green) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-green) 40%, transparent) !important;
    color: #fff !important;
  }
}

/* ── Fix: reminder mob-card card-actions position ──────────────────────────────
 * The old reminder card CSS (pre-NCD) put .card-actions at top:10px / inset-
 * inline-end:10px.  In RTL that resolves to the top-LEFT corner, unlike every
 * other mob-card which shows the overlay at the bottom.  Override to standard. */
.dash-grid .card.mob-card[data-type="reminder"] .card-actions,
#page-grid .card.mob-card[data-type="reminder"] .card-actions {
  top: auto !important;
  bottom: 0 !important;
  right: 0 !important;
  left: 0 !important;
  inset-inline-end: unset !important;
  inset-inline-start: unset !important;
  background: linear-gradient(transparent, rgba(12,12,18,0.8) 40%) !important;
  padding: 20px 18px 14px !important;
  justify-content: flex-end !important;
  transform: translateY(10px) !important;
  transition: opacity 0.2s, transform 0.2s !important;
}
.dash-grid .card.mob-card[data-type="reminder"]:hover .card-actions,
.dash-grid .card.mob-card[data-type="reminder"].card-expanded .card-actions,
#page-grid .card.mob-card[data-type="reminder"]:hover .card-actions {
  transform: translateY(0) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   Polish 137 — mob-meditation-card full teal theme
                mob-med-card counter-btn fix (cyan → violet)
                mob-pd-card note-dim amber tint
   ────────────────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

  /* ── meditation: sidebar accent bar — teal ── */
  .card.mob-card:has(.mob-meditation-card) {
    box-shadow: inset 4px 0 0 0 #22d3ee, 0 12px 28px rgba(0,0,0,0.45) !important;
  }

  /* ── meditation: widget accent token — teal ── */
  .card.mob-card:has(.mob-meditation-card) { --mob-widget-accent: 34, 211, 238; }

  /* ── meditation: ::before radial glow — teal from left center ── */
  .card.mob-card:has(.mob-meditation-card)::before {
    background: radial-gradient(circle at 0% 50%, oklch(0.78 0.13 200), transparent 55%) !important;
  }

  /* ── meditation: hero number — teal ── */
  .card.mob-card:has(.mob-meditation-card) .mob-hero-num {
    color: var(--da-cyan) !important;
    -webkit-text-fill-color: var(--da-cyan) !important;
    background: none !important;
  }

  /* ── meditation: progress fill — teal ── */
  .card.mob-card:has(.mob-meditation-card) .mob-progress-fill {
    background: var(--da-cyan) !important;
    box-shadow: 0 0 10px color-mix(in oklch, var(--da-cyan) 50%, transparent) !important;
  }

  /* ── meditation: CTA button — teal gradient ── */
  .card.mob-card:has(.mob-meditation-card) .mob-counter-btn {
    background: linear-gradient(135deg, var(--da-cyan), color-mix(in oklch, var(--da-cyan) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, var(--da-cyan) 40%, transparent) !important;
    color: #041317 !important;
  }

  /* ── meditation: note-dim lines — teal tint ── */
  .card.mob-card:has(.mob-meditation-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── meditation: stat-v-pos (positive value) — teal ── */
  .card.mob-card:has(.mob-meditation-card) .mob-stat-v-pos {
    color: var(--da-cyan) !important;
    -webkit-text-fill-color: var(--da-cyan) !important;
  }

  /* ── medicine (mob-med-card): fix counter-btn from cyan → violet ── */
  .card.mob-card:has(.mob-med-card) .mob-counter-btn {
    background: linear-gradient(135deg, oklch(0.7 0.2 295), color-mix(in oklch, oklch(0.7 0.2 295) 70%, #000)) !important;
    box-shadow: 0 6px 18px color-mix(in oklch, oklch(0.7 0.2 295) 40%, transparent) !important;
    color: #f5f0ff !important;
  }

  /* ── purchase decision (mob-pd-card): note-dim amber tint ── */
  .card.mob-card:has(.mob-pd-card) .mob-note-line.mob-note-dim {
    color: rgba(245, 158, 11, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── meeting (mob-meet-card): note-dim blue tint ── */
  .card.mob-card:has(.mob-meet-card) .mob-note-line.mob-note-dim {
    color: rgba(59, 130, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── recipe (mob-recipe-card): note-dim orange tint ── */
  .card.mob-card:has(.mob-recipe-card) .mob-note-line.mob-note-dim {
    color: rgba(249, 115, 22, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── plant (mob-plant-card): note-dim green tint ── */
  .card.mob-card:has(.mob-plant-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 197, 94, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── chore (mob-chore-card): note-dim cyan tint ── */
  .card.mob-card:has(.mob-chore-card) .mob-note-line.mob-note-dim {
    color: rgba(6, 182, 212, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── goal (mob-goal-card): note-dim green tint ── */
  .card.mob-card:has(.mob-goal-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 197, 94, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── project (mob-project-card): note-dim violet tint ── */
  .card.mob-card:has(.mob-project-card) .mob-note-line.mob-note-dim {
    color: rgba(139, 92, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── trip (mob-trip-card): note-dim cyan tint ── */
  .card.mob-card:has(.mob-trip-card) .mob-note-line.mob-note-dim {
    color: rgba(6, 182, 212, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── gift (mob-gift-card): note-dim pink tint ── */
  .card.mob-card:has(.mob-gift-card) .mob-note-line.mob-note-dim {
    color: rgba(236, 72, 153, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── appliance (mob-appliance-card): note-dim slate tint ── */
  .card.mob-card:has(.mob-appliance-card) .mob-note-line.mob-note-dim {
    color: rgba(100, 116, 139, 0.72) !important;
    opacity: 1 !important;
  }

  /* ── vitals (mob-vitals-card): note-dim red tint ── */
  .card.mob-card:has(.mob-vitals-card) .mob-note-line.mob-note-dim {
    color: rgba(239, 68, 68, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── workout (mob-workout-card): note-dim red tint ── */
  .card.mob-card:has(.mob-workout-card) .mob-note-line.mob-note-dim {
    color: rgba(239, 68, 68, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── sub card (mob-sub-card): note-dim orange tint ── */
  .card.mob-card:has(.mob-sub-card) .mob-note-line.mob-note-dim {
    color: rgba(249, 115, 22, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── vehicle (mob-vehicle-card): note-dim slate tint ── */
  .card.mob-card:has(.mob-vehicle-card) .mob-note-line.mob-note-dim {
    color: rgba(100, 116, 139, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── course (mob-course-card): note-dim blue tint ── */
  .card.mob-card:has(.mob-course-card) .mob-note-line.mob-note-dim {
    color: rgba(59, 130, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── language (mob-lang-card): note-dim teal tint ── */
  .card.mob-card:has(.mob-lang-card) .mob-note-line.mob-note-dim {
    color: rgba(20, 184, 166, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── week plan (mob-week-card): note-dim indigo tint ── */
  .card.mob-card:has(.mob-week-card) .mob-note-line.mob-note-dim {
    color: rgba(99, 102, 241, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── idea (mob-idea-card): note-dim amber tint ── */
  .card.mob-card:has(.mob-idea-card) .mob-note-line.mob-note-dim,
  .card.mob-card:has(.mob-idea-card) .mob-note-body.mob-note-dim .mob-note-line {
    color: rgba(234, 179, 8, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── savings goal (mob-savings-card): note-dim green tint ── */
  .card.mob-card:has(.mob-savings-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 197, 94, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── crypto (mob-crypto-card): note-dim amber tint ── */
  .card.mob-card:has(.mob-crypto-card) .mob-note-line.mob-note-dim {
    color: rgba(245, 158, 11, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── gold (mob-gold-card): note-dim amber/gold tint ── */
  .card.mob-card:has(.mob-gold-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── iou (mob-iou-card): note-dim amber tint ── */
  .card.mob-card:has(.mob-iou-card) .mob-note-line.mob-note-dim {
    color: rgba(245, 158, 11, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── inbox (mob-inbox-card): note-dim slate tint ── */
  .card.mob-card:has(.mob-inbox-card) .mob-note-line.mob-note-dim {
    color: rgba(100, 116, 139, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── password (mob-password-card): note-dim violet tint ── */
  .card.mob-card:has(.mob-password-card) .mob-note-line.mob-note-dim {
    color: rgba(139, 92, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── fasting (mob-fasting-card): note-dim teal tint ── */
  .card.mob-card:has(.mob-fasting-card) .mob-note-line.mob-note-dim {
    color: rgba(20, 184, 166, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── quran (mob-quran-card): note-dim gold tint ── */
  .card.mob-card:has(.mob-quran-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── zakat (mob-zakat-card): note-dim gold tint ── */
  .card.mob-card:has(.mob-zakat-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── loan (mob-loan-card): note-dim red tint ── */
  .card.mob-card:has(.mob-loan-card) .mob-note-line.mob-note-dim {
    color: rgba(239, 68, 68, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── net worth (mob-nw-card): note-dim violet tint ── */
  .card.mob-card:has(.mob-nw-card) .mob-note-line.mob-note-dim {
    color: rgba(167, 139, 250, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── mood (mob-mood-card): note-dim violet tint ── */
  .card.mob-card:has(.mob-mood-card) .mob-note-line.mob-note-dim {
    color: rgba(139, 92, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── review (mob-review-card): note-dim cyan tint ── */
  .card.mob-card:has(.mob-review-card) .mob-note-line.mob-note-dim {
    color: rgba(6, 182, 212, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── pomodoro (mob-pomo-card): note-dim orange tint ── */
  .card.mob-card:has(.mob-pomo-card) .mob-note-line.mob-note-dim {
    color: rgba(249, 115, 22, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── birthday (mob-birthday-card): note-dim pink tint ── */
  .card.mob-card:has(.mob-birthday-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── reminder: note-dim violet tint ── */
  .card.mob-card:has(.mob-reminder-card) .mob-note-line.mob-note-dim {
    color: rgba(139, 92, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── countdown: note-dim amber tint ── */
  .card.mob-card:has(.mob-countdown-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 146, 60, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── expense: note-dim orange tint ── */
  .card.mob-card:has(.mob-expense-card) .mob-note-line.mob-note-dim {
    color: rgba(249, 115, 22, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── tracker: note-dim cyan tint ── */
  .card.mob-card:has(.mob-tracker-card) .mob-note-line.mob-note-dim {
    color: rgba(6, 182, 212, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── counter: note-dim cyan tint ── */
  .card.mob-card:has(.mob-counter-card) .mob-note-line.mob-note-dim {
    color: rgba(6, 182, 212, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── book: note-dim indigo tint (author name) ── */
  .card.mob-card:has(.mob-book-card) .mob-note-line.mob-note-dim {
    color: rgba(129, 140, 248, 0.65) !important;
    opacity: 1 !important;
  }

  /* ── checklist: note-dim green tint (upcoming items) ── */
  .card.mob-card:has(.mob-checklist-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 197, 94, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── routine: note-dim teal tint (upcoming habits) ── */
  .card.mob-card:has(.mob-routine-card) .mob-note-line.mob-note-dim {
    color: rgba(20, 184, 166, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── status: note-dim cyan tint ── */
  .card.mob-card:has(.mob-status-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 211, 238, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── page (mob-page-card): note-dim violet tint ── */
  .card.mob-card:has(.mob-page-card) .mob-note-line.mob-note-dim {
    color: rgba(139, 92, 246, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── doc (mob-doc-card): note-dim amber tint (override P119) ── */
  .card.mob-card:has(.mob-doc-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 191, 36, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── journal (mob-journal-card): note-dim pink tint (override P119/P128) ── */
  .card.mob-card:has(.mob-journal-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── watchlist (mob-watchlist-card): note-dim red tint (override P119/P128) ── */
  .card.mob-card:has(.mob-watchlist-card) .mob-note-line.mob-note-dim {
    color: rgba(248, 113, 113, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── contact (mob-contact-card): note-dim purple tint (override P119) ── */
  .card.mob-card:has(.mob-contact-card) .mob-note-line.mob-note-dim {
    color: rgba(192, 132, 252, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── podcast (mob-pod-card): note-dim pink tint (override P119) ── */
  .card.mob-card:has(.mob-pod-card) .mob-note-line.mob-note-dim {
    color: rgba(244, 114, 182, 0.60) !important;
    opacity: 1 !important;
  }

  /* ── meals (mob-meals-card): note-dim orange tint (override P122) ── */
  .card.mob-card:has(.mob-meals-card) .mob-note-line.mob-note-dim {
    color: rgba(251, 146, 60, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── stocks (mob-stocks-card): note-dim green tint ── */
  .card.mob-card:has(.mob-stocks-card) .mob-note-line.mob-note-dim {
    color: rgba(34, 197, 94, 0.62) !important;
    opacity: 1 !important;
  }

  /* ── P141: Interactive "soft-done" buttons — clickable mob-counter-done
   *  When mob-counter-done is used WITHOUT [disabled] (meditation, workout,
   *  pomodoro, journal), show pointer cursor and a subtle hover brightening.
   *  Disabled done buttons (fasting, chore, plant, etc.) keep cursor:default.
   * ── */
  .card.mob-card .mob-counter-btn.mob-counter-done:not([disabled]) {
    cursor: pointer !important;
    opacity: 0.92 !important;
  }
  .card.mob-card .mob-counter-btn.mob-counter-done:not([disabled]):hover {
    background: rgba(34, 197, 94, 0.18) !important;
    opacity: 1 !important;
  }
  .card.mob-card .mob-counter-btn.mob-counter-done:not([disabled]):active {
    transform: scale(0.97) !important;
    background: rgba(34, 197, 94, 0.22) !important;
  }
}


/* ═══════════════════════════════════════════════════════════════════════════════
 * P142 — MOBILE DESIGN MASTERCLASS
 * Top accent stripe per card type · Colored icon chips · Hero gradients
 * for all card types · Per-type CTA button accents · Shimmer animations
 * Ambient glow ::before · SD2 mobile polish · Micro-interaction upgrades
 * ═══════════════════════════════════════════════════════════════════════════════ */

@keyframes mob-shimmer {
  0%   { background-position: 200% center; }
  100% { background-position: -200% center; }
}
@keyframes mob-pulse-ring {
  0%, 100% { opacity: 0.55; transform: scale(1); }
  50%       { opacity: 1.00; transform: scale(1.04); }
}
@keyframes mob-bounce-in {
  0%   { transform: scale(0.78); opacity: 0; }
  55%  { transform: scale(1.07); }
  100% { transform: scale(1);    opacity: 1; }
}

@media (max-width: 768px) {

  /* ─── 1. Grid polish: tighter gap, consistent horizontal padding ─────────── */
  .dash-grid { gap: 12px !important; }

  /* ─── 2. Card press: snappier spring ────────────────────────────────────── */
  .card.mob-card {
    transition: transform 0.14s cubic-bezier(0.16, 1, 0.3, 1),
                box-shadow 0.18s ease !important;
  }
  .card.mob-card:active {
    transform: scale(0.972) !important;
    transition: transform 0.08s ease !important;
  }

  /* ─── 3. TOP ACCENT STRIPE ───────────────────────────────────────────────
   * 3 px border-top in each card type's signature color.
   * Works for both grid columns; RTL-agnostic.
   * ──────────────────────────────────────────────────────────────────────── */

  /* Emerald */
  .card.mob-card:has(.mob-quran-card),
  .card.mob-card:has(.mob-contact-card),
  .card.mob-card:has(.mob-pl-card)
    { border-top: 3px solid #10b981 !important; }

  /* Indigo */
  .card.mob-card:has(.mob-fasting-card),
  .card.mob-card:has(.mob-countdown-card),
  .card.mob-card:has(.mob-week-card),
  .card.mob-card:has(.mob-page-card),
  .card.mob-card:has(.mob-code-card)
    { border-top: 3px solid #6366f1 !important; }

  /* Amber */
  .card.mob-card:has(.mob-zakat-card),
  .card.mob-card:has(.mob-gold-card),
  .card.mob-card:has(.mob-idea-card),
  .card.mob-card:has(.mob-book-card),
  .card.mob-card:has(.mob-doc-card),
  .card.mob-card:has(.mob-mood-card),
  .card.mob-card:has(.mob-crypto-card)
    { border-top: 3px solid #f59e0b !important; }

  /* Cyan */
  .card.mob-card:has(.mob-savings-card),
  .card.mob-card:has(.mob-chore-card),
  .card.mob-card:has(.mob-wifi-card),
  .card.mob-card:has(.mob-review-card),
  .card.mob-card:has(.mob-fields-card),
  .card.mob-card:has(.mob-status-card),
  .card.mob-card:has(.mob-trip-card)
    { border-top: 3px solid #06b6d4 !important; }

  /* Orange */
  .card.mob-card:has(.mob-iou-card),
  .card.mob-card:has(.mob-sub-card),
  .card.mob-card:has(.mob-expense-card),
  .card.mob-card:has(.mob-recipe-card),
  .card.mob-card:has(.mob-meals-card)
    { border-top: 3px solid #f97316 !important; }

  /* Red */
  .card.mob-card:has(.mob-pomo-card),
  .card.mob-card:has(.mob-workout-card),
  .card.mob-card:has(.mob-watchlist-card),
  .card.mob-card:has(.mob-loan-card)
    { border-top: 3px solid #ef4444 !important; }

  /* Violet */
  .card.mob-card:has(.mob-nw-card),
  .card.mob-card:has(.mob-med-card),
  .card.mob-card:has(.mob-quote-card),
  .card.mob-card:has(.mob-reminder-card),
  .card.mob-card:has(.mob-goal-card),
  .card.mob-card:has(.mob-project-card),
  .card.mob-card:has(.mob-tracker-card),
  .card.mob-card:has(.mob-password-card),
  .card.mob-card:has(.mob-markdown-card)
    { border-top: 3px solid #8b5cf6 !important; }

  /* Pink */
  .card.mob-card:has(.mob-birthday-card),
  .card.mob-card:has(.mob-gift-card),
  .card.mob-card:has(.mob-journal-card),
  .card.mob-card:has(.mob-vitals-card),
  .card.mob-card:has(.mob-pd-card)
    { border-top: 3px solid #ec4899 !important; }

  /* Green */
  .card.mob-card:has(.mob-plant-card),
  .card.mob-card:has(.mob-checklist-card),
  .card.mob-card:has(.mob-stocks-card)
    { border-top: 3px solid #22c55e !important; }

  /* Teal */
  .card.mob-card:has(.mob-routine-card),
  .card.mob-card:has(.mob-lang-card),
  .card.mob-card:has(.mob-quicktext-card)
    { border-top: 3px solid #14b8a6 !important; }

  /* Blue */
  .card.mob-card:has(.mob-course-card),
  .card.mob-card:has(.mob-link-card),
  .card.mob-card:has(.mob-lg-card),
  .card.mob-card:has(.mob-meet-card),
  .card.mob-card:has(.mob-counter-card)
    { border-top: 3px solid #3b82f6 !important; }

  /* Slate */
  .card.mob-card:has(.mob-note-card),
  .card.mob-card:has(.mob-vehicle-card),
  .card.mob-card:has(.mob-appliance-card),
  .card.mob-card:has(.mob-inbox-card)
    { border-top: 3px solid #64748b !important; }

  /* Pinned override: keeps pinned accent but thicker top */
  .card.mob-card.pinned-card { border-top: 3px solid #a78bfa !important; }


  /* ─── 4. AMBIENT GLOW (::before) per card type ───────────────────────────
   * The white sheen ::before gets a colored tint per card type.
   * ─────────────────────────────────────────────────────────────────────── */
  .card.mob-card:has(.mob-quran-card)::before,
  .card.mob-card:has(.mob-contact-card)::before,
  .card.mob-card:has(.mob-pl-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(16,185,129,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-fasting-card)::before,
  .card.mob-card:has(.mob-countdown-card)::before,
  .card.mob-card:has(.mob-week-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(99,102,241,0.12) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-zakat-card)::before,
  .card.mob-card:has(.mob-gold-card)::before,
  .card.mob-card:has(.mob-crypto-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(245,158,11,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-savings-card)::before,
  .card.mob-card:has(.mob-chore-card)::before,
  .card.mob-card:has(.mob-review-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(6,182,212,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-iou-card)::before,
  .card.mob-card:has(.mob-sub-card)::before,
  .card.mob-card:has(.mob-expense-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(249,115,22,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-pomo-card)::before,
  .card.mob-card:has(.mob-workout-card)::before,
  .card.mob-card:has(.mob-loan-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(239,68,68,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-nw-card)::before,
  .card.mob-card:has(.mob-goal-card)::before,
  .card.mob-card:has(.mob-reminder-card)::before,
  .card.mob-card:has(.mob-tracker-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(139,92,246,0.12) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-birthday-card)::before,
  .card.mob-card:has(.mob-journal-card)::before,
  .card.mob-card:has(.mob-gift-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(236,72,153,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-plant-card)::before,
  .card.mob-card:has(.mob-checklist-card)::before,
  .card.mob-card:has(.mob-stocks-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(34,197,94,0.09) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-routine-card)::before,
  .card.mob-card:has(.mob-lang-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(20,184,166,0.11) 0%, transparent 70%) !important; }

  .card.mob-card:has(.mob-book-card)::before,
  .card.mob-card:has(.mob-course-card)::before
    { background: radial-gradient(ellipse 80% 55% at 82% 0%, rgba(59,130,246,0.10) 0%, transparent 70%) !important; }


  /* ─── 5. COLORED ICON CHIPS ──────────────────────────────────────────────
   * Subtle tinted background per card type.
   * ─────────────────────────────────────────────────────────────────────── */
  .mob-quran-card    .mob-card-icon,
  .mob-contact-card  .mob-card-icon,
  .mob-pl-card       .mob-card-icon
    { background: rgba(16,185,129, 0.18) !important; border-color: rgba(16,185,129, 0.28) !important; }

  .mob-fasting-card   .mob-card-icon,
  .mob-countdown-card .mob-card-icon,
  .mob-week-card      .mob-card-icon,
  .mob-page-card      .mob-card-icon,
  .mob-code-card      .mob-card-icon
    { background: rgba(99,102,241, 0.18) !important; border-color: rgba(99,102,241, 0.28) !important; }

  .mob-zakat-card    .mob-card-icon,
  .mob-gold-card     .mob-card-icon,
  .mob-idea-card     .mob-card-icon,
  .mob-book-card     .mob-card-icon,
  .mob-doc-card      .mob-card-icon,
  .mob-mood-card     .mob-card-icon,
  .mob-crypto-card   .mob-card-icon
    { background: rgba(245,158,11, 0.18) !important; border-color: rgba(245,158,11, 0.28) !important; }

  .mob-savings-card  .mob-card-icon,
  .mob-chore-card    .mob-card-icon,
  .mob-wifi-card     .mob-card-icon,
  .mob-review-card   .mob-card-icon,
  .mob-fields-card   .mob-card-icon,
  .mob-status-card   .mob-card-icon,
  .mob-trip-card     .mob-card-icon
    { background: rgba(6,182,212, 0.18) !important; border-color: rgba(6,182,212, 0.28) !important; }

  .mob-iou-card      .mob-card-icon,
  .mob-sub-card      .mob-card-icon,
  .mob-expense-card  .mob-card-icon,
  .mob-recipe-card   .mob-card-icon,
  .mob-meals-card    .mob-card-icon
    { background: rgba(249,115,22, 0.18) !important; border-color: rgba(249,115,22, 0.28) !important; }

  .mob-pomo-card      .mob-card-icon,
  .mob-workout-card   .mob-card-icon,
  .mob-watchlist-card .mob-card-icon,
  .mob-loan-card      .mob-card-icon
    { background: rgba(239,68,68, 0.18) !important; border-color: rgba(239,68,68, 0.28) !important; }

  .mob-nw-card       .mob-card-icon,
  .mob-med-card      .mob-card-icon,
  .mob-quote-card    .mob-card-icon,
  .mob-reminder-card .mob-card-icon,
  .mob-goal-card     .mob-card-icon,
  .mob-project-card  .mob-card-icon,
  .mob-tracker-card  .mob-card-icon,
  .mob-password-card .mob-card-icon,
  .mob-markdown-card .mob-card-icon
    { background: rgba(139,92,246, 0.18) !important; border-color: rgba(139,92,246, 0.28) !important; }

  .mob-birthday-card .mob-card-icon,
  .mob-gift-card     .mob-card-icon,
  .mob-journal-card  .mob-card-icon,
  .mob-vitals-card   .mob-card-icon,
  .mob-pd-card       .mob-card-icon
    { background: rgba(236,72,153, 0.18) !important; border-color: rgba(236,72,153, 0.28) !important; }

  .mob-plant-card     .mob-card-icon,
  .mob-checklist-card .mob-card-icon,
  .mob-stocks-card    .mob-card-icon
    { background: rgba(34,197,94, 0.18) !important; border-color: rgba(34,197,94, 0.28) !important; }

  .mob-routine-card   .mob-card-icon,
  .mob-lang-card      .mob-card-icon,
  .mob-quicktext-card .mob-card-icon
    { background: rgba(20,184,166, 0.18) !important; border-color: rgba(20,184,166, 0.28) !important; }

  .mob-course-card  .mob-card-icon,
  .mob-link-card    .mob-card-icon,
  .mob-lg-card      .mob-card-icon,
  .mob-meet-card    .mob-card-icon,
  .mob-counter-card .mob-card-icon
    { background: rgba(59,130,246, 0.18) !important; border-color: rgba(59,130,246, 0.28) !important; }


  /* ─── 6. HERO NUMBER GRADIENTS — extended set ────────────────────────────── */

  .mob-savings-card .mob-hero-num {
    background: linear-gradient(135deg, #06b6d4 0%, #22d3ee 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-fasting-card .mob-hero-num {
    background: linear-gradient(135deg, #6366f1 0%, #a78bfa 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-iou-card .mob-hero-num,
  .mob-loan-card .mob-hero-num {
    background: linear-gradient(135deg, #f97316 0%, #fbbf24 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-gold-card .mob-hero-num,
  .mob-crypto-card .mob-hero-num,
  .mob-zakat-card .mob-hero-num {
    background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-nw-card .mob-hero-num,
  .mob-tracker-card .mob-hero-num {
    background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-expense-card .mob-hero-num {
    background: linear-gradient(135deg, #f97316 0%, #ef4444 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-counter-card .mob-hero-num {
    background: linear-gradient(135deg, #3b82f6 0%, #6366f1 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-book-card .mob-hero-num,
  .mob-course-card .mob-hero-num,
  .mob-lang-card .mob-hero-num {
    background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-birthday-card .mob-hero-num {
    background: linear-gradient(135deg, #ec4899 0%, #f472b6 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-stocks-card .mob-hero-num,
  .mob-checklist-card .mob-hero-num {
    background: linear-gradient(135deg, #22c55e 0%, #4ade80 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-vitals-card .mob-hero-num {
    background: linear-gradient(135deg, #f43f5e 0%, #fb7185 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-countdown-card .mob-hero-num {
    background: linear-gradient(135deg, #6366f1 0%, #a78bfa 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-trip-card .mob-hero-num {
    background: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }
  .mob-sub-card .mob-hero-num {
    background: linear-gradient(135deg, #f97316 0%, #f59e0b 100%);
    -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
  }


  /* ─── 7. PER-TYPE CTA BUTTON COLORS ──────────────────────────────────────── */

  .mob-quran-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #10b981 0%, #06b6d4 100%) !important;
    box-shadow: 0 5px 14px rgba(16,185,129, 0.45) !important;
  }
  .mob-fasting-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%) !important;
    box-shadow: 0 5px 14px rgba(99,102,241, 0.45) !important;
  }
  .mob-savings-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #0ea5e9 0%, #06b6d4 100%) !important;
    box-shadow: 0 5px 14px rgba(6,182,212, 0.45) !important;
  }
  .mob-gold-card .mob-counter-btn.mob-counter-inc,
  .mob-zakat-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #f59e0b 0%, #fbbf24 100%) !important;
    box-shadow: 0 5px 14px rgba(245,158,11, 0.45) !important;
    color: #1a1100 !important;
  }
  .mob-iou-card .mob-counter-btn.mob-counter-inc,
  .mob-loan-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #f97316 0%, #ef4444 100%) !important;
    box-shadow: 0 5px 14px rgba(249,115,22, 0.45) !important;
  }
  .mob-sub-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #f97316 0%, #f59e0b 100%) !important;
    box-shadow: 0 5px 14px rgba(249,115,22, 0.40) !important;
  }
  .mob-expense-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #f97316 0%, #ef4444 100%) !important;
    box-shadow: 0 5px 14px rgba(239,68,68, 0.40) !important;
  }
  .mob-birthday-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #ec4899 0%, #f472b6 100%) !important;
    box-shadow: 0 5px 14px rgba(236,72,153, 0.45) !important;
  }
  .mob-journal-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #a78bfa 0%, #ec4899 100%) !important;
    box-shadow: 0 5px 14px rgba(167,139,250, 0.40) !important;
  }
  .mob-checklist-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%) !important;
    box-shadow: 0 5px 14px rgba(34,197,94, 0.45) !important;
  }
  .mob-routine-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #14b8a6 0%, #0ea5e9 100%) !important;
    box-shadow: 0 5px 14px rgba(20,184,166, 0.45) !important;
  }
  .mob-review-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #06b6d4 0%, #0ea5e9 100%) !important;
    box-shadow: 0 5px 14px rgba(6,182,212, 0.45) !important;
  }
  .mob-countdown-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%) !important;
    box-shadow: 0 5px 14px rgba(99,102,241, 0.45) !important;
  }
  .mob-book-card .mob-counter-btn.mob-counter-inc,
  .mob-course-card .mob-counter-btn.mob-counter-inc,
  .mob-lang-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%) !important;
    box-shadow: 0 5px 14px rgba(59,130,246, 0.45) !important;
  }
  .mob-reminder-card .mob-counter-btn.mob-counter-inc,
  .mob-goal-card .mob-counter-btn.mob-counter-inc,
  .mob-tracker-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #8b5cf6 0%, #6366f1 100%) !important;
    box-shadow: 0 5px 14px rgba(139,92,246, 0.45) !important;
  }
  .mob-med-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #a78bfa 0%, #8b5cf6 100%) !important;
    box-shadow: 0 5px 14px rgba(167,139,250, 0.45) !important;
  }
  .mob-trip-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #06b6d4 0%, #3b82f6 100%) !important;
    box-shadow: 0 5px 14px rgba(6,182,212, 0.45) !important;
  }
  .mob-contact-card .mob-counter-btn.mob-counter-inc {
    background: linear-gradient(135deg, #10b981 0%, #22d3ee 100%) !important;
    box-shadow: 0 5px 14px rgba(16,185,129, 0.45) !important;
  }


  /* ─── 8. PROGRESS BAR SHIMMER ────────────────────────────────────────────── */
  /* Opt-in shimmer per card type via gradient + background-position animation */

  .mob-quran-card .mob-progress-fill {
    background: linear-gradient(90deg, #10b981 0%, #34d399 40%, #22d3ee 60%, #10b981 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2.6s linear infinite;
  }
  .mob-pomo-card .mob-progress-fill {
    background: linear-gradient(90deg, #ef4444 0%, #f97316 40%, #fbbf24 60%, #ef4444 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2s linear infinite;
  }
  .mob-savings-card .mob-progress-fill {
    background: linear-gradient(90deg, #0ea5e9 0%, #22d3ee 40%, #67e8f9 60%, #0ea5e9 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2.6s linear infinite;
  }
  .mob-workout-card .mob-progress-fill,
  .mob-loan-card .mob-progress-fill {
    background: linear-gradient(90deg, #ef4444 0%, #f97316 40%, #ef4444 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2s linear infinite;
  }
  .mob-fasting-card .mob-progress-fill {
    background: linear-gradient(90deg, #6366f1 0%, #a78bfa 40%, #c4b5fd 60%, #6366f1 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2.8s linear infinite;
  }
  .mob-checklist-card .mob-progress-fill,
  .mob-routine-card .mob-progress-fill {
    background: linear-gradient(90deg, #22c55e 0%, #4ade80 40%, #86efac 60%, #22c55e 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2.8s linear infinite;
  }
  .mob-book-card .mob-progress-fill,
  .mob-course-card .mob-progress-fill,
  .mob-lang-card .mob-progress-fill {
    background: linear-gradient(90deg, #3b82f6 0%, #818cf8 40%, #8b5cf6 60%, #3b82f6 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2.8s linear infinite;
  }
  .mob-expense-card .mob-progress-fill {
    background: linear-gradient(90deg, #f97316 0%, #ef4444 40%, #f97316 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 2s linear infinite;
  }
  /* Done: no shimmer */
  .mob-progress-bar.mob-bar-done .mob-progress-fill {
    background: linear-gradient(90deg, #22c55e, #4ade80) !important;
    animation: none !important;
  }
  /* Warning/over: faster shimmer */
  .mob-progress-bar.mob-bar-warn .mob-progress-fill {
    background: linear-gradient(90deg, #f59e0b 0%, #ef4444 40%, #f59e0b 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 1.5s linear infinite;
  }
  .mob-progress-bar.mob-bar-over .mob-progress-fill {
    background: linear-gradient(90deg, #ef4444 0%, #b91c1c 40%, #ef4444 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 1.1s linear infinite;
  }


  /* ─── 9. STAT STRIP REFINEMENTS ──────────────────────────────────────────── */
  .mob-stat-strip {
    border-top: 1px solid rgba(255,255,255,0.07) !important;
    margin-top: 2px !important;
    padding: 8px 0 2px !important;
  }
  .mob-stat { border-inline-start: 1px solid rgba(255,255,255,0.07) !important; }
  .mob-stat-k { font-size: 9px !important; letter-spacing: 0.08em !important; }
  .mob-stat-v { font-size: 13.5px !important; font-weight: 700 !important; }


  /* ─── 10. SD2 SUBSCRIPTION MOBILE IMPROVEMENTS ──────────────────────────── */
  .card.mob-card .sd2-row {
    padding: 10px 12px !important;
    border-radius: 12px !important;
    margin-bottom: 6px !important;
    gap: 10px !important;
  }
  .card.mob-card .sd2-row-name  { font-size: 13.5px !important; font-weight: 700 !important; }
  .card.mob-card .sd2-row-price { font-size: 12px !important; gap: 3px !important; }
  .card.mob-card .sd2-row-badge {
    font-size: 10.5px !important;
    font-weight: 800 !important;
    padding: 4px 8px !important;
    border-radius: 8px !important;
    white-space: nowrap;
  }
  .card.mob-card .sd2-renew-btn {
    font-size: 15px !important;
    width: 36px !important;
    height: 36px !important;
    border-radius: 10px !important;
    background: rgba(249,115,22, 0.18) !important;
    border: 1.5px solid rgba(249,115,22, 0.40) !important;
    color: #fb923c !important;
    box-shadow: 0 3px 8px rgba(249,115,22, 0.18) !important;
  }
  .card.mob-card .sd2-renew-btn:active {
    background: rgba(249,115,22, 0.32) !important;
    transform: scale(0.90) !important;
    transition: transform 0.08s !important;
  }
  /* Sub hero: monthly total number accent */
  .card.mob-card .mob-sub-card .mob-hero { margin: 2px 0 0 !important; }


  /* ─── 11. MOOD BUTTONS ────────────────────────────────────────────────────── */
  .mob-mood-btn {
    font-size: 1.55rem !important;
    padding: 8px 12px !important;
    border-radius: 12px !important;
    background: rgba(255,255,255,0.06) !important;
    border: 1px solid rgba(255,255,255,0.08) !important;
    transition: transform 0.15s cubic-bezier(0.34,1.56,0.64,1), background 0.15s !important;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-mood-btn:active { transform: scale(0.80) !important; }
  .mob-mood-btn.mob-mood-active {
    background: rgba(139,92,246, 0.26) !important;
    border-color: rgba(139,92,246, 0.48) !important;
    box-shadow: 0 0 12px rgba(139,92,246, 0.28) !important;
    transform: scale(1.08) !important;
  }
  .mob-mood-row { gap: 8px !important; margin: 6px 0 4px !important; }


  /* ─── 12. TRACKER STEPPER — pill style ───────────────────────────────────── */
  .mob-tracker-ctrl {
    background: rgba(255,255,255,0.04) !important;
    border: 1px solid rgba(255,255,255,0.09) !important;
    border-radius: 14px !important;
    overflow: hidden;
  }
  .mob-tc-btn {
    flex: 0 0 50px;
    height: 44px;
    font-size: 1.3rem;
    font-weight: 700;
    background: none !important;
    border: none !important;
    color: rgba(255,255,255,0.68);
    cursor: pointer;
    transition: background 0.1s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-tc-btn:active { background: rgba(139,92,246,0.18) !important; transform: scale(0.87) !important; }
  .mob-tc-dec { border-inline-end:   1px solid rgba(255,255,255,0.08) !important; }
  .mob-tc-inc { border-inline-start: 1px solid rgba(255,255,255,0.08) !important; }
  .mob-tc-center {
    flex: 1;
    text-align: center;
    font-size: 1.05rem;
    font-weight: 700;
    color: rgba(255,255,255,0.92);
    font-variant-numeric: tabular-nums;
  }
  .mob-tc-unit { font-size: 0.72rem; color: rgba(255,255,255,0.45); }


  /* ─── 13. LINK CARD favicon bigger ──────────────────────────────────────── */
  .mob-link-fav, .mob-link-fav-fallback {
    width: 44px !important;
    height: 44px !important;
    border-radius: 13px !important;
  }


  /* ─── 14. NOTE / QUOTE card: better text treatment ──────────────────────── */
  .mob-note-card .mob-note-line {
    white-space: pre-line !important;
    line-height: 1.62 !important;
  }
  .mob-quote-card .mob-note-line {
    font-size: 14px !important;
    font-style: italic !important;
    line-height: 1.68 !important;
    color: rgba(255,255,255,0.88) !important;
  }
  .mob-quicktext-card .mob-quicktext-preview {
    -webkit-line-clamp: 5 !important;
    font-size: 13px !important;
    line-height: 1.6 !important;
  }


  /* ─── 15. PASSWORD card: mono font accent color ──────────────────────────── */
  .mob-password-card .mob-note-line {
    font-family: ui-monospace, 'SF Mono', 'Cascadia Code', monospace !important;
    letter-spacing: 0.06em !important;
    color: #c4b5fd !important;
    font-size: 13.5px !important;
  }


  /* ─── 16. CONTACT card: phone in accent color ────────────────────────────── */
  .mob-contact-card .mob-stat-v { color: #22d3ee !important; }


  /* ─── 17. REMINDER pulsing dot for urgent state ──────────────────────────── */
  .mob-reminder-card.mob-reminder-urgent .mob-card-icon {
    position: relative;
    animation: mob-pulse-ring 1.5s ease-in-out infinite;
  }


  /* ─── 18. CHECKLIST items: checkbox style dots ───────────────────────────── */
  .mob-checklist-card .mob-note-body { gap: 5px !important; }
  .mob-checklist-card .mob-note-line.mob-note-dim {
    text-decoration: line-through;
    text-decoration-color: rgba(34,197,94, 0.35);
    text-decoration-thickness: 1px;
  }


  /* ─── 19. BIRTHDAY today: glow pulse on the card ────────────────────────── */
  .card.mob-card:has(.mob-birthday-card.is-today) {
    box-shadow:
      inset 0 1px 0 rgba(255,255,255,0.05),
      0 0 0 2px rgba(236,72,153, 0.45),
      0 12px 28px rgba(236,72,153, 0.25) !important;
    animation: mob-pulse-ring 2s ease-in-out infinite;
  }


  /* ─── 20. FOOTER refinements ─────────────────────────────────────────────── */
  .mob-card-foot {
    border-top: 1px solid rgba(255,255,255,0.05) !important;
    padding-top: 7px !important;
    margin-top: 2px !important;
  }


  /* ─── 21. DONE-BUTTON glow on hover ─────────────────────────────────────── */
  .card.mob-card .mob-counter-btn.mob-counter-done[disabled] {
    box-shadow: 0 0 0 1px rgba(34,197,94, 0.25) inset !important;
  }


  /* ─── 22. REDUCED MOTION overrides ──────────────────────────────────────── */
}

@media (max-width: 768px) and (prefers-reduced-motion: reduce) {
  .mob-progress-fill           { animation: none !important; }
  .card.mob-card:has(.mob-birthday-card.is-today) { animation: none !important; }
  .mob-reminder-card.mob-reminder-urgent .mob-card-icon { animation: none !important; }
}


/* ═══════════════════════════════════════════════════════════════════════════════
 * P143 — Mobile card builder enhancements
 * Week/progress dots · Fasting time bar · Quran juz dots
 * ═══════════════════════════════════════════════════════════════════════════════ */

/* ── Week / progress dots row ──────────────────────────────────────────────── */
.mob-week-dots {
  display: flex;
  gap: 5px;
  align-items: center;
  flex-wrap: wrap;
  margin: 2px 0 4px;
}
.mob-wdot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  background: rgba(255,255,255,0.08);
  border: 1.5px solid rgba(255,255,255,0.12);
  flex-shrink: 0;
  transition: background 0.2s, border-color 0.2s, transform 0.15s;
}
/* Filled states */
.mob-wdot.mob-wdot-on {
  background: rgb(var(--mb-accent) / 0.8);
  border-color: rgb(var(--mb-accent) / 0.5);
  box-shadow: 0 0 4px rgb(var(--mb-accent) / 0.4);
}
.mob-wdot.mob-wdot-workout {
  background: #ef4444;
  border-color: rgba(239,68,68, 0.5);
  box-shadow: 0 0 5px rgba(239,68,68, 0.4);
}
.mob-wdot.mob-wdot-quran {
  background: #10b981;
  border-color: rgba(16,185,129, 0.5);
  box-shadow: 0 0 5px rgba(16,185,129, 0.35);
  width: 7px;
  height: 7px;
}
.mob-wdot.mob-wdot-green {
  background: #22c55e;
  border-color: rgba(34,197,94, 0.5);
  box-shadow: 0 0 5px rgba(34,197,94, 0.35);
}

/* ── Fasting time progress bar ─────────────────────────────────────────────── */
.mob-progress-bar.mob-bar-fasting .mob-progress-fill {
  background: linear-gradient(90deg, #6366f1 0%, #a78bfa 50%, #6366f1 100%) !important;
  background-size: 200% auto !important;
  animation: mob-shimmer 3s linear infinite;
  box-shadow: 0 0 8px rgba(99,102,241, 0.4);
}

/* Mobile-only: bigger dots + a pop animation when filled */
@media (max-width: 768px) {
  .mob-wdot {
    width: 11px;
    height: 11px;
  }
  .mob-wdot.mob-wdot-quran {
    width: 8px;
    height: 8px;
  }
  .mob-wdot.mob-wdot-on,
  .mob-wdot.mob-wdot-workout,
  .mob-wdot.mob-wdot-quran,
  .mob-wdot.mob-wdot-green {
    animation: mob-bounce-in 0.3s cubic-bezier(0.34, 1.56, 0.64, 1) both;
  }
  /* Stagger the bounce for each dot */
  .mob-week-dots .mob-wdot:nth-child(1) { animation-delay: 0.00s; }
  .mob-week-dots .mob-wdot:nth-child(2) { animation-delay: 0.04s; }
  .mob-week-dots .mob-wdot:nth-child(3) { animation-delay: 0.08s; }
  .mob-week-dots .mob-wdot:nth-child(4) { animation-delay: 0.12s; }
  .mob-week-dots .mob-wdot:nth-child(5) { animation-delay: 0.16s; }
  .mob-week-dots .mob-wdot:nth-child(6) { animation-delay: 0.20s; }
  .mob-week-dots .mob-wdot:nth-child(7) { animation-delay: 0.24s; }

  /* Habit dots in routine card: bigger and tighter */
  .card.mob-card .mob-routine-grid {
    gap: 8px !important;
    margin: 6px 0 4px !important;
  }
  .card.mob-card .mob-habit-dot {
    width: 42px !important;
    height: 42px !important;
    font-size: 1.25rem !important;
    border-radius: 50% !important;
    transition: transform 0.12s cubic-bezier(0.34,1.56,0.64,1), background 0.12s !important;
  }
  .card.mob-card .mob-habit-dot:active { transform: scale(0.82) !important; }
  .card.mob-card .mob-habit-dot.done {
    background: rgba(34,197,94, 0.22) !important;
    border-color: rgba(34,197,94, 0.45) !important;
    box-shadow: 0 0 10px rgba(34,197,94, 0.25) !important;
  }

  /* Routine done button: teal accent */
  .card.mob-card .mob-routine-card .mob-counter-btn.mob-counter-done {
    border-color: rgba(20,184,166, 0.35) !important;
    background: rgba(20,184,166, 0.12) !important;
    color: #2dd4bf !important;
  }
}


/* ── P143 extra: habit-more overflow badge ─────────────────────────────────── */
.mob-habit-more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  color: rgba(255,255,255,0.5);
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 99px;
  padding: 0 8px;
  height: 36px;
  min-width: 36px;
}
@media (max-width: 768px) {
  .mob-habit-more {
    height: 42px !important;
    min-width: 42px !important;
    font-size: 12px !important;
  }
  /* Progress label next to bar */
  .mob-progress-label {
    font-size: 11px !important;
    color: rgba(255,255,255,0.5) !important;
    font-weight: 700 !important;
    flex-shrink: 0 !important;
    font-variant-numeric: tabular-nums;
  }
  /* Checklist item rows: slightly bigger */
  .mob-cl-item {
    font-size: 13.5px !important;
    padding: 1px 0 !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════ */
/* ── P145  Pomodoro dots · Meditation · Stocks · Countdown · Sheet ─────── */
/* ════════════════════════════════════════════════════════════════════════════ */

/* ── Pomodoro session dots: tomato-red ─────────────────────────────────── */
.mob-wdot.mob-wdot-pomo {
  background: linear-gradient(135deg, #ef4444, #f97316) !important;
  border-color: rgba(239,68,68,0.5) !important;
  box-shadow: 0 0 6px rgba(239,68,68, 0.35) !important;
}

/* Running Pomodoro: progress bar pulses */
@keyframes mob-pomo-pulse {
  0%,100% { opacity: 1; }
  50%      { opacity: 0.7; }
}
.mob-progress-bar.mob-bar-pomo-running .mob-progress-fill {
  animation: mob-shimmer 2s linear infinite, mob-pomo-pulse 1.4s ease-in-out infinite !important;
}

/* Running Pomodoro: CTA button has a red-orange glow pulse */
@keyframes mob-pomo-btn-pulse {
  0%,100% { box-shadow: 0 0 0 0 rgba(239,68,68,0); }
  50%      { box-shadow: 0 0 14px 4px rgba(239,68,68,0.35); }
}
.card.mob-card .mob-pomo-running-btn {
  border-color: rgba(239,68,68, 0.5) !important;
  background: rgba(239,68,68, 0.14) !important;
  color: #fca5a5 !important;
  animation: mob-pomo-btn-pulse 1.4s ease-in-out infinite !important;
}

/* ── Meditation streak dots: violet/purple ─────────────────────────────── */
.mob-wdot.mob-wdot-meditation {
  background: linear-gradient(135deg, #8b5cf6, #a78bfa) !important;
  border-color: rgba(139,92,246, 0.5) !important;
  box-shadow: 0 0 6px rgba(139,92,246, 0.3) !important;
}

/* Meditation progress bar: cool violet shimmer */
.mob-progress-bar.mob-bar-meditation .mob-progress-fill {
  background: linear-gradient(90deg, #8b5cf6 0%, #c4b5fd 50%, #8b5cf6 100%) !important;
  background-size: 200% auto !important;
  animation: mob-shimmer 3.5s linear infinite;
  box-shadow: 0 0 8px rgba(139,92,246, 0.4);
}

/* ── Stocks: price color by change direction ────────────────────────────── */
.mob-stock-up {
  color: #4ade80 !important;
  font-weight: 700 !important;
}
.mob-stock-down {
  color: #f87171 !important;
  font-weight: 700 !important;
}

/* Compact pill for stock rows */
.mob-pill.mob-stock-pill {
  padding: 2px 6px !important;
  font-size: 11px !important;
  font-weight: 700 !important;
  min-width: 52px !important;
  text-align: center !important;
  font-variant-numeric: tabular-nums;
}

/* Stock rows: better alignment and separators */
.mob-stocks-list .mob-stock-row {
  display: flex !important;
  align-items: center !important;
  gap: 8px !important;
  padding: 7px 0 !important;
  border-bottom: 1px solid rgba(255,255,255,0.05) !important;
}
.mob-stocks-list .mob-stock-row:last-child {
  border-bottom: none !important;
}
.mob-stock-sym {
  font-weight: 800 !important;
  font-size: 13px !important;
  min-width: 50px !important;
  color: var(--mb-text-1) !important;
  letter-spacing: 0.02em;
}
.mob-stock-price {
  flex: 1 !important;
  font-size: 13px !important;
  color: var(--mb-text-2) !important;
  font-variant-numeric: tabular-nums;
  text-align: left;
}

/* ── Countdown: today display (h:m big digits) ──────────────────────────── */
.mob-cd-units {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 8px 0 4px;
}
.mob-cd-unit {
  display: flex;
  flex-direction: column;
  align-items: center;
  min-width: 64px;
}
.mob-cd-n {
  font-size: 2.6rem;
  font-weight: 900;
  color: var(--mb-text-1);
  line-height: 1;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.02em;
  background: linear-gradient(135deg, var(--mb-text-1) 60%, rgba(255,255,255,0.5));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}
.mob-cd-lbl {
  font-size: 10px;
  font-weight: 600;
  color: var(--mb-text-3);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-top: 3px;
}
.mob-cd-sep {
  font-size: 2rem;
  font-weight: 900;
  color: var(--mb-text-3);
  margin-bottom: 16px;
  line-height: 1;
}

/* Countdown today CTA — celebratory gradient */
.card.mob-card .mob-cd-today-btn {
  background: linear-gradient(135deg, rgba(249,115,22,0.2), rgba(239,68,68,0.2)) !important;
  border-color: rgba(249,115,22,0.4) !important;
  color: #fdba74 !important;
  box-shadow: 0 0 16px rgba(249,115,22,0.2) !important;
}

/* ── Bottom sheet — primary button upgrade ──────────────────────────────── */
@media (max-width: 768px) {
  .msb-primary {
    background: linear-gradient(135deg,
      rgb(var(--mb-accent)) 0%,
      color-mix(in srgb, rgb(var(--mb-accent)) 80%, white) 100%
    ) !important;
    box-shadow:
      0 4px 16px rgba(var(--mb-accent), 0.35),
      inset 0 1px 0 rgba(255,255,255,0.15) !important;
    border-radius: 14px !important;
    font-size: 15.5px !important;
    letter-spacing: 0.01em;
    transition: transform 0.12s cubic-bezier(0.34,1.56,0.64,1), box-shadow 0.15s ease !important;
  }
  .msb-primary:active {
    transform: scale(0.97) !important;
    box-shadow: 0 2px 8px rgba(var(--mb-accent), 0.25) !important;
  }
  .msb-secondary {
    border-radius: 14px !important;
    transition: background 0.12s ease !important;
  }
  .msb-secondary:active {
    background: var(--mb-surface-2) !important;
  }

  /* Sheet handle — wider, more visible ─────────────────── */
  .mob-sheet-handle {
    width: 44px !important;
    height: 5px !important;
    background: rgba(255,255,255,0.15) !important;
    margin: 12px auto 6px !important;
  }

  /* Sheet backdrop — subtle blur ─────────────────────────── */
  .mob-sheet {
    background: color-mix(in srgb, var(--mb-bg-2) 95%, transparent) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
  }

  /* Sheet icon container: match card icon chip style ──────── */
  .mob-sheet-icon {
    border-radius: 14px !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.2) !important;
  }

  /* ── Toast: move to bottom above nav bar on mobile ───────── */
  .toast {
    bottom: calc(64px + env(safe-area-inset-bottom, 0px)) !important;
    top: auto !important;
    right: 12px !important;
    left: 12px !important;
    max-width: none !important;
    text-align: center !important;
    border-radius: 14px !important;
    font-size: 14px !important;
    padding: 13px 18px !important;
    box-shadow: 0 4px 24px rgba(0,0,0,0.35), 0 0 0 1px rgba(255,255,255,0.06) !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════ */
/* ── P146  Language dots · Card hover glow · Hero polish · Nav indicator ── */
/* ════════════════════════════════════════════════════════════════════════════ */

/* ── Language streak dots: cyan/sky ────────────────────────────────────── */
.mob-wdot.mob-wdot-lang {
  background: linear-gradient(135deg, #06b6d4, #38bdf8) !important;
  border-color: rgba(6,182,212, 0.5) !important;
  box-shadow: 0 0 6px rgba(6,182,212, 0.3) !important;
}

/* ── Card: subtle hover lift on desktop-class devices ──────────────────── */
@media (hover: hover) and (max-width: 768px) {
  .card.mob-card:hover .mob-card-inner {
    background: rgba(255,255,255,0.015);
  }
}

/* ── Hero number: tabular-nums + anti-alias ─────────────────────────────── */
.mob-hero-num {
  font-variant-numeric: tabular-nums !important;
  -webkit-font-smoothing: antialiased !important;
}

/* ── Streak badge: tighter + brighter ──────────────────────────────────── */
.mob-streak-badge {
  font-size: 10px !important;
  font-weight: 800 !important;
  padding: 2px 6px !important;
  border-radius: 99px !important;
  background: linear-gradient(135deg, rgba(251,191,36,0.22), rgba(245,158,11,0.14)) !important;
  border: 1px solid rgba(251,191,36,0.3) !important;
  color: #fbbf24 !important;
  letter-spacing: 0.01em;
  white-space: nowrap;
}

/* ── Progress bar: taller + rounded fill on mobile ──────────────────────── */
@media (max-width: 768px) {
  .mob-progress-bar {
    height: 7px !important;
    border-radius: 99px !important;
    overflow: hidden !important;
  }
  .mob-progress-fill {
    border-radius: 99px !important;
    transition: width 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) !important;
  }
  .mob-progress-row {
    gap: 6px !important;
  }

  /* ── Stat strip: better contrast on value ──────────────────── */
  .mob-stat-v {
    font-size: 13px !important;
    font-weight: 700 !important;
    color: var(--mb-text-1) !important;
    font-variant-numeric: tabular-nums;
  }
  .mob-stat-v-pos { color: #4ade80 !important; }
  .mob-stat-v-neg { color: #f87171 !important; }
  .mob-stat-v-warn { color: #fbbf24 !important; }
  .mob-stat-k {
    font-size: 11px !important;
    color: var(--mb-text-3) !important;
    font-weight: 600 !important;
    letter-spacing: 0.01em;
  }

  /* ── Note lines: better contrast ─────────────────────────── */
  .mob-note-line {
    font-size: 13px !important;
    line-height: 1.6 !important;
    color: var(--mb-text-2) !important;
  }
  .mob-note-line.mob-note-dim {
    color: var(--mb-text-3) !important;
    font-size: 12.5px !important;
  }

  /* ── Nav active indicator: brighter dot ──────────────────── */
  .mob-nav-btn.active::after {
    width: 24px !important;
    height: 3px !important;
    background: var(--accent2) !important;
    box-shadow: 0 0 8px var(--accent2) !important;
  }
  .mob-nav-btn.active {
    color: var(--accent2) !important;
  }
  .mob-nav-btn svg {
    transition: transform 0.18s cubic-bezier(0.34, 1.56, 0.64, 1);
  }
  .mob-nav-btn.active svg {
    transform: scale(1.1) !important;
  }

  /* ── Top bar: slightly more opaque + stronger border ─────── */
  .mob-top-bar {
    background: rgba(7,7,11,0.95) !important;
    border-bottom-color: rgba(255,255,255,0.07) !important;
    backdrop-filter: blur(20px) !important;
    -webkit-backdrop-filter: blur(20px) !important;
  }

  /* ── Mobile search input: better focus ring ──────────────── */
  .mob-search-input:focus {
    border-color: rgba(var(--mb-accent), 0.5) !important;
    box-shadow: 0 0 0 3px rgba(var(--mb-accent), 0.12) !important;
  }

  /* ── Card: cleaner press feedback ────────────────────────── */
  .card.mob-card {
    transition: transform 0.12s cubic-bezier(0.34,1,0.64,1),
                box-shadow 0.15s ease !important;
    will-change: transform;
  }
  .card.mob-card:active {
    transform: scale(0.975) !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.3) !important;
  }
}

/* ════════════════════════════════════════════════════════════════════════════ */
/* ── P147  Savings bar · Card entrance · Misc polish ───────────────────── */
/* ════════════════════════════════════════════════════════════════════════════ */

/* ── Savings goal progress bar: amber/gold shimmer ────────────────────── */
.mob-progress-bar.mob-bar-savings .mob-progress-fill {
  background: linear-gradient(90deg, #f59e0b 0%, #fcd34d 50%, #f59e0b 100%) !important;
  background-size: 200% auto !important;
  animation: mob-shimmer 3s linear infinite;
  box-shadow: 0 0 8px rgba(245,158,11, 0.4);
}

/* ── no card-entrance animation (cards re-render on every update) ─────── */
@media (max-width: 768px) {
  /* ── mob-frac-muted: fraction denominator color ──────── */
  .mob-frac-muted {
    color: var(--mb-text-3) !important;
    font-size: 0.6em !important;
    font-weight: 600 !important;
  }

  /* ── Hero unit alignment ─────────────────────────────── */
  .mob-hero-unit {
    font-size: 13px !important;
    font-weight: 600 !important;
    color: var(--mb-text-3) !important;
    align-self: flex-end !important;
    padding-bottom: 3px !important;
    max-width: 120px !important;
    white-space: normal !important;
    line-height: 1.3 !important;
    text-align: right !important;
  }

  /* ── Icon chip: slightly larger for better readability ── */
  .mob-card-icon {
    font-size: 20px !important;
    width: 34px !important;
    height: 34px !important;
    border-radius: 10px !important;
    flex-shrink: 0 !important;
  }

  /* ── Card title: better overflow ────────────────────── */
  .mob-card-title {
    font-size: 14.5px !important;
    font-weight: 800 !important;
    letter-spacing: -0.01em;
  }

  /* ── Pill: compact, readable ────────────────────────── */
  .mob-pill {
    font-size: 11px !important;
    padding: 2px 7px !important;
    font-weight: 700 !important;
    border-radius: 99px !important;
    white-space: nowrap !important;
  }

  /* ── Improve the "done" button: don't be too flashy ─── */
  .card.mob-card .mob-counter-btn.mob-counter-done {
    font-size: 13px !important;
    padding: 10px 14px !important;
    opacity: 0.9 !important;
  }

  /* ── Countdown units: responsive sizing ─────────────── */
  .mob-cd-n {
    font-size: 2.2rem !important;
  }
  .mob-cd-sep {
    font-size: 1.8rem !important;
  }
}

/* ── Reminder urgent glow — mobile ─────────────────────────────────────── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-reminder-card.mob-reminder-urgent) {
    border-color: rgba(239,68,68, 0.3) !important;
  }
  .card.mob-card:has(.mob-reminder-card.mob-reminder-urgent)::before {
    background: radial-gradient(ellipse 80% 60% at 50% 0%, rgba(239,68,68,0.18), transparent 70%) !important;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   P148 — Typed progress bars · workout/goal/book/project · dot fix · theming
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Fix: workout dots are GREEN (achievement), not red ─────────────── */
.mob-wdot.mob-wdot-workout {
  background: #22c55e !important;
  border-color: rgba(34,197,94, 0.5) !important;
  box-shadow: 0 0 5px rgba(34,197,94, 0.4) !important;
}

/* ── Workout progress bar: energetic green gradient ─────────────────── */
.mob-progress-bar.mob-bar-workout .mob-progress-fill {
  background: linear-gradient(90deg, #15803d 0%, #22c55e 50%, #4ade80 100%);
  background-size: 200% auto;
  animation: mob-shimmer 3s linear infinite;
  box-shadow: 0 0 8px rgba(34,197,94, 0.35);
}

/* ── Goal progress bar: violet gradient (ambition & intent) ─────────── */
.mob-progress-bar.mob-bar-goal .mob-progress-fill {
  background: linear-gradient(90deg, #6d28d9 0%, #8b5cf6 50%, #a78bfa 100%);
  background-size: 200% auto;
  animation: mob-shimmer 3.5s linear infinite;
  box-shadow: 0 0 8px rgba(139,92,246, 0.35);
}

/* ── Book progress bar: warm amber (reading by lamplight) ────────────── */
.mob-progress-bar.mob-bar-book .mob-progress-fill {
  background: linear-gradient(90deg, #b45309 0%, #d97706 40%, #f59e0b 80%, #fbbf24 100%);
  background-size: 200% auto;
  animation: mob-shimmer 4s linear infinite;
  box-shadow: 0 0 8px rgba(245,158,11, 0.3);
}

/* ── Project progress bar: blue-cyan (systematic work) ──────────────── */
.mob-progress-bar.mob-bar-project .mob-progress-fill {
  background: linear-gradient(90deg, #1e40af 0%, #3b82f6 50%, #60a5fa 100%);
  background-size: 200% auto;
  animation: mob-shimmer 3.5s linear infinite;
  box-shadow: 0 0 8px rgba(59,130,246, 0.3);
}

/* ── Per-type action button accent colours ───────────────────────────── */
@media (max-width: 768px) {
  /* Workout → green */
  .card.mob-card .mob-workout-card .mob-counter-btn.mob-counter-inc {
    background: rgba(34,197,94, 0.12) !important;
    border-color: rgba(34,197,94, 0.35) !important;
    color: #4ade80 !important;
  }
  .card.mob-card .mob-workout-card .mob-counter-btn.mob-counter-done {
    background: rgba(34,197,94, 0.1) !important;
    border-color: rgba(34,197,94, 0.3) !important;
    color: #86efac !important;
  }
  /* Goal → violet */
  .card.mob-card .mob-goal-card .mob-counter-btn.mob-counter-inc {
    background: rgba(139,92,246, 0.12) !important;
    border-color: rgba(139,92,246, 0.35) !important;
    color: #c4b5fd !important;
  }
  /* Book → amber */
  .card.mob-card .mob-book-card .mob-counter-btn.mob-counter-inc {
    background: rgba(245,158,11, 0.1) !important;
    border-color: rgba(245,158,11, 0.3) !important;
    color: #fcd34d !important;
  }
  /* Project → blue */
  .card.mob-card .mob-project-card .mob-counter-btn.mob-counter-inc {
    background: rgba(59,130,246, 0.1) !important;
    border-color: rgba(59,130,246, 0.3) !important;
    color: #93c5fd !important;
  }
  /* Fasting → indigo */
  .card.mob-card .mob-fasting-card .mob-counter-btn.mob-counter-inc {
    background: rgba(99,102,241, 0.12) !important;
    border-color: rgba(99,102,241, 0.35) !important;
    color: #a5b4fc !important;
  }
  /* Mood buttons: bigger tap targets */
  .mob-mood-row { gap: 6px !important; }
  .mob-mood-btn {
    width: 42px !important;
    height: 42px !important;
    font-size: 22px !important;
    border-radius: 50% !important;
    transition: transform 0.12s cubic-bezier(0.34,1.56,0.64,1) !important;
  }
  .mob-mood-btn:active { transform: scale(0.82) !important; }
  .mob-mood-btn.mob-mood-active {
    background: rgba(255,255,255,0.12) !important;
    box-shadow: 0 0 10px rgba(255,255,255,0.15) !important;
    transform: scale(1.1) !important;
  }
  /* Course card → teal */
  .card.mob-card .mob-course-card .mob-counter-btn.mob-counter-inc {
    background: rgba(20,184,166, 0.1) !important;
    border-color: rgba(20,184,166, 0.3) !important;
    color: #5eead4 !important;
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   P148b — Loan bar · Net-worth ratio bar · Gold button · misc
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Loan progress bar: green (you're paying it off — celebrate!) ─────── */
.mob-progress-bar.mob-bar-loan .mob-progress-fill {
  background: linear-gradient(90deg, #047857 0%, #059669 50%, #34d399 100%);
  background-size: 200% auto;
  animation: mob-shimmer 4s linear infinite;
  box-shadow: 0 0 6px rgba(5,150,105, 0.3);
}

/* ── Net-worth split bar ─────────────────────────────────────────────── */
.mob-nw-ratio-row {
  display: flex;
  height: 7px;
  border-radius: 99px;
  overflow: hidden;
  gap: 2px;
  margin: 6px 0 4px;
}
.mob-nw-assets-bar {
  background: linear-gradient(90deg, #059669, #34d399);
  border-radius: 99px 0 0 99px;
  transition: width 0.4s ease;
}
.mob-nw-liab-bar {
  flex: 1;
  background: linear-gradient(90deg, #dc2626, #f87171);
  border-radius: 0 99px 99px 0;
  opacity: 0.6;
}

/* ── Gold card: golden shimmer button ───────────────────────────────── */
@media (max-width: 768px) {
  .card.mob-card .mob-gold-card .mob-counter-btn.mob-counter-inc {
    background: rgba(234,179,8, 0.1) !important;
    border-color: rgba(234,179,8, 0.35) !important;
    color: #fde047 !important;
  }
  /* Loan card: green on progress */
  .card.mob-card .mob-loan-card .mob-counter-btn.mob-counter-inc {
    background: rgba(5,150,105, 0.1) !important;
    border-color: rgba(5,150,105, 0.3) !important;
    color: #6ee7b7 !important;
  }
  /* Net worth: positive = teal, negative = red text */
  .card.mob-card .mob-nw-card .mob-counter-btn.mob-counter-inc {
    background: rgba(99,102,241, 0.1) !important;
    border-color: rgba(99,102,241, 0.3) !important;
    color: #a5b4fc !important;
  }
  /* Zakat card */
  .card.mob-card .mob-zakat-card .mob-counter-btn.mob-counter-inc {
    background: rgba(16,185,129, 0.1) !important;
    border-color: rgba(16,185,129, 0.3) !important;
    color: #6ee7b7 !important;
  }
  /* Quran card: green (Quran = life and growth) */
  .card.mob-card .mob-quran-card .mob-counter-btn.mob-counter-inc {
    background: rgba(16,185,129, 0.1) !important;
    border-color: rgba(16,185,129, 0.3) !important;
    color: #6ee7b7 !important;
  }
  /* Plant card: green */
  .card.mob-card .mob-plant-card .mob-counter-btn.mob-counter-inc {
    background: rgba(34,197,94, 0.1) !important;
    border-color: rgba(34,197,94, 0.3) !important;
    color: #86efac !important;
  }
  /* Recipe card: orange */
  .card.mob-card .mob-recipe-card .mob-counter-btn.mob-counter-inc {
    background: rgba(249,115,22, 0.1) !important;
    border-color: rgba(249,115,22, 0.3) !important;
    color: #fdba74 !important;
  }
  /* Watchlist card: yellow */
  .card.mob-card .mob-watchlist-card .mob-counter-btn.mob-counter-inc {
    background: rgba(234,179,8, 0.1) !important;
    border-color: rgba(234,179,8, 0.3) !important;
    color: #fde047 !important;
  }
}

/* ── Fix workout card: green stripe + glow (not red — workouts are wins) ── */
@media (max-width: 768px) {
  .card.mob-card:has(.mob-workout-card) {
    box-shadow: inset 4px 0 0 0 #22c55e, 0 12px 28px rgba(0,0,0,0.45) !important;
    background:
      radial-gradient(ellipse 65% 80% at 100% 0%, rgba(34,197,94, 0.10), transparent 60%),
      linear-gradient(180deg, #0c0c11 0%, #06060a 100%) !important;
  }
  .mob-card:has(.mob-workout-card)::after {
    background: linear-gradient(180deg, #22c55e, #16a34a) !important;
  }
  .card.mob-card:has(.mob-workout-card) .mob-card-icon {
    background: rgba(34,197,94, 0.15) !important;
    border-color: rgba(34,197,94, 0.3) !important;
    box-shadow: 0 0 12px rgba(34,197,94, 0.2) !important;
  }
}

/* ── Course progress bar: blue gradient (learning = sky) ─────────────── */
.mob-progress-bar.mob-bar-course .mob-progress-fill {
  background: linear-gradient(90deg, #1d4ed8 0%, #3b82f6 50%, #7dd3fc 100%);
  background-size: 200% auto;
  animation: mob-shimmer 3.5s linear infinite;
  box-shadow: 0 0 6px rgba(59,130,246, 0.3);
}

/* ── Meals/calories progress bar: warm orange ────────────────────────── */
.mob-progress-bar.mob-bar-meals .mob-progress-fill {
  background: linear-gradient(90deg, #c2410c 0%, #f97316 50%, #fb923c 100%);
  background-size: 200% auto;
  animation: mob-shimmer 3.5s linear infinite;
  box-shadow: 0 0 6px rgba(249,115,22, 0.3);
}

/* ═══════════════════════════════════════════════════════
   P149 — Notifications clear/dismiss + Insights tabs + Bulk reorder
   ═══════════════════════════════════════════════════════ */

/* ── Per-notification dismiss button ─────────────────── */
.crit-dismiss-btn {
  flex-shrink: 0;
  background: none;
  border: 1px solid transparent;
  color: rgba(197,207,232, 0.3);
  border-radius: 4px;
  width: 20px;
  height: 20px;
  font-size: 0.7rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.15s, background 0.15s, border-color 0.15s;
  padding: 0;
  opacity: 0;
}
.crit-item:hover .crit-dismiss-btn,
.notif-item:hover .crit-dismiss-btn {
  opacity: 1;
}
.crit-dismiss-btn:hover {
  background: rgba(239,68,68, 0.15);
  border-color: rgba(239,68,68, 0.3);
  color: #f87171;
}
/* On mobile, always show dismiss btn */
@media (max-width: 768px) {
  .crit-dismiss-btn { opacity: 0.6; }
}

/* ── Notifications header layout ──────────────────────── */
.notif-dropdown-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 14px 10px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
  font-size: 0.85rem;
  font-weight: 600;
  color: #c5cfe8;
}
.notif-header-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  white-space: nowrap;
}
.notif-clear-btn {
  background: rgba(239,68,68, 0.12);
  border: 1px solid rgba(239,68,68, 0.25);
  color: #f87171;
  border-radius: 6px;
  padding: 3px 10px;
  font-size: 0.76rem;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s, color 0.15s;
}
.notif-clear-btn:hover {
  background: rgba(239,68,68, 0.22);
  color: #fca5a5;
}
.notif-header-actions .notif-close-btn {
  position: static !important;
  top: auto !important;
  left: auto !important;
  width: 28px;
  height: 28px;
  padding: 0;
  border-radius: 8px;
  background: transparent !important;
  border: 1px solid transparent !important;
  color: var(--muted) !important;
  box-shadow: none;
  flex-shrink: 0;
}
.notif-header-actions .notif-close-btn:hover {
  background: rgba(255,255,255,0.06) !important;
  border-color: rgba(255,255,255,0.08) !important;
  color: var(--text) !important;
  transform: none;
}

/* ── Bulk bar reorder button ──────────────────────────── */
.bulk-act-btn.bulk-act-reorder {
  background: rgba(99,102,241, 0.18);
  border-color: rgba(99,102,241, 0.35);
  color: #a5b4fc;
  order: -1; /* Show first in the actions list */
}
.bulk-act-btn.bulk-act-reorder:hover {
  background: rgba(99,102,241, 0.30);
}

/* ── Insights page tab bar ────────────────────────────── */
.ins-tab-bar {
  display: flex;
  gap: 0;
  padding: 0 20px;
  border-bottom: 1px solid rgba(255,255,255,0.08);
  background: rgba(10,8,18, 0.6);
  flex-shrink: 0;
  position: sticky;
  top: 0;
  z-index: 2;
}
.ins-tab {
  background: none;
  border: none;
  border-bottom: 2.5px solid transparent;
  color: rgba(197,207,232, 0.55);
  font-size: 0.88rem;
  font-weight: 600;
  padding: 12px 18px 10px;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
  white-space: nowrap;
}
.ins-tab:hover {
  color: #c5cfe8;
}
.ins-tab.active {
  color: #7dd3fc;
  border-bottom-color: #7dd3fc;
}
.ins-pane {
  overflow-y: auto;
  flex: 1;
}
.ins-pane-hidden {
  display: none !important;
}

/* Tab bar sticky behavior handled via inline position:sticky in the existing rule */

/* Achievement tab: prod block spacing */
.insight-prod-block .stat-prod-wrap {
  margin: 0;
}
.insight-prod-block .stat-prod-wrap .stat-prod-score {
  font-size: 2.2rem;
}
.insights-row-2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
@media (max-width: 640px) {
  .insights-row-2 { grid-template-columns: 1fr; }
  .ins-tab { font-size: 0.82rem; padding: 10px 12px 8px; }
}

/* ── Goal card milestone markers ─────────────────────── */
.mob-goal-milestone {
  position: absolute;
  top: -2px;
  width: 2px;
  height: calc(100% + 4px);
  background: rgba(255,255,255,0.25);
  border-radius: 1px;
  pointer-events: none;
  transform: translateX(-1px);
  z-index: 1;
}

/* ── Reminder action row (done + snooze buttons) ─────── */
@media (max-width: 768px) {
  .mob-reminder-action-row {
    display: flex;
    gap: 8px;
    align-items: center;
  }
  .mob-rem-done-btn { flex: 1; }
  .mob-rem-snooze-btn {
    flex-shrink: 0;
    min-width: 80px;
    padding: 0 12px;
    font-size: 0.82rem;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    background: rgba(245,158,11, 0.10);
    border-color: rgba(245,158,11, 0.28);
    color: #fbbf24;
    white-space: nowrap;
  }
  /* Quick snooze overlay */
  .mob-snooze-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 11000;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.2s;
  }
  .mob-snooze-overlay.mob-snooze-in { opacity: 1; }
  .mob-snooze-sheet {
    background: #1a1828;
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 20px 20px 0 0;
    padding: 20px 20px calc(env(safe-area-inset-bottom,0px) + 20px);
    width: 100%;
    transform: translateY(100%);
    transition: transform 0.25s cubic-bezier(.16,1,.3,1);
  }
  .mob-snooze-in .mob-snooze-sheet { transform: translateY(0); }
  .mob-snooze-title {
    font-size: 0.85rem;
    font-weight: 600;
    color: rgba(197,207,232,0.7);
    margin-bottom: 12px;
    text-align: center;
  }
  .mob-snooze-btns {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 10px;
  }
  .mob-snooze-btns button {
    padding: 14px 8px;
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 12px;
    color: #e8eef7;
    font-size: 0.82rem;
    font-weight: 600;
    font-family: var(--font-ar);
    cursor: pointer;
    transition: background 0.15s;
  }
  .mob-snooze-btns button:active { background: rgba(255,255,255,0.12); }
}

/* ── Link card copy button ────────────────────────────── */
.mob-link-btns {
  display: flex;
  gap: 6px;
  align-items: center;
}
.mob-link-open-btn {
  flex: 1;
}
.mob-link-copy-btn {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  padding: 0;
  font-size: 1rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ── Mobile bottom nav badge ──────────────────────────── */
.mob-nav-badge {
  position: absolute;
  top: 4px;
  right: 8px;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  background: #3b82f6;
  color: #fff;
  border-radius: 99px;
  font-size: 0.64rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  pointer-events: none;
  font-family: var(--font-mono);
}
.mob-nav-badge.mob-nav-badge-urgent {
  background: #ef4444;
}
/* Make mob-nav-btn relative for badge positioning */
@media (max-width: 768px) {
  .mob-nav-btn { position: relative; }
}
/* Icon wrapper for nav buttons that have a badge overlay */
.mob-nav-ico-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.mob-nav-ico-wrap .mob-nav-badge {
  top: -3px;
  right: -5px;
}

/* ══════════════════════════════════════════════════════════════════
   P150 — Enhanced Mobile Search Overlay
   ══════════════════════════════════════════════════════════════════ */

/* Result count header */
.mob-sr-count {
  padding: 8px 16px 4px;
  font-size: 0.72rem;
  font-weight: 700;
  color: var(--text-muted, #8896a8);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  font-family: var(--font-ar);
}

/* Group divider header */
.mob-sr-group-header {
  padding: 10px 16px 5px;
  font-size: 0.73rem;
  font-weight: 700;
  color: var(--accent, #6c63ff);
  text-transform: uppercase;
  letter-spacing: 0.03em;
  font-family: var(--font-ar);
  border-top: 1px solid rgba(255,255,255,0.06);
  margin-top: 4px;
}
.mob-sr-group-header:first-of-type { border-top: none; margin-top: 0; }

/* Highlight matched text */
.mob-sr-hl {
  background: rgba(108,99,255,0.28);
  color: #c4beff;
  border-radius: 3px;
  padding: 0 2px;
  font-weight: 700;
}

/* Hint / empty state */
/* ── Search overlay quick-create strip ── */
.mob-sqc-strip {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 10px 14px 8px;
  overflow-x: auto;
  scrollbar-width: none;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.mob-sqc-strip::-webkit-scrollbar { display: none; }
.mob-sqc-label {
  font-size: 13px;
  font-weight: 700;
  color: rgba(232,238,247,0.35);
  flex-shrink: 0;
  margin-left: 2px;
}
.mob-sqc-btn {
  flex-shrink: 0;
  padding: 5px 12px;
  border-radius: 99px;
  border: 1.5px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.04);
  color: rgba(232,238,247,0.70);
  font-size: 12px;
  font-family: var(--font-ar, sans-serif);
  cursor: pointer;
  transition: background 0.12s, border-color 0.12s, transform 0.10s;
  -webkit-tap-highlight-color: transparent;
  white-space: nowrap;
}
.mob-sqc-btn:active {
  background: rgba(108,99,255,0.18);
  border-color: rgba(129,140,248,0.40);
  transform: scale(0.93);
}

.mob-search-hint {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 40px 20px 24px;
  color: var(--text-muted, #8896a8);
  font-size: 0.88rem;
  font-family: var(--font-ar);
  text-align: center;
}
.mob-search-hint-icon {
  font-size: 2.2rem;
  opacity: 0.5;
  margin-bottom: 4px;
}
.mob-search-hint-tips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: center;
  margin-top: 6px;
}
.mob-sh-tip {
  padding: 3px 10px;
  border-radius: 99px;
  border: 1px solid rgba(255,255,255,0.12);
  font-size: 0.75rem;
  font-family: var(--font-mono, monospace);
  color: var(--accent, #6c63ff);
  background: rgba(108,99,255,0.08);
  white-space: nowrap;
}

/* Recent searches */
.mob-search-recent-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px 6px;
  font-size: 0.78rem;
  font-weight: 700;
  font-family: var(--font-ar);
  color: var(--text-muted, #8896a8);
}
.mob-sr-hist-clear {
  background: none;
  border: none;
  color: #ef4444;
  font-size: 0.75rem;
  font-family: var(--font-ar);
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 6px;
}
.mob-sr-hist-clear:active { background: rgba(239,68,68,0.1); }

.mob-search-recent-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 4px 16px 12px;
}
.mob-sr-hist-chip {
  padding: 6px 14px;
  border-radius: 99px;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  color: var(--text-main, #e8eef7);
  font-size: 0.82rem;
  font-family: var(--font-ar);
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
  white-space: nowrap;
}
.mob-sr-hist-chip:active {
  background: rgba(108,99,255,0.18);
  border-color: var(--accent, #6c63ff);
}

/* ── Mobile top-bar notification bell badge ─────────── */
.mob-notif-badge {
  position: absolute;
  top: 4px;
  right: 4px;
  min-width: 15px;
  height: 15px;
  padding: 0 3px;
  background: #3b82f6;
  color: #fff;
  border-radius: 99px;
  font-size: 0.6rem;
  font-weight: 800;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  pointer-events: none;
  font-family: var(--font-mono, monospace);
  border: 1.5px solid var(--bg-main, #0e0c15);
  transition: transform 0.2s cubic-bezier(.34,1.56,.64,1);
}
.mob-notif-badge.mob-notif-badge-urgent {
  background: #ef4444;
}
/* Pulse when badge appears / updates */
@keyframes mob-badge-pop {
  0%   { transform: scale(0.5); opacity: 0; }
  60%  { transform: scale(1.3); }
  100% { transform: scale(1);   opacity: 1; }
}
.mob-notif-badge { animation: mob-badge-pop 0.3s ease forwards; }

/* ── Voice search mic button ────────────────────────── */
.mob-search-mic {
  flex-shrink: 0;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  background: none;
  border: none;
  color: var(--text-muted, #8896a8);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: color 0.15s, background 0.15s;
}
.mob-search-mic:active { background: rgba(255,255,255,0.08); }
.mob-search-mic.mob-search-mic-active {
  color: #ef4444;
  animation: mic-pulse 1s ease-in-out infinite;
}
@keyframes mic-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0.45; }
}

/* ── Search overlay slide-in/out animation ── */
.mob-search-overlay {
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.18s ease-out, transform 0.18s ease-out;
}
.mob-search-overlay.mob-search-in  { opacity: 1; transform: translateY(0); }
.mob-search-overlay.mob-search-out { opacity: 0; transform: translateY(8px); }

/* ── Search type filter chips ── */
.mob-search-chips {
  display: flex;
  gap: 7px;
  padding: 9px 14px 10px;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  border-bottom: 1px solid rgba(255,255,255,0.07);
  flex-shrink: 0;
}
.mob-search-chips::-webkit-scrollbar { display: none; }
.mob-sf-chip {
  flex-shrink: 0;
  padding: 5px 13px;
  border-radius: 99px;
  border: 1.5px solid rgba(255,255,255,0.10);
  background: rgba(255,255,255,0.04);
  color: rgba(232,238,247,0.60);
  font-size: 12px;
  font-family: var(--font-ar);
  white-space: nowrap;
  cursor: pointer;
  transition: background 0.14s, border-color 0.14s, color 0.14s;
  -webkit-tap-highlight-color: transparent;
}
.mob-sf-chip:active {
  background: rgba(108,99,255,0.18);
  transform: scale(0.95);
}
.mob-sf-chip.mob-sf-active {
  background: rgba(108,99,255,0.18);
  border-color: rgba(129,140,248,0.50);
  color: #a5b4fc;
  font-weight: 700;
}

/* ── Progress % badge in search results ── */
.mob-sr-pct {
  font-size: 11px;
  font-weight: 700;
  font-family: var(--font-mono, monospace);
  padding: 2px 7px;
  border-radius: 7px;
  border: 1px solid transparent;
  flex-shrink: 0;
  align-self: center;
  white-space: nowrap;
}

/* ── Search result item active tap state ── */
.mob-sr-item {
  transition: background 0.1s, transform 0.1s;
  -webkit-tap-highlight-color: transparent;
}
.mob-sr-item:active {
  background: rgba(255,255,255,0.06) !important;
  transform: scale(0.985);
}

/* ── FAB Speed Dial (long-press quick-add) ─────────── */
.mob-speed-dial-overlay {
  position: fixed;
  inset: 0;
  z-index: 1190;
  -webkit-tap-highlight-color: transparent;
}
.mob-speed-dial-overlay.mob-sd-in  { opacity: 1; }
.mob-speed-dial-overlay.mob-sd-out { opacity: 0; transition: opacity 0.18s; }
.mob-speed-dial {
  position: fixed;
  bottom: calc(156px + env(safe-area-inset-bottom, 0px));
  left: 16px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-start;
}
.mob-sd-item {
  display: flex;
  align-items: center;
  flex-direction: row-reverse;  /* icon left (near FAB), label right */
  gap: 10px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  opacity: 0;
  transform: translateY(16px) scale(0.9);
  animation: mob-sd-in 0.2s ease-out forwards;
  -webkit-tap-highlight-color: transparent;
}
@keyframes mob-sd-in {
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.mob-sd-label {
  font-size: 12px;
  font-family: var(--font-ar);
  color: #e8eef7;
  background: rgba(22,20,36,0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  padding: 5px 12px;
  border-radius: 10px;
  border: 1px solid rgba(255,255,255,0.10);
  box-shadow: 0 4px 14px rgba(0,0,0,0.4);
  white-space: nowrap;
  font-weight: 600;
}
.mob-sd-icon {
  width: 46px; height: 46px;
  border-radius: 50%;
  background: rgba(22,20,36,0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1.5px solid rgba(255,255,255,0.12);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 21px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.45);
  flex-shrink: 0;
  transition: transform 0.1s, background 0.1s;
}
.mob-sd-item:active .mob-sd-icon { transform: scale(0.9); background: rgba(108,99,255,0.28); }
.mob-sd-item:active .mob-sd-label { background: rgba(108,99,255,0.28); }
.mob-sd-icon-all {
  font-size: 16px;
  color: #a5b4fc;
}
.mob-sd-all .mob-sd-label { color: #a5b4fc; }
.mob-sd-all .mob-sd-icon { border-color: rgba(108,99,255,0.30); background: rgba(108,99,255,0.12); }

/* ── Pinned cards quick-access strip (mobile) ───────── */
@media (max-width: 768px) {
  .mob-pin-strip {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 0 6px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    grid-column: 1 / -1;
    width: 100%;
    flex-shrink: 0;
  }
  .mob-pin-strip::-webkit-scrollbar { display: none; }

  .mob-pin-strip-label {
    font-size: 0.78rem;
    flex-shrink: 0;
    opacity: 0.45;
    margin-left: 2px;
  }

  .mob-pin-chip {
    --pin-ac: #8b5cf6;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 7px 12px 7px 9px;
    border-radius: 13px;
    background: color-mix(in srgb, var(--pin-ac) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--pin-ac) 28%, transparent);
    color: rgba(232,238,247,0.9);
    font-size: 0.77rem;
    font-family: var(--font-ar);
    cursor: pointer;
    white-space: nowrap;
    flex-shrink: 0;
    font-weight: 700;
    transition: background 0.15s, border-color 0.15s, transform 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  /* Fallback for browsers without color-mix */
  @supports not (background: color-mix(in srgb, red 10%, transparent)) {
    .mob-pin-chip { background: rgba(139,92,246,0.1); border-color: rgba(139,92,246,0.22); }
  }
  .mob-pin-chip:active {
    background: color-mix(in srgb, var(--pin-ac) 22%, transparent);
    border-color: color-mix(in srgb, var(--pin-ac) 45%, transparent);
    transform: scale(0.94);
  }
  .mob-pin-chip-body {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
  }
  .mob-pin-chip-stat {
    font-size: 0.62rem;
    font-weight: 700;
    color: color-mix(in srgb, var(--pin-ac) 80%, white);
    opacity: 0.85;
  }
  @supports not (background: color-mix(in srgb, red 10%, transparent)) {
    .mob-pin-chip-stat { color: rgba(216,180,254,0.75); }
  }
  /* P384: icon-wrap + progress ring */
  .mob-pin-chip-icon-wrap {
    position: relative;
    width: 34px;
    height: 34px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .mob-pin-chip-icon {
    font-size: 0.9rem;
    line-height: 1;
    position: relative;
    z-index: 1;
  }
  .mob-pc-ring {
    position: absolute;
    inset: 0;
    transform: rotate(-90deg);
    pointer-events: none;
  }
  .mob-pcr-bg  { fill: none; stroke: rgba(255,255,255,.08); stroke-width: 2.2; }
  .mob-pcr-fill {
    fill: none;
    stroke-width: 2.2;
    stroke-linecap: round;
    transition: stroke-dashoffset .5s ease;
  }
  .mob-pin-chip-title {
    font-weight: 700;
  }
}

/* ── Mobile Today Agenda Strip ───────────────────────── */
@media (max-width: 768px) {
  .mob-agenda-strip {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px 10px;
    background:
      radial-gradient(ellipse 80% 60% at 0% 50%, rgba(239,68,68,0.1), transparent 70%),
      linear-gradient(135deg, rgba(30,12,12,0.7), rgba(20,8,8,0.85));
    border: 1px solid rgba(239,68,68,0.18);
    border-right: 3px solid rgba(239,68,68,0.6);
    border-radius: 14px;
    margin: 0 0 4px;
    grid-column: 1 / -1;
    overflow: hidden;
    min-height: 44px;
    box-shadow: 0 4px 14px rgba(0,0,0,0.25);
  }
  .mob-agenda-label {
    font-size: 11px;
    font-weight: 800;
    color: rgba(248,113,113,0.9);
    flex-shrink: 0;
    white-space: nowrap;
    letter-spacing: 0.02em;
  }
  .mob-agenda-label-overdue { color: rgba(248,113,113,0.95); }
  .mob-agenda-pills {
    display: flex;
    gap: 5px;
    overflow-x: auto;
    overflow-y: hidden;
    flex: 1;
    min-width: 0;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .mob-agenda-pills::-webkit-scrollbar { display: none; }
  .mob-agenda-pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px 4px 6px;
    border-radius: 99px;
    border: 1.5px solid rgba(245,158,11,0.22);
    background: rgba(245,158,11,0.08);
    flex-shrink: 0;
    white-space: nowrap;
    transition: background 0.12s, transform 0.10s;
    -webkit-tap-highlight-color: transparent;
    cursor: pointer;
  }
  .mob-agenda-pill.mob-agenda-overdue {
    background: rgba(239,68,68,0.10);
    border-color: rgba(239,68,68,0.28);
  }
  .mob-agenda-pill:active { transform: scale(0.95); }
  .mob-agenda-ico { font-size: 13px; line-height: 1; }
  .mob-agenda-ttl {
    color: rgba(232,238,247,0.82);
    font-size: 11.5px;
    font-weight: 600;
    max-width: 90px;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-agenda-bdg {
    font-size: 10px;
    font-weight: 700;
    color: rgba(245,158,11,0.90);
    font-family: var(--font-mono, monospace);
    margin-right: 1px;
  }
  .mob-agenda-bdg.mob-agenda-bdg-red { color: rgba(248,113,113,0.95); }
  .mob-agenda-extra {
    font-size: 11px;
    color: rgba(232,238,247,0.38);
    padding: 4px 5px;
    flex-shrink: 0;
    font-weight: 600;
  }
}

/* ── Mobile top-bar section title ───────────────────── */
@media (max-width: 768px) {
  .mob-top-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* ensure there's a center slot */
  }
  .mob-top-title {
    flex: 1;
    text-align: center;
    font-size: 0.96rem;
    font-weight: 800;
    font-family: var(--font-ar);
    background: linear-gradient(135deg, #e2d9f3 0%, #a78bfa 60%, #818cf8 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    letter-spacing: -0.01em;
    pointer-events: none;
    transition: opacity 0.2s;
  }
  @keyframes mob-title-flash {
    0%   { opacity: 0.3; transform: translateY(-4px); }
    100% { opacity: 1;   transform: translateY(0); }
  }
  .mob-top-title.mob-top-title-flash {
    animation: mob-title-flash 0.28s ease-out forwards;
  }
}

/* ── P150 continued: Checklist tappable rows ────────── */
@media (max-width: 768px) {
  .mob-cl-item-list {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin: 4px 0 6px;
  }
  .mob-cl-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 8px;
    border-radius: 8px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.07);
    color: var(--text-main, #e8eef7);
    font-size: 0.82rem;
    font-family: var(--font-ar);
    text-align: right;
    width: 100%;
    cursor: pointer;
    transition: background 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-cl-row:active {
    background: rgba(108,99,255,0.15);
    border-color: rgba(108,99,255,0.3);
  }
  .mob-cl-row.mob-cl-row-done {
    opacity: 0.45;
    text-decoration: line-through;
    text-decoration-color: rgba(255,255,255,0.3);
  }
  .mob-cl-check {
    font-size: 0.85rem;
    width: 18px;
    flex-shrink: 0;
    text-align: center;
    color: var(--accent, #6c63ff);
  }
  .mob-cl-row.mob-cl-row-done .mob-cl-check {
    color: #4ade80;
  }
  .mob-cl-text {
    flex: 1;
    text-align: right;
  }
  .mob-cl-more {
    font-size: 0.72rem;
    color: var(--text-muted, #8896a8);
    padding: 4px 8px;
    font-family: var(--font-ar);
  }
}

/* ── Mobile back-to-top button ──────────────────────── */
@media (max-width: 768px) {
  .mob-back-top {
    position: fixed;
    bottom: calc(76px + max(env(safe-area-inset-bottom,0px),0px) + 12px);
    right: 16px;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    background: rgba(20,18,30,0.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border: 1px solid rgba(255,255,255,0.12);
    color: var(--text-main, #e8eef7);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 55;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4);
    transition: opacity 0.2s, transform 0.2s;
  }
  .mob-back-top.hidden {
    opacity: 0;
    pointer-events: none;
    transform: translateY(12px);
  }
  .mob-back-top:active {
    transform: scale(0.92);
  }
}

/* ═══════════════════════════════════════════════════════════════════════════════
   P151 — Custom accent glow · Pull-to-refresh · FAB · Swipe-reveal polish
   ═══════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 768px) {

  /* ── Custom accent color: override DA glow with the card's own color ───── */
  .card.mob-card.card-has-accent::before {
    background: radial-gradient(
      circle at 85% 0%,
      var(--card-color-hex),
      transparent 62%
    ) !important;
    opacity: 0.4 !important;
  }
  /* Tinted border + faint box-shadow tint — works alongside inline styles */
  .card.mob-card.card-has-accent {
    border-color: color-mix(in srgb, var(--card-color-hex) 35%, transparent) !important;
  }

  /* ── Pull-to-refresh indicator ─────────────────────────────────────────── */
  #mob-ptr-indicator {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: linear-gradient(90deg, #7c3aed, #06b6d4, #7c3aed);
    background-size: 200% 100%;
    animation: mob-ptr-shimmer 1.4s linear infinite;
    z-index: 200;
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.18s ease, opacity 0.2s;
    opacity: 0;
    border-radius: 0 0 3px 3px;
  }
  #mob-ptr-indicator.ptr-active {
    transform: scaleX(1);
    opacity: 1;
  }
  @keyframes mob-ptr-shimmer {
    0%   { background-position: 0% 0%; }
    100% { background-position: 200% 0%; }
  }
  .mob-ptr-spinner {
    position: fixed;
    top: 58px;
    left: 50%;
    transform: translateX(-50%) translateY(-20px);
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(18,16,28,0.92);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255,255,255,0.12);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 15px;
    opacity: 0;
    z-index: 200;
    transition: transform 0.25s cubic-bezier(0.16,1,0.3,1), opacity 0.2s;
    box-shadow: 0 4px 12px rgba(0,0,0,0.4);
  }
  .mob-ptr-spinner.ptr-visible {
    opacity: 1;
    transform: translateX(-50%) translateY(0px);
  }
  .mob-ptr-spinner.ptr-spin svg { animation: mob-ptr-rotate 0.8s linear infinite; }
  @keyframes mob-ptr-rotate { to { transform: rotate(360deg); } }

  /* ── FAB (Floating Action Button) — quick add ──────────────────────────── */
  #mob-fab {
    position: fixed;
    bottom: calc(76px + max(env(safe-area-inset-bottom,0px),0px) + 16px);
    left: 20px;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: linear-gradient(135deg, #7c3aed, #6d28d9);
    color: #fff;
    font-size: 22px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    z-index: 56;
    box-shadow:
      0 4px 18px rgba(109,40,217,0.55),
      0 2px 6px rgba(0,0,0,0.4),
      0 0 0 1px rgba(255,255,255,0.08) inset;
    transition: transform 0.2s cubic-bezier(0.16,1,0.3,1), box-shadow 0.2s, opacity 0.2s;
    border: none;
    outline: none;
  }
  #mob-fab:active {
    transform: scale(0.9);
    box-shadow: 0 2px 8px rgba(109,40,217,0.4), 0 1px 3px rgba(0,0,0,0.4);
  }
  #mob-fab.fab-hidden {
    opacity: 0;
    pointer-events: none;
    transform: scale(0.7) translateY(12px);
  }
  #mob-fab.fab-rotated { transform: rotate(45deg); }

  /* ── Swipe-reveal action strip improvements ─────────────────────────────── */
  .mob-swipe-actions {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: stretch;
    pointer-events: none;
    z-index: 0;
    border-radius: inherit;
    overflow: hidden;
  }
  .mob-swipe-action-left,
  .mob-swipe-action-right {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 4px;
    min-width: 72px;
    padding: 0 14px;
    font-size: 11px;
    font-weight: 600;
    color: #fff;
    pointer-events: auto;
    cursor: pointer;
    transition: min-width 0.15s ease, opacity 0.15s;
    opacity: 0;
    letter-spacing: 0.3px;
  }
  .mob-swipe-action-left  { margin-right: auto; background: rgba(34,197,94,0.25); }
  .mob-swipe-action-right { margin-left: auto;  background: rgba(239,68,68,0.25); }
  .mob-swipe-action-left  .mob-swipe-icon { font-size: 20px; }
  .mob-swipe-action-right .mob-swipe-icon { font-size: 20px; }
  /* Show when card is actively swiped */
  .card.swiping-left  .mob-swipe-action-left,
  .card.swiping-right .mob-swipe-action-right { opacity: 1; }

  /* ── Card focus ring on keyboard nav ───────────────────────────────────── */
  .card.mob-card:focus-visible {
    outline: 2px solid rgba(124,58,237,0.7);
    outline-offset: 2px;
  }

  /* ── Toast repositioned above nav when FAB exists ──────────────────────── */
  .toast-container {
    bottom: calc(76px + max(env(safe-area-inset-bottom,0px),0px) + 10px) !important;
  }

  /* ── Quick-filter chips row ────────────────────────────────────────────── */
  .mob-quick-filters {
    display: flex;
    flex-wrap: nowrap;
    gap: 6px;
    overflow-x: auto;
    padding: 6px 14px;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
    position: sticky;
    /* Stick below the mobile top bar (56px) + safe area */
    top: calc(56px + env(safe-area-inset-top, 0px));
    z-index: 20;
    background: linear-gradient(180deg, rgba(6,5,10,0.98) 0%, rgba(6,5,10,0.88) 100%);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-bottom: 1px solid rgba(255,255,255,0.04);
    /* Negative margin to break out of padding and go full-width */
    margin-inline: -14px;
    padding-inline: 14px;
  }
  .mob-quick-filters::-webkit-scrollbar { display: none; }
  /* Separator between filter chips and icon controls */
  .mob-qf-div {
    display: inline-block;
    width: 1px;
    min-width: 1px;
    align-self: stretch;
    background: rgba(255,255,255,0.1);
    margin: 4px 2px;
    flex-shrink: 0;
  }
  /* Icon-only control buttons in filter strip (sort / smart-feed) */
  .mob-qf-icon-btn {
    padding: 5px 10px !important;
    font-size: 0.9rem !important;
    min-width: 34px;
    text-align: center;
  }
  .mob-qf-icon-btn.active { background: rgba(139,92,246,0.22); border-color: rgba(139,92,246,0.4); color: #c4b5fd; }
  .mob-qf-sf-on { background: rgba(139,92,246,0.2) !important; border-color: rgba(139,92,246,0.4) !important; }
  .mob-quick-filter-chip {
    flex-shrink: 0;
    padding: 5px 12px;
    border-radius: 99px;
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.08);
    color: rgba(232,238,247,0.65);
    font-size: 12.5px;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
    white-space: nowrap;
  }
  .mob-quick-filter-chip.active {
    background: rgba(124,58,237,0.28);
    border-color: rgba(124,58,237,0.45);
    color: #c4b5fd;
  }
  .mob-quick-filter-chip:active {
    transform: scale(0.95);
  }

  /* ── Per-filter chip active colors ──────────────────────────────── */
  .mob-quick-filter-chip[data-filter-id="today"].active       { background: rgba(236,72,153,0.2); border-color: rgba(236,72,153,0.4); color: #f9a8d4; }
  .mob-quick-filter-chip[data-filter-id="tasks"].active       { background: rgba(245,158,11,0.2); border-color: rgba(245,158,11,0.4); color: #fcd34d; }
  .mob-quick-filter-chip[data-filter-id="notes"].active       { background: rgba(59,130,246,0.2); border-color: rgba(59,130,246,0.4); color: #93c5fd; }
  .mob-quick-filter-chip[data-filter-id="finance"].active     { background: rgba(16,185,129,0.2); border-color: rgba(16,185,129,0.4); color: #6ee7b7; }
  .mob-quick-filter-chip[data-filter-id="links"].active       { background: rgba(6,182,212,0.2); border-color: rgba(6,182,212,0.4); color: #67e8f9; }
  .mob-quick-filter-chip[data-filter-id="tracking"].active    { background: rgba(139,92,246,0.2); border-color: rgba(139,92,246,0.4); color: #c4b5fd; }
  .mob-quick-filter-chip[data-filter-id="pinned"].active      { background: rgba(249,115,22,0.2); border-color: rgba(249,115,22,0.4); color: #fdba74; }
  .mob-quick-filter-chip[data-filter-id="agenda"].active      { background: rgba(168,85,247,0.2); border-color: rgba(168,85,247,0.4); color: #d8b4fe; }

} /* end @media (max-width: 768px) */

/* ── P151 continued: Sheet accent color + share tile ──────────────────────── */
@media (max-width: 768px) {

  /* When sheet has --sheet-accent, tint the header area */
  .mob-sheet[style*="--sheet-accent"] .mob-sheet-hdr {
    background: linear-gradient(
      135deg,
      color-mix(in srgb, var(--sheet-accent) 14%, transparent),
      transparent 70%
    );
    border-radius: 12px 12px 0 0;
    margin: -4px -4px 0;
    padding: 18px 20px 14px;
  }
  .mob-sheet[style*="--sheet-accent"] .mob-sheet-icon {
    background: color-mix(in srgb, var(--sheet-accent) 22%, rgba(255,255,255,0.06)) !important;
    border-color: color-mix(in srgb, var(--sheet-accent) 35%, transparent) !important;
  }
  .mob-sheet[style*="--sheet-accent"] .mob-sheet-type {
    color: color-mix(in srgb, var(--sheet-accent) 70%, #e8eef7) !important;
  }

  /* ── Type-color accent (when no custom accent, use card-type color) ── */
  .mob-sheet[style*="--sheet-type-color"] {
    border-top: 2.5px solid color-mix(in srgb, var(--sheet-type-color) 55%, transparent);
  }
  .mob-sheet[style*="--sheet-type-color"] .mob-sheet-handle {
    background: color-mix(in srgb, var(--sheet-type-color) 40%, rgba(255,255,255,0.08));
  }
  .mob-sheet[style*="--sheet-type-color"] .mob-sheet-icon {
    background: color-mix(in srgb, var(--sheet-type-color) 16%, rgba(255,255,255,0.04)) !important;
  }
  .mob-sheet[style*="--sheet-type-color"] .mob-sheet-type {
    color: color-mix(in srgb, var(--sheet-type-color) 75%, #e8eef7) !important;
  }

  /* ── Tags in sheet header ── */
  .mob-sheet-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    margin-top: 6px;
  }
  .mob-sheet-tag {
    font-size: 10px;
    padding: 2px 8px;
    border-radius: 99px;
    background: rgba(108,99,255,0.12);
    color: #a5b4fc;
    border: 1px solid rgba(108,99,255,0.22);
    font-family: var(--font-ar);
    white-space: nowrap;
  }

  /* Share tile — blue accent */
  .msb-tile:has(.msb-tile-ico:not(:empty)) { cursor: pointer; }

} /* end @media */

/* ── P151 continued: Filter chip count badges ─────────────────────────────── */
@media (max-width: 768px) {

  .mob-qfc-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 99px;
    background: rgba(255,255,255,0.1);
    color: rgba(232,238,247,0.55);
    font-size: 10px;
    font-weight: 700;
    margin-right: 4px;
    margin-left: -2px;
    letter-spacing: 0;
  }
  .mob-quick-filter-chip.active .mob-qfc-count {
    background: rgba(196,181,253,0.2);
    color: #c4b5fd;
  }

  /* ── FAB positioning — ensure it doesn't overlap back-to-top ─── */
  #mob-fab { z-index: 56; }
  #mob-back-top { z-index: 55; }

  /* ── Pull to refresh spinner ── */
  .mob-ptr-spinner.ptr-spin svg {
    animation: mob-ptr-rotate 0.7s linear infinite;
    display: block;
  }

} /* end @media */

/* ── P151 continued: Rich note preview lines ────────────────────────────── */
@media (max-width: 768px) {

  .mob-note-bullet {
    padding-right: 2px;
    color: rgba(196,181,253,0.8) !important;
  }
  .mob-note-bullet::before { content: ''; }
  .mob-note-num { color: rgba(147,197,253,0.8) !important; }
  .mob-note-heading {
    font-weight: 700 !important;
    font-size: 13.5px !important;
    color: rgba(232,238,247,0.92) !important;
  }
  .mob-note-quote {
    border-right: 2px solid rgba(167,139,250,0.4);
    padding-right: 8px;
    color: rgba(167,139,250,0.7) !important;
    font-style: italic;
  }
  .mob-note-more {
    font-size: 11px;
    color: rgba(232,238,247,0.35);
    margin-top: 2px;
    padding-top: 2px;
  }

  /* ── Quick-filter strip background override ────────────────────────────── */
  /* (main rule is above; this ensures the gradient is correct) */

  /* ── FAB animation when context changes ──────────────────────────────── */
  #mob-fab { transition: transform 0.2s cubic-bezier(0.16,1,0.3,1), box-shadow 0.2s, opacity 0.2s, background 0.3s; }

  /* ── Context-specific FAB colors ─────────────────────────────────────── */
  body[data-filter="tasks"]    #mob-fab { background: linear-gradient(135deg, #f59e0b, #d97706); box-shadow: 0 4px 18px rgba(245,158,11,0.5), 0 2px 6px rgba(0,0,0,0.4); }
  body[data-filter="notes"]    #mob-fab { background: linear-gradient(135deg, #3b82f6, #2563eb); box-shadow: 0 4px 18px rgba(59,130,246,0.5), 0 2px 6px rgba(0,0,0,0.4); }
  body[data-filter="finance"]  #mob-fab { background: linear-gradient(135deg, #10b981, #059669); box-shadow: 0 4px 18px rgba(16,185,129,0.5), 0 2px 6px rgba(0,0,0,0.4); }
  body[data-filter="links"]    #mob-fab { background: linear-gradient(135deg, #06b6d4, #0891b2); box-shadow: 0 4px 18px rgba(6,182,212,0.5), 0 2px 6px rgba(0,0,0,0.4); }
  body[data-filter="tracking"] #mob-fab { background: linear-gradient(135deg, #8b5cf6, #7c3aed); box-shadow: 0 4px 18px rgba(139,92,246,0.5), 0 2px 6px rgba(0,0,0,0.4); }
  body[data-filter="today"]    #mob-fab { background: linear-gradient(135deg, #ec4899, #db2777); box-shadow: 0 4px 18px rgba(236,72,153,0.5), 0 2px 6px rgba(0,0,0,0.4); }
  body[data-filter="pinned"]   #mob-fab { background: linear-gradient(135deg, #f97316, #ea580c); box-shadow: 0 4px 18px rgba(249,115,22,0.5), 0 2px 6px rgba(0,0,0,0.4); }

} /* end @media */

/* ── P151 continued: Filter chips overflow indicator ────────────────────── */
@media (max-width: 768px) {

  /* Wrapper for sticky + overflow fade */
  .mob-quick-filters-wrap {
    position: sticky;
    top: calc(56px + env(safe-area-inset-top, 0px));
    z-index: 20;
  }
  /* Right-fade indicator for scrollable chips */
  .mob-quick-filters::after {
    content: '';
    position: sticky;
    right: 0;
    min-width: 32px;
    height: 100%;
    background: linear-gradient(270deg, rgba(6,5,10,0.95) 0%, transparent 100%);
    pointer-events: none;
    flex-shrink: 0;
    margin-right: -14px;
    align-self: stretch;
  }

  /* ── Chip scrolled into view: pulse animation for active ─────────────── */
  .mob-quick-filter-chip.active {
    animation: chipPulse 0.25s ease-out;
  }
  @keyframes chipPulse {
    0%   { transform: scale(1); }
    40%  { transform: scale(1.06); }
    100% { transform: scale(1); }
  }

  /* ── Sheet row wraps on small screens ─────────────────────────────────── */
  .mob-sheet-row {
    flex-wrap: wrap;
    gap: 8px !important;
  }
  .msb-tile {
    min-width: 64px;
  }

} /* end @media */

/* ── P152 — Sheet content preview ─────────────────────────────────────────── */
@media (max-width: 768px) {

  /* Base preview block */
  .msb-preview {
    margin: 0 16px 8px;
    padding: 10px 14px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 12px;
    font-size: 13px;
    line-height: 1.55;
    color: rgba(232,238,247,0.8);
    max-height: 120px;
    overflow: hidden;
    word-break: break-word;
  }

  /* Note/markdown — preserve line breaks */
  .msb-preview-note {
    white-space: pre-line;
    font-size: 13px;
  }

  /* Link URL */
  .msb-preview-link {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: rgba(99,102,241,0.9);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-height: 24px;
    padding: 8px 14px;
  }
  .msb-preview-link span {
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* Date preview */
  .msb-preview-date {
    display: flex;
    flex-direction: column;
    gap: 3px;
    font-size: 13px;
    color: var(--prev-c, rgba(232,238,247,0.8));
  }

  /* Countdown */
  .msb-preview-countdown b {
    font-size: 15px;
    color: rgba(232,238,247,0.95);
  }

  /* Quote */
  .msb-preview-quote {
    font-style: italic;
    font-size: 13px;
    color: rgba(232,238,247,0.85);
    padding-right: 12px;
    border-right: 3px solid rgba(99,102,241,0.5);
  }

  /* Contact / wifi */
  .msb-preview-contact {
    font-size: 13px;
    line-height: 1.7;
  }

  /* Progress bars */
  .msb-preview-progress {
    display: flex;
    flex-direction: column;
    gap: 6px;
  }
  .msb-prev-prog-row {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
  }
  .msb-prev-prog-row b {
    font-size: 15px;
    color: rgba(232,238,247,0.95);
  }
  .msb-prev-pct {
    margin-right: auto;
    font-size: 11px;
    opacity: 0.65;
  }
  .msb-prev-bar {
    height: 5px;
    background: rgba(255,255,255,0.08);
    border-radius: 3px;
    overflow: hidden;
  }
  .msb-prev-fill {
    height: 100%;
    border-radius: 3px;
    transition: width 0.4s ease;
  }
  /* Use existing mob-bar classes from P148 */

  /* Checklist preview items */
  .msb-preview-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .msb-prev-item {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    opacity: 0.85;
  }
  .msb-prev-item.done {
    opacity: 0.4;
    text-decoration: line-through;
  }
  .msb-prev-item span {
    width: 16px;
    text-align: center;
    flex-shrink: 0;
    color: rgba(99,102,241,0.9);
    font-size: 11px;
  }
  .msb-prev-item.done span { color: #22d375; }
  .msb-prev-more {
    font-size: 11px;
    opacity: 0.5;
    text-align: center;
    margin-top: 2px;
  }
  /* Tappable items in sheet checklist preview */
  .msb-prev-item {
    cursor: pointer;
    border-radius: 6px;
    padding: 3px 4px;
    transition: background 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .msb-prev-item:active { background: rgba(255,255,255,0.06); }

  /* Quick-add input in checklist sheet */
  .msb-quick-add {
    display: flex;
    gap: 6px;
    align-items: center;
    padding: 8px 14px 6px;
  }
  .msb-quick-input {
    flex: 1;
    min-width: 0;
    background: rgba(255,255,255,0.05);
    border: 1.5px solid rgba(255,255,255,0.11);
    border-radius: 10px;
    color: #e8eef7;
    font-size: 13px;
    padding: 7px 11px;
    outline: none;
    font-family: var(--font-ar, sans-serif);
    direction: rtl;
    -webkit-tap-highlight-color: transparent;
  }
  .msb-quick-input::placeholder { color: rgba(232,238,247,0.30); }
  .msb-quick-input:focus {
    border-color: rgba(108,99,255,0.45);
    background: rgba(108,99,255,0.07);
  }
  .msb-quick-add-btn {
    background: rgba(108,99,255,0.18);
    border: 1.5px solid rgba(108,99,255,0.32);
    border-radius: 9px;
    color: #a5b4fc;
    font-size: 18px;
    width: 34px;
    height: 34px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    cursor: pointer;
    transition: background 0.12s, transform 0.10s;
    -webkit-tap-highlight-color: transparent;
  }
  .msb-quick-add-btn:active { transform: scale(0.88); background: rgba(108,99,255,0.30); }

  /* Sub-line inside preview */
  .msb-preview-sub {
    font-size: 11px;
    opacity: 0.6;
    margin-top: 2px;
  }

} /* end @media P152 */

/* ── P152 continued: Mobile action toast with undo ─────────────────────────── */
@media (max-width: 768px) {

  #mob-action-toast {
    position: fixed;
    bottom: calc(72px + env(safe-area-inset-bottom, 0px) + 12px);
    left: 50%;
    transform: translateX(-50%) translateY(20px);
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: rgba(30, 27, 46, 0.96);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 14px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.6);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    font-size: 14px;
    color: rgba(232,238,247,0.92);
    z-index: 9999;
    max-width: calc(100vw - 40px);
    opacity: 0;
    transition: opacity 0.22s ease, transform 0.22s cubic-bezier(0.16,1,0.3,1);
    pointer-events: none;
    white-space: nowrap;
  }
  #mob-action-toast.mob-at-in {
    opacity: 1;
    transform: translateX(-50%) translateY(0);
    pointer-events: auto;
  }
  #mob-action-toast.mob-at-out {
    opacity: 0;
    transform: translateX(-50%) translateY(12px);
    pointer-events: none;
  }
  .mob-at-msg {
    display: flex;
    align-items: center;
    gap: 6px;
  }
  .mob-at-undo {
    background: rgba(99,102,241,0.18);
    border: 1px solid rgba(99,102,241,0.35);
    color: #a5b4fc;
    border-radius: 8px;
    padding: 4px 10px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s;
  }
  .mob-at-undo:active { background: rgba(99,102,241,0.35); }

} /* end mobile action toast */

/* ── P153 — Tag chips in mobile card footers ──────────────────────────────── */
@media (max-width: 768px) {

  .mob-tags-row {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-wrap: nowrap;
    overflow: hidden;
    flex: 1;
    min-width: 0;
  }

  .mob-tag-chip {
    display: inline-flex;
    align-items: center;
    padding: 1px 7px;
    /* Color set via inline style (hash-based per tag) — fallback for plain chips */
    background: rgba(99,102,241,0.12);
    border: 1px solid rgba(99,102,241,0.22);
    border-radius: 20px;
    font-size: 10px;
    color: rgba(165,180,252,0.85);
    white-space: nowrap;
    max-width: 72px;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 600;
    letter-spacing: 0.01em;
    flex-shrink: 0;
    cursor: pointer;
    transition: opacity 0.15s, transform 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-tag-chip:hover,
  .mob-tag-chip:focus-visible { opacity: 0.8; }
  .mob-tag-chip:active { transform: scale(0.92); opacity: 0.7; }

  /* P278: Stale card (not updated in >45 days) */
  .card.mob-card.mob-card-stale {
    opacity: 0.72;
  }
  .card.mob-card.mob-card-stale .mob-card-title {
    opacity: 0.8;
  }

  /* Footer row when tags are present: space-between */
  .mob-card-foot:has(.mob-tags-row) {
    justify-content: space-between;
    gap: 6px;
  }

  /* Right-to-left: tags on the right side */
  [dir="rtl"] .mob-tags-row,
  .mob-tags-row {
    direction: rtl;
  }

} /* end P153 */

/* ── P153 continued: Pinned card indicator ─────────────────────────────────── */
@media (max-width: 768px) {

  /* Subtle pin dot in top-right corner */
  .card.mob-card.mob-card-pinned {
    position: relative;
  }
  .card.mob-card.mob-card-pinned::after {
    content: '📌';
    position: absolute;
    top: 8px;
    left: 8px;      /* LTR: left for RTL layout */
    font-size: 12px;
    line-height: 1;
    opacity: 0.7;
    pointer-events: none;
    z-index: 3;
    filter: drop-shadow(0 1px 3px rgba(0,0,0,0.5));
  }

  /* Pinned strip: faint gold top border on top of type stripe */
  .card.mob-card.mob-card-pinned { box-shadow: 0 0 0 1.5px rgba(251,191,36,0.25) inset; }

  /* ── Progress row label in sheet preview ── */
  .msb-prev-prog-row {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    color: rgba(232,238,247,0.85);
    flex-wrap: wrap;
  }
  .msb-prev-pct {
    margin-right: auto;
    font-size: 11px;
    opacity: 0.65;
    font-weight: 600;
    background: rgba(255,255,255,0.07);
    border-radius: 6px;
    padding: 1px 5px;
  }

  /* ── Sheet preview list items ── */
  .msb-preview-list {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  /* ── Sheet preview contact ── */
  .msb-preview-contact {
    font-size: 13px;
    line-height: 1.7;
    color: rgba(232,238,247,0.8);
  }

} /* end P153 pinned+sheet */

/* ── P153 continued: Completion glow for 100%-done cards ───────────────────── */
@media (max-width: 768px) {

  @keyframes mob-complete-pulse {
    0%, 100% { opacity: 0.4; }
    50%       { opacity: 0.7; }
  }

  .card.mob-card.mob-card-complete {
    position: relative;
  }

  /* Subtle green shimmer on the top stripe */
  .card.mob-card.mob-card-complete::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(135deg,
      rgba(34,211,117,0.06) 0%,
      rgba(16,185,129,0.10) 40%,
      rgba(34,211,117,0.04) 100%
    );
    pointer-events: none;
    z-index: 0;
    animation: mob-complete-pulse 3s ease-in-out infinite;
  }

  /* Green top stripe overrides type stripe */
  .card.mob-card.mob-card-complete { border-top: 3px solid #22d375 !important; }

  /* Small ✓ badge in corner */
  .card.mob-card.mob-card-complete::after {
    content: '✓';
    position: absolute;
    top: 7px;
    right: 9px;
    font-size: 11px;
    font-weight: 700;
    color: #22d375;
    background: rgba(34,211,117,0.14);
    border: 1px solid rgba(34,211,117,0.3);
    border-radius: 50%;
    width: 18px;
    height: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 4;
    pointer-events: none;
    line-height: 1;
  }

  /* When both pinned AND complete, show pin on left, check on right */
  .card.mob-card.mob-card-pinned.mob-card-complete::before {
    content: '';
    animation: mob-complete-pulse 3s ease-in-out infinite;
  }

} /* end P153 complete glow */

/* ── P153 continued: Mobile card entrance animation ────────────────────────── */
@media (max-width: 768px) {

  /* Cards animate in using the animationDelay already set inline by JS */
  .dash-grid .card.mob-card {
    opacity: 0;
    animation: mobCardEnter 0.38s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  }

  @keyframes mobCardEnter {
    from {
      opacity: 0;
      transform: translateY(16px) scale(0.97);
    }
    to {
      opacity: 1;
      transform: translateY(0) scale(1);
    }
  }

  /* Respect reduced motion */
  @media (prefers-reduced-motion: reduce) {
    .dash-grid .card.mob-card {
      animation: none;
      opacity: 1;
    }
  }

} /* end P153 card entrance */

/* ── P153 continued: Urgent filter badge + filter chip transitions ──────────── */
@media (max-width: 768px) {

  /* Urgent (overdue) count badge on filter chips */
  .mob-qfc-count.mob-qfc-urgent {
    background: rgba(239,68,68,0.85) !important;
    color: #fff !important;
    border-color: rgba(239,68,68,0.4) !important;
    animation: mob-urgent-pulse 2s ease-in-out infinite;
  }

  @keyframes mob-urgent-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.5); }
    50%       { box-shadow: 0 0 0 4px rgba(239,68,68,0); }
  }

  /* Filter chip transition: smoother color change when switching */
  .mob-quick-filter-chip {
    transition:
      background 0.18s ease,
      border-color 0.18s ease,
      color 0.18s ease,
      transform 0.1s ease !important;
  }
  .mob-quick-filter-chip:active {
    transform: scale(0.94) !important;
  }

} /* end P153 urgent badges */

/* ── P153 continued: Nav badge urgency pulse + bottom nav improvements ──────── */
@media (max-width: 768px) {

  /* Urgent badge pulse */
  .mob-nav-badge.mob-nav-badge-urgent {
    animation: mob-badge-pulse 1.8s ease-in-out infinite;
  }

  @keyframes mob-badge-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.6); }
    50%       { box-shadow: 0 0 0 5px rgba(239,68,68,0); }
  }

  /* Nav active indicator: fill icon instead of just coloring */
  .mob-nav-btn.active svg {
    stroke: var(--accent2);
    filter: drop-shadow(0 0 6px color-mix(in srgb, var(--accent2) 40%, transparent));
  }

  /* Better active indicator bar */
  .mob-nav-btn.active::after {
    background: linear-gradient(90deg, transparent, var(--accent2), transparent);
    width: 28px;
  }

  /* Nav button tap feedback */
  .mob-nav-btn:active {
    transform: scale(0.9);
    transition: transform 0.1s ease !important;
  }

} /* end P153 nav improvements */

/* ── P153 continued: Card footer alignment fix ──────────────────────────────── */
@media (max-width: 768px) {

  /* Time should always be at the end (right for RTL, left for LTR) */
  .mob-card-foot .mob-card-time {
    margin-inline-start: auto;
    flex-shrink: 0;
  }

  /* When tags-row is present: take available space, let time be on the trailing edge */
  .mob-card-foot .mob-tags-row {
    flex: 1;
    min-width: 0;
    overflow: hidden;
  }

  /* Ensure footer is always at the bottom of the card */
  .mob-card-inner {
    display: flex;
    flex-direction: column;
  }
  .mob-card-foot {
    margin-top: auto !important;
  }

} /* end P153 footer alignment */

/* ── P153 continued: Mobile sort sheet ─────────────────────────────────────── */
@media (max-width: 768px) {

  .mob-sort-sheet {
    max-height: 80vh;
    overflow-y: auto;
  }

  .mob-sort-options {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 8px 16px 16px;
  }

  .mob-sort-opt {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-radius: 12px;
    background: rgba(255,255,255,0.03);
    border: 1px solid transparent;
    color: var(--text-main, #e8eef7);
    font-family: var(--font-ar);
    cursor: pointer;
    text-align: right;
    width: 100%;
    transition: background 0.15s, border-color 0.15s;
    -webkit-tap-highlight-color: transparent;
  }

  .mob-sort-opt:active {
    background: rgba(99,102,241,0.15);
    transform: scale(0.98);
  }

  .mob-sort-opt-active {
    background: rgba(99,102,241,0.12) !important;
    border-color: rgba(99,102,241,0.3) !important;
  }

  .mob-sort-opt-icon {
    font-size: 18px;
    flex-shrink: 0;
    width: 24px;
    text-align: center;
  }

  .mob-sort-opt-text {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
  }

  .mob-sort-opt-label {
    font-size: 14px;
    font-weight: 600;
  }

  .mob-sort-opt-sub {
    font-size: 11px;
    opacity: 0.55;
  }

  .mob-sort-opt-check {
    color: #a5b4fc;
    font-weight: 700;
    font-size: 16px;
    flex-shrink: 0;
  }

  /* Sort button active state when non-default sort */
  #mob-sort-btn.sort-active {
    color: var(--accent2);
  }
  #mob-sort-btn.sort-active svg {
    stroke: var(--accent2);
  }

} /* end P153 sort sheet */

/* ── P153 continued: Mobile top bar with 4 action buttons ──────────────────── */
@media (max-width: 768px) {

  /* Tighten the gap when all 4 buttons are visible */
  .mob-top-bar .mob-top-actions {
    gap: 5px !important;
  }

  .mob-top-bar .mob-top-btn {
    width: 36px !important;
    height: 36px !important;
  }

} /* end P153 top bar */

/* Ultra-small: hide sort button below 350px */
@media (max-width: 350px) {
  #mob-sort-btn { display: none; }
}

/* ═══════════════════════════════════════════════════════════════════════════
   P154 — Urgency states · Today week strip · Quick-check · Mobile Today
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── P154 Card urgency glow ──────────────────────────────────────────────── */
/* ─── P154: Card entrance animation ── */
@keyframes mob-card-enter {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

@media (max-width: 768px) {
  .card.mob-card {
    animation: mob-card-enter 0.18s ease-out both;
  }
}

@keyframes mob-card-urgent-pulse {
  0%, 100% {
    box-shadow:
      inset 4px 0 0 0 #ef4444,
      0 0 0 1px rgba(239,68,68,0.25),
      0 10px 24px rgba(239,68,68,0.18);
  }
  50% {
    box-shadow:
      inset 4px 0 0 0 #ef4444,
      0 0 0 3px rgba(239,68,68,0.40),
      0 12px 32px rgba(239,68,68,0.30);
  }
}
@keyframes mob-card-soon-pulse {
  0%, 100% { box-shadow: inset 4px 0 0 0 #f59e0b, 0 10px 24px rgba(0,0,0,0.40); }
  50%       { box-shadow: inset 4px 0 0 0 #f59e0b, 0 0 0 2px rgba(245,158,11,0.30), 0 12px 28px rgba(245,158,11,0.15); }
}

@media (max-width: 768px) {
  /* Overdue / meeting now / subscription expired */
  .card.mob-card.mob-card-urgent {
    border-color: rgba(239,68,68,0.40) !important;
    animation: mob-card-urgent-pulse 1.8s ease-in-out infinite !important;
  }
  /* Due today / meeting in <24h / sub expires ≤3 days / high BP */
  .card.mob-card.mob-card-due-soon {
    border-color: rgba(245,158,11,0.32) !important;
    animation: mob-card-soon-pulse 2.8s ease-in-out infinite !important;
  }
  /* Don't double-animate already-pulsing complete cards */
  .card.mob-card.mob-card-complete.mob-card-urgent,
  .card.mob-card.mob-card-complete.mob-card-due-soon {
    animation: mob-complete-pulse 3s ease-in-out infinite !important;
  }
} /* end urgency */

/* ── P154 Today: week-day strip ─────────────────────────────────────────── */
.today-week-strip {
  display: flex;
  gap: 4px;
  margin-bottom: 14px;
  direction: ltr; /* always LTR: Sun left, Sat right */
}
.today-week-day {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
}
.today-wday-label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.2px;
  color: rgba(255,255,255,0.45);
  text-transform: uppercase;
}
.today-week-day-past .today-wday-label { opacity: 0.35; }
.today-week-day-cur  .today-wday-label {
  color: var(--accent2, #a5b4fc);
  font-size: 11px;
}
.today-wday-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: rgba(255,255,255,0.10);
  transition: background 0.2s;
}
.today-wday-dot-has    { background: rgba(165,180,252,0.55); }
.today-wday-dot-today  { background: var(--accent2, #a5b4fc); box-shadow: 0 0 6px rgba(165,180,252,0.7); }
.today-week-day-past .today-wday-dot { opacity: 0.4; }
/* Underline marker for current day */
.today-week-day-cur {
  border-bottom: 2px solid var(--accent2, #a5b4fc);
  padding-bottom: 2px;
  border-radius: 0;
}

/* ── P154 Today: quick-check button on reminder items ───────────────────── */
.today-item-check {
  width: 28px;
  height: 28px;
  border-radius: 50%;
  border: 2px solid rgba(34,211,117,0.45);
  background: transparent;
  color: rgba(34,211,117,0.8);
  font-size: 13px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.18s;
  flex-shrink: 0;
  margin-bottom: 2px;
}
.today-item-check:hover,
.today-item-check:active {
  background: rgba(34,211,117,0.18);
  border-color: #22d375;
  color: #22d375;
  transform: scale(1.1);
}

/* ── P154 Today: mobile layout improvements ─────────────────────────────── */
@media (max-width: 640px) {
  /* Week strip tighter on small screens */
  .today-week-strip { gap: 2px; margin-bottom: 10px; }
  .today-wday-label { font-size: 9px; }
  .today-wday-dot   { width: 5px; height: 5px; }

  /* Today items: bigger tap targets */
  .today-item { min-height: 54px; padding: 10px 12px; border-radius: 12px; }
  .today-item:active { background: rgba(255,255,255,0.06); }

  /* Habits: 2-column grid on mobile */
  .today-habits-grid {
    grid-template-columns: 1fr 1fr !important;
    gap: 6px !important;
    padding: 6px !important;
  }
  .today-habit {
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    padding: 10px;
  }
  .today-habit-icon { width: 32px; height: 32px; font-size: 1rem; }
  .today-habit-body { width: 100%; }
  .today-habit-title { font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }

  /* Hero actions: row of 3, no longer stacked */
  .today-hero-actions {
    flex-direction: row !important;
    gap: 6px;
    flex-wrap: nowrap;
  }
  .today-hero-btn {
    flex: 1;
    min-width: 0;
    font-size: 11px !important;
    padding: 7px 6px !important;
    text-align: center;
  }

  /* Sections tighter on mobile */
  .today-sections-body { display: flex; flex-direction: column; gap: 12px; }
  .today-section { border-radius: 14px; overflow: hidden; }
  .today-section-head { padding: 10px 12px 8px; }
  .today-section-body { padding: 4px 6px 8px !important; }
} /* end P154 mobile today */

/* ─── P154 continued: Overdue section + Progress shimmer ──────────────────── */

/* Overdue section: red left border on each item */
.today-sec-overdue .today-section-head {
  background: rgba(239,68,68,0.07);
  border-bottom: 1px solid rgba(239,68,68,0.15);
}
.today-sec-overdue .today-section-label { color: #fca5a5; }
.today-sec-overdue .today-section-count {
  background: rgba(239,68,68,0.2);
  color: #f87171;
  border-color: rgba(239,68,68,0.3);
}
.today-sec-overdue .today-item {
  border-inline-start: 3px solid rgba(239,68,68,0.55);
  padding-inline-start: 10px;
  margin-inline-start: 0;
}
.today-sec-overdue .today-item:hover { background: rgba(239,68,68,0.05); }

/* Today section: amber left border */
.today-sec-today .today-item {
  border-inline-start: 3px solid rgba(245,158,11,0.45);
  padding-inline-start: 10px;
}

/* Today stat: danger stat pulses when non-zero */
@keyframes today-stat-urgent {
  0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.0); }
  50%       { box-shadow: 0 0 0 3px rgba(239,68,68,0.25); }
}
.today-stat-danger:not([data-empty="1"]) {
  animation: today-stat-urgent 2.5s ease-in-out infinite;
  border-color: rgba(239,68,68,0.3) !important;
}

/* Progress bar shimmer animation */
@keyframes mob-progress-shimmer {
  0%   { background-position: -200% center; }
  100% { background-position: 200% center; }
}
@media (max-width: 768px) {
  .mob-progress-fill {
    background-image: linear-gradient(
      90deg,
      transparent 20%,
      rgba(255,255,255,0.18) 50%,
      transparent 80%
    );
    background-size: 200% 100%;
    animation: mob-progress-shimmer 2.8s linear infinite;
  }
  /* Override: already-done bars don't need shimmer */
  .mob-bar-done .mob-progress-fill { animation: none; }
}

/* Card footer divider */
@media (max-width: 768px) {
  .mob-card-foot {
    border-top: 1px solid rgba(255,255,255,0.06);
    padding-top: 8px;
  }
}

/* Card tap feedback: ripple-like active glow */
@media (max-width: 768px) {
  .card.mob-card:active:not(.reorder-active) {
    transform: scale(0.985);
    box-shadow: 0 4px 16px rgba(0,0,0,0.5) !important;
    transition: transform 0.1s, box-shadow 0.1s;
  }
}

/* ─── P154 continued: Watchlist stars + Stock row tint ─────────────────────── */

/* Watchlist: star rating row */
.mob-star-row {
  font-size: 16px;
  letter-spacing: 2px;
  color: #f59e0b;
  display: flex;
  align-items: center;
  gap: 4px;
  margin: -4px 0 6px;
  padding: 0 4px;
}
.mob-star-num {
  font-size: 11px;
  font-weight: 700;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0;
  margin-inline-start: 4px;
}

/* Stock rows: subtle color tint based on direction */
@media (max-width: 768px) {
  .mob-stocks-list .mob-stock-row:has(.mob-stock-up) {
    background: rgba(34, 211, 117, 0.05);
    border-radius: 6px;
  }
  .mob-stocks-list .mob-stock-row:has(.mob-stock-down) {
    background: rgba(248, 113, 113, 0.05);
    border-radius: 6px;
  }
  /* Urgent notification badge pulse */
  @keyframes mob-notif-urgent-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(239,68,68,0.0); }
    50%       { box-shadow: 0 0 0 4px rgba(239,68,68,0.3); }
  }
  .mob-notif-badge.mob-notif-badge-urgent {
    animation: mob-badge-pop 0.3s ease forwards, mob-notif-urgent-pulse 1.8s 0.3s ease-in-out infinite;
  }
}

/* ─── P154: Pull-to-Refresh indicator ──────────────────────────────────────── */
#mob-ptr-indicator {
  position: fixed;
  top: 0;
  left: 50%;
  transform: translateX(-50%) translateY(-36px);
  z-index: 9900;
  display: flex;
  align-items: center;
  gap: 8px;
  background: rgba(30, 25, 50, 0.92);
  border: 1px solid rgba(165,180,252,0.25);
  border-radius: 99px;
  padding: 8px 16px 8px 12px;
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,0.8);
  box-shadow: 0 4px 24px rgba(0,0,0,0.4);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  pointer-events: none;
  opacity: 0;
  transition: transform 0.15s cubic-bezier(0.34,1.56,0.64,1), opacity 0.15s;
  will-change: transform, opacity;
}

#mob-ptr-indicator.mob-ptr-ready {
  border-color: rgba(165,180,252,0.55);
  background: rgba(99,102,241,0.25);
  color: #c4b5fd;
}

.mob-ptr-spinner {
  width: 18px;
  height: 18px;
  flex-shrink: 0;
  color: #a5b4fc;
}

#mob-ptr-indicator.mob-ptr-refreshing .mob-ptr-spinner {
  animation: mob-ptr-spin 0.7s linear infinite;
  color: #818cf8;
}

@keyframes mob-ptr-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

.mob-ptr-label { font-family: var(--font-ar); }

/* ─── P154: SVG Progress Rings ──────────────────────────────────────────────── */
.mob-prog-ring {
  flex-shrink: 0;
}
.mob-prog-ring .mob-ring-track {
  stroke: rgba(255,255,255,0.10);
}
.mob-prog-ring .mob-ring-fill {
  stroke: rgba(165,180,252,0.7);
  stroke-linecap: round;
  transition: stroke-dashoffset 0.6s cubic-bezier(0.34,1.56,0.64,1);
}
/* Checklist ring color */
.mob-prog-ring.mob-ring-cl .mob-ring-fill { stroke: #818cf8; }
/* Routine ring color */
.mob-prog-ring.mob-ring-routine .mob-ring-fill { stroke: #34d399; }
/* Done ring */
.mob-prog-ring.mob-ring-done .mob-ring-fill { stroke: #22d375; }
.mob-prog-ring.mob-ring-done .mob-ring-track { stroke: rgba(34,211,117,0.15); }

/* Row layout for ring + number in hero */
.mob-hero.mob-hero-ring-row {
  display: flex !important;
  flex-direction: row !important;
  align-items: center !important;
  gap: 10px !important;
  padding: 8px 4px !important;
}
.mob-hero.mob-hero-ring-row > div {
  display: flex;
  align-items: baseline;
  gap: 2px;
}
/* Goal ring color */
.mob-prog-ring.mob-ring-goal .mob-ring-fill { stroke: #a78bfa; }
.mob-prog-ring.mob-ring-goal .mob-ring-track { stroke: rgba(167,139,250,0.15); }

/* ─── P154: Contact card avatar ─────────────────────────────────────────────── */
.mob-contact-avatar {
  width: 30px;
  height: 30px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 700;
  color: #fff;
  flex-shrink: 0;
  letter-spacing: 0;
  line-height: 1;
  text-shadow: 0 1px 2px rgba(0,0,0,0.3);
}
.mob-contact-avatar-emoji {
  font-size: 20px;
  background: transparent !important;
  text-shadow: none;
}
/* Project ring color */
.mob-prog-ring.mob-ring-project .mob-ring-fill { stroke: #3b82f6; }
.mob-prog-ring.mob-ring-project .mob-ring-track { stroke: rgba(59,130,246,0.15); }

/* ─── P154: Additional polish ───────────────────────────────────────────────── */
@media (max-width: 768px) {

  /* Routine/checklist quick-action area: slightly tighter when ring is shown */
  .mob-hero.mob-hero-ring-row .mob-hero-num { font-size: 1.6rem; }

  /* Today item: align check button nicely in right column */
  .today-item-right {
    align-items: flex-end;
    min-width: 56px;
  }

  /* Subscription card: urgency color for soon-expiring title */
  .card.mob-card.mob-card-urgent .mob-sub-card .mob-hero-num,
  .card.mob-card.mob-card-urgent .mob-reminder-card .mob-hero-num {
    color: #f87171 !important;
  }

  /* Week strip: slightly more compact */
  .today-week-day-cur .today-wday-label { font-weight: 800; }

  /* Section count badge colors per section type */
  .today-sec-today .today-section-count {
    background: rgba(245,158,11,0.18);
    color: #fbbf24;
    border-color: rgba(245,158,11,0.28);
  }

  /* Filter chip urgency badge: ensure text is readable */
  .mob-qfc-count.mob-qfc-urgent { font-weight: 800; }

  /* Contact card avatar inline alignment */
  .mob-contact-card .mob-card-header {
    gap: 8px;
  }

  /* Pinned card label refined */
  .mob-pin-strip-label {
    font-size: 14px;
    padding: 4px 8px;
    background: rgba(255,215,0,0.10);
    border-radius: 8px;
    border: 1px solid rgba(255,215,0,0.18);
  }

} /* end P154 additional polish */

/* ─── P154: Tracker sparkline + misc ────────────────────────────────────────── */
@media (max-width: 768px) {
  /* Tracker hero row with sparkline */
  .mob-hero.mob-hero-spark-row {
    display: flex !important;
    flex-direction: row !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 8px 4px 6px !important;
  }
  .mob-tracker-spark {
    opacity: 0.75;
    flex-shrink: 0;
  }
  .mob-tracker-spark .spark-svg {
    display: block;
  }

  /* Tag chip in buttons (remove default button styles) */
  button.mob-tag-chip {
    appearance: none;
    -webkit-appearance: none;
    background: rgba(99,102,241,0.12);
    cursor: pointer;
    font-family: var(--font-ar);
  }

  /* ── New ring type colors ── */
  /* Book: amber */
  .mob-prog-ring.mob-ring-book .mob-ring-fill { stroke: #f59e0b; }
  .mob-prog-ring.mob-ring-book .mob-ring-track { stroke: rgba(245,158,11,0.15); }
  /* Savings: gold shimmer */
  .mob-prog-ring.mob-ring-savings .mob-ring-fill { stroke: #fbbf24; }
  .mob-prog-ring.mob-ring-savings .mob-ring-track { stroke: rgba(251,191,36,0.15); }
  /* Course: sky blue */
  .mob-prog-ring.mob-ring-course .mob-ring-fill { stroke: #38bdf8; }
  .mob-prog-ring.mob-ring-course .mob-ring-track { stroke: rgba(56,189,248,0.15); }
  /* Pomodoro: tomato red */
  .mob-prog-ring.mob-ring-pomo .mob-ring-fill { stroke: #f87171; }
  .mob-prog-ring.mob-ring-pomo .mob-ring-track { stroke: rgba(248,113,113,0.15); }
  /* Pomo active: brighter + subtle rotation animation */
  @keyframes mob-pomo-ring-spin { from { transform: rotate(-90deg); } to { transform: rotate(270deg); } }
  .mob-prog-ring.mob-ring-pomo-active .mob-ring-fill {
    stroke: #ef4444;
    filter: drop-shadow(0 0 3px rgba(239,68,68,0.7));
  }
  .mob-prog-ring.mob-ring-pomo-active .mob-ring-track { stroke: rgba(239,68,68,0.20); }
  /* Loan: green (paid off progress) */
  .mob-prog-ring.mob-ring-loan .mob-ring-fill { stroke: #34d399; }
  .mob-prog-ring.mob-ring-loan .mob-ring-track { stroke: rgba(52,211,153,0.15); }
  /* Fasting: moonlight teal */
  .mob-prog-ring.mob-ring-fasting .mob-ring-fill { stroke: #2dd4bf; }
  .mob-prog-ring.mob-ring-fasting .mob-ring-track { stroke: rgba(45,212,191,0.15); }
  /* Quran: warm green */
  .mob-prog-ring.mob-ring-quran .mob-ring-fill { stroke: #4ade80; }
  .mob-prog-ring.mob-ring-quran .mob-ring-track { stroke: rgba(74,222,128,0.15); }
  /* Meals: orange */
  .mob-prog-ring.mob-ring-meals .mob-ring-fill { stroke: #fb923c; }
  .mob-prog-ring.mob-ring-meals .mob-ring-track { stroke: rgba(251,146,60,0.15); }
  /* Meals over: red warning */
  .mob-prog-ring.mob-ring-meals-over .mob-ring-fill { stroke: #f87171; }
  .mob-prog-ring.mob-ring-meals-over .mob-ring-track { stroke: rgba(248,113,113,0.15); }
  /* Meditation: violet */
  .mob-prog-ring.mob-ring-meditation .mob-ring-fill { stroke: #a78bfa; }
  .mob-prog-ring.mob-ring-meditation .mob-ring-track { stroke: rgba(167,139,250,0.15); }
  /* Workout: energetic green */
  .mob-prog-ring.mob-ring-workout .mob-ring-fill { stroke: #4ade80; }
  .mob-prog-ring.mob-ring-workout .mob-ring-track { stroke: rgba(74,222,128,0.15); }
  /* Expense: teal/cyan when healthy */
  .mob-prog-ring.mob-ring-expense .mob-ring-fill { stroke: #22d3ee; }
  .mob-prog-ring.mob-ring-expense .mob-ring-track { stroke: rgba(34,211,238,0.15); }
  /* Expense warn: amber */
  .mob-prog-ring.mob-ring-expense-warn .mob-ring-fill { stroke: #fbbf24; }
  .mob-prog-ring.mob-ring-expense-warn .mob-ring-track { stroke: rgba(251,191,36,0.15); }
  /* Expense over-budget: red */
  .mob-prog-ring.mob-ring-expense-over .mob-ring-fill { stroke: #f87171; }
  .mob-prog-ring.mob-ring-expense-over .mob-ring-track { stroke: rgba(248,113,113,0.15); }
  /* Counter: indigo */
  .mob-prog-ring.mob-ring-counter .mob-ring-fill { stroke: #818cf8; }
  .mob-prog-ring.mob-ring-counter .mob-ring-track { stroke: rgba(129,140,248,0.15); }
  /* Trip: sky blue */
  .mob-prog-ring.mob-ring-trip .mob-ring-fill { stroke: #60a5fa; }
  .mob-prog-ring.mob-ring-trip .mob-ring-track { stroke: rgba(96,165,250,0.15); }
  /* Plant healthy: green */
  .mob-prog-ring.mob-ring-plant .mob-ring-fill { stroke: #86efac; }
  .mob-prog-ring.mob-ring-plant .mob-ring-track { stroke: rgba(134,239,172,0.15); }
  /* Plant warn: amber */
  .mob-prog-ring.mob-ring-plant-warn .mob-ring-fill { stroke: #fbbf24; }
  .mob-prog-ring.mob-ring-plant-warn .mob-ring-track { stroke: rgba(251,191,36,0.15); }
  /* Plant dry/overdue: red */
  .mob-prog-ring.mob-ring-plant-dry .mob-ring-fill { stroke: #f87171; }
  .mob-prog-ring.mob-ring-plant-dry .mob-ring-track { stroke: rgba(248,113,113,0.15); }

  /* ── Inline snooze button on urgent reminder cards ── */
  .mob-snooze-row {
    display: flex;
    gap: 6px;
    margin: 6px 0 2px;
  }
  .mob-snooze-btn {
    flex: 1;
    padding: 7px 4px;
    border-radius: 10px;
    border: 1px solid rgba(251,191,36,0.30);
    background: rgba(251,191,36,0.08);
    color: #fbbf24;
    font-size: 12px;
    font-family: var(--font-ar);
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    text-align: center;
  }
  .mob-snooze-btn:active {
    background: rgba(251,191,36,0.18);
    transform: scale(0.96);
  }

  /* ─── P158: Quick Actions Wave ──────────────────────────────────────────────── */

  /* Generic quick-amounts row (book pages, savings, etc.) */
  .mob-quick-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 0 2px;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
  }
  .mob-quick-row::-webkit-scrollbar { display: none; }
  .mob-qr-btn {
    flex-shrink: 0;
    padding: 7px 14px;
    border-radius: 20px;
    border: 1.5px solid rgba(129,140,248,0.28);
    background: rgba(129,140,248,0.10);
    color: #a5b4fc;
    font-size: 13px;
    font-weight: 700;
    font-family: var(--font-ar);
    cursor: pointer;
    transition: background 0.12s, transform 0.1s, border-color 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-qr-btn:active {
    background: rgba(129,140,248,0.26);
    border-color: rgba(129,140,248,0.55);
    transform: scale(0.91);
  }
  .mob-qr-unit {
    font-size: 11px;
    color: rgba(232,238,247,0.38);
    flex-shrink: 0;
    padding-inline-start: 2px;
  }
  /* Book card uses green accent for its quick row */
  .mob-book-card .mob-qr-btn {
    border-color: rgba(96,165,250,0.30);
    background: rgba(96,165,250,0.09);
    color: #93c5fd;
  }
  .mob-book-card .mob-qr-btn:active {
    background: rgba(96,165,250,0.22);
    border-color: rgba(96,165,250,0.55);
  }
  /* Savings card uses gold accent */
  .mob-savings-card .mob-qr-btn {
    border-color: rgba(250,204,21,0.28);
    background: rgba(250,204,21,0.08);
    color: #fde68a;
  }
  .mob-savings-card .mob-qr-btn:active {
    background: rgba(250,204,21,0.20);
    border-color: rgba(250,204,21,0.50);
  }

  /* Counter done row: done btn + small reset button side by side */
  .mob-counter-done-row {
    display: flex;
    gap: 6px;
    align-items: stretch;
  }
  .mob-counter-done-row .mob-counter-btn { flex: 1; }
  .mob-counter-reset-btn {
    flex-shrink: 0;
    width: 44px;
    border-radius: 12px;
    border: 1.5px solid rgba(255,255,255,0.10);
    background: rgba(255,255,255,0.05);
    color: rgba(232,238,247,0.45);
    font-size: 17px;
    cursor: pointer;
    transition: background 0.12s, color 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
  }
  .mob-counter-reset-btn:active {
    background: rgba(251,191,36,0.14);
    color: #fbbf24;
    transform: scale(0.90) rotate(-30deg);
  }

  /* Goal card — interactive KR rows */
  .mob-kr-list {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin: 4px 0 6px;
  }
  .mob-kr-row {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 8px;
    border-radius: 10px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
    transition: background 0.12s;
    min-height: 36px;
  }
  .mob-kr-row.mob-kr-done {
    background: rgba(34,197,94,0.05);
    border-color: rgba(34,197,94,0.14);
    opacity: 0.72;
  }
  .mob-kr-check {
    font-size: 11px;
    color: rgba(232,238,247,0.40);
    flex-shrink: 0;
    width: 14px;
    text-align: center;
  }
  .mob-kr-row.mob-kr-done .mob-kr-check { color: #4ade80; }
  .mob-kr-body {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 3px;
  }
  .mob-kr-text {
    font-size: 12px;
    color: rgba(232,238,247,0.82);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.2;
  }
  .mob-kr-track {
    height: 3px;
    border-radius: 2px;
    background: rgba(255,255,255,0.08);
    overflow: hidden;
  }
  .mob-kr-fill {
    height: 100%;
    border-radius: 2px;
    background: linear-gradient(90deg, #818cf8, #a78bfa);
    transition: width 0.3s;
  }
  .mob-kr-row.mob-kr-done .mob-kr-fill { background: #4ade80; }
  .mob-kr-frac {
    font-size: 11px;
    color: rgba(232,238,247,0.42);
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
    white-space: nowrap;
  }
  .mob-kr-inc {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    border: 1.5px solid rgba(129,140,248,0.30);
    background: rgba(129,140,248,0.12);
    color: #a5b4fc;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.1s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
    line-height: 1;
  }
  .mob-kr-inc:active {
    background: rgba(129,140,248,0.28);
    transform: scale(0.86);
  }
  /* Project / Trip task rows: tick button uses green accent */
  .mob-project-card .mob-kr-inc,
  .mob-trip-card .mob-kr-inc {
    border-color: rgba(74,222,128,0.28);
    background: rgba(74,222,128,0.09);
    color: #4ade80;
    font-size: 13px;
  }
  .mob-project-card .mob-kr-inc:active,
  .mob-trip-card .mob-kr-inc:active {
    background: rgba(74,222,128,0.24);
    border-color: rgba(74,222,128,0.50);
  }
  /* Course card quick-row: cyan/blue accent */
  .mob-course-card .mob-qr-btn {
    border-color: rgba(34,211,238,0.28);
    background: rgba(34,211,238,0.08);
    color: #67e8f9;
  }
  .mob-course-card .mob-qr-btn:active {
    background: rgba(34,211,238,0.22);
    border-color: rgba(34,211,238,0.52);
  }

  /* ─── P158/P159 shared: mob-kr-row track bar shows progress color by card type ─ */
  .mob-project-card .mob-kr-fill { background: #4ade80; }
  .mob-trip-card .mob-kr-fill { background: #60a5fa; }

  /* ─── P162: Inbox + IOU interactive rows ────────────────────────────────────── */
  /* Inbox: amber/orange for "process" buttons */
  .mob-inbox-card .mob-kr-inc {
    border-color: rgba(251,191,36,0.28);
    background: rgba(251,191,36,0.09);
    color: #fbbf24;
  }
  .mob-inbox-card .mob-kr-inc:active {
    background: rgba(251,191,36,0.24);
    border-color: rgba(251,191,36,0.55);
  }
  /* IOU: teal for "settle" buttons */
  .mob-iou-card .mob-kr-inc {
    border-color: rgba(20,184,166,0.28);
    background: rgba(20,184,166,0.09);
    color: #2dd4bf;
  }
  .mob-iou-card .mob-kr-inc:active {
    background: rgba(20,184,166,0.24);
    border-color: rgba(20,184,166,0.55);
  }

  /* ─── P161: Copy & Control Wave ─────────────────────────────────────────────── */

  /* Fasting card: action row with done + break buttons */
  .mob-fast-action-row {
    display: flex;
    gap: 6px;
    align-items: stretch;
  }
  .mob-fast-done-btn { flex: 1; }
  .mob-fast-break-btn {
    flex-shrink: 0;
    padding: 8px 14px;
    border-radius: 12px;
    border: 1.5px solid rgba(248,113,113,0.22);
    background: rgba(248,113,113,0.06);
    color: rgba(252,165,165,0.75);
    font-size: 12px;
    font-family: var(--font-ar);
    cursor: pointer;
    transition: background 0.12s, color 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
    white-space: nowrap;
  }
  .mob-fast-break-btn:active {
    background: rgba(248,113,113,0.18);
    color: #fca5a5;
    transform: scale(0.93);
  }

  /* WiFi SSID copy row (reuses mob-pw-row layout) */
  .mob-wifi-ssid-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 0 2px;
    font-size: 13px;
  }

  /* ─── P160: Quran, Meals, Meditation quick-row accents ──────────────────────── */
  /* Quran: green-teal (emerald) */
  .mob-quran-card .mob-qr-btn {
    border-color: rgba(52,211,153,0.28);
    background: rgba(52,211,153,0.09);
    color: #6ee7b7;
  }
  .mob-quran-card .mob-qr-btn:active {
    background: rgba(52,211,153,0.22);
    border-color: rgba(52,211,153,0.52);
  }
  /* Meals: orange/amber */
  .mob-meals-card .mob-qr-btn {
    border-color: rgba(251,146,60,0.28);
    background: rgba(251,146,60,0.09);
    color: #fdba74;
  }
  .mob-meals-card .mob-qr-btn:active {
    background: rgba(251,146,60,0.22);
    border-color: rgba(251,146,60,0.52);
  }
  /* Meditation: violet */
  .mob-meditation-card .mob-qr-btn {
    border-color: rgba(167,139,250,0.28);
    background: rgba(167,139,250,0.09);
    color: #c4b5fd;
  }
  .mob-meditation-card .mob-qr-btn:active {
    background: rgba(167,139,250,0.22);
    border-color: rgba(167,139,250,0.52);
  }

  /* ─── P163: Content Wave — Watchlist rating + Journal mood ──────────────────── */
  /* Generic active-state for qr-btn (highlighted selection) */
  .mob-qr-btn.mob-qr-active {
    font-weight: 600;
    box-shadow: 0 0 0 1.5px currentColor;
  }
  /* Watchlist card: amber/gold star rating buttons */
  .mob-watchlist-card .mob-qr-btn {
    border-color: rgba(234,179,8,0.25);
    background: rgba(234,179,8,0.08);
    color: #fbbf24;
  }
  .mob-watchlist-card .mob-qr-btn:active {
    background: rgba(234,179,8,0.22);
    border-color: rgba(234,179,8,0.5);
  }
  .mob-watchlist-card .mob-qr-btn.mob-qr-active {
    background: rgba(234,179,8,0.28);
    border-color: rgba(234,179,8,0.6);
    color: #f59e0b;
  }
  /* Journal: condensed mood buttons row */
  .mob-journal-mood-row {
    display: flex;
    gap: 6px;
    justify-content: center;
    margin: 2px 0 6px;
  }
  .mob-journal-mood-btn {
    min-width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1.5px solid rgba(255,255,255,0.09);
    background: rgba(255,255,255,0.05);
    font-size: 21px;
    line-height: 1;
    cursor: pointer;
    transition: transform 0.12s, background 0.12s, border-color 0.12s;
    display: flex;
    align-items: center;
    justify-content: center;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-journal-mood-btn:active {
    transform: scale(1.18);
    background: rgba(99,102,241,0.15);
    border-color: rgba(99,102,241,0.4);
  }
  .mob-journal-mood-btn.mob-mood-active {
    background: rgba(99,102,241,0.18);
    border-color: rgba(99,102,241,0.55);
    transform: scale(1.12);
    box-shadow: 0 0 0 2px rgba(99,102,241,0.25);
  }

  /* ─── P164: Media & Language Wave ───────────────────────────────────────────── */
  /* Podcast: purple/violet star-rating buttons */
  .mob-pod-card .mob-qr-btn {
    border-color: rgba(167,139,250,0.25);
    background: rgba(167,139,250,0.08);
    color: #c4b5fd;
  }
  .mob-pod-card .mob-qr-btn:active {
    background: rgba(167,139,250,0.22);
    border-color: rgba(167,139,250,0.5);
  }
  .mob-pod-card .mob-qr-btn.mob-qr-active {
    background: rgba(167,139,250,0.28);
    border-color: rgba(167,139,250,0.6);
    color: #a78bfa;
  }
  /* Language: cyan — matches existing streak dots colour */
  .mob-lang-card .mob-qr-btn {
    border-color: rgba(34,211,238,0.25);
    background: rgba(34,211,238,0.08);
    color: #67e8f9;
  }
  .mob-lang-card .mob-qr-btn:active {
    background: rgba(34,211,238,0.22);
    border-color: rgba(34,211,238,0.5);
  }

  /* ─── P165: Fitness & Finance Wave ──────────────────────────────────────────── */
  /* Workout: green type-select buttons (emoji, slightly wider) */
  .mob-workout-card .mob-qr-btn {
    border-color: rgba(74,222,128,0.25);
    background: rgba(74,222,128,0.08);
    color: #86efac;
    font-size: 18px;
    padding: 6px 14px;
  }
  .mob-workout-card .mob-qr-btn:active {
    background: rgba(74,222,128,0.22);
    border-color: rgba(74,222,128,0.5);
  }
  .mob-workout-card .mob-qr-btn.mob-qr-active {
    background: rgba(74,222,128,0.28);
    border-color: rgba(74,222,128,0.6);
    color: #4ade80;
  }
  /* Expense: orange quick-add buttons */
  .mob-expense-card .mob-qr-btn {
    border-color: rgba(251,146,60,0.25);
    background: rgba(251,146,60,0.08);
    color: #fdba74;
  }
  .mob-expense-card .mob-qr-btn:active {
    background: rgba(251,146,60,0.22);
    border-color: rgba(251,146,60,0.5);
  }

  /* ─── P166: Review & Loan Wave ───────────────────────────────────────────────── */
  /* Review: indigo quick "راجعت الآن" button — full-width feel */
  .mob-review-quick-btn {
    width: 100%;
    justify-content: center;
    padding: 8px 16px;
    border-radius: 10px;
    border-color: rgba(99,102,241,0.28);
    background: rgba(99,102,241,0.08);
    color: #a5b4fc;
    font-size: 14px;
    letter-spacing: 0.01em;
  }
  .mob-review-quick-btn:active {
    background: rgba(99,102,241,0.2);
    border-color: rgba(99,102,241,0.5);
    transform: scale(0.98);
  }
  /* Loan: green "+1 قسط" quick button */
  .mob-loan-card .mob-qr-btn {
    border-color: rgba(74,222,128,0.25);
    background: rgba(74,222,128,0.08);
    color: #86efac;
  }
  .mob-loan-card .mob-qr-btn:active {
    background: rgba(74,222,128,0.22);
    border-color: rgba(74,222,128,0.5);
  }

  /* ─── P167: Decision & Appliance Wave ───────────────────────────────────────── */
  /* Purchase Decision: two-button row when cooldown complete */
  .mob-pd-decision-row {
    display: flex;
    gap: 8px;
    margin-bottom: 2px;
  }
  .mob-pd-buy-btn, .mob-pd-skip-btn {
    flex: 1;
    padding: 10px 8px;
    border-radius: 12px;
    font-family: var(--font-ar);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    border: 1.5px solid;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-pd-buy-btn {
    background: rgba(74,222,128,0.12);
    border-color: rgba(74,222,128,0.35);
    color: #86efac;
  }
  .mob-pd-buy-btn:active {
    background: rgba(74,222,128,0.25);
    transform: scale(0.97);
  }
  .mob-pd-skip-btn {
    background: rgba(248,113,113,0.08);
    border-color: rgba(248,113,113,0.22);
    color: rgba(252,165,165,0.7);
  }
  .mob-pd-skip-btn:active {
    background: rgba(248,113,113,0.18);
    transform: scale(0.97);
  }
  /* Appliance: cyan quick-service button */
  .mob-appliance-card .mob-qr-btn {
    width: 100%;
    justify-content: center;
    padding: 8px 16px;
    border-radius: 10px;
    border-color: rgba(34,211,238,0.25);
    background: rgba(34,211,238,0.08);
    color: #67e8f9;
    font-size: 14px;
  }
  .mob-appliance-card .mob-qr-btn:active {
    background: rgba(34,211,238,0.2);
    border-color: rgba(34,211,238,0.5);
    transform: scale(0.98);
  }

  /* ─── P168: Input & Focus Wave ───────────────────────────────────────────────── */
  /* Pomodoro: tomato-red manual session buttons */
  .mob-pomo-card .mob-qr-btn {
    border-color: rgba(239,68,68,0.25);
    background: rgba(239,68,68,0.08);
    color: #fca5a5;
    font-weight: 700;
    font-size: 15px;
    min-width: 52px;
  }
  .mob-pomo-card .mob-qr-btn:active {
    background: rgba(239,68,68,0.2);
    border-color: rgba(239,68,68,0.5);
  }
  /* Checklist quick-add row */
  .mob-cl-quick-add {
    display: flex;
    gap: 6px;
    align-items: center;
    margin: 4px 0 2px;
  }
  .mob-cl-quick-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1.5px solid rgba(255,255,255,0.1);
    border-radius: 10px;
    padding: 7px 10px;
    font-size: 13px;
    font-family: var(--font-ar);
    color: var(--text-primary);
    outline: none;
    transition: border-color 0.15s, background 0.15s;
    -webkit-appearance: none;
  }
  .mob-cl-quick-input:focus {
    border-color: rgba(99,102,241,0.45);
    background: rgba(99,102,241,0.07);
  }
  .mob-cl-quick-input::placeholder { color: rgba(255,255,255,0.3); }
  .mob-cl-quick-btn {
    width: 34px;
    height: 34px;
    border-radius: 10px;
    border: 1.5px solid rgba(99,102,241,0.3);
    background: rgba(99,102,241,0.1);
    color: #a5b4fc;
    font-size: 20px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-cl-quick-btn:active {
    background: rgba(99,102,241,0.22);
    transform: scale(0.9);
  }

  /* ─── P184: Subscription Quick-Add + Quote Share Wave ──────────────────────────── */
  /* Subscription quick-add row */
  .mob-sub-quick-row {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 6px 0 4px;
    padding: 6px 8px;
    border-radius: 10px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.07);
  }
  .mob-sub-quick-input {
    flex: 1.5;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 7px;
    color: #e2e8f0;
    font-size: 0.8rem;
    padding: 5px 7px;
    min-width: 0;
    direction: rtl;
    font-family: inherit;
  }
  .mob-sub-quick-input:focus { outline: none; border-color: rgba(129,140,248,0.4); }
  .mob-sub-quick-amt {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 7px;
    color: #e2e8f0;
    font-size: 0.8rem;
    padding: 5px 6px;
    min-width: 0;
    font-family: inherit;
    text-align: center;
  }
  .mob-sub-quick-amt:focus { outline: none; border-color: rgba(129,140,248,0.4); }
  .mob-sub-add-btn {
    background: rgba(129,140,248,0.12);
    border: 1px solid rgba(129,140,248,0.35);
    border-radius: 7px;
    color: #818cf8;
    font-size: 1rem;
    font-weight: 700;
    padding: 4px 9px;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.12s;
  }
  .mob-sub-add-btn:active { background: rgba(129,140,248,0.25); }
  /* Quote share/copy button row */
  .mob-quote-btn-row {
    display: flex;
    gap: 8px;
    margin: 6px 0 2px;
  }
  .mob-quote-copy-btn {
    flex: 1;
    border-color: rgba(148,163,184,0.25) !important;
    background: rgba(148,163,184,0.06) !important;
    color: #94a3b8 !important;
    font-size: 0.8rem !important;
  }
  .mob-quote-copy-btn:active { background: rgba(148,163,184,0.15) !important; }
  .mob-quote-share-btn {
    flex: 1;
    border-color: rgba(245,158,11,0.3) !important;
    background: rgba(245,158,11,0.07) !important;
    color: #fbbf24 !important;
    font-size: 0.8rem !important;
    font-weight: 600 !important;
  }
  .mob-quote-share-btn:active { background: rgba(245,158,11,0.18) !important; }

  /* ─── P183: IOU Quick-Add + Stocks Refresh Wave ─────────────────────────────────── */
  /* IOU quick-add transaction row */
  .mob-iou-quick-row {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 6px 0 4px;
    padding: 6px 8px;
    border-radius: 10px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.07);
  }
  .mob-iou-quick-input {
    flex: 1.4;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 7px;
    color: #e2e8f0;
    font-size: 0.8rem;
    padding: 5px 7px;
    min-width: 0;
    direction: rtl;
    font-family: inherit;
  }
  .mob-iou-quick-input:focus { outline: none; border-color: rgba(20,184,166,0.4); }
  .mob-iou-quick-amount {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 7px;
    color: #e2e8f0;
    font-size: 0.8rem;
    padding: 5px 6px;
    min-width: 0;
    font-family: inherit;
    text-align: center;
  }
  .mob-iou-quick-amount:focus { outline: none; border-color: rgba(20,184,166,0.4); }
  .mob-iou-dir-btn {
    background: rgba(20,184,166,0.1);
    border: 1px solid rgba(20,184,166,0.3);
    border-radius: 7px;
    color: #2dd4bf;
    font-size: 0.75rem;
    padding: 5px 6px;
    cursor: pointer;
    flex-shrink: 0;
    font-weight: 700;
    min-width: 40px;
    text-align: center;
    font-family: inherit;
    transition: background 0.12s;
  }
  .mob-iou-dir-btn:active { background: rgba(20,184,166,0.2); }
  .mob-iou-add-btn {
    background: rgba(20,184,166,0.12);
    border: 1px solid rgba(20,184,166,0.35);
    border-radius: 7px;
    color: #2dd4bf;
    font-size: 1rem;
    font-weight: 700;
    padding: 4px 9px;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.12s;
  }
  .mob-iou-add-btn:active { background: rgba(20,184,166,0.25); }
  /* Stocks button row */
  .mob-stocks-btn-row { margin: 8px 0 4px; gap: 8px; }
  .mob-stocks-view-btn {
    flex: 1;
    border-color: rgba(34,211,117,0.3) !important;
    background: rgba(34,211,117,0.07) !important;
    color: #4ade80 !important;
    font-weight: 600 !important;
  }
  .mob-stocks-view-btn:active { background: rgba(34,211,117,0.18) !important; }
  .mob-stocks-refresh-btn {
    border-color: rgba(148,163,184,0.25) !important;
    background: rgba(148,163,184,0.06) !important;
    color: #94a3b8 !important;
    font-weight: 600 !important;
  }
  .mob-stocks-refresh-btn:active { background: rgba(148,163,184,0.15) !important; }

  /* ─── P182: Page Child Preview + Contact Birthday Wave ─────────────────────────── */
  /* Page card child rows */
  .mob-page-children {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 4px 0 6px;
  }
  .mob-page-child-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border-radius: 8px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.07);
    cursor: pointer;
    transition: background 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-page-child-row:active { background: rgba(96,165,250,0.12); }
  .mob-page-child-icon {
    font-size: 1rem;
    flex-shrink: 0;
    width: 20px;
    text-align: center;
  }
  .mob-page-child-title {
    flex: 1;
    font-size: 0.82rem;
    color: #c8d6f0;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-page-child-arrow {
    font-size: 1rem;
    color: #475569;
    flex-shrink: 0;
  }
  .mob-page-child-more {
    font-size: 0.74rem;
    color: #64748b;
    text-align: center;
    padding: 3px 0 2px;
  }

  /* ─── P181: Linkgroup Rows + Fields Copy + Code Language Dot Wave ─────────────── */
  /* Linkgroup: clickable link rows */
  .mob-lg-link-list {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin: 4px 0 6px;
  }
  .mob-lg-link-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 7px 10px;
    border-radius: 8px;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.07);
    text-decoration: none !important;
    transition: background 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-lg-link-row:active { background: rgba(99,102,241,0.1); }
  .mob-lg-link-fav {
    width: 14px; height: 14px;
    border-radius: 3px;
    flex-shrink: 0;
  }
  .mob-lg-link-title {
    flex: 1;
    font-size: 0.82rem;
    color: #c8d6f0;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-lg-link-arrow {
    font-size: 0.75rem;
    color: #64748b;
    flex-shrink: 0;
  }
  .mob-lg-link-more {
    font-size: 0.75rem;
    color: #64748b;
    text-align: center;
    padding: 4px 0 2px;
  }
  .mob-lg-more-tap {
    color: #818cf8;
    cursor: pointer;
    text-decoration: underline;
  }
  /* Fields: copy-row layout */
  .mob-fields-copy-list {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin: 4px 0 6px;
  }
  .mob-field-copy-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 5px 8px;
    border-radius: 7px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
  }
  .mob-field-lbl {
    font-size: 0.72rem;
    color: #64748b;
    flex-shrink: 0;
    min-width: 60px;
    font-weight: 500;
  }
  .mob-field-val {
    flex: 1;
    font-size: 0.8rem;
    color: #c8d6f0;
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
  .mob-field-copy-btn {
    background: transparent;
    border: 1px solid rgba(99,102,241,0.2);
    border-radius: 5px;
    color: #64748b;
    font-size: 0.72rem;
    padding: 2px 5px;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.12s, color 0.12s;
  }
  .mob-field-copy-btn:active { background: rgba(99,102,241,0.15); color: #a5b4fc; }

  /* ─── P180: Document Reminder + Vehicle Service + Status Recheck Wave ────────── */
  /* Document expiry reminder btn: amber/gold */
  .mob-doc-remind-btn {
    border-color: rgba(251,191,36,0.35) !important;
    background: rgba(251,191,36,0.08) !important;
    color: #fbbf24 !important;
  }
  .mob-doc-remind-btn:active { background: rgba(251,191,36,0.2) !important; }
  /* Vehicle service done btn: cyan/teal */
  .mob-veh-service-btn {
    border-color: rgba(20,184,166,0.35) !important;
    background: rgba(20,184,166,0.08) !important;
    color: #2dd4bf !important;
  }
  .mob-veh-service-btn:active { background: rgba(20,184,166,0.2) !important; }
  /* Status card button row */
  .mob-status-btn-row {
    margin: 8px 0 4px;
    gap: 8px;
  }
  .mob-status-open-btn {
    flex: 1;
    border-color: rgba(56,189,248,0.3) !important;
    background: rgba(56,189,248,0.07) !important;
    color: #38bdf8 !important;
    text-decoration: none !important;
    font-weight: 600 !important;
  }
  .mob-status-open-btn:active { background: rgba(56,189,248,0.18) !important; }
  .mob-status-check-btn {
    border-color: rgba(148,163,184,0.25) !important;
    background: rgba(148,163,184,0.06) !important;
    color: #94a3b8 !important;
    font-weight: 600 !important;
  }
  .mob-status-check-btn:active { background: rgba(148,163,184,0.15) !important; }

  /* ─── P179: Meeting Notes + Playlist Track Count Wave ────────────────────────── */
  /* Meeting note quick-add btn: blue/sky */
  .mob-meet-note-btn {
    border-color: rgba(56,189,248,0.35) !important;
    background: rgba(56,189,248,0.08) !important;
    color: #7dd3fc !important;
  }
  .mob-meet-note-btn:active { background: rgba(56,189,248,0.2) !important; }
  /* Playlist track count row */
  .mob-pl-track-btn {
    border-color: rgba(167,139,250,0.3) !important;
    background: rgba(167,139,250,0.07) !important;
    color: #c4b5fd !important;
    font-weight: 700 !important;
  }
  .mob-pl-dec-btn {
    border-color: rgba(148,163,184,0.25) !important;
    background: rgba(148,163,184,0.06) !important;
    color: #94a3b8 !important;
  }
  .mob-pl-track-btn:active { background: rgba(167,139,250,0.18) !important; }

  /* ─── P178: Vitals Quick-log + Crypto Current Value Wave ─────────────────────── */
  /* Vitals BP entry row */
  .mob-vitals-log-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 6px 0;
  }
  .mob-vitals-input {
    flex: 1;
    background: rgba(239,68,68,0.06);
    border: 1.5px solid rgba(239,68,68,0.22);
    border-radius: 10px;
    color: #fca5a5;
    font-size: 15px;
    font-weight: 600;
    padding: 8px 10px;
    text-align: center;
    min-width: 0;
    outline: none;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-vitals-input::placeholder { color: rgba(252,165,165,0.4); font-weight: 400; font-size: 11px; }
  .mob-vitals-input:focus { border-color: rgba(239,68,68,0.5); background: rgba(239,68,68,0.1); }
  .mob-vitals-sep {
    color: rgba(255,255,255,0.4);
    font-size: 18px;
    font-weight: 300;
    flex-shrink: 0;
  }
  .mob-vitals-log-btn {
    width: 36px; height: 36px;
    border-radius: 10px;
    border: 1.5px solid rgba(239,68,68,0.3);
    background: rgba(239,68,68,0.09);
    color: #fca5a5;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-vitals-log-btn:active { background: rgba(239,68,68,0.22); transform: scale(0.9); }
  /* Crypto current value btn: orange/amber */
  .mob-crypto-val-btn {
    border-color: rgba(251,146,60,0.35) !important;
    background: rgba(251,146,60,0.08) !important;
    color: #fdba74 !important;
    font-weight: 700 !important;
  }
  .mob-crypto-val-btn:active { background: rgba(251,146,60,0.2) !important; }

  /* ─── P177: Tracker Fractions + Recipe Stars Wave ────────────────────────────── */
  /* Tracker quick-set buttons: indigo accent */
  .mob-tracker-qr {
    border-color: rgba(99,102,241,0.3) !important;
    background: rgba(99,102,241,0.07) !important;
    color: #a5b4fc !important;
    font-weight: 600 !important;
    font-size: 12px !important;
  }
  .mob-tracker-qr:active, .mob-tracker-qr.mob-qr-active {
    background: rgba(99,102,241,0.2) !important;
    color: #c7d2fe !important;
  }
  /* Recipe star rating row */
  .mob-recipe-rate-row { justify-content: center; gap: 4px; }
  .mob-recipe-star {
    padding: 4px 7px !important;
    font-size: 20px !important;
    border: none !important;
    background: transparent !important;
    color: rgba(255,255,255,0.25) !important;
    min-width: 34px;
  }
  .mob-recipe-star.mob-qr-active,
  .mob-recipe-star:has(~ .mob-qr-active) {
    color: #fbbf24 !important;
  }

  /* ─── P176: Gift Idea Capture + Zakat Pay Wave ───────────────────────────────── */
  /* Gift card quick-idea btn: rose/pink */
  .mob-gift-add-btn {
    border-color: rgba(244,114,182,0.35) !important;
    background: rgba(244,114,182,0.08) !important;
    color: #f9a8d4 !important;
    font-size: 16px !important;
  }
  .mob-gift-add-btn:active {
    background: rgba(244,114,182,0.2) !important;
  }
  /* Zakat pay button: emerald/teal religious tone */
  .mob-zakat-pay-btn {
    background: rgba(16,185,129,0.08) !important;
    border: 1.5px solid rgba(16,185,129,0.28) !important;
    color: #6ee7b7 !important;
  }
  .mob-zakat-pay-btn:active {
    background: rgba(16,185,129,0.18) !important;
  }

  /* ─── P175: Gold Price Update + Medicine Dose Log Wave ───────────────────────── */
  /* Gold price quick-update: gold/amber accent */
  .mob-gold-price-btn {
    border-color: rgba(251,191,36,0.4) !important;
    background: rgba(251,191,36,0.09) !important;
    color: #fbbf24 !important;
    font-weight: 700 !important;
  }
  .mob-gold-price-btn:active {
    background: rgba(251,191,36,0.22) !important;
  }
  /* Medicine dose log button: teal/emerald */
  .mob-dose-log-btn {
    background: rgba(16,185,129,0.07) !important;
    border: 1.5px solid rgba(16,185,129,0.25) !important;
    color: #6ee7b7 !important;
  }
  .mob-dose-log-btn:active {
    background: rgba(16,185,129,0.18) !important;
  }

  /* ─── P174: Note Quick-append + Counter Quick-add Wave ───────────────────────── */
  /* Counter card quick-row buttons: slate/neutral accent */
  .mob-counter-qr {
    border-color: rgba(148,163,184,0.3) !important;
    background: rgba(148,163,184,0.07) !important;
    color: #cbd5e1 !important;
    font-weight: 700 !important;
  }
  .mob-counter-qr:active {
    background: rgba(148,163,184,0.18) !important;
  }

  /* ─── P173: Idea Quick-note + Birthday Gift Wave ─────────────────────────────── */
  /* Idea card quick-add: amber/gold accent for the + button */
  .mob-idea-quick-btn {
    border-color: rgba(245,158,11,0.4) !important;
    background: rgba(245,158,11,0.09) !important;
    color: #fcd34d !important;
  }
  .mob-idea-quick-btn:active {
    background: rgba(245,158,11,0.22) !important;
  }
  /* Birthday gift input: rose/pink accent */
  .mob-bd-gift-add {
    margin-top: 6px;
  }
  .mob-bd-gift-btn {
    border-color: rgba(244,114,182,0.4) !important;
    background: rgba(244,114,182,0.09) !important;
    color: #f9a8d4 !important;
    font-size: 16px !important;
  }
  .mob-bd-gift-btn:active {
    background: rgba(244,114,182,0.22) !important;
  }

  /* ─── P172: Journal Quick-note + Week Plan Priority Wave ────────────────────── */
  /* Journal quick-add: no + button, full-width input with larger placeholder text */
  .mob-journal-quick-add {
    margin-top: 4px;
  }
  .mob-journal-quick-add .mob-cl-quick-input {
    flex: 1;
    font-size: 13px;
    border-color: rgba(129,140,248,0.3);
  }
  .mob-journal-quick-add .mob-cl-quick-input:focus {
    border-color: rgba(129,140,248,0.6);
    background: rgba(129,140,248,0.07);
  }
  .mob-journal-quick-add .mob-cl-quick-input::placeholder {
    color: rgba(129,140,248,0.45);
    font-style: italic;
  }

  /* ─── P171: Project Quick-add + Contact Log Wave ─────────────────────────────── */
  /* Project card uses existing mob-cl-quick-add / mob-cl-quick-input / mob-cl-quick-btn */

  /* Contact card — "سجّل تواصل اليوم" quick log button */
  .mob-contact-log-btn {
    margin-top: 6px;
    padding: 9px 14px;
    border-radius: 12px;
    border: 1.5px solid rgba(16,185,129,0.3);
    background: rgba(16,185,129,0.07);
    color: #6ee7b7;
    font-size: 13px;
    font-weight: 600;
    width: 100%;
    text-align: center;
    cursor: pointer;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-contact-log-btn:active {
    background: rgba(16,185,129,0.18);
    transform: scale(0.97);
  }

  /* ─── P185: Countdown Share + Chore Postpone + Plant Fertilize Wave ─────────── */

  /* Countdown two-button row */
  .mob-cd-btn-row {
    gap: 8px;
    margin: 4px 0 6px;
  }
  .mob-cd-copy-btn {
    flex: 1;
    border-color: rgba(148,163,184,0.25) !important;
    background: rgba(148,163,184,0.06) !important;
    color: #94a3b8 !important;
    font-size: 0.78rem !important;
  }
  .mob-cd-copy-btn:active { background: rgba(148,163,184,0.16) !important; }
  .mob-cd-remind-btn {
    flex: 1;
    border-color: rgba(245,158,11,0.3) !important;
    background: rgba(245,158,11,0.06) !important;
    color: #fbbf24 !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
  }
  .mob-cd-remind-btn:active { background: rgba(245,158,11,0.18) !important; }

  /* Chore postpone row */
  .mob-chore-snooze-row {
    gap: 6px;
    margin: 4px 0 6px;
    align-items: center;
  }
  .mob-chore-snooze-lbl {
    font-size: 0.72rem;
    color: rgba(232,238,247,0.4);
    white-space: nowrap;
    margin-left: 2px;
  }
  .mob-chore-snooze-btn {
    flex: 1;
    border-color: rgba(251,146,60,0.25) !important;
    background: rgba(251,146,60,0.06) !important;
    color: #fb923c !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
  }
  .mob-chore-snooze-btn:active { background: rgba(251,146,60,0.18) !important; }

  /* Plant fertilize button */
  .mob-plant-fert-btn {
    margin-top: 6px;
    padding: 9px 14px;
    border-radius: 12px;
    border: 1.5px solid rgba(52,211,153,0.28);
    background: rgba(52,211,153,0.07);
    color: #6ee7b7;
    font-size: 13px;
    font-weight: 600;
    width: 100%;
    text-align: center;
    cursor: pointer;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-plant-fert-btn:active { background: rgba(52,211,153,0.18); transform: scale(0.97); }
  .mob-plant-fert-done {
    margin-top: 6px;
    padding: 9px 14px;
    border-radius: 12px;
    border: 1.5px solid rgba(52,211,153,0.15);
    background: rgba(52,211,153,0.04);
    color: rgba(110,231,183,0.5);
    font-size: 13px;
    font-weight: 600;
    width: 100%;
    text-align: center;
    cursor: default;
    opacity: 0.7;
  }

  /* ─── P186: Loan Reminder + Savings Custom + Net Worth Cash Wave ─────────────── */

  /* Loan: reminder button in the quick-row */
  .mob-loan-remind-btn {
    border-color: rgba(245,158,11,0.3) !important;
    background: rgba(245,158,11,0.07) !important;
    color: #fbbf24 !important;
    font-size: 0.78rem !important;
    font-weight: 600 !important;
  }
  .mob-loan-remind-btn:active { background: rgba(245,158,11,0.18) !important; }

  /* Savings goal: custom amount input row */
  .mob-sav-custom-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 0 6px;
  }
  .mob-sav-custom-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 8px;
    padding: 7px 10px;
    color: #e8eef7;
    font-size: 13px;
    font-family: inherit;
    text-align: right;
    direction: rtl;
    -webkit-appearance: none;
    min-width: 0;
  }
  .mob-sav-custom-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-sav-custom-input:focus { outline: none; border-color: rgba(250,204,21,0.35); }
  .mob-sav-custom-btn {
    padding: 7px 14px;
    border-radius: 8px;
    border: 1.5px solid rgba(250,204,21,0.3);
    background: rgba(250,204,21,0.07);
    color: #fde68a;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    white-space: nowrap;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s;
  }
  .mob-sav-custom-btn:active { background: rgba(250,204,21,0.18); }

  /* Net worth: manual cash input row */
  .mob-nw-cash-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 0 6px;
    padding: 6px 8px;
    border-radius: 10px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.07);
  }
  .mob-nw-cash-lbl {
    font-size: 11px;
    color: rgba(232,238,247,0.45);
    white-space: nowrap;
    flex-shrink: 0;
  }
  .mob-nw-cash-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 7px;
    padding: 6px 8px;
    color: #e8eef7;
    font-size: 13px;
    font-family: inherit;
    text-align: right;
    direction: rtl;
    -webkit-appearance: none;
    min-width: 0;
  }
  .mob-nw-cash-input::placeholder { color: rgba(232,238,247,0.25); }
  .mob-nw-cash-input:focus { outline: none; border-color: rgba(251,191,36,0.35); }
  .mob-nw-cash-btn {
    padding: 5px 10px;
    border-radius: 7px;
    border: 1.5px solid rgba(251,191,36,0.3);
    background: rgba(251,191,36,0.07);
    color: #fbbf24;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s;
  }
  .mob-nw-cash-btn:active { background: rgba(251,191,36,0.18); }

  /* ─── P187: Checklist + Routine + Goal Batch Actions Wave ───────────────────── */

  /* "Complete all" button — checklist (emerald) */
  .mob-cl-complete-all {
    margin-top: 6px;
    padding: 8px 14px;
    border-radius: 10px;
    border: 1.5px solid rgba(52,211,153,0.28);
    background: rgba(52,211,153,0.07);
    color: #6ee7b7;
    font-size: 12px;
    font-weight: 700;
    width: 100%;
    text-align: center;
    cursor: pointer;
    letter-spacing: 0.01em;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s, transform 0.1s;
  }
  .mob-cl-complete-all:active { background: rgba(52,211,153,0.18); transform: scale(0.97); }

  /* "Complete all" button — routine (green, slightly different shade) */
  .mob-rt-complete-all {
    margin-top: 6px;
    padding: 8px 14px;
    border-radius: 10px;
    border: 1.5px solid rgba(74,222,128,0.28);
    background: rgba(74,222,128,0.07);
    color: #86efac;
    font-size: 12px;
    font-weight: 700;
    width: 100%;
    text-align: center;
    cursor: pointer;
    letter-spacing: 0.01em;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s, transform 0.1s;
  }
  .mob-rt-complete-all:active { background: rgba(74,222,128,0.18); transform: scale(0.97); }

  /* Goal KR "complete" (✓) button — appears when KR is ≥80% */
  .mob-kr-complete-btn {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    border-radius: 6px;
    border: 1.5px solid rgba(34,211,117,0.4);
    background: rgba(34,211,117,0.1);
    color: #4ade80;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-left: 2px;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.1s;
  }
  .mob-kr-complete-btn:active { background: rgba(34,211,117,0.22); }

  /* ─── P188: Trip Pack-All + Course Deadline + Language Custom Wave ───────────── */

  /* Trip card "pack all" button — blue/cyan travel theme */
  .mob-trip-pack-all {
    margin-top: 6px;
    padding: 8px 14px;
    border-radius: 10px;
    border: 1.5px solid rgba(56,189,248,0.28);
    background: rgba(56,189,248,0.07);
    color: #7dd3fc;
    font-size: 12px;
    font-weight: 700;
    width: 100%;
    text-align: center;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s, transform 0.1s;
  }
  .mob-trip-pack-all:active { background: rgba(56,189,248,0.18); transform: scale(0.97); }

  /* Language card: custom vocab input row */
  .mob-lang-vocab-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 0 6px;
  }
  .mob-lang-vocab-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 8px;
    padding: 7px 10px;
    color: #e8eef7;
    font-size: 13px;
    font-family: inherit;
    text-align: right;
    direction: rtl;
    -webkit-appearance: none;
    min-width: 0;
  }
  .mob-lang-vocab-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-lang-vocab-input:focus { outline: none; border-color: rgba(34,211,211,0.35); }
  .mob-lang-vocab-btn {
    padding: 7px 12px;
    border-radius: 8px;
    border: 1.5px solid rgba(34,211,211,0.28);
    background: rgba(34,211,211,0.07);
    color: #67e8f9;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s;
  }
  .mob-lang-vocab-btn:active { background: rgba(34,211,211,0.18); }

  /* ─── P189: Medicine Refill Remind + Subscription Alert + Vitals Pulse ───────── */

  /* Medicine refill reminder button — amber, full-width */
  .mob-med-refill-remind-btn {
    display: block;
    width: calc(100% - 24px);
    margin: 4px 12px 0;
    padding: 7px 12px;
    border: none;
    border-radius: 8px;
    background: rgba(245,158,11,0.13);
    color: #fbbf24;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
    cursor: pointer;
    transition: background 0.15s;
  }
  .mob-med-refill-remind-btn:active { background: rgba(245,158,11,0.22); }

  /* Subscription action row — upcoming renewal + remind side by side */
  .mob-sub-action-row {
    margin: 4px 12px 0;
    gap: 8px;
  }
  .mob-sub-due-btn {
    flex: 1;
    background: rgba(56,189,248,0.12);
    color: #38bdf8;
    font-weight: 600;
  }
  .mob-sub-due-btn:active { background: rgba(56,189,248,0.2); }
  .mob-sub-remind-btn {
    background: rgba(245,158,11,0.12);
    color: #fbbf24;
    font-weight: 600;
    white-space: nowrap;
  }
  .mob-sub-remind-btn:active { background: rgba(245,158,11,0.22); }

  /* Vitals: smaller separator for pulse field */
  .mob-vitals-sep-sm {
    color: rgba(232,238,247,0.25);
    font-size: 11px;
    padding: 0 1px;
    flex-shrink: 0;
  }
  /* Pulse input — narrower than BP inputs */
  .mob-vitals-pulse-input {
    width: 54px !important;
    min-width: 0 !important;
    text-align: center;
  }

  /* ─── P190: Workout Duration + Quran Jump + Language Minutes Wave ─────────────── */

  /* Workout duration preset row */
  .mob-wkt-dur-row { margin-top: 4px; }
  .mob-wkt-dur-btn {
    background: rgba(74,222,128,0.1);
    color: #4ade80;
    font-weight: 600;
    min-width: 40px;
  }
  .mob-wkt-dur-btn.mob-qr-active {
    background: rgba(74,222,128,0.22);
    color: #4ade80;
    box-shadow: 0 0 0 1.5px rgba(74,222,128,0.45);
  }
  .mob-wkt-dur-btn:active { background: rgba(74,222,128,0.2); }

  /* Quran page-jump row */
  .mob-quran-jump-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 6px 12px 0;
  }
  .mob-quran-jump-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(167,139,250,0.25);
    border-radius: 8px;
    color: #e8eef7;
    font-size: 13px;
    padding: 7px 10px;
    min-width: 0;
  }
  .mob-quran-jump-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-quran-jump-input:focus { outline: none; border-color: rgba(167,139,250,0.45); }
  .mob-quran-jump-btn {
    background: rgba(167,139,250,0.15);
    color: #a78bfa;
    border: none;
    border-radius: 8px;
    padding: 7px 14px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s;
  }
  .mob-quran-jump-btn:active { background: rgba(167,139,250,0.28); }

  /* Language custom minutes row */
  .mob-lang-min-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 12px 0;
  }
  .mob-lang-min-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(34,211,238,0.2);
    border-radius: 8px;
    color: #e8eef7;
    font-size: 13px;
    padding: 7px 10px;
    min-width: 0;
  }
  .mob-lang-min-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-lang-min-input:focus { outline: none; border-color: rgba(34,211,238,0.35); }
  .mob-lang-min-btn {
    background: rgba(34,211,238,0.12);
    color: #22d3ee;
    border: none;
    border-radius: 8px;
    padding: 7px 12px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s;
  }
  .mob-lang-min-btn:active { background: rgba(34,211,238,0.22); }

  /* ─── P191: Fasting Start + Book Jump + Tracker Reset Wave ──────────────────── */

  /* Fasting: start-row has two buttons side by side */
  .mob-fast-start-row {
    display: flex;
    gap: 8px;
    margin: 4px 12px 0;
  }
  .mob-fast-log-btn { flex: 1; margin: 0 !important; }
  .mob-fast-start-btn {
    background: rgba(167,139,250,0.13);
    color: #a78bfa;
    border: none;
    border-radius: 10px;
    padding: 10px 14px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    flex-shrink: 0;
    white-space: nowrap;
    transition: background 0.15s;
  }
  .mob-fast-start-btn:active { background: rgba(167,139,250,0.24); }

  /* Book page-jump row */
  .mob-book-jump-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 12px 0;
  }
  .mob-book-jump-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(251,191,36,0.22);
    border-radius: 8px;
    color: #e8eef7;
    font-size: 13px;
    padding: 7px 10px;
    min-width: 0;
  }
  .mob-book-jump-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-book-jump-input:focus { outline: none; border-color: rgba(251,191,36,0.42); }
  .mob-book-jump-btn {
    background: rgba(251,191,36,0.13);
    color: #fbbf24;
    border: none;
    border-radius: 8px;
    padding: 7px 14px;
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s;
  }
  .mob-book-jump-btn:active { background: rgba(251,191,36,0.25); }

  /* Tracker reset button — small, next to +/- controls */
  .mob-tc-reset {
    background: rgba(255,255,255,0.06);
    color: rgba(232,238,247,0.45);
    border: none;
    border-radius: 6px;
    padding: 5px 9px;
    font-size: 13px;
    cursor: pointer;
    margin-inline-start: 4px;
    transition: background 0.15s, color 0.15s;
  }
  .mob-tc-reset:active { background: rgba(255,80,80,0.15); color: #f87171; }

  /* ─── P192: Expense Custom + Meals Custom + Gift Rows Wave ──────────────────── */

  /* Expense custom amount row */
  .mob-expense-custom-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 12px 0;
  }
  .mob-expense-custom-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(251,146,60,0.22);
    border-radius: 8px;
    color: #e8eef7;
    font-size: 13px;
    padding: 7px 10px;
    min-width: 0;
  }
  .mob-expense-custom-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-expense-custom-input:focus { outline: none; border-color: rgba(251,146,60,0.42); }
  .mob-expense-custom-btn {
    background: rgba(251,146,60,0.13);
    color: #fb923c;
    border: none;
    border-radius: 8px;
    padding: 7px 14px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
    white-space: nowrap;
    transition: background 0.15s;
  }
  .mob-expense-custom-btn:active { background: rgba(251,146,60,0.24); }

  /* Meals custom calorie row */
  .mob-meals-custom-row {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 4px 12px 0;
  }
  .mob-meals-cal-input {
    flex: 1;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(251,146,60,0.2);
    border-radius: 8px;
    color: #e8eef7;
    font-size: 13px;
    padding: 7px 10px;
    min-width: 0;
  }
  .mob-meals-cal-input::placeholder { color: rgba(232,238,247,0.3); font-size: 11px; }
  .mob-meals-cal-input:focus { outline: none; border-color: rgba(251,146,60,0.38); }
  .mob-meals-cal-btn {
    background: rgba(251,146,60,0.13);
    color: #fb923c;
    border: none;
    border-radius: 8px;
    padding: 7px 12px;
    font-size: 12px;
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
    white-space: nowrap;
    transition: background 0.15s;
  }
  .mob-meals-cal-btn:active { background: rgba(251,146,60,0.24); }

  /* Gift idea interactive row ✓ buy button — rose */
  .mob-gift-card .mob-kr-inc,
  .mob-gift-buy-btn {
    background: rgba(244,114,182,0.13) !important;
    color: #f472b6 !important;
    border-color: rgba(244,114,182,0.25) !important;
  }
  .mob-gift-buy-btn:active { background: rgba(244,114,182,0.25) !important; }

  /* ─── P193: Series Episodes + Course Jump + Pomodoro Focus Time Wave ──────── */
  /* Watchlist episode row */
  .mob-wl-ep-row { gap: 8px; }
  .mob-wl-ep-btn {
    background: rgba(20,184,166,0.13) !important;
    color: #2dd4bf !important;
    border-color: rgba(20,184,166,0.28) !important;
    font-size: 0.8rem !important;
    flex: 1.5;
  }
  .mob-wl-ep-btn:active { background: rgba(20,184,166,0.25) !important; }
  .mob-wl-season-btn {
    background: rgba(99,102,241,0.12) !important;
    color: #818cf8 !important;
    border-color: rgba(99,102,241,0.25) !important;
    font-size: 0.8rem !important;
    flex: 1;
  }
  .mob-wl-season-btn:active { background: rgba(99,102,241,0.22) !important; }

  /* Course lesson-jump row */
  .mob-course-jump-row {
    display: flex;
    gap: 6px;
    align-items: center;
    margin: 4px 0 2px;
  }
  .mob-course-jump-input {
    flex: 1;
    background: rgba(99,102,241,0.10);
    border: 1px solid rgba(99,102,241,0.22);
    border-radius: 10px;
    color: #e8eef7;
    font-size: 0.85rem;
    padding: 7px 10px;
    min-width: 0;
    text-align: right;
  }
  .mob-course-jump-input::placeholder { color: rgba(139,148,158,0.7); font-size: 0.8rem; }
  .mob-course-jump-btn {
    background: rgba(99,102,241,0.18);
    border: 1px solid rgba(99,102,241,0.35);
    border-radius: 10px;
    color: #818cf8;
    font-size: 1rem;
    font-weight: 700;
    padding: 7px 14px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .mob-course-jump-btn:active { background: rgba(99,102,241,0.32); }

  /* ─── P194: CRM Reminder + Subscription Renew + Meeting Alert Wave ─────────── */
  /* Contact reminder quick-row */
  .mob-contact-remind-row { gap: 6px; margin: 4px 0 2px; }
  .mob-contact-remind-btn {
    background: rgba(99,102,241,0.11) !important;
    color: #a5b4fc !important;
    border-color: rgba(99,102,241,0.22) !important;
    font-size: 0.75rem !important;
    padding: 6px 10px !important;
  }
  .mob-contact-remind-btn:active { background: rgba(99,102,241,0.22) !important; }

  /* Subscription early-renew button */
  .mob-sub-renew-early-btn {
    background: rgba(16,185,129,0.13) !important;
    color: #34d399 !important;
    border-color: rgba(16,185,129,0.28) !important;
    flex: 1;
  }
  .mob-sub-renew-early-btn:active { background: rgba(16,185,129,0.25) !important; }

  /* Meeting reminder inline button */
  .mob-meet-remind-btn {
    width: 100%;
    background: rgba(251,191,36,0.11) !important;
    color: #fbbf24 !important;
    border-color: rgba(251,191,36,0.25) !important;
    font-size: 0.82rem !important;
    margin-bottom: 4px;
    display: block;
    text-align: center;
    padding: 7px 10px !important;
    border-radius: 10px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .mob-meet-remind-btn:active { background: rgba(251,191,36,0.22) !important; }

  /* ─── P195: Stocks Quick-Add + Savings Milestones + Countdown Confetti Wave ── */
  /* Stocks symbol quick-add */
  .mob-stocks-sym-add { margin: 4px 0 2px; }
  .mob-stocks-sym-input { font-family: monospace !important; letter-spacing: 0.04em; }
  .mob-stocks-sym-btn {
    background: rgba(16,185,129,0.15) !important;
    color: #34d399 !important;
    border-color: rgba(16,185,129,0.3) !important;
  }
  .mob-stocks-sym-btn:active { background: rgba(16,185,129,0.28) !important; }

  /* Savings milestone banners */
  .mob-savings-milestone {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 600;
    border-radius: 10px;
    padding: 6px 12px;
    margin: 4px 0;
    text-align: center;
  }
  .mob-savings-milestone-25 {
    background: rgba(245,158,11,0.12);
    color: #fbbf24;
    border: 1px solid rgba(245,158,11,0.22);
  }
  .mob-savings-milestone-50 {
    background: rgba(99,102,241,0.12);
    color: #a5b4fc;
    border: 1px solid rgba(99,102,241,0.22);
  }
  .mob-savings-milestone-75 {
    background: rgba(16,185,129,0.13);
    color: #34d399;
    border: 1px solid rgba(16,185,129,0.25);
  }

  /* ─── P196: Completion Celebration Wave ─────────────────────────────────────── */
  /* All "done" completion buttons become tappable celebration triggers */
  .mob-celebrate-btn {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, rgba(251,191,36,0.15), rgba(16,185,129,0.12)) !important;
    border-color: rgba(251,191,36,0.3) !important;
    color: #fbbf24 !important;
    font-weight: 700 !important;
    letter-spacing: 0.02em;
    animation: mob-celebrate-pulse 2.5s ease-in-out infinite;
  }
  .mob-celebrate-btn:active {
    background: linear-gradient(135deg, rgba(251,191,36,0.28), rgba(16,185,129,0.22)) !important;
    transform: scale(0.97);
  }
  @keyframes mob-celebrate-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(251,191,36,0); }
    50% { box-shadow: 0 0 8px 2px rgba(251,191,36,0.18); }
  }

  /* ─── P197: Vehicle Per-Row + Appliance Warranty Reminder + Gift Celebration ── */
  /* Vehicle per-row service button */
  .mob-vehicle-row { display: flex; align-items: center; gap: 6px; }
  .mob-veh-row-service-btn {
    margin-right: auto;
    background: rgba(20,184,166,0.12);
    border: 1px solid rgba(20,184,166,0.25);
    border-radius: 8px;
    color: #2dd4bf;
    font-size: 0.78rem;
    padding: 3px 8px;
    cursor: pointer;
    transition: background 0.12s;
  }
  .mob-veh-row-service-btn:active { background: rgba(20,184,166,0.25); }

  /* Appliance warranty reminder button */
  .mob-appl-warranty-btn {
    width: 100%;
    background: rgba(245,158,11,0.11) !important;
    color: #fbbf24 !important;
    border-color: rgba(245,158,11,0.25) !important;
    font-size: 0.8rem !important;
    display: block;
    text-align: center;
    margin-bottom: 4px;
    padding: 7px 10px !important;
    border-radius: 10px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .mob-appl-warranty-btn:active { background: rgba(245,158,11,0.22) !important; }

  /* ─── P205: Card Share Wave ─── */
  .mob-card-share-action {
    background: rgba(99,102,241,0.10);
    border: 1px solid rgba(99,102,241,0.2);
    border-radius: 6px;
    color: rgba(165,180,252,0.8);
    font-size: 0.8rem;
    padding: 4px 8px;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
    margin-right: 4px;
  }
  .mob-card-share-action:active {
    background: rgba(99,102,241,0.22);
    color: #a5b4fc;
  }
  /* Pin action button in card actions row */
  .mob-card-pin-action {
    background: rgba(148,163,184,0.08);
    border: 1px solid rgba(148,163,184,0.15);
    border-radius: 6px;
    color: rgba(148,163,184,0.6);
    font-size: 0.75rem;
    padding: 4px 7px;
    cursor: pointer;
    transition: background 0.12s, color 0.12s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-card-pin-action.mob-card-pin-on {
    background: rgba(167,139,250,0.15);
    border-color: rgba(167,139,250,0.25);
    color: rgba(196,181,253,0.9);
  }
  .mob-card-pin-action:active { opacity: 0.7; }

  /* ─── P204: Course Study Time + Book/Goal Nudge Wave ─── */
  .mob-course-study-btn { background: rgba(99,102,241,0.12); color: #818cf8; }
  .mob-course-study-btn:active { background: rgba(99,102,241,0.22); }

  /* ─── P203: Finance Insight Wave — Expense Category Bar ─── */
  .mob-expense-cat-bar {
    display: flex;
    height: 5px;
    border-radius: 3px;
    overflow: hidden;
    gap: 1px;
    margin: 4px 0 2px;
  }
  .mob-cat-bar-seg {
    border-radius: 2px;
    min-width: 2px;
    transition: width 0.3s ease;
  }
  .mob-cat-legend {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 4px;
  }
  .mob-cat-leg {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.7rem;
    color: rgba(232,238,247,0.5);
  }
  .mob-cat-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
  }
  /* Subscription annual note accent */
  .mob-sub-annual-note {
    font-style: italic;
    opacity: 0.75;
  }

  /* ─── P202: Habit Nudge + Recipe Days-Since Wave ─── */
  .mob-habit-nudge {
    display: flex;
    align-items: center;
    gap: 5px;
    background: rgba(245,158,11,0.07);
    border-right: 3px solid rgba(245,158,11,0.35);
    border-radius: 0 8px 8px 0;
    padding: 5px 10px 5px 8px;
    font-size: 0.74rem;
    color: rgba(251,191,36,0.75);
    margin-bottom: 5px;
  }

  /* ─── P201: Smart Pace Wave ─── */
  /* Loan payoff date row */
  .mob-loan-payoff-row {
    display: flex;
    align-items: center;
    gap: 6px;
    background: rgba(16,185,129,0.07);
    border: 1px solid rgba(16,185,129,0.18);
    border-radius: 10px;
    padding: 6px 10px;
    margin-bottom: 6px;
  }
  .mob-loan-payoff-icon { font-size: 0.95rem; }
  .mob-loan-payoff-lbl { font-size: 0.75rem; color: rgba(232,238,247,0.55); flex: 1; }
  .mob-loan-payoff-date { font-size: 0.8rem; font-weight: 700; color: #34d399; direction: ltr; text-align: right; }

  /* ─── P206: Care & Streak Wave ─── */
  .mob-contact-quick-row .mob-qr-btn { text-decoration: none; display: inline-flex; align-items: center; gap: 4px; }
  .mob-contact-call-btn { background: rgba(52,211,153,0.10); color: #34d399; border-color: rgba(52,211,153,0.25); }
  .mob-contact-call-btn:active { background: rgba(52,211,153,0.22); border-color: rgba(52,211,153,0.5); }
  .mob-contact-wa-btn { background: rgba(74,222,128,0.10); color: #4ade80; border-color: rgba(74,222,128,0.25); }
  .mob-contact-wa-btn:active { background: rgba(74,222,128,0.22); border-color: rgba(74,222,128,0.5); }

  /* ─── P210: Temporal Intelligence Wave ─── */
  .mob-prog-ring.mob-ring-countdown .mob-ring-fill { stroke: #6366f1; }
  .mob-prog-ring.mob-ring-countdown .mob-ring-track { stroke: rgba(99,102,241,0.12); }

  /* ─── P211: History Depth Wave ─── */
  /* Vitals BP reading history mini-list */
  .mob-vitals-hist {
    display: flex;
    flex-direction: column;
    gap: 3px;
    background: rgba(239,68,68,0.04);
    border: 1px solid rgba(239,68,68,0.12);
    border-radius: 10px;
    padding: 6px 10px;
    margin-bottom: 6px;
  }
  .mob-vitals-hist-row {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
  }
  .mob-vhr-date { color: rgba(232,238,247,0.45); flex: 0 0 auto; direction: ltr; }
  .mob-vhr-val  { font-weight: 600; color: rgba(232,238,247,0.85); direction: ltr; flex: 1; }
  .mob-vhr-pulse { font-size: 0.7rem; color: rgba(232,238,247,0.45); }
  .mob-vhr-dot.mob-vhr-ok   { color: #34d399; font-size: 0.6rem; }
  .mob-vhr-dot.mob-vhr-elev { color: #f59e0b; font-size: 0.6rem; }
  .mob-vhr-dot.mob-vhr-high { color: #ef4444; font-size: 0.6rem; }

  /* Workout last sessions pills */
  .mob-wkt-sess-row {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: 6px;
  }
  .mob-wkt-sess-pill {
    background: rgba(16,185,129,0.08);
    border: 1px solid rgba(16,185,129,0.18);
    border-radius: 8px;
    padding: 3px 8px;
    font-size: 0.72rem;
    color: rgba(52,211,153,0.75);
    direction: ltr;
    white-space: nowrap;
  }

  /* ─── P213: Interactive Wave ─── */
  /* Week plan checkable items */
  .mob-wp-item { display: flex; align-items: center; gap: 8px; padding: 3px 0; }
  .mob-wp-check {
    background: none;
    border: 1.5px solid rgba(232,238,247,0.25);
    border-radius: 50%;
    width: 22px; height: 22px;
    color: rgba(232,238,247,0.4);
    font-size: 0.65rem;
    cursor: pointer;
    flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    transition: all 0.15s;
  }
  .mob-wp-check:active { transform: scale(0.9); }
  .mob-wp-checked {
    background: rgba(99,102,241,0.18);
    border-color: #6366f1;
    color: #818cf8;
  }
  .mob-wp-done .mob-week-text { text-decoration: line-through; opacity: 0.45; }

  /* Meals calories reset button */
  .mob-meals-reset-btn {
    background: rgba(239,68,68,0.08);
    border: 1px solid rgba(239,68,68,0.18);
    border-radius: 8px;
    color: rgba(239,68,68,0.65);
    font-size: 0.8rem;
    padding: 0 8px;
    height: 32px;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s;
  }
  .mob-meals-reset-btn:active { background: rgba(239,68,68,0.18); }

  /* ─── P214: Context Intelligence Wave ─── */
  /* Journal 7-day mood history strip */
  .mob-j-mood-hist {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    padding: 5px 8px;
    background: rgba(99,102,241,0.06);
    border-radius: 10px;
    margin-bottom: 6px;
  }
  .mob-j-mood-dot { font-size: 1.1rem; line-height: 1; }
  .mob-j-mood-dot.mob-j-mood-empty { font-size: 0.9rem; color: rgba(232,238,247,0.2); }

  /* ─── P215: Snapshot Wave ─── */
  .mob-attn-pill-row { display: flex; flex-wrap: wrap; gap: 4px; margin: 4px 0 6px; }
  .mob-attn-pill {
    background: rgba(99,102,241,0.1);
    border: 1px solid rgba(99,102,241,0.22);
    border-radius: 20px;
    padding: 2px 9px;
    font-size: 0.72rem;
    color: rgba(232,238,247,0.75);
    white-space: nowrap;
  }
  .mob-attn-more { font-size: 0.72rem; color: rgba(232,238,247,0.35); align-self: center; padding: 2px 4px; }

  /* ─── P223: Memory Wave ─── */
  .mob-mood-trend {
    display: flex;
    gap: 5px;
    justify-content: center;
    padding: 4px 0 2px;
  }
  .mob-mood-tiny {
    font-size: 1.2rem;
    line-height: 1;
    opacity: 0.75;
    filter: grayscale(0.2);
  }

  /* ─── P225: Proximity Wave ─── */
  .mob-bd-remind-btn {
    display: block;
    width: 100%;
    margin: 4px 0 2px;
    padding: 7px 12px;
    background: rgba(245,158,11,0.12);
    border: 1px solid rgba(245,158,11,0.28);
    border-radius: 10px;
    color: #f59e0b;
    font-size: 0.82rem;
    font-weight: 600;
    text-align: center;
    cursor: pointer;
  }
  .mob-bd-remind-btn:active { opacity: 0.75; transform: scale(0.98); }

  /* ─── P226: Insight Wave ─── */
  .mob-pd-save-note { color: #34d399; font-weight: 600; }

  /* ─── P227: Context II Wave ─── */
  /* (no new rules — reuses existing mob-stat-strip / mob-stat-v-pos) */

  /* ─── P228: Commitment Wave ─── */
  /* (no new rules — commitment/avg/streak use existing stat/pos/warn classes) */

  /* ─── P229: Awareness Wave ─── */
  /* (no new rules — reminder/mood/workout use existing stat-strip / warn classes) */

  /* ─── P230: Security & Media Wave ─── */
  .mob-pw-strength-bar { display:flex; gap:4px; margin:2px 16px 6px; }
  .mob-pw-sb-seg { flex:1; height:4px; border-radius:2px; background:#2a2540; }
  .mob-pw-seg-act.mob-pw-seg-weak { background:#f87171; }
  .mob-pw-seg-act.mob-pw-seg-mid { background:#fbbf24; }
  .mob-pw-seg-act.mob-pw-seg-strong { background:#34d399; }

  /* ─── P231: Finance Insight Wave ─── */
  /* (no new rules — crypto/gold/IOU use existing stat-strip classes) */

  /* ─── P232: Planning & Habit Wave ─── */
  /* (no new rules — week-plan/routine/language use existing stat-strip/habit-nudge) */

  /* ─── P233: Financial Clarity Wave ─── */
  /* (no new rules — subscription/document/loan use existing stat-strip/warn classes) */

  /* ─── P234: Precision Detail Wave ─── */
  /* (no new rules — medicine/countdown/tracker use existing stat-strip/note classes) */
}

/* ═══════════════ 🤖 Automations Hub ═══════════════ */

/* Server status card */
.auto-status-card {
  background: linear-gradient(135deg, rgba(102,126,234,0.08), rgba(118,75,162,0.08));
  border: 1px solid var(--border-color, rgba(120,120,140,0.2));
  border-radius: 14px;
  padding: 16px;
  margin-bottom: 20px;
}
.auto-status-head {
  display: flex; align-items: center; gap: 12px;
}
.auto-status-dot {
  width: 12px; height: 12px; border-radius: 50%;
  background: #94a3b8;
  flex-shrink: 0;
  transition: background-color 0.3s, box-shadow 0.3s;
}
.auto-status-dot.online {
  background: #10b981;
  box-shadow: 0 0 0 4px rgba(16,185,129,0.18);
  animation: auto-pulse 2.5s ease-in-out infinite;
}
.auto-status-dot.offline {
  background: #ef4444;
  box-shadow: 0 0 0 4px rgba(239,68,68,0.18);
}
.auto-status-dot.connecting {
  background: #f59e0b;
  animation: auto-pulse 1s ease-in-out infinite;
}
@keyframes auto-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}
.auto-status-info { flex: 1; min-width: 0; }
.auto-status-text { font-weight: 700; font-size: 14px; }
.auto-status-meta {
  font-size: 12px; color: var(--text-secondary, #64748b);
  font-family: ui-monospace, "SF Mono", monospace;
  margin-top: 2px;
}
.auto-status-refresh {
  background: transparent; border: 1px solid var(--border-color, rgba(120,120,140,0.3));
  width: 32px; height: 32px; border-radius: 8px;
  color: var(--text-primary); cursor: pointer; font-size: 16px;
  transition: transform 0.3s, background 0.2s;
}
.auto-status-refresh:hover { background: rgba(120,120,140,0.1); transform: rotate(180deg); }
.auto-status-stats {
  display: flex; gap: 8px; margin-top: 12px; flex-wrap: wrap;
}
.auto-stat-pill {
  background: rgba(16,185,129,0.12); color: #10b981;
  padding: 4px 10px; border-radius: 12px; font-size: 12px; font-weight: 600;
  font-family: ui-monospace, "SF Mono", monospace;
}
.auto-stat-pill.auto-stat-warn { background: rgba(239,68,68,0.12); color: #ef4444; }

/* Smart Create row */
.auto-smart-row {
  display: flex; gap: 8px; margin-top: 8px;
}
.auto-smart-input {
  flex: 1; min-width: 0;
}
.auto-smart-btn {
  padding: 0 18px; border: none; border-radius: 10px;
  background: linear-gradient(135deg, #667eea, #764ba2);
  color: white; font-weight: 700; font-size: 14px;
  cursor: pointer; white-space: nowrap;
  transition: transform 0.15s, box-shadow 0.2s;
  min-height: 44px;
}
.auto-smart-btn:hover:not(:disabled) {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(102,126,234,0.3);
}
.auto-smart-btn:disabled { opacity: 0.6; cursor: not-allowed; }

.auto-smart-examples {
  display: flex; gap: 6px; flex-wrap: wrap; margin-top: 10px;
}
.auto-example-chip {
  background: rgba(102,126,234,0.08); border: 1px solid rgba(102,126,234,0.2);
  color: var(--text-primary); padding: 6px 12px; border-radius: 14px;
  font-size: 12px; cursor: pointer; transition: background 0.2s;
}
.auto-example-chip:hover { background: rgba(102,126,234,0.15); }

.auto-smart-result { margin-top: 14px; }
.auto-smart-pending {
  background: rgba(245,158,11,0.1); color: #f59e0b;
  padding: 10px 14px; border-radius: 10px; font-size: 13px;
  text-align: center; animation: auto-pulse 1.4s ease-in-out infinite;
}
.auto-smart-success {
  background: rgba(16,185,129,0.08); border: 1px solid rgba(16,185,129,0.25);
  border-radius: 12px; padding: 14px;
  animation: auto-slide-in 0.3s ease-out;
}
@keyframes auto-slide-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.auto-smart-success-head { font-weight: 700; color: #10b981; margin-bottom: 8px; }
.auto-smart-card-preview {
  display: flex; gap: 12px; padding: 10px; background: rgba(255,255,255,0.04);
  border-radius: 8px;
}
.auto-smart-card-icon { font-size: 28px; flex-shrink: 0; }
.auto-smart-card-body { flex: 1; min-width: 0; }
.auto-smart-card-title { font-weight: 700; font-size: 15px; margin-bottom: 4px; }
.auto-smart-card-type {
  display: inline-block; background: rgba(102,126,234,0.15); color: #667eea;
  padding: 2px 8px; border-radius: 6px; font-size: 11px; font-weight: 600;
}
.auto-smart-card-meta {
  font-size: 12px; color: var(--text-secondary); margin-top: 6px;
}
.auto-smart-card-tags { margin-top: 6px; display: flex; gap: 4px; flex-wrap: wrap; }
.auto-smart-tag {
  background: rgba(120,120,140,0.15); padding: 2px 8px; border-radius: 6px; font-size: 11px;
}
.auto-smart-error {
  background: rgba(239,68,68,0.08); border: 1px solid rgba(239,68,68,0.25);
  color: #ef4444; padding: 10px 14px; border-radius: 10px; font-size: 13px;
}

/* Workflows list */
.auto-wf-list {
  display: flex; flex-direction: column; gap: 8px;
}
.auto-wf-item {
  display: flex; align-items: center; gap: 12px;
  padding: 12px; background: rgba(120,120,140,0.05);
  border: 1px solid var(--border-color, rgba(120,120,140,0.15));
  border-radius: 10px;
}
.auto-wf-icon { font-size: 22px; flex-shrink: 0; }
.auto-wf-body { flex: 1; min-width: 0; }
.auto-wf-name { font-weight: 700; font-size: 14px; }
.auto-wf-desc { font-size: 12px; color: var(--text-secondary); margin-top: 2px; }
.auto-wf-badge {
  padding: 4px 10px; border-radius: 10px; font-size: 11px; font-weight: 700;
}
.auto-wf-badge.active { background: rgba(16,185,129,0.15); color: #10b981; }
.auto-wf-badge.inactive { background: rgba(120,120,140,0.15); color: #94a3b8; }

/* Info block */
.auto-info-block {
  background: rgba(102,126,234,0.05);
  border: 1px solid rgba(102,126,234,0.15);
  border-radius: 10px; padding: 14px;
}
.auto-info-intro { font-size: 13px; margin: 0 0 10px 0; }
.auto-info-list {
  list-style: none; padding: 0; margin: 0;
  display: flex; flex-direction: column; gap: 6px;
  font-size: 13px;
}
.auto-info-list li {
  padding: 6px 10px; background: rgba(255,255,255,0.04);
  border-radius: 6px;
}

/* Activity */
.auto-activity-list {}
.auto-activity-summary {
  background: rgba(120,120,140,0.05);
  border-radius: 10px; padding: 14px;
}
.auto-activity-total {
  font-weight: 700; font-size: 14px; margin-bottom: 10px;
  color: var(--text-primary);
}
.auto-activity-row {
  display: flex; justify-content: space-between;
  padding: 6px 0; font-size: 13px;
  border-bottom: 1px solid var(--border-color, rgba(120,120,140,0.1));
}
.auto-activity-row:last-child { border-bottom: none; }
.auto-empty {
  text-align: center; padding: 20px; color: var(--text-secondary);
  font-size: 13px;
}

/* n8n direct link */
.auto-n8n-link {
  display: flex; justify-content: space-between; align-items: center;
  padding: 14px 16px; background: linear-gradient(135deg, #667eea, #764ba2);
  color: white !important; text-decoration: none; border-radius: 10px;
  margin-top: 16px; font-weight: 700;
  transition: transform 0.15s, box-shadow 0.2s;
}
.auto-n8n-link:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(102,126,234,0.4);
}
.auto-n8n-host {
  font-family: ui-monospace, "SF Mono", monospace;
  font-size: 11px; font-weight: 500; opacity: 0.85;
}

.auto-loading {
  text-align: center; padding: 16px; color: var(--text-secondary);
  font-size: 13px;
}

/* Mobile adjustments */
@media (max-width: 600px) {
  .auto-smart-row { flex-direction: column; }
  .auto-smart-btn { width: 100%; }
  .auto-status-meta { word-break: break-all; }
}

/* Activity row variations (warn/bad) */
.auto-activity-row.auto-activity-warn { color: #f59e0b; font-weight: 700; }
.auto-activity-row.auto-activity-bad  { color: #ef4444; font-weight: 700; }

/* ═══════════════ ✨ Mobile Smart Create Modal ═══════════════ */
.mob-smart-overlay {
  position: fixed; inset: 0; z-index: 10000;
  background: rgba(0, 0, 0, 0);
  display: flex; align-items: flex-end; justify-content: center;
  pointer-events: none;
  transition: background-color 0.25s ease;
}
.mob-smart-overlay.mob-smart-in {
  background: rgba(0, 0, 0, 0.55);
  pointer-events: auto;
}
.mob-smart-overlay.mob-smart-out {
  background: rgba(0, 0, 0, 0);
}

.mob-smart-shell {
  width: 100%;
  max-width: 520px;
  margin: 0 auto;
  background: var(--card-bg, #1a1a2e);
  border-radius: 22px 22px 0 0;
  padding: 22px 18px 28px;
  box-shadow: 0 -10px 40px rgba(0,0,0,0.6);
  transform: translateY(110%);
  transition: transform 0.32s cubic-bezier(0.32, 0.72, 0.18, 1);
  max-height: 85vh;
  overflow-y: auto;
}
.mob-smart-overlay.mob-smart-in .mob-smart-shell {
  transform: translateY(0);
}
.mob-smart-overlay.mob-smart-out .mob-smart-shell {
  transform: translateY(110%);
}

.mob-smart-head {
  display: flex; align-items: center; gap: 12px;
  margin-bottom: 14px;
}
.mob-smart-head-icon {
  font-size: 26px;
  background: linear-gradient(135deg, #667eea, #764ba2);
  width: 44px; height: 44px;
  border-radius: 14px;
  display: flex; align-items: center; justify-content: center;
}
.mob-smart-head-text { flex: 1; min-width: 0; }
.mob-smart-head-title { font-weight: 700; font-size: 16px; }
.mob-smart-head-sub {
  font-size: 12px; color: var(--text-secondary, #94a3b8);
  margin-top: 2px;
}
.mob-smart-close {
  width: 36px; height: 36px;
  border: none; border-radius: 10px;
  background: rgba(120,120,140,0.12);
  color: var(--text-primary);
  font-size: 16px; cursor: pointer;
  flex-shrink: 0;
}

.mob-smart-textarea {
  width: 100%;
  min-height: 100px;
  max-height: 200px;
  padding: 14px;
  border: 1.5px solid var(--border-color, rgba(120,120,140,0.3));
  border-radius: 14px;
  background: rgba(255,255,255,0.04);
  color: var(--text-primary);
  font-size: 15px;
  font-family: inherit;
  resize: vertical;
  outline: none;
  transition: border-color 0.2s;
}
.mob-smart-textarea:focus {
  border-color: #667eea;
  background: rgba(255,255,255,0.06);
}

.mob-smart-examples {
  display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px;
}
.mob-smart-chip {
  background: rgba(102,126,234,0.1);
  border: 1px solid rgba(102,126,234,0.25);
  color: var(--text-primary);
  padding: 6px 12px;
  border-radius: 14px;
  font-size: 12px;
  cursor: pointer;
  transition: background 0.2s;
}
.mob-smart-chip:active { background: rgba(102,126,234,0.2); }

.mob-smart-status {
  margin-top: 14px;
  min-height: 0;
}
.mob-smart-status:empty { display: none; }
.mob-smart-pending {
  background: rgba(245,158,11,0.1);
  color: #f59e0b;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 13px;
  text-align: center;
  animation: mob-smart-pulse 1.4s ease-in-out infinite;
}
@keyframes mob-smart-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.55; }
}
.mob-smart-success {
  background: rgba(16,185,129,0.08);
  border: 1px solid rgba(16,185,129,0.25);
  padding: 12px 14px;
  border-radius: 12px;
  font-size: 14px;
  animation: mob-smart-slide-in 0.28s ease-out;
}
@keyframes mob-smart-slide-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}
.mob-smart-success-type {
  display: inline-block;
  background: rgba(102,126,234,0.18);
  color: #818cf8;
  padding: 2px 8px;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 600;
  margin-right: 6px;
}
.mob-smart-success-meta {
  font-size: 12px;
  color: var(--text-secondary);
  margin-top: 6px;
}
.mob-smart-error {
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.25);
  color: #ef4444;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 13px;
}

.mob-smart-actions {
  display: flex; gap: 8px; margin-top: 16px;
}
.mob-smart-cancel {
  flex: 1;
  padding: 12px;
  border: 1px solid var(--border-color, rgba(120,120,140,0.3));
  border-radius: 12px;
  background: transparent;
  color: var(--text-primary);
  font-weight: 600;
  font-size: 14px;
  cursor: pointer;
}
.mob-smart-submit {
  flex: 2;
  padding: 12px;
  border: none;
  border-radius: 12px;
  background: linear-gradient(135deg, #667eea, #764ba2);
  color: white;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  transition: opacity 0.2s, transform 0.15s;
}
.mob-smart-submit:active { transform: scale(0.97); }
.mob-smart-submit:disabled { opacity: 0.6; cursor: not-allowed; }

/* ═══════════════════════════════════════════════════════════════════════════
 *  MOBILE HOME HERO BANNER  (P269 — Today-quality home screen)
 *  Mirrors .today-hero but sized for the narrow mobile feed column.
 * ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {

/* ── Outer shell ─────────────────────────────────────────── */
.mob-home-hero {
  position: relative;
  margin: 0 0 2px;
  padding: 16px 16px 14px;
  border-radius: 20px;
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(139,92,246,0.28) 0%, transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(59,130,246,0.22) 0%, transparent 58%),
    linear-gradient(160deg, rgba(28,22,48,0.82) 0%, rgba(14,12,28,0.96) 100%);
  border: 1px solid rgba(255,255,255,0.08);
  box-shadow: 0 10px 32px rgba(0,0,0,0.45), 0 2px 0 rgba(255,255,255,0.04) inset;
  overflow: hidden;
  animation: mob-hero-in 0.22s cubic-bezier(0.16,1,0.3,1) both;
}
@keyframes mob-hero-in {
  from { opacity: 0; transform: translateY(-10px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}
/* Decorative radial shimmer top-right */
.mob-home-hero::before {
  content: '';
  position: absolute;
  top: -30px; left: -30px;
  width: 200px; height: 200px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(139,92,246,0.18) 0%, transparent 70%);
  pointer-events: none;
}
/* Danger tone */
.mob-home-hero-danger {
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(239,68,68,0.3) 0%,  transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(245,158,11,0.2) 0%, transparent 58%),
    linear-gradient(160deg, rgba(55,18,22,0.85) 0%, rgba(28,10,14,0.97) 100%);
  border-color: rgba(239,68,68,0.18);
}
/* Warn tone */
.mob-home-hero-warn {
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(245,158,11,0.26) 0%, transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(139,92,246,0.2) 0%, transparent 58%),
    linear-gradient(160deg, rgba(48,32,14,0.85) 0%, rgba(22,16,8,0.97) 100%);
  border-color: rgba(245,158,11,0.15);
}
/* Time-of-day ambient tones (calm state only) — P280 */
/* ── P287: Animated ambient gradients per time-of-day ────────────────────── */

/* Shared animation — background-size pulses so the radial gradients "breathe" */
@keyframes hero-breathe-morning   { 0%,100%{background-position:0% 0%,100% 100%,center} 50%{background-position:8% 4%,92% 96%,center} }
@keyframes hero-breathe-afternoon { 0%,100%{background-position:0% 0%,100% 100%,center} 50%{background-position:6% 8%,94% 92%,center} }
@keyframes hero-breathe-evening   { 0%,100%{background-position:0% 0%,100% 100%,center} 50%{background-position:10% 5%,90% 95%,center} }
@keyframes hero-breathe-night     { 0%,100%{background-position:0% 0%,100% 100%,center} 50%{background-position:4% 10%,96% 90%,center} }

/* Subtle shimmer-sweep across the hero */
@keyframes hero-shimmer {
  0%   { transform: translateX(-100%) skewX(-15deg); opacity: 0; }
  40%  { opacity: 0.04; }
  60%  { opacity: 0.04; }
  100% { transform: translateX(250%) skewX(-15deg); opacity: 0; }
}

.mob-home-hero-morning,
.mob-home-hero-afternoon,
.mob-home-hero-evening,
.mob-home-hero-night {
  position: relative;
  overflow: hidden;
  background-size: 180% 180%, 180% 180%, 100% 100%;
}
/* Shimmer pseudo-element */
.mob-home-hero-morning::after,
.mob-home-hero-afternoon::after,
.mob-home-hero-evening::after,
.mob-home-hero-night::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,0.06) 50%, transparent 60%);
  animation: hero-shimmer 8s ease-in-out infinite;
  pointer-events: none;
}

.mob-home-hero-morning {
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(251,191,36,0.26) 0%, transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(249,115,22,0.18) 0%, transparent 58%),
    linear-gradient(160deg, rgba(40,28,12,0.88) 0%, rgba(14,12,28,0.97) 100%);
  border-color: rgba(251,191,36,0.15);
  animation: hero-breathe-morning 12s ease-in-out infinite;
}
.mob-home-hero-morning::after { animation-delay: 0s; }

.mob-home-hero-afternoon {
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(59,130,246,0.28) 0%, transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(16,185,129,0.18) 0%, transparent 58%),
    linear-gradient(160deg, rgba(12,22,42,0.88) 0%, rgba(8,14,28,0.97) 100%);
  border-color: rgba(59,130,246,0.15);
  animation: hero-breathe-afternoon 14s ease-in-out infinite;
}
.mob-home-hero-afternoon::after { animation-delay: -2s; }

.mob-home-hero-evening {
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(168,85,247,0.30) 0%, transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(239,68,68,0.16) 0%, transparent 58%),
    linear-gradient(160deg, rgba(32,14,42,0.88) 0%, rgba(14,10,28,0.97) 100%);
  border-color: rgba(168,85,247,0.16);
  animation: hero-breathe-evening 10s ease-in-out infinite;
}
.mob-home-hero-evening::after { animation-delay: -4s; }

.mob-home-hero-night {
  background:
    radial-gradient(130% 110% at 0% 0%,   rgba(30,27,75,0.65) 0%, transparent 55%),
    radial-gradient(130% 110% at 100% 100%, rgba(49,46,129,0.35) 0%, transparent 58%),
    linear-gradient(160deg, rgba(10,8,28,0.95) 0%, rgba(6,6,20,0.99) 100%);
  border-color: rgba(79,70,229,0.12);
  animation: hero-breathe-night 16s ease-in-out infinite;
}
.mob-home-hero-night::after { animation-delay: -6s; }

/* Respect reduced-motion */
@media (prefers-reduced-motion: reduce) {
  .mob-home-hero-morning,
  .mob-home-hero-afternoon,
  .mob-home-hero-evening,
  .mob-home-hero-night { animation: none; }
  .mob-home-hero-morning::after,
  .mob-home-hero-afternoon::after,
  .mob-home-hero-evening::after,
  .mob-home-hero-night::after { animation: none; }
}

/* ── Top row: date + live clock ──────────────────────────── */
.mob-hw-top {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 7px;
  font-size: 0.72rem;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0.01em;
}
.mob-hw-date { font-weight: 600; color: rgba(255,255,255,0.65); }
.mob-hw-time { font-family: var(--font-mono, ui-monospace, monospace); letter-spacing: 0.04em; }

/* ── Lead headline ───────────────────────────────────────── */
.mob-hw-lead {
  font-size: 1.2rem;
  font-weight: 800;
  color: #fff;
  margin: 0 0 12px;
  line-height: 1.25;
  letter-spacing: -0.02em;
}

/* ── Lead row: greeting + streak badge ──────────────────── */
.mob-hw-lead-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 12px;
}
.mob-hw-lead-row .mob-hw-lead { margin-bottom: 0; }
.mob-hw-streak {
  display: flex;
  align-items: center;
  gap: 3px;
  padding: 3px 9px;
  background: rgba(245,158,11,0.14);
  border: 1px solid rgba(245,158,11,0.28);
  border-radius: 99px;
  flex-shrink: 0;
  white-space: nowrap;
}
.mob-hw-streak-fire { font-size: 13px; line-height: 1; }
.mob-hw-streak-num  { font-size: 0.88rem; font-weight: 800; color: #fbbf24; font-variant-numeric: tabular-nums; }
.mob-hw-streak-lbl  { font-size: 0.56rem; color: rgba(251,191,36,0.7); font-weight: 600; }

/* ── 7-day week strip ────────────────────────────────────── */
.mob-hw-week {
  display: flex;
  gap: 3px;
  margin-bottom: 12px;
}
.mob-hw-day {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  padding: 5px 2px 4px;
  border-radius: 10px;
  transition: background 0.15s;
  position: relative;
  /* P289: min height for bar area */
  min-height: 56px;
}
.mob-hw-dlbl { font-size: 0.55rem; color: rgba(255,255,255,0.35); font-weight: 600; letter-spacing: 0.03em; }
.mob-hw-dnum { font-size: 0.72rem; font-weight: 700; color: rgba(255,255,255,0.45); }
.mob-hw-ddot {
  width: 4px; height: 4px;
  border-radius: 50%;
  background: transparent;
}
.mob-hw-ddot-has   { background: rgba(139,92,246,0.65); }
.mob-hw-ddot-today { background: #a78bfa; box-shadow: 0 0 4px rgba(167,139,250,0.7); }
/* P289: Activity bar — shown at bottom of day cell */
.mob-hw-dbar {
  position: absolute;
  bottom: 3px;
  left: 20%;
  right: 20%;
  min-height: 2px;
  border-radius: 2px 2px 0 0;
  background: rgba(34,211,117,0.55);
  transition: height 0.3s ease;
}
.mob-hw-day-today .mob-hw-dbar { background: rgba(34,211,117,0.8); }
/* Active (has completions) day subtle tint */
.mob-hw-day-active:not(.mob-hw-day-today) {
  background: rgba(34,211,117,0.05);
}
.mob-hw-day-active .mob-hw-dlbl { color: rgba(255,255,255,0.5); }
/* Today */
.mob-hw-day-today {
  background: rgba(139,92,246,0.22);
  border: 1px solid rgba(139,92,246,0.35);
}
.mob-hw-day-today .mob-hw-dlbl { color: #d8b4fe; }
.mob-hw-day-today .mob-hw-dnum { color: #fff; font-size: 0.8rem; }
/* Past days */
.mob-hw-day-past .mob-hw-dlbl,
.mob-hw-day-past .mob-hw-dnum { color: rgba(255,255,255,0.2); }

/* ── Stats 2×2 grid ──────────────────────────────────────── */
.mob-hw-stats {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 5px;
  margin-bottom: 12px;
}
.mob-hw-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 9px 2px;
  border-radius: 11px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.07);
  cursor: pointer;
  transition: transform 0.12s ease, background 0.12s;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}
.mob-hw-stat:active { transform: scale(0.92); background: rgba(255,255,255,0.08); }
.mob-hw-stat[data-empty="1"] { opacity: 0.45; }
.mob-hw-snum {
  font-size: 1.05rem;
  font-weight: 800;
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.03em;
}
.mob-hw-slbl { font-size: 0.56rem; color: rgba(255,255,255,0.5); font-weight: 600; margin-top: 1px; }
.mob-hw-stat-danger  .mob-hw-snum { color: #f87171; }
.mob-hw-stat-warn    .mob-hw-snum { color: #fbbf24; }
.mob-hw-stat-info    .mob-hw-snum { color: #60a5fa; }
.mob-hw-stat-success .mob-hw-snum { color: #34d399; }
.mob-hw-stat-neutral .mob-hw-snum { color: rgba(255,255,255,0.55); }
.mob-hw-stat[data-empty="1"]      { opacity: 0.4; }

/* ── Next-up item ────────────────────────────────────────── */
.mob-hw-next {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: rgba(255,255,255,0.05);
  border: 1px solid rgba(255,255,255,0.08);
  border-radius: 10px;
  font-size: 0.72rem;
  color: rgba(255,255,255,0.7);
  overflow: hidden;
}
.mob-hw-next-over {
  background: rgba(239,68,68,0.1);
  border-color: rgba(239,68,68,0.2);
  color: rgba(252,165,165,0.85);
  animation: mob-next-over-pulse 2.5s ease-in-out infinite;
}
@keyframes mob-next-over-pulse {
  0%, 100% { border-color: rgba(239,68,68,0.2); box-shadow: none; }
  50% { border-color: rgba(239,68,68,0.4); box-shadow: 0 0 0 2px rgba(239,68,68,0.12); }
}
.mob-hw-next-ico { font-size: 13px; flex-shrink: 0; }
.mob-hw-next-ttl { flex: 1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mob-hw-next-time { font-size: 0.65rem; color: rgba(255,255,255,0.45); flex-shrink: 0; font-variant-numeric: tabular-nums; }
.mob-hw-next-over .mob-hw-next-time { color: rgba(252,165,165,0.6); }

/* ── Today's progress bar ───────────────────────────────── */
.mob-hw-today-prog {
  margin-bottom: 10px;
}
.mob-hw-tp-label {
  display: flex;
  justify-content: space-between;
  font-size: 0.62rem;
  font-weight: 600;
  color: rgba(255,255,255,0.45);
  margin-bottom: 4px;
  letter-spacing: 0.03em;
}
.mob-hw-tp-frac { font-variant-numeric: tabular-nums; }
.mob-hw-tp-track {
  height: 5px;
  background: rgba(255,255,255,0.08);
  border-radius: 99px;
  overflow: hidden;
}
.mob-hw-tp-fill {
  height: 100%;
  border-radius: 99px;
  transition: width 0.6s cubic-bezier(.16,1,.3,1);
  min-width: 4px;
}

/* ── Habit nudge row ────────────────────────────────────── */
.mob-hw-nudge {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 5px 10px;
  background: rgba(245,158,11,0.08);
  border: 1px solid rgba(245,158,11,0.15);
  border-radius: 10px;
  margin-bottom: 10px;
  font-size: 0.7rem;
  color: rgba(251,191,36,0.8);
}
.mob-hw-nudge-ico { font-size: 14px; flex-shrink: 0; }
.mob-hw-nudge-txt { font-weight: 600; }

/* ── CTA row ─────────────────────────────────────────────── */
.mob-hw-actions {
  display: flex;
  gap: 6px;
}
.mob-hw-btn {
  flex: 1;
  padding: 8px 6px;
  border-radius: 11px;
  border: 1px solid rgba(255,255,255,0.1);
  background: rgba(255,255,255,0.06);
  color: rgba(255,255,255,0.82);
  font-size: 0.76rem;
  font-weight: 700;
  cursor: pointer;
  transition: background 0.12s, transform 0.12s;
  -webkit-tap-highlight-color: transparent;
  white-space: nowrap;
}
.mob-hw-btn:active { background: rgba(255,255,255,0.12); transform: scale(0.95); }
.mob-hw-btn-primary {
  background: linear-gradient(135deg, rgba(139,92,246,0.55), rgba(79,70,229,0.45));
  border-color: rgba(139,92,246,0.4);
  color: #e9d5ff;
}
.mob-hw-btn-primary:active { background: linear-gradient(135deg, rgba(139,92,246,0.7), rgba(79,70,229,0.6)); }

/* ── P281 Hero Inline Quick-Capture ──────────────────────── */
.mob-hw-capture {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 10px;
  padding: 8px 10px;
  background: rgba(99,102,241,0.08);
  border: 1px solid rgba(99,102,241,0.22);
  border-radius: 12px;
}
.mob-hw-cap-ico {
  font-size: 15px;
  flex-shrink: 0;
  opacity: 0.75;
}
.mob-hw-cap-input {
  flex: 1;
  min-width: 0;
  background: transparent;
  border: none;
  outline: none;
  color: rgba(232,238,247,0.9);
  font-size: 0.78rem;
  font-family: inherit;
  padding: 3px 0;
}
.mob-hw-cap-input::placeholder {
  color: rgba(148,163,184,0.55);
  font-size: 0.76rem;
}
.mob-hw-cap-btn {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 9px;
  border: none;
  background: rgba(99,102,241,0.45);
  color: #c7d2fe;
  font-size: 1.1rem;
  font-weight: 700;
  line-height: 1;
  cursor: pointer;
  transition: background 0.12s, transform 0.1s;
  -webkit-tap-highlight-color: transparent;
}
.mob-hw-cap-btn:active { background: rgba(99,102,241,0.7); transform: scale(0.9); }

/* ── P282 Sticky Urgency Pill ──────────────────────────────── */
/* Position: fixed, above FAB (FAB is at bottom:20px, ~56px tall) */

} /* end @media mobile */

/* Pill lives outside @media block so it's always positioned correctly */
#mob-urgency-pill {
  position: fixed;
  bottom: 90px;
  left: 20px;
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 7px 12px 7px 10px;
  background: linear-gradient(135deg, rgba(239,68,68,0.88), rgba(220,38,38,0.78));
  border: 1px solid rgba(239,68,68,0.4);
  border-radius: 20px;
  box-shadow: 0 4px 20px rgba(239,68,68,0.35), 0 2px 8px rgba(0,0,0,0.3);
  color: #fff;
  font-size: 0.78rem;
  font-weight: 700;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  z-index: 1020;
  /* hidden by default */
  opacity: 0;
  transform: translateY(12px) scale(0.88);
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
}
#mob-urgency-pill.mob-urgency-pill-show {
  opacity: 1;
  transform: translateY(0) scale(1);
  pointer-events: auto;
}
#mob-urgency-pill:active {
  transform: scale(0.93);
  background: linear-gradient(135deg, rgba(239,68,68,1), rgba(220,38,38,0.9));
}
.mob-up-ico { font-size: 13px; }
.mob-up-cnt {
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: -0.3px;
}

/* Card highlight pulse when scrolled into view from pill tap */
.mob-card-highlight {
  animation: mob-card-hl-pulse 1.2s ease forwards;
}
@keyframes mob-card-hl-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(239,68,68,0.6); }
  40%  { box-shadow: 0 0 0 8px rgba(239,68,68,0.25); }
  100% { box-shadow: 0 0 0 0 rgba(239,68,68,0); }
}

/* ── Type-accent left border on mob-card (P269) ──────────────
   Each card type gets a 3px colored left border so the user
   can distinguish card types at a glance.                       */
@media (max-width: 767px) {
  .card.mob-card { border-right: 3px solid transparent; }
  .card.mob-card[data-type="reminder"]          { border-right-color: rgba(239,68,68,0.65); }
  .card.mob-card[data-type="note"]              { border-right-color: rgba(99,102,241,0.55); }
  .card.mob-card[data-type="checklist"]         { border-right-color: rgba(34,197,94,0.6); }
  .card.mob-card[data-type="book"]              { border-right-color: rgba(245,158,11,0.65); }
  .card.mob-card[data-type="goal"]              { border-right-color: rgba(167,139,250,0.65); }
  .card.mob-card[data-type="savings_goal"]      { border-right-color: rgba(251,191,36,0.7); }
  .card.mob-card[data-type="expense"]           { border-right-color: rgba(249,115,22,0.65); }
  .card.mob-card[data-type="subscription"]      { border-right-color: rgba(79,70,229,0.65); }
  .card.mob-card[data-type="tracker"]           { border-right-color: rgba(99,102,241,0.6); }
  .card.mob-card[data-type="counter"]           { border-right-color: rgba(148,163,184,0.5); }
  .card.mob-card[data-type="routine"]           { border-right-color: rgba(34,197,94,0.65); }
  .card.mob-card[data-type="workout"]           { border-right-color: rgba(34,197,94,0.7); }
  .card.mob-card[data-type="fasting"]           { border-right-color: rgba(167,139,250,0.65); }
  .card.mob-card[data-type="quran"]             { border-right-color: rgba(16,185,129,0.65); }
  .card.mob-card[data-type="meditation"]        { border-right-color: rgba(139,92,246,0.6); }
  .card.mob-card[data-type="pomodoro"]          { border-right-color: rgba(239,68,68,0.65); }
  .card.mob-card[data-type="countdown"]         { border-right-color: rgba(59,130,246,0.6); }
  .card.mob-card[data-type="document"]          { border-right-color: rgba(251,191,36,0.65); }
  .card.mob-card[data-type="vehicle"]           { border-right-color: rgba(20,184,166,0.65); }
  .card.mob-card[data-type="medicine"]          { border-right-color: rgba(34,197,94,0.6); }
  .card.mob-card[data-type="trip"]              { border-right-color: rgba(56,189,248,0.65); }
  .card.mob-card[data-type="contact"]           { border-right-color: rgba(236,72,153,0.55); }
  .card.mob-card[data-type="birthday"]          { border-right-color: rgba(244,63,94,0.65); }
  .card.mob-card[data-type="project"]           { border-right-color: rgba(59,130,246,0.65); }
  .card.mob-card[data-type="course"]            { border-right-color: rgba(79,70,229,0.65); }
  .card.mob-card[data-type="loan"]              { border-right-color: rgba(34,197,94,0.6); }
  .card.mob-card[data-type="iou"]               { border-right-color: rgba(20,184,166,0.6); }
  .card.mob-card[data-type="stocks"]            { border-right-color: rgba(34,197,94,0.7); }
  .card.mob-card[data-type="crypto"]            { border-right-color: rgba(249,115,22,0.65); }
  .card.mob-card[data-type="net_worth"]         { border-right-color: rgba(251,191,36,0.7); }
  .card.mob-card[data-type="gold"]              { border-right-color: rgba(251,191,36,0.75); }
  .card.mob-card[data-type="language"]          { border-right-color: rgba(34,211,238,0.65); }
  .card.mob-card[data-type="watchlist"]         { border-right-color: rgba(249,115,22,0.6); }
  .card.mob-card[data-type="podcast"]           { border-right-color: rgba(167,139,250,0.6); }
  .card.mob-card[data-type="playlist"]          { border-right-color: rgba(139,92,246,0.6); }
  .card.mob-card[data-type="recipe"]            { border-right-color: rgba(249,115,22,0.6); }
  .card.mob-card[data-type="journal"]           { border-right-color: rgba(99,102,241,0.55); }
  .card.mob-card[data-type="idea"]              { border-right-color: rgba(245,158,11,0.65); }
  .card.mob-card[data-type="quote"]             { border-right-color: rgba(139,92,246,0.5); }
  .card.mob-card[data-type="link"]              { border-right-color: rgba(59,130,246,0.55); }
  .card.mob-card[data-type="linkgroup"]         { border-right-color: rgba(59,130,246,0.6); }
  .card.mob-card[data-type="page"]              { border-right-color: rgba(148,163,184,0.5); }
  .card.mob-card[data-type="password"]          { border-right-color: rgba(34,197,94,0.55); }
  .card.mob-card[data-type="fields"]            { border-right-color: rgba(148,163,184,0.5); }
  .card.mob-card[data-type="wifi"]              { border-right-color: rgba(59,130,246,0.5); }
  .card.mob-card[data-type="code"]              { border-right-color: rgba(245,158,11,0.6); }
  .card.mob-card[data-type="command"]           { border-right-color: rgba(148,163,184,0.45); }
  .card.mob-card[data-type="markdown"]          { border-right-color: rgba(99,102,241,0.5); }
  .card.mob-card[data-type="meeting"]           { border-right-color: rgba(59,130,246,0.65); }
  .card.mob-card[data-type="purchase_decision"] { border-right-color: rgba(249,115,22,0.6); }
  .card.mob-card[data-type="appliance"]         { border-right-color: rgba(20,184,166,0.6); }
  .card.mob-card[data-type="zakat"]             { border-right-color: rgba(16,185,129,0.65); }
  .card.mob-card[data-type="vitals"]            { border-right-color: rgba(239,68,68,0.55); }
  .card.mob-card[data-type="chore"]             { border-right-color: rgba(249,115,22,0.55); }
  .card.mob-card[data-type="plant"]             { border-right-color: rgba(34,197,94,0.65); }
  .card.mob-card[data-type="gift"]              { border-right-color: rgba(244,63,94,0.55); }
  .card.mob-card[data-type="inbox"]             { border-right-color: rgba(245,158,11,0.6); }
  .card.mob-card[data-type="week_plan"]         { border-right-color: rgba(59,130,246,0.6); }
  .card.mob-card[data-type="status"]            { border-right-color: rgba(20,184,166,0.6); }
  /* Pinned override */
  .card.mob-card.pinned-card { border-right-color: rgba(167,139,250,0.8) !important; }
  /* Urgent override */
  .card.mob-card.mob-card-urgent { border-right-color: rgba(239,68,68,0.9) !important; }
}

/* AI item in speed dial — gold/gradient distinction */
.mob-sd-item.mob-sd-ai .mob-sd-icon {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  color: white;
}
.mob-sd-item.mob-sd-ai .mob-sd-label {
  background: linear-gradient(135deg, #fbbf24, #f59e0b);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  font-weight: 700;
}

/* ═══════════════════════════════════════════════════════════════════════════
 *  MOBILE SECTION HEADERS  (P269 — home feed sections)
 * ═══════════════════════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
  .mob-section-hdr {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 2px 4px;
    margin-top: 4px;
  }
  .mob-shdr-icon { font-size: 13px; opacity: 0.7; }
  .mob-shdr-label {
    font-size: 0.7rem;
    font-weight: 700;
    color: rgba(255,255,255,0.4);
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }
  .mob-shdr-count {
    font-size: 0.62rem;
    font-weight: 700;
    color: rgba(139,92,246,0.7);
    background: rgba(139,92,246,0.12);
    padding: 1px 7px;
    border-radius: 99px;
    margin-inline-start: 2px;
  }
  .mob-section-hdr-all .mob-shdr-count {
    color: rgba(148,163,184,0.7);
    background: rgba(148,163,184,0.1);
  }
}

/* ── P270: Type chips in card footers ──────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-type-chip {
    display: inline-block;
    font-size: 0.56rem;
    font-weight: 700;
    padding: 1px 5px;
    border-radius: 99px;
    letter-spacing: 0.04em;
    white-space: nowrap;
    flex-shrink: 0;
    background: rgba(148,163,184,0.1);
    color: rgba(148,163,184,0.55);
  }
  /* per-type chip colors */
  .mob-tc-reminder   { background: rgba(239,68,68,0.12);   color: rgba(252,165,165,0.75); }
  .mob-tc-note       { background: rgba(99,102,241,0.12);  color: rgba(165,180,252,0.75); }
  .mob-tc-checklist  { background: rgba(34,197,94,0.12);   color: rgba(134,239,172,0.75); }
  .mob-tc-countdown  { background: rgba(16,185,129,0.12);  color: rgba(110,231,183,0.75); }
  .mob-tc-subscription { background: rgba(168,85,247,0.12); color: rgba(216,180,254,0.75); }
  .mob-tc-expense    { background: rgba(249,115,22,0.12);  color: rgba(253,186,116,0.75); }
  .mob-tc-tracker    { background: rgba(99,102,241,0.12);  color: rgba(165,180,252,0.75); }
  .mob-tc-counter    { background: rgba(14,165,233,0.12);  color: rgba(125,211,252,0.75); }
  .mob-tc-stocks     { background: rgba(34,197,94,0.12);   color: rgba(134,239,172,0.75); }
  .mob-tc-document   { background: rgba(249,115,22,0.12);  color: rgba(253,186,116,0.75); }
  .mob-tc-vehicle    { background: rgba(20,184,166,0.12);  color: rgba(94,234,212,0.75);  }
  .mob-tc-medicine   { background: rgba(239,68,68,0.12);   color: rgba(252,165,165,0.75); }
  .mob-tc-routine    { background: rgba(34,197,94,0.12);   color: rgba(134,239,172,0.75); }
  .mob-tc-link,.mob-tc-linkgroup,.mob-tc-wifi { background: rgba(14,165,233,0.12); color: rgba(125,211,252,0.75); }
  .mob-tc-contact    { background: rgba(20,184,166,0.12);  color: rgba(94,234,212,0.75);  }
  .mob-tc-birthday   { background: rgba(244,63,94,0.12);   color: rgba(253,164,175,0.75); }
  .mob-tc-password   { background: rgba(239,68,68,0.12);   color: rgba(252,165,165,0.75); }
  .mob-tc-book       { background: rgba(245,158,11,0.12);  color: rgba(252,211,77,0.75);  }
  .mob-tc-watchlist  { background: rgba(168,85,247,0.12);  color: rgba(216,180,254,0.75); }
  .mob-tc-quran      { background: rgba(5,150,105,0.12);   color: rgba(52,211,153,0.75);  }
  .mob-tc-zakat      { background: rgba(5,150,105,0.12);   color: rgba(52,211,153,0.75);  }
  .mob-tc-fasting    { background: rgba(124,58,237,0.12);  color: rgba(196,181,253,0.75); }
  .mob-tc-iou        { background: rgba(20,184,166,0.12);  color: rgba(94,234,212,0.75);  }
  .mob-tc-savings_goal { background: rgba(245,158,11,0.12); color: rgba(252,211,77,0.75); }
  .mob-tc-gold       { background: rgba(234,179,8,0.12);   color: rgba(253,224,71,0.75);  }
  .mob-tc-net_worth  { background: rgba(34,197,94,0.12);   color: rgba(134,239,172,0.75); }
  .mob-tc-purchase_decision { background: rgba(249,115,22,0.12); color: rgba(253,186,116,0.75); }
  .mob-tc-appliance  { background: rgba(20,184,166,0.12);  color: rgba(94,234,212,0.75);  }
  .mob-tc-gift       { background: rgba(244,63,94,0.12);   color: rgba(253,164,175,0.75); }
  .mob-tc-chore      { background: rgba(249,115,22,0.12);  color: rgba(253,186,116,0.75); }
  .mob-tc-pomodoro   { background: rgba(239,68,68,0.12);   color: rgba(252,165,165,0.75); }
  .mob-tc-project    { background: rgba(14,165,233,0.12);  color: rgba(125,211,252,0.75); }
  .mob-tc-inbox      { background: rgba(245,158,11,0.12);  color: rgba(252,211,77,0.75);  }
  .mob-tc-mood       { background: rgba(168,85,247,0.12);  color: rgba(216,180,254,0.75); }
  .mob-tc-workout    { background: rgba(34,197,94,0.12);   color: rgba(134,239,172,0.75); }
  .mob-tc-meditation { background: rgba(124,58,237,0.12);  color: rgba(196,181,253,0.75); }
  .mob-tc-vitals     { background: rgba(239,68,68,0.12);   color: rgba(252,165,165,0.75); }
  .mob-tc-course     { background: rgba(14,165,233,0.12);  color: rgba(125,211,252,0.75); }
  .mob-tc-language   { background: rgba(20,184,166,0.12);  color: rgba(94,234,212,0.75);  }
  .mob-tc-idea       { background: rgba(245,158,11,0.12);  color: rgba(252,211,77,0.75);  }
  .mob-tc-quote      { background: rgba(99,102,241,0.12);  color: rgba(165,180,252,0.75); }
  .mob-tc-recipe     { background: rgba(249,115,22,0.12);  color: rgba(253,186,116,0.75); }
  .mob-tc-goal       { background: rgba(124,58,237,0.12);  color: rgba(196,181,253,0.75); }
  .mob-tc-meeting    { background: rgba(14,165,233,0.12);  color: rgba(125,211,252,0.75); }
  .mob-tc-loan       { background: rgba(239,68,68,0.12);   color: rgba(252,165,165,0.75); }
  .mob-tc-crypto     { background: rgba(249,115,22,0.12);  color: rgba(253,186,116,0.75); }
  .mob-tc-plant      { background: rgba(34,197,94,0.12);   color: rgba(134,239,172,0.75); }
  .mob-tc-journal    { background: rgba(168,85,247,0.12);  color: rgba(216,180,254,0.75); }
  .mob-tc-week_plan  { background: rgba(14,165,233,0.12);  color: rgba(125,211,252,0.75); }
  .mob-tc-review     { background: rgba(99,102,241,0.12);  color: rgba(165,180,252,0.75); }
  .mob-tc-meals      { background: rgba(249,115,22,0.12);  color: rgba(253,186,116,0.75); }
  .mob-tc-podcast    { background: rgba(168,85,247,0.12);  color: rgba(216,180,254,0.75); }
  .mob-tc-playlist   { background: rgba(168,85,247,0.12);  color: rgba(216,180,254,0.75); }
  .mob-tc-trip       { background: rgba(14,165,233,0.12);  color: rgba(125,211,252,0.75); }
  .mob-tc-server,.mob-tc-status { background: rgba(34,197,94,0.12); color: rgba(134,239,172,0.75); }
  .mob-tc-fields,.mob-tc-quicktext,.mob-tc-code,.mob-tc-command,.mob-tc-markdown {
    background: rgba(99,102,241,0.12); color: rgba(165,180,252,0.75);
  }
  .mob-tc-page { background: rgba(148,163,184,0.1); color: rgba(148,163,184,0.6); }
}

/* ── P271: Today context header ─────────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-today-hdr {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 12px 14px;
    background: linear-gradient(135deg, rgba(99,102,241,0.12), rgba(14,165,233,0.08));
    border: 1px solid rgba(99,102,241,0.2);
    border-radius: 16px;
    margin-bottom: 4px;
  }
  .mob-today-hdr-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
  }
  .mob-today-hdr-date {
    font-size: 0.82rem;
    font-weight: 700;
    color: rgba(255,255,255,0.85);
  }
  .mob-today-hdr-cnt {
    font-size: 0.68rem;
    font-weight: 700;
    color: rgba(99,102,241,0.9);
    background: rgba(99,102,241,0.15);
    padding: 2px 8px;
    border-radius: 99px;
  }
  .mob-today-hdr-actions {
    display: flex;
    gap: 6px;
  }
  .mob-today-hdr-btn {
    flex: 1;
    padding: 6px 10px;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,0.1);
    background: rgba(255,255,255,0.05);
    color: rgba(255,255,255,0.7);
    font-size: 0.72rem;
    font-weight: 700;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-today-hdr-btn-primary {
    flex: 0;
    padding: 6px 14px;
    background: rgba(99,102,241,0.2);
    border-color: rgba(99,102,241,0.3);
    color: rgba(165,180,252,0.9);
  }
}

/* ── P271b: Misc mobile polish ───────────────────────────────────────────── */
@media (max-width: 767px) {
  /* Zero-value stat dims naturally without JS */
  .mob-stat-v[data-zero="1"] { color: rgba(255,255,255,0.3) !important; }

  /* Card press feedback — more satisfying scale + momentary shadow */
  .card.mob-card:active {
    transform: scale(0.975) !important;
    box-shadow:
      0 1px 0 rgba(255,255,255,0.04) inset,
      0 4px 12px rgba(0,0,0,0.5) !important;
  }

  /* Make zero-count stats in hero semi-transparent */
  .mob-hw-stat[data-empty="1"] .mob-hw-snum { opacity: 0.4; }

  /* Section header line divider */
  .mob-section-hdr::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(255,255,255,0.06);
    margin-inline-start: 6px;
  }

  /* Today all-clear state */
  .mob-today-all-clear .empty-icon { filter: none; }
}

/* ── P272: Filter context mini-headers ──────────────────────────────────── */
@media (max-width: 767px) {
  .mob-filter-hdr {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border-radius: 14px;
    border: 1px solid transparent;
    margin-bottom: 4px;
    animation: mob-card-enter 0.2s ease-out both;
  }
  .mob-fh-icon { font-size: 16px; flex-shrink: 0; }
  .mob-fh-label { font-size: 0.8rem; font-weight: 700; color: rgba(255,255,255,0.8); flex: 1; }
  .mob-fh-break {
    font-size: 0.65rem; font-weight: 600;
    color: rgba(255,255,255,0.5);
    flex: 1;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-fh-break .mob-fh-red { color: rgba(248,113,113,0.8); }
  .mob-fh-cnt {
    font-size: 0.68rem; font-weight: 800;
    background: rgba(255,255,255,0.1);
    color: rgba(255,255,255,0.65);
    padding: 2px 8px; border-radius: 99px;
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
  }
  .mob-fh-back {
    padding: 4px 10px;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 8px;
    color: rgba(255,255,255,0.6);
    font-size: 14px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
  }
}

/* ── P274: Feed sort bar ─────────────────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-sort-bar {
    grid-column: 1 / -1;
    display: flex;
    gap: 5px;
    overflow-x: auto;
    scrollbar-width: none;
    padding: 0 2px 2px;
    margin-bottom: 6px;
    animation: mob-card-enter 0.2s ease-out both;
  }
  .mob-sort-bar::-webkit-scrollbar { display: none; }
  .mob-sort-pill {
    flex-shrink: 0;
    padding: 5px 12px;
    border-radius: 99px;
    border: 1px solid rgba(255,255,255,0.1);
    background: rgba(255,255,255,0.05);
    color: rgba(255,255,255,0.55);
    font-size: 0.7rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-sort-pill:active { opacity: 0.7; }
  .mob-sort-pill.active {
    background: rgba(139,92,246,0.22);
    border-color: rgba(139,92,246,0.4);
    color: #c4b5fd;
    font-weight: 700;
  }
  /* View-toggle pill: slightly wider for the icon */
  .mob-view-toggle { padding: 5px 10px; font-size: 0.82rem; margin-right: auto; }
}

/* ── P283: Compact card view ─────────────────────────────────────────────── */
@media (max-width: 767px) {
  /* In compact mode the grid becomes a single column */
  #dashboard.mob-compact-view { grid-template-columns: 1fr !important; gap: 3px !important; }

  .card.mob-card.mob-card-compact {
    padding: 0;
    border-radius: 11px;
    min-height: 0;
    box-shadow: none;
    border: 1px solid rgba(255,255,255,0.07);
    background: rgba(255,255,255,0.035);
  }
  .mob-compact-row {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    min-height: 40px;
  }
  .mob-cp-icon {
    font-size: 15px;
    flex-shrink: 0;
    width: 20px;
    text-align: center;
  }
  /* P373: wrap title+hint together */
  .mob-cp-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
    overflow: hidden;
  }
  .mob-cp-title {
    font-size: 0.8rem;
    font-weight: 600;
    color: rgba(232,238,247,0.88);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-cp-hint {
    font-size: 0.67rem;
    color: rgba(148,163,184,0.58);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.2;
  }
  .mob-cp-pin { font-size: 10px; flex-shrink: 0; }
  .mob-cp-type {
    flex-shrink: 0;
    font-size: 0.64rem;
    font-weight: 700;
    padding: 2px 6px;
    border-radius: 6px;
    border: 1px solid transparent;
    white-space: nowrap;
  }
  .mob-cp-time {
    flex-shrink: 0;
    font-size: 0.62rem;
    color: rgba(148,163,184,0.55);
    white-space: nowrap;
  }
}

/* ── P275: Type group headers ────────────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-group-hdr {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 4px 4px;
    margin-top: 6px;
    animation: mob-card-enter 0.2s ease-out both;
  }
  .mob-group-hdr:first-child { margin-top: 0; }
  .mob-gh-ico  { font-size: 15px; flex-shrink: 0; }
  .mob-gh-name {
    font-size: 0.75rem; font-weight: 700;
    color: rgba(255,255,255,0.55);
    letter-spacing: 0.02em;
    text-transform: uppercase;
    flex: 1;
  }
  .mob-gh-cnt {
    font-size: 0.65rem; font-weight: 800;
    color: rgba(255,255,255,0.35);
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.08);
    padding: 1px 7px; border-radius: 99px;
    font-variant-numeric: tabular-nums;
  }
}

/* ── P286: Priority sort section headers ─────────────────────────────────── */
@media (max-width: 767px) {
  .mob-prio-group-hdr {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 6px 5px;
    margin-top: 8px;
    border-top: 1px solid rgba(255,255,255,0.06);
    animation: mob-card-enter 0.2s ease-out both;
  }
  .mob-prio-group-hdr:first-child { margin-top: 0; border-top: none; }
  .mob-pgh-ico { font-size: 13px; flex-shrink: 0; }
  .mob-pgh-label {
    flex: 1;
    font-size: 0.7rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
  }
  .mob-pgh-cnt {
    font-size: 0.64rem; font-weight: 800;
    padding: 1px 7px; border-radius: 99px;
    font-variant-numeric: tabular-nums;
  }
  /* per-bucket colors */
  .mob-pgs-pinned  .mob-pgh-label { color: rgba(167,139,250,0.7); }
  .mob-pgs-pinned  .mob-pgh-cnt   { background: rgba(139,92,246,0.12); border: 1px solid rgba(139,92,246,0.2); color: #a78bfa; }
  .mob-pgs-overdue .mob-pgh-label { color: rgba(248,113,113,0.8); }
  .mob-pgs-overdue .mob-pgh-cnt   { background: rgba(239,68,68,0.12); border: 1px solid rgba(239,68,68,0.25); color: #f87171; }
  .mob-pgs-today   .mob-pgh-label { color: rgba(251,191,36,0.8); }
  .mob-pgs-today   .mob-pgh-cnt   { background: rgba(245,158,11,0.12); border: 1px solid rgba(245,158,11,0.25); color: #fbbf24; }
  .mob-pgs-future  .mob-pgh-label { color: rgba(34,197,94,0.75); }
  .mob-pgs-future  .mob-pgh-cnt   { background: rgba(34,197,94,0.1); border: 1px solid rgba(34,197,94,0.2); color: #4ade80; }
  .mob-pgs-nodate  .mob-pgh-label { color: rgba(148,163,184,0.6); }
  .mob-pgs-nodate  .mob-pgh-cnt   { background: rgba(148,163,184,0.08); border: 1px solid rgba(148,163,184,0.15); color: #94a3b8; }
}

/* ── P270b: Icon background tinting by card type ────────────────────────── */
@media (max-width: 767px) {
  /* Each card type gets a subtle colored glow behind the icon */
  .card.mob-card[data-type="reminder"]   .mob-card-icon { background: rgba(239,68,68,0.16);   border-color: rgba(239,68,68,0.12); }
  .card.mob-card[data-type="note"]       .mob-card-icon { background: rgba(99,102,241,0.16);  border-color: rgba(99,102,241,0.12); }
  .card.mob-card[data-type="checklist"]  .mob-card-icon { background: rgba(34,197,94,0.16);   border-color: rgba(34,197,94,0.12); }
  .card.mob-card[data-type="countdown"]  .mob-card-icon { background: rgba(16,185,129,0.16);  border-color: rgba(16,185,129,0.12); }
  .card.mob-card[data-type="subscription"] .mob-card-icon { background: rgba(168,85,247,0.16); border-color: rgba(168,85,247,0.12); }
  .card.mob-card[data-type="expense"]    .mob-card-icon { background: rgba(249,115,22,0.16);  border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="tracker"]    .mob-card-icon { background: rgba(99,102,241,0.16);  border-color: rgba(99,102,241,0.12); }
  .card.mob-card[data-type="counter"]    .mob-card-icon { background: rgba(14,165,233,0.16);  border-color: rgba(14,165,233,0.12); }
  .card.mob-card[data-type="stocks"]     .mob-card-icon { background: rgba(34,197,94,0.16);   border-color: rgba(34,197,94,0.12); }
  .card.mob-card[data-type="document"]   .mob-card-icon { background: rgba(249,115,22,0.16);  border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="vehicle"]    .mob-card-icon { background: rgba(20,184,166,0.16);  border-color: rgba(20,184,166,0.12); }
  .card.mob-card[data-type="medicine"]   .mob-card-icon { background: rgba(239,68,68,0.16);   border-color: rgba(239,68,68,0.12); }
  .card.mob-card[data-type="routine"]    .mob-card-icon { background: rgba(34,197,94,0.16);   border-color: rgba(34,197,94,0.12); }
  .card.mob-card[data-type="link"]       .mob-card-icon { background: rgba(14,165,233,0.16);  border-color: rgba(14,165,233,0.12); }
  .card.mob-card[data-type="linkgroup"]  .mob-card-icon { background: rgba(14,165,233,0.16);  border-color: rgba(14,165,233,0.12); }
  .card.mob-card[data-type="wifi"]       .mob-card-icon { background: rgba(14,165,233,0.16);  border-color: rgba(14,165,233,0.12); }
  .card.mob-card[data-type="contact"]    .mob-card-icon { background: rgba(236,72,153,0.14);  border-color: rgba(236,72,153,0.1); }
  .card.mob-card[data-type="birthday"]   .mob-card-icon { background: rgba(244,63,94,0.16);   border-color: rgba(244,63,94,0.12); }
  .card.mob-card[data-type="password"]   .mob-card-icon { background: rgba(34,197,94,0.16);   border-color: rgba(34,197,94,0.12); }
  .card.mob-card[data-type="book"]       .mob-card-icon { background: rgba(245,158,11,0.16);  border-color: rgba(245,158,11,0.12); }
  .card.mob-card[data-type="watchlist"]  .mob-card-icon { background: rgba(168,85,247,0.16);  border-color: rgba(168,85,247,0.12); }
  .card.mob-card[data-type="quran"]      .mob-card-icon { background: rgba(5,150,105,0.18);   border-color: rgba(5,150,105,0.14); }
  .card.mob-card[data-type="zakat"]      .mob-card-icon { background: rgba(5,150,105,0.18);   border-color: rgba(5,150,105,0.14); }
  .card.mob-card[data-type="fasting"]    .mob-card-icon { background: rgba(124,58,237,0.16);  border-color: rgba(124,58,237,0.12); }
  .card.mob-card[data-type="iou"]        .mob-card-icon { background: rgba(20,184,166,0.16);  border-color: rgba(20,184,166,0.12); }
  .card.mob-card[data-type="savings_goal"] .mob-card-icon { background: rgba(245,158,11,0.18); border-color: rgba(245,158,11,0.14); }
  .card.mob-card[data-type="gold"]       .mob-card-icon { background: rgba(234,179,8,0.18);   border-color: rgba(234,179,8,0.14); }
  .card.mob-card[data-type="net_worth"]  .mob-card-icon { background: rgba(34,197,94,0.16);   border-color: rgba(34,197,94,0.12); }
  .card.mob-card[data-type="purchase_decision"] .mob-card-icon { background: rgba(249,115,22,0.16); border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="appliance"]  .mob-card-icon { background: rgba(20,184,166,0.16);  border-color: rgba(20,184,166,0.12); }
  .card.mob-card[data-type="gift"]       .mob-card-icon { background: rgba(244,63,94,0.16);   border-color: rgba(244,63,94,0.12); }
  .card.mob-card[data-type="chore"]      .mob-card-icon { background: rgba(249,115,22,0.16);  border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="pomodoro"]   .mob-card-icon { background: rgba(239,68,68,0.18);   border-color: rgba(239,68,68,0.14); }
  .card.mob-card[data-type="project"]    .mob-card-icon { background: rgba(59,130,246,0.16);  border-color: rgba(59,130,246,0.12); }
  .card.mob-card[data-type="inbox"]      .mob-card-icon { background: rgba(245,158,11,0.16);  border-color: rgba(245,158,11,0.12); }
  .card.mob-card[data-type="mood"]       .mob-card-icon { background: rgba(168,85,247,0.16);  border-color: rgba(168,85,247,0.12); }
  .card.mob-card[data-type="workout"]    .mob-card-icon { background: rgba(34,197,94,0.18);   border-color: rgba(34,197,94,0.14); }
  .card.mob-card[data-type="meditation"] .mob-card-icon { background: rgba(124,58,237,0.16);  border-color: rgba(124,58,237,0.12); }
  .card.mob-card[data-type="vitals"]     .mob-card-icon { background: rgba(239,68,68,0.16);   border-color: rgba(239,68,68,0.12); }
  .card.mob-card[data-type="course"]     .mob-card-icon { background: rgba(79,70,229,0.16);   border-color: rgba(79,70,229,0.12); }
  .card.mob-card[data-type="language"]   .mob-card-icon { background: rgba(34,211,238,0.14);  border-color: rgba(34,211,238,0.1); }
  .card.mob-card[data-type="idea"]       .mob-card-icon { background: rgba(245,158,11,0.16);  border-color: rgba(245,158,11,0.12); }
  .card.mob-card[data-type="quote"]      .mob-card-icon { background: rgba(139,92,246,0.16);  border-color: rgba(139,92,246,0.12); }
  .card.mob-card[data-type="recipe"]     .mob-card-icon { background: rgba(249,115,22,0.16);  border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="goal"]       .mob-card-icon { background: rgba(124,58,237,0.18);  border-color: rgba(124,58,237,0.14); }
  .card.mob-card[data-type="meeting"]    .mob-card-icon { background: rgba(14,165,233,0.16);  border-color: rgba(14,165,233,0.12); }
  .card.mob-card[data-type="loan"]       .mob-card-icon { background: rgba(239,68,68,0.16);   border-color: rgba(239,68,68,0.12); }
  .card.mob-card[data-type="crypto"]     .mob-card-icon { background: rgba(249,115,22,0.16);  border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="plant"]      .mob-card-icon { background: rgba(34,197,94,0.18);   border-color: rgba(34,197,94,0.14); }
  .card.mob-card[data-type="journal"]    .mob-card-icon { background: rgba(168,85,247,0.16);  border-color: rgba(168,85,247,0.12); }
  .card.mob-card[data-type="week_plan"]  .mob-card-icon { background: rgba(59,130,246,0.16);  border-color: rgba(59,130,246,0.12); }
  .card.mob-card[data-type="review"]     .mob-card-icon { background: rgba(99,102,241,0.16);  border-color: rgba(99,102,241,0.12); }
  .card.mob-card[data-type="meals"]      .mob-card-icon { background: rgba(249,115,22,0.16);  border-color: rgba(249,115,22,0.12); }
  .card.mob-card[data-type="podcast"]    .mob-card-icon { background: rgba(168,85,247,0.16);  border-color: rgba(168,85,247,0.12); }
  .card.mob-card[data-type="playlist"]   .mob-card-icon { background: rgba(139,92,246,0.16);  border-color: rgba(139,92,246,0.12); }
  .card.mob-card[data-type="trip"]       .mob-card-icon { background: rgba(56,189,248,0.16);  border-color: rgba(56,189,248,0.12); }
  .card.mob-card[data-type="status"],
  .card.mob-card[data-type="server"]     { }
  .card.mob-card[data-type="status"]     .mob-card-icon,
  .card.mob-card[data-type="server"]     .mob-card-icon { background: rgba(34,197,94,0.16); border-color: rgba(34,197,94,0.12); }
  .card.mob-card[data-type="fields"]     .mob-card-icon,
  .card.mob-card[data-type="code"]       .mob-card-icon { background: rgba(99,102,241,0.16); border-color: rgba(99,102,241,0.12); }
}

/* ── P270c: Per-type card top-corner glow (overrides white ::before) ─────── */
@media (max-width: 767px) {
  /* red */
  .card.mob-card[data-type="reminder"]::before,
  .card.mob-card[data-type="medicine"]::before,
  .card.mob-card[data-type="loan"]::before,
  .card.mob-card[data-type="vitals"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(239,68,68,0.10) 0%, transparent 70%) !important;
  }
  /* amber */
  .card.mob-card[data-type="book"]::before,
  .card.mob-card[data-type="idea"]::before,
  .card.mob-card[data-type="inbox"]::before,
  .card.mob-card[data-type="savings_goal"]::before,
  .card.mob-card[data-type="gold"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(245,158,11,0.10) 0%, transparent 70%) !important;
  }
  /* green */
  .card.mob-card[data-type="checklist"]::before,
  .card.mob-card[data-type="routine"]::before,
  .card.mob-card[data-type="workout"]::before,
  .card.mob-card[data-type="plant"]::before,
  .card.mob-card[data-type="stocks"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(34,197,94,0.10) 0%, transparent 70%) !important;
  }
  /* blue */
  .card.mob-card[data-type="project"]::before,
  .card.mob-card[data-type="trip"]::before,
  .card.mob-card[data-type="meeting"]::before,
  .card.mob-card[data-type="week_plan"]::before,
  .card.mob-card[data-type="course"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(59,130,246,0.10) 0%, transparent 70%) !important;
  }
  /* violet */
  .card.mob-card[data-type="goal"]::before,
  .card.mob-card[data-type="subscription"]::before,
  .card.mob-card[data-type="meditation"]::before,
  .card.mob-card[data-type="journal"]::before,
  .card.mob-card[data-type="fasting"]::before,
  .card.mob-card[data-type="podcast"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(124,58,237,0.10) 0%, transparent 70%) !important;
  }
  /* teal */
  .card.mob-card[data-type="countdown"]::before,
  .card.mob-card[data-type="language"]::before,
  .card.mob-card[data-type="quran"]::before,
  .card.mob-card[data-type="zakat"]::before,
  .card.mob-card[data-type="iou"]::before,
  .card.mob-card[data-type="vehicle"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(16,185,129,0.10) 0%, transparent 70%) !important;
  }
  /* orange */
  .card.mob-card[data-type="expense"]::before,
  .card.mob-card[data-type="meals"]::before,
  .card.mob-card[data-type="chore"]::before,
  .card.mob-card[data-type="watchlist"]::before,
  .card.mob-card[data-type="crypto"]::before,
  .card.mob-card[data-type="recipe"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(249,115,22,0.10) 0%, transparent 70%) !important;
  }
  /* pink */
  .card.mob-card[data-type="birthday"]::before,
  .card.mob-card[data-type="gift"]::before {
    background: radial-gradient(ellipse 70% 50% at 90% 0%, rgba(244,63,94,0.10) 0%, transparent 70%) !important;
  }
}

/* ── P270d: Pinned card badge ───────────────────────────────────────────────── */
@media (max-width: 767px) {
  .card.mob-card.pinned-card::after {
    content: '📌' !important;
    position: absolute !important;
    top: 7px !important;
    left: 8px !important;
    font-size: 9px !important;
    line-height: 1 !important;
    opacity: 0.55 !important;
    z-index: 3 !important;
    pointer-events: none !important;
    filter: grayscale(0.2) !important;
  }
}

/* ── P291: 1-column layout visual polish ─────────────────────────────────── */
@media (max-width: 767px) {
  /* Stronger type-accent left stripe — makes border-color pop as a category cue */
  .card.mob-card {
    border-inline-start-width: 3px !important;
  }

  /* Hero number: room to breathe on full-width cards */
  .mob-hero-num {
    font-size: 52px !important;
  }

  /* Stat strip: more generous spacing now that each row is full-width */
  .mob-stat {
    padding: 0 14px !important;
  }
  .mob-stat-k {
    font-size: 10px !important;
  }
  .mob-stat-v {
    font-size: 15.5px !important;
  }

  /* Progress bar: keep 8px height from P276 — remove override that was regressing it */
  .mob-progress-bar {
    height: 8px !important;
    border-radius: 8px !important;
  }

  /* Quick-action buttons: taller tap target, equal width on full-width card */
  .mob-qr-btn {
    flex: 1 !important;
    padding: 9px 14px !important;
    font-size: 13.5px !important;
  }

  /* Card inner: slightly more breathing room between sections */
  .mob-card-inner {
    gap: 12px !important;
    padding: 16px 18px 14px !important;
  }

  /* Remove the old 2-col min-height that caused empty space */
  .card.mob-card {
    min-height: 0 !important;
  }
}

/* ── P293: Full-width text & content polish ──────────────────────────────── */
@media (max-width: 767px) {
  /* Card title: allow 2-line wrap for longer Arabic titles in full-width cards */
  .mob-card-title {
    white-space: normal !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden !important;
    text-overflow: unset !important;
    line-height: 1.35;
  }

  /* Quicktext/markdown preview: 5 lines (was 4) now that text is wider */
  .mob-quicktext-preview,
  .mob-md-preview {
    -webkit-line-clamp: 5 !important;
    font-size: 13px !important;
  }

  /* Code preview: more lines and better font size */
  .mob-code-preview {
    -webkit-line-clamp: 6 !important;
    font-size: 11.5px !important;
  }

  /* Stat value: stronger weight, more readable at full-width */
  .mob-stat-v {
    font-weight: 800 !important;
  }

  /* Card time + foot: slightly bigger in 1-col */
  .mob-card-time {
    font-size: 11.5px !important;
  }

  /* Note body: 4px gap for more breathing room between lines */
  .mob-note-body {
    gap: 4px !important;
  }

  /* Type chip in footer: slightly bigger */
  .mob-type-chip {
    font-size: 10.5px !important;
    padding: 2px 7px !important;
  }
}

/* ── P295: Interactive row improvements for 1-col cards ─────────────────── */
@media (max-width: 767px) {
  /* KR text: allow wrap up to 2 lines; bigger font */
  .mob-kr-text {
    white-space: normal !important;
    display: -webkit-box !important;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden !important;
    text-overflow: unset !important;
    font-size: 13px !important;
    line-height: 1.4;
  }

  /* KR row: bigger tap target */
  .mob-kr-row {
    padding: 8px 10px !important;
    min-height: 42px !important;
  }

  /* Checklist row: bigger tap target, bigger font */
  .mob-cl-row {
    padding: 9px 10px !important;
    font-size: 0.875rem !important;
    min-height: 44px !important;
  }

  /* Checklist list: slightly more gap between rows */
  .mob-cl-item-list {
    gap: 4px !important;
    display: flex !important;
    flex-direction: column !important;
  }
  .mob-kr-list {
    gap: 4px !important;
    display: flex !important;
    flex-direction: column !important;
  }

  /* Section headers: better contrast */
  .mob-section-hdr {
    font-size: 11px !important;
    padding: 6px 4px 4px !important;
    letter-spacing: 0.04em;
  }

  /* Filter header (tasks/notes/etc): better sizing  */
  .mob-filter-hdr {
    padding: 10px 14px !important;
    font-size: 14px !important;
    border-radius: 14px !important;
    margin-bottom: 4px !important;
  }
}

/* ── P296: Hero visual improvements for 1-col ───────────────────────────── */
@media (max-width: 767px) {
  /* Hero section: subtle frosted surface to visually anchor the big number */
  .mob-hero {
    background: rgba(255,255,255,0.024) !important;
    border-radius: 14px !important;
    padding: 12px 16px !important;
    margin: 0 !important;
  }

  /* Hero ring row: same treatment */
  .mob-hero.mob-hero-ring-row {
    justify-content: flex-start !important;
    gap: 16px !important;
    align-items: center !important;
  }

  /* Hero unit: more readable */
  .mob-hero-unit {
    font-size: 14px !important;
    color: rgba(255,255,255,0.55) !important;
  }

  /* Progress row: slight gap above for separation */
  .mob-progress-row {
    margin-top: 0 !important;
  }

  /* Progress label: bigger */
  .mob-progress-label {
    font-size: 13px !important;
    font-weight: 800 !important;
    min-width: 42px !important;
    text-align: left !important;
  }

  /* Card footer: more padding-top and stronger separator */
  .mob-card-foot {
    padding-top: 10px !important;
    margin-top: 8px !important;
    border-top: 1px solid rgba(255,255,255,0.06) !important;
  }

  /* Tags row in footer: slightly bigger */
  .mob-tags-row {
    gap: 4px !important;
  }
  .mob-tag-chip {
    font-size: 10px !important;
    padding: 2px 7px !important;
  }
}

/* ── P297: Reminder urgency left-border + live hero sizing ──────────────────── */
@media (max-width: 767px) {
  /* Reminder card: color-coded left border per urgency state */
  .card.mob-card:has(.mob-reminder-card.mob-rem-overdue) {
    border-inline-start-color: #ef4444 !important;
    border-inline-start-width: 4px !important;
  }
  .card.mob-card:has(.mob-reminder-card.mob-rem-live) {
    border-inline-start-color: #ef4444 !important;
    border-inline-start-width: 4px !important;
    animation: mob-rem-live-border 1.5s ease-in-out infinite;
  }
  .card.mob-card:has(.mob-reminder-card.mob-rem-urgent) {
    border-inline-start-color: #f59e0b !important;
    border-inline-start-width: 4px !important;
  }
  .card.mob-card:has(.mob-reminder-card.mob-rem-soon) {
    border-inline-start-color: rgba(245,158,11,0.55) !important;
    border-inline-start-width: 3px !important;
  }
  .card.mob-card:has(.mob-reminder-card.mob-rem-done) {
    border-inline-start-color: #10b981 !important;
    border-inline-start-width: 3px !important;
  }
  @keyframes mob-rem-live-border {
    0%, 100% { border-inline-start-color: #ef4444; }
    50%       { border-inline-start-color: #fca5a5; }
  }

  /* Reminder done: soft green wash on shell */
  .card.mob-card:has(.mob-reminder-card.mob-rem-done) {
    background:
      linear-gradient(155deg, rgba(16,185,129,0.08), rgba(255,255,255,0.02)),
      rgba(12,17,26,0.72) !important;
    border-color: rgba(16,185,129,0.18) !important;
  }

  /* Live countdown number: bigger at 1-col full width */
  .mob-live-num {
    font-size: 3rem !important;
    letter-spacing: -2px !important;
  }
  .mob-live-unit {
    font-size: 0.9rem !important;
    padding-bottom: 6px !important;
  }
  .mob-live-dot {
    width: 10px !important;
    height: 10px !important;
  }

  /* Action row: bigger tap targets */
  .mob-reminder-action-row {
    gap: 10px !important;
  }
  .mob-rem-done-btn {
    min-height: 46px !important;
    font-size: 15px !important;
    font-weight: 700 !important;
  }
  .mob-rem-snooze-btn {
    min-width: 96px !important;
    min-height: 46px !important;
    font-size: 14px !important;
  }
}

/* ── P298: Note-line richness + section dividers + stagger ──────────────────── */
@media (max-width: 767px) {
  /* Bullet lines: left indicator accent */
  .mob-note-bullet {
    border-right: 2px solid rgba(196,181,253,0.3) !important;
    padding-right: 8px !important;
    color: rgba(196,181,253,0.88) !important;
  }

  /* Heading lines: big, strong, underline divider */
  .mob-note-heading {
    font-size: 14.5px !important;
    font-weight: 800 !important;
    color: rgba(232,238,247,0.96) !important;
    letter-spacing: -0.01em !important;
    -webkit-line-clamp: 1 !important;
    border-bottom: 1px solid rgba(255,255,255,0.07) !important;
    padding-bottom: 3px !important;
  }

  /* Quote lines: richer blockquote surface */
  .mob-note-quote {
    background: rgba(139,92,246,0.07) !important;
    border-right: 3px solid rgba(167,139,250,0.45) !important;
    border-radius: 0 6px 6px 0 !important;
    padding: 4px 10px 4px 6px !important;
    color: rgba(196,181,253,0.8) !important;
    font-style: italic !important;
    -webkit-line-clamp: 3 !important;
  }

  /* Numbered lines: cyan tint */
  .mob-note-num {
    color: rgba(147,197,253,0.85) !important;
  }

  /* "more lines" indicator: subtle pill */
  .mob-note-more {
    display: inline-flex !important;
    align-items: center !important;
    font-size: 11px !important;
    color: rgba(232,238,247,0.3) !important;
    background: rgba(255,255,255,0.04) !important;
    border: 1px solid rgba(255,255,255,0.05) !important;
    border-radius: 99px !important;
    padding: 2px 10px !important;
    margin-top: 2px !important;
    letter-spacing: 0.02em !important;
  }

  /* Note body: 5px gap between lines */
  .mob-note-body {
    gap: 5px !important;
  }

  /* Group + section headers: subtle bottom separator */
  .mob-group-hdr {
    border-bottom: 1px solid rgba(255,255,255,0.05) !important;
    padding-bottom: 7px !important;
    margin-bottom: 1px !important;
  }
  .mob-section-hdr {
    border-bottom: 1px solid rgba(255,255,255,0.04) !important;
    padding-bottom: 7px !important;
    margin-bottom: 1px !important;
  }
  .mob-prio-group-hdr {
    padding-bottom: 7px !important;
  }
}

/* ── P299: Quick-add polish + done states + celebrate + empty state ─────────── */
@media (max-width: 767px) {
  /* Quick-add input: bigger and more comfortable at full-width */
  .mob-cl-quick-input {
    padding: 10px 14px !important;
    font-size: 14px !important;
    border-radius: 12px !important;
    min-height: 42px !important;
  }
  .mob-cl-quick-btn {
    width: 42px !important;
    height: 42px !important;
    border-radius: 12px !important;
    font-size: 22px !important;
  }

  /* Checklist "more pending" indicator: pill style */
  .mob-cl-more {
    display: inline-flex !important;
    align-items: center !important;
    font-size: 11.5px !important;
    color: rgba(232,238,247,0.3) !important;
    background: rgba(255,255,255,0.04) !important;
    border: 1px solid rgba(255,255,255,0.05) !important;
    border-radius: 99px !important;
    padding: 3px 12px !important;
    margin-top: 3px !important;
  }

  /* Done row: green strikethrough, reduced opacity */
  .mob-cl-row.mob-cl-row-done {
    opacity: 0.38 !important;
    text-decoration-color: rgba(74,222,128,0.45) !important;
    text-decoration-thickness: 1.5px !important;
  }
  .mob-cl-row.mob-cl-row-done .mob-cl-text {
    text-decoration: line-through !important;
    text-decoration-color: rgba(74,222,128,0.45) !important;
    text-decoration-thickness: 1.5px !important;
  }

  /* KR done row: similar muted treatment */
  .mob-kr-row.mob-kr-done {
    opacity: 0.38 !important;
  }
  .mob-kr-row.mob-kr-done .mob-kr-text {
    text-decoration: line-through !important;
    text-decoration-color: rgba(74,222,128,0.4) !important;
  }

  /* Celebrate button: bigger, more prominent */
  .mob-celebrate-btn {
    font-size: 15px !important;
    min-height: 48px !important;
    letter-spacing: 0.03em !important;
    font-weight: 800 !important;
  }

  /* Empty state on 1-col mobile: better sizing */
  .empty-state {
    padding: 48px 20px !important;
  }
  .empty-state .empty-icon {
    font-size: 2.8rem !important;
    margin-bottom: 14px !important;
  }
  .empty-state .empty-title {
    font-size: 1.1rem !important;
    font-weight: 800 !important;
    margin-bottom: 6px !important;
  }
  .empty-state .empty-sub {
    font-size: 0.88rem !important;
    color: rgba(148,163,184,0.7) !important;
    line-height: 1.6 !important;
  }

  /* Smart empty (all-clear) state */
  .smart-empty-state {
    padding: 48px 20px !important;
    text-align: center !important;
  }
  .smart-empty-icon {
    font-size: 3rem !important;
    margin-bottom: 14px !important;
    display: block !important;
  }
  .smart-empty-title {
    font-size: 1.15rem !important;
    font-weight: 800 !important;
    color: rgba(232,238,247,0.9) !important;
    margin-bottom: 8px !important;
  }
  .smart-empty-sub {
    font-size: 0.88rem !important;
    color: rgba(148,163,184,0.65) !important;
    line-height: 1.65 !important;
    margin-bottom: 20px !important;
  }
  .smart-show-all-btn {
    font-size: 14px !important;
    padding: 11px 22px !important;
    border-radius: 12px !important;
  }
}

/* ── P300: Ring size upgrade (40→52px) + proportional ring-row typography ───── */
@media (max-width: 767px) {
  /* Scale up progress rings from 40px to 52px via CSS (SVG scales proportionally) */
  .mob-prog-ring {
    width: 52px !important;
    height: 52px !important;
    flex-shrink: 0 !important;
  }

  /* Ring-row: proportional hero number — NOT 52px which is for standalone big numbers */
  .mob-hero.mob-hero-ring-row .mob-hero-num {
    font-size: 2.2rem !important;
    line-height: 1 !important;
  }

  /* Ring-row: fraction text scales with the number */
  .mob-hero.mob-hero-ring-row .mob-frac-muted {
    font-size: 1.2rem !important;
  }

  /* Ring-row: unit text slightly bigger than default 13px */
  .mob-hero.mob-hero-ring-row .mob-hero-unit {
    font-size: 14px !important;
  }

  /* Ring-row: more gap and better padding inside the frosted surface */
  .mob-hero.mob-hero-ring-row {
    gap: 14px !important;
    padding: 10px 16px !important;
    align-items: center !important;
  }

  /* Ring-row inner div: baseline alignment, allow text wrapping */
  .mob-hero.mob-hero-ring-row > div {
    gap: 4px !important;
    align-items: baseline !important;
    flex-wrap: nowrap !important;
  }
}

/* ── P301: Progress bar entrance animation + hero surface polish ─────────────── */
@media (max-width: 767px) {

  /* Reveal animation: bar fills in from left after card entrance (0.25s delay) */
  @keyframes mob-bar-reveal {
    from { clip-path: inset(0 100% 0 0); }
    to   { clip-path: inset(0 0%   0 0); }
  }
  .dash-grid .card.mob-card .mob-progress-fill {
    animation: mob-bar-reveal 0.65s cubic-bezier(0.34,1.56,0.64,1) 0.25s backwards;
  }

  /* Hero surface: subtle inner top highlight for frosted-glass feel */
  .mob-hero {
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.07) !important;
  }

  /* Emoji-only hero: center the emoji in the frosted surface */
  .mob-hero.mob-hero-emoji-lg {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
    font-size: 2.8rem !important;
    line-height: 1 !important;
  }

  /* Standalone emoji span inside hero: let parent handle centering */
  .mob-hero .mob-hero-emoji,
  .mob-hero .mob-hero-emoji-lg {
    font-size: 2.8rem !important;
    line-height: 1 !important;
  }

  /* Ring completion glow: done rings get a soft green ambient glow */
  .mob-prog-ring.mob-ring-done {
    filter: drop-shadow(0 0 4px rgba(34,211,117,0.25)) !important;
  }

  /* Overdue/urgent reminder ring: red glow */
  .card.mob-card:has(.mob-reminder-card.mob-rem-overdue) .mob-prog-ring,
  .card.mob-card:has(.mob-reminder-card.mob-rem-live) .mob-prog-ring {
    filter: drop-shadow(0 0 4px rgba(239,68,68,0.3)) !important;
  }

  /* Quick-row: fill container width evenly at 1-col */
  .mob-quick-row {
    overflow-x: visible !important;
    flex-wrap: nowrap !important;
  }
}

/* ── P302: Type-specific border color + box-shadow cleanup ──────────────────── */
@media (max-width: 767px) {
  /* Remove old LTR-biased inset stripe (physical left) — use border-inline-start
     which shows on the logical start side (physical RIGHT in RTL Arabic) */
  .card.mob-card {
    box-shadow: 0 3px 14px rgba(0,0,0,0.32) !important;
    border-inline-start-color: var(--mob-border-color, #6366f1) !important;
  }

  /* Pinned: violet accent border + subtle outer glow ring */
  .card.mob-card.pinned-card {
    box-shadow:
      0 3px 14px rgba(0,0,0,0.32),
      0 0 0 1px rgba(168,85,247,0.22) !important;
    border-inline-start-color: #a855f7 !important;
    border-inline-start-width: 4px !important;
  }

  /* Reminder urgency overrides stay (P297 rules have higher specificity) */

  /* Completed cards: green border accent */
  .card.mob-card.mob-card-complete {
    border-inline-start-color: #22c55e !important;
    border-inline-start-width: 3px !important;
  }
}

/* ── P303: Card icon tint + header refinements ──────────────────────────────── */
@media (max-width: 767px) {
  /* Icon: tinted background using card's type accent color (subtle, elegant) */
  .mob-card-icon {
    width: 40px !important;
    height: 40px !important;
    font-size: 21px !important;
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 14%, rgba(255,255,255,0.04)) !important;
    border: 1px solid color-mix(in srgb, var(--mob-border-color, #6366f1) 22%, transparent) !important;
    box-shadow: 0 2px 8px rgba(0,0,0,0.25) !important;
  }

  /* Title: slightly larger and tighter */
  .mob-card-title {
    font-size: 15.5px !important;
    letter-spacing: -0.01em !important;
    line-height: 1.3 !important;
  }

  /* Card header: more generous gap at full width */
  .mob-card-header {
    gap: 12px !important;
    align-items: center !important;
    padding-bottom: 4px !important;
  }

  /* Pills in header: slightly more padding at full width */
  .mob-pill, .mob-pill-muted, .mob-pill-success, .mob-pill-danger,
  .mob-pill-warning, .mob-pill-info {
    padding: 3px 9px !important;
    font-size: 11.5px !important;
    font-weight: 700 !important;
    border-radius: 99px !important;
    flex-shrink: 0 !important;
  }

  /* Stat key: slightly bigger */
  .mob-stat-k {
    font-size: 10px !important;
    letter-spacing: 0.05em !important;
  }

  /* Stat value: slightly bigger at full width */
  .mob-stat-v {
    font-size: 16px !important;
    font-weight: 800 !important;
  }
}

/* ── P304: Depth & Atmosphere Wave ──────────────────────────────────────── */
@media (max-width: 767px) {
  /* 1. Card shell: type-accent radial glow at physical right (RTL start side).
        Layered over existing dark base — each card glows with its own identity. */
  .card.mob-card {
    background:
      radial-gradient(
        ellipse 72% 44% at 92% 0%,
        color-mix(in srgb, var(--mob-border-color, #6366f1) 14%, transparent) 0%,
        transparent 68%
      ),
      linear-gradient(155deg, rgba(139, 92, 246, 0.05), rgba(255, 255, 255, 0.015)),
      rgba(12, 17, 26, 0.74) !important;
  }

  /* 2. Hero zone: type-accented frosted glass.
        Replaces the generic white wash with a tint of the card's own color. */
  .card.mob-card .mob-hero {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 8%,
      rgba(255, 255, 255, 0.022)
    ) !important;
    border: 1px solid color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 22%,
      rgba(255, 255, 255, 0.04)
    ) !important;
  }

  /* 3. Stat strip: hairline separator from the hero zone above */
  .card.mob-card .mob-stat-strip {
    border-top: 1px solid rgba(255,255,255,0.048) !important;
    padding-top: 4px !important;
  }

  /* 4. Quick-action rows: hairline separator, slight vertical breathing */
  .card.mob-card .mob-quick-row {
    border-top: 1px solid rgba(255,255,255,0.048) !important;
    padding-top: 6px !important;
  }

  /* 5. Tap feedback: snappier scale + compressed shadow for physical press feel */
  .card.mob-card:active {
    transform: scale(0.982) !important;
    box-shadow: 0 1px 5px rgba(0,0,0,0.52) !important;
    transition: transform 0.07s ease, box-shadow 0.07s ease !important;
  }
}

/* ── P305: Identity Wave — type accent flows into numbers, stats & buttons ── */
@media (max-width: 767px) {
  /* 1. Hero number: white + soft glow in the card's type color.
        Drops the hard cyan from the old widget recipe. The glow is additive —
        on elements with gradient text (-webkit-text-fill-color:transparent)
        text-shadow is invisible, so gradient accents are unaffected.         */
  .card.mob-card .mob-hero-num:not(.mob-hero-accent) {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff !important;
    text-shadow: 0 0 22px color-mix(in srgb, var(--mob-border-color, #6366f1) 42%, transparent) !important;
  }

  /* 2. Header separator: replace generic white hairline with accent-tinted line */
  .card.mob-card .mob-card-header {
    border-bottom: 1px solid color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 22%,
      rgba(255, 255, 255, 0.04)
    ) !important;
  }

  /* 3. Stat values: gentle type-tint for neutral values (pos/neg/warn excluded) */
  .card.mob-card .mob-stat-v:not(.mob-stat-v-pos):not(.mob-stat-v-neg):not(.mob-stat-v-warn):not([data-zero]) {
    color: color-mix(in srgb, var(--mob-border-color, #6366f1) 20%, #e8eef7) !important;
  }

  /* 4. Quick-action buttons: unified type-accent via CSS variable.
        Replaces all the per-type hardcoded color rules with a single dynamic rule. */
  .card.mob-card .mob-qr-btn {
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 32%, rgba(255,255,255,0.08)) !important;
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 11%, rgba(255,255,255,0.03)) !important;
    color:        color-mix(in srgb, var(--mob-border-color, #6366f1) 58%, #e8eef7) !important;
  }
  .card.mob-card .mob-qr-btn:active {
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 60%, rgba(255,255,255,0.18)) !important;
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 26%, rgba(255,255,255,0.06)) !important;
  }
  .card.mob-card .mob-qr-btn.mob-qr-active {
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 70%, rgba(255,255,255,0.2)) !important;
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 30%, rgba(255,255,255,0.08)) !important;
    box-shadow: 0 0 8px color-mix(in srgb, var(--mob-border-color, #6366f1) 40%, transparent) !important;
  }
}

/* ── P306: Footer & Fraction Polish Wave ────────────────────────────────── */
@media (max-width: 767px) {
  /* 1. Type chip: unified CSS variable (replaces 30+ per-type class rules).
        Same pattern as the mob-qr-btn unification in P305.                  */
  .card.mob-card .mob-type-chip {
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 14%, rgba(255,255,255,0.04)) !important;
    color:      color-mix(in srgb, var(--mob-border-color, #6366f1) 65%, #e8eef7) !important;
    border: 1px solid color-mix(in srgb, var(--mob-border-color, #6366f1) 18%, transparent) !important;
    font-size: 10.5px !important;
    font-weight: 700 !important;
    padding: 3px 8px !important;
    border-radius: 99px !important;
    letter-spacing: 0.02em !important;
  }

  /* 2. Footer separator: accent-tinted hairline (replaces generic white) */
  .card.mob-card .mob-card-foot {
    border-top: 1px solid color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 15%,
      rgba(255, 255, 255, 0.04)
    ) !important;
  }

  /* 3. Fraction denominators: accent-tinted instead of flat grey */
  .card.mob-card .mob-frac-muted {
    color: color-mix(in srgb, var(--mob-border-color, #6366f1) 55%, rgba(255,255,255,0.25)) !important;
    opacity: 1 !important;
  }

  /* 4. Hero unit label: slightly more visible, accent-tinted */
  .card.mob-card .mob-hero-unit {
    color: color-mix(in srgb, var(--mob-border-color, #6366f1) 45%, rgba(255,255,255,0.45)) !important;
    font-size: 13.5px !important;
    font-weight: 600 !important;
  }

  /* 5. Habit-nudge: accent-aware border (amber stays for generic, card accent for typed) */
  .card.mob-card .mob-habit-nudge {
    border-right: 3px solid color-mix(in srgb, var(--mob-border-color, #f59e0b) 55%, rgba(245,158,11,0.35)) !important;
    background: color-mix(in srgb, var(--mob-border-color, #f59e0b) 7%, rgba(245,158,11,0.06)) !important;
    color: color-mix(in srgb, var(--mob-border-color, #f59e0b) 60%, rgba(251,191,36,0.75)) !important;
    border-radius: 8px !important;
    padding: 6px 10px !important;
  }
}

/* ── P307: Input & Pill Identity Wave ───────────────────────────────────── */
@media (max-width: 767px) {
  /* 1. Quick-add input: type-accent focus ring (replaces hardcoded indigo) */
  .card.mob-card .mob-cl-quick-input:focus {
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 55%, rgba(255,255,255,0.1)) !important;
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 7%,  rgba(255,255,255,0.03)) !important;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--mob-border-color, #6366f1) 15%, transparent) !important;
  }

  /* 2. Quick-add "+":  type-accent button (replaces hardcoded indigo) */
  .card.mob-card .mob-cl-quick-btn {
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 35%, rgba(255,255,255,0.08)) !important;
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 12%, rgba(255,255,255,0.03)) !important;
    color:        color-mix(in srgb, var(--mob-border-color, #6366f1) 72%, #e8eef7) !important;
  }
  .card.mob-card .mob-cl-quick-btn:active {
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 28%, rgba(255,255,255,0.06)) !important;
    transform: scale(0.9) !important;
  }

  /* 3. Compact card: type-accent left stripe + subtle tint bg */
  .card.mob-card.mob-card-compact {
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 6%, rgba(12,17,26,0.72)) !important;
    border-inline-start-width: 3px !important;
    border-inline-start-color: var(--mob-border-color, #6366f1) !important;
  }

  /* 4. Tag chips in footer: soft type-accent tint */
  .card.mob-card .mob-tag-chip {
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 10%, rgba(255,255,255,0.04)) !important;
    color:        color-mix(in srgb, var(--mob-border-color, #6366f1) 50%, rgba(232,238,247,0.55)) !important;
    border: 1px solid color-mix(in srgb, var(--mob-border-color, #6366f1) 16%, rgba(255,255,255,0.05)) !important;
  }

  /* 5. Generic (non-semantic) pills: type-accent (semantic success/danger/warn/info keep theirs) */
  .card.mob-card .mob-pill:not(.mob-pill-success):not(.mob-pill-danger):not(.mob-pill-warning):not(.mob-pill-info):not(.mob-pill-muted) {
    background:   color-mix(in srgb, var(--mob-border-color, #6366f1) 16%, rgba(255,255,255,0.03)) !important;
    color:        color-mix(in srgb, var(--mob-border-color, #6366f1) 80%, #e8eef7) !important;
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 28%, rgba(255,255,255,0.05)) !important;
  }
}

/* ── P308: Sheet Identity Wave ───────────────────────────────────────────── */
@media (max-width: 767px) {
  /* 1. Sheet header: gradient wash using card's type color.
        Mirrors what --sheet-accent does for custom-colored cards,
        now applied to every card type via --sheet-type-color.             */
  .mob-sheet[style*="--sheet-type-color"] .mob-sheet-hdr {
    background: linear-gradient(
      135deg,
      color-mix(in srgb, var(--sheet-type-color) 12%, transparent) 0%,
      transparent 65%
    );
    border-radius: 12px 12px 0 0;
    margin: -4px -4px 0;
    padding: 18px 20px 14px;
  }

  /* 2. Sheet icon: tinted with type color */
  .mob-sheet[style*="--sheet-type-color"] .mob-sheet-icon {
    background: color-mix(in srgb, var(--sheet-type-color) 18%, rgba(255,255,255,0.05)) !important;
    border: 1px solid color-mix(in srgb, var(--sheet-type-color) 28%, rgba(255,255,255,0.05)) !important;
    box-shadow: 0 2px 10px color-mix(in srgb, var(--sheet-type-color) 25%, rgba(0,0,0,0.2)) !important;
  }

  /* 3. Sheet type label: colored with card's type */
  .mob-sheet[style*="--sheet-type-color"] .mob-sheet-type {
    color: color-mix(in srgb, var(--sheet-type-color) 80%, #e8eef7) !important;
    font-weight: 700 !important;
    font-size: 11.5px !important;
  }

  /* 4. Primary action button: uses card's type color instead of generic indigo */
  .mob-sheet[style*="--sheet-type-color"] .msb-primary {
    background: linear-gradient(
      135deg,
      color-mix(in srgb, var(--sheet-type-color) 92%, #000) 0%,
      color-mix(in srgb, var(--sheet-type-color) 72%, #fff) 100%
    ) !important;
    box-shadow:
      0 4px 18px color-mix(in srgb, var(--sheet-type-color) 40%, transparent),
      inset 0 1px 0 rgba(255,255,255,0.18) !important;
    color: #fff !important;
  }
  .mob-sheet[style*="--sheet-type-color"] .msb-primary:active {
    box-shadow: 0 2px 8px color-mix(in srgb, var(--sheet-type-color) 28%, transparent) !important;
    transform: scale(0.97) !important;
  }

  /* 5. Sheet top border: type-color edge (already handled, just strengthen slightly) */
  .mob-sheet[style*="--sheet-type-color"] {
    border-top: 3px solid color-mix(in srgb, var(--sheet-type-color) 65%, transparent) !important;
  }
}

/* ── P309: Ring & Halo Wave ──────────────────────────────────────────────── */
@media (max-width: 767px) {
  /* 1. Card outer ring: 1px type-accent aura (subtle depth, ties card to its type) */
  .card.mob-card {
    box-shadow:
      0 3px 14px rgba(0,0,0,0.32),
      0 0 0 1px color-mix(in srgb, var(--mob-border-color, #6366f1) 10%, transparent) !important;
  }

  /* 2. Progress bar track: type-tinted background (empty part of the bar) */
  .card.mob-card .mob-progress-bar {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 10%,
      rgba(255, 255, 255, 0.06)
    ) !important;
    height: 8px !important;
    border-radius: 8px !important;
  }

  /* 3. Completed card: green hero wash overrides type-accent tint */
  .card.mob-card.mob-card-complete .mob-hero {
    background: color-mix(in srgb, #22c55e 9%, rgba(255,255,255,0.022)) !important;
    border-color: color-mix(in srgb, #22c55e 22%, rgba(255,255,255,0.04)) !important;
  }
  /* Completed card outer ring: green */
  .card.mob-card.mob-card-complete {
    box-shadow:
      0 3px 14px rgba(0,0,0,0.32),
      0 0 0 1px rgba(34,197,94,0.18) !important;
  }

  /* 4. Done ring: gentle continuous pulse to celebrate completion */
  @keyframes mob-ring-done-pulse {
    0%, 100% { filter: drop-shadow(0 0 3px rgba(34,211,117,0.22)); }
    50%       { filter: drop-shadow(0 0 8px rgba(34,211,117,0.50)); }
  }
  .mob-prog-ring.mob-ring-done {
    animation: mob-ring-done-pulse 2.8s ease-in-out infinite !important;
    filter: none !important; /* animation overrides any static filter */
  }

  /* 5. Pill-muted: barely-there type hint so it doesn't feel totally detached */
  .card.mob-card .mob-pill-muted {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 7%,
      rgba(255, 255, 255, 0.04)
    ) !important;
    color: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 40%,
      rgba(255, 255, 255, 0.55)
    ) !important;
  }
}

/* ── P310: Living Check Wave ─────────────────────────────────────────────── */
/* Goal: every interactive row (checklist, KR goals, tasks, packing, inbox,
   IOU, gift) uses the card's own type accent so tapping feels native.       */
@media (max-width: 767px) {

  /* 1. Checklist / routine unchecked circle: type-coloured glyph */
  .card.mob-card .mob-cl-check {
    color: var(--mob-border-color, #6c63ff) !important;
    text-shadow: 0 0 6px color-mix(in srgb, var(--mob-border-color, #6c63ff) 30%, transparent) !important;
  }
  /* Done: swap to solid green tick */
  .card.mob-card .mob-cl-row.mob-cl-row-done .mob-cl-check {
    color: #4ade80 !important;
    text-shadow: 0 0 5px rgba(74,222,128,0.35) !important;
  }

  /* 2. Row tap-feedback: type-tinted highlight instead of static indigo */
  .card.mob-card .mob-cl-row:active {
    background: color-mix(in srgb, var(--mob-border-color, #6c63ff) 16%, rgba(255,255,255,0.04)) !important;
    border-color: color-mix(in srgb, var(--mob-border-color, #6c63ff) 26%, rgba(255,255,255,0.08)) !important;
  }

  /* 3. KR row resting background: barely-there type wash */
  .card.mob-card .mob-kr-row:not(.mob-kr-done) {
    background: color-mix(in srgb, var(--mob-border-color, #818cf8) 6%, rgba(255,255,255,0.03)) !important;
    border-color: color-mix(in srgb, var(--mob-border-color, #818cf8) 14%, rgba(255,255,255,0.06)) !important;
  }

  /* 4. KR progress track: type-tinted empty bar */
  .card.mob-card .mob-kr-track {
    background: color-mix(in srgb, var(--mob-border-color, #818cf8) 14%, rgba(255,255,255,0.06)) !important;
  }

  /* 5. KR progress fill: type gradient (goal KRs, tasks, packing, inbox, IOU, gift) */
  .card.mob-card .mob-kr-fill {
    background: linear-gradient(
      90deg,
      var(--mob-border-color, #818cf8),
      color-mix(in srgb, var(--mob-border-color, #a78bfa) 55%, white 45%)
    ) !important;
  }
  /* Done KR stays green */
  .card.mob-card .mob-kr-row.mob-kr-done .mob-kr-fill {
    background: linear-gradient(90deg, #4ade80, #86efac) !important;
  }

  /* 6. KR ✓ / + action button: type accent
        Exclude .mob-gift-buy-btn (rose accent managed separately)
        and .mob-kr-complete-btn (always green for "complete" semantics) */
  .card.mob-card .mob-kr-inc:not(.mob-gift-buy-btn):not(.mob-kr-complete-btn) {
    border-color: color-mix(in srgb, var(--mob-border-color, #818cf8) 35%, rgba(255,255,255,0.06)) !important;
    background: color-mix(in srgb, var(--mob-border-color, #818cf8) 15%, rgba(255,255,255,0.04)) !important;
    color: color-mix(in srgb, var(--mob-border-color, #a5b4fc) 75%, white 25%) !important;
  }
  .card.mob-card .mob-kr-inc:not(.mob-gift-buy-btn):not(.mob-kr-complete-btn):active {
    background: color-mix(in srgb, var(--mob-border-color, #818cf8) 30%, rgba(255,255,255,0.08)) !important;
    transform: scale(0.90) !important;
  }

  /* 7. KR check-mark glyph (◯ / ✓ in first column): type hint */
  .card.mob-card .mob-kr-check {
    color: color-mix(in srgb, var(--mob-border-color, #818cf8) 45%, rgba(232,238,247,0.30)) !important;
  }
  .card.mob-card .mob-kr-row.mob-kr-done .mob-kr-check {
    color: #4ade80 !important;
  }

}

/* ── P311: Search Chip Color + Depth Polish Wave ─────────────────────────── */
/* Goal: (1) active search chips show the type's own colour, (2) note-dim     *
 * lines carry a whisper of the card's type accent, (3) type-aware focus ring */
@media (max-width: 767px) {

  /* ─ 1. Active search filter chips: each type gets its brand colour ─────── */
  /* Set --sf-c on the chip; the appearance rule below consumes it.           */
  .mob-sf-chip.mob-sf-active                        { --sf-c: #6366f1; } /* all / fallback */
  .mob-sf-chip.mob-sf-active[data-type="note"]      { --sf-c: #6366f1; }
  .mob-sf-chip.mob-sf-active[data-type="reminder"]  { --sf-c: #ef4444; }
  .mob-sf-chip.mob-sf-active[data-type="checklist"] { --sf-c: #22c55e; }
  .mob-sf-chip.mob-sf-active[data-type="link"]      { --sf-c: #3b82f6; }
  .mob-sf-chip.mob-sf-active[data-type="expense"]   { --sf-c: #f97316; }
  .mob-sf-chip.mob-sf-active[data-type="tracker"]   { --sf-c: #6366f1; }
  .mob-sf-chip.mob-sf-active[data-type="goal"]      { --sf-c: #a78bfa; }
  .mob-sf-chip.mob-sf-active[data-type="book"]      { --sf-c: #f59e0b; }
  .mob-sf-chip.mob-sf-active[data-type="project"]   { --sf-c: #3b82f6; }

  /* Apply the variable to chip appearance — one rule, all types */
  .mob-sf-chip.mob-sf-active {
    background:   color-mix(in srgb, var(--sf-c) 18%, rgba(255,255,255,0.04)) !important;
    border-color: color-mix(in srgb, var(--sf-c) 50%, rgba(255,255,255,0.10)) !important;
    color:        color-mix(in srgb, var(--sf-c) 74%, white 26%) !important;
    /* double ring: inner opaque + outer ambient glow */
    box-shadow:
      0 0 0 1px color-mix(in srgb, var(--sf-c) 22%, transparent),
      0 2px 10px color-mix(in srgb, var(--sf-c) 18%, transparent) !important;
    font-weight: 700 !important;
  }
  /* Resting chips: keep a very faint type-colour potential on hover */
  .mob-sf-chip:not(.mob-sf-active):active {
    background: color-mix(in srgb, #818cf8 14%, rgba(255,255,255,0.04)) !important;
  }

  /* ─ 2. Note dim lines: inherit a whisper of the card's type accent ──────── */
  .card.mob-card .mob-note-line.mob-note-dim {
    color: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 14%,
      rgba(232, 238, 247, 0.38)
    ) !important;
  }

  /* ─ 3. Note primary lines: soft type tint (replaces flat --mb-text-2) ───── */
  .card.mob-card .mob-note-line:not(.mob-note-dim):not(.mob-note-warn):not(.mob-note-good) {
    color: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 8%,
      rgba(232, 238, 247, 0.82)
    ) !important;
  }

  /* ─ 4. Input focus ring: type-accent instead of generic blue ────────────── */
  .card.mob-card input:focus:not([type="range"]) {
    outline: none !important;
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 58%, rgba(255,255,255,0.12)) !important;
    box-shadow: 0 0 0 2.5px color-mix(in srgb, var(--mob-border-color, #6366f1) 22%, transparent) !important;
  }

  /* ─ 5. Quick-add input placeholder: accent-tinted cue text ──────────────── */
  .card.mob-card .mob-cl-quick-input::placeholder {
    color: color-mix(in srgb, var(--mob-border-color, #6366f1) 32%, rgba(232,238,247,0.32)) !important;
    opacity: 1 !important;
  }

}

/* ── P312: Counter & Footer Polish Wave ──────────────────────────────────── */
/* Replaces all the per-type hardcoded gradient counter-btn rules with one
   unified CSS variable rule (same technique as the mob-qr-btn unification). */
@media (max-width: 767px) {

  /* 1. Counter / log buttons: type gradient (replaces violet fallback + 20 per-type rules) */
  .card.mob-card .mob-counter-btn {
    background: linear-gradient(
      135deg,
      var(--mob-border-color, #6366f1),
      color-mix(in srgb, var(--mob-border-color, #6366f1) 72%, #000 28%)
    ) !important;
    box-shadow:
      0 4px 16px color-mix(in srgb, var(--mob-border-color, #6366f1) 38%, transparent),
      inset 0 1px 0 rgba(255,255,255,0.16) !important;
    border: none !important;
    color: #fff !important;
  }
  .card.mob-card .mob-counter-btn:active {
    box-shadow: 0 2px 8px color-mix(in srgb, var(--mob-border-color, #6366f1) 28%, transparent) !important;
    transform: scale(0.95) !important;
    transition: transform 0.07s ease, box-shadow 0.07s ease !important;
  }

  /* 2. Card time / timestamp in footer: type-tinted (replaces flat gray) */
  .card.mob-card .mob-card-time {
    color: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 22%,
      rgba(232, 238, 247, 0.38)
    ) !important;
    letter-spacing: 0.01em !important;
  }

  /* 3. Habit dots: undone dot border uses type accent (done stays green) */
  .card.mob-card .mob-habit-dot:not(.done) {
    border-color: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 28%,
      rgba(255,255,255,0.16)
    ) !important;
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 7%,
      rgba(255,255,255,0.04)
    ) !important;
  }
  .card.mob-card .mob-habit-dot:not(.done):active {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 18%,
      rgba(255,255,255,0.06)
    ) !important;
    transform: scale(0.85) !important;
  }

  /* 4. Swipe-left reveal action: type-accent (pin / archive type action) */
  .card.mob-card .mob-swipe-action-left {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #22c55e) 22%,
      rgba(255,255,255,0.06)
    ) !important;
    border-radius: 16px 0 0 16px !important;
  }

}

/* ── P313: Agenda Pill Type Color + Generic Progress Fill Wave ─────────────── */
@media (max-width: 767px) {

  /* 1. Agenda strip pills: each pill shows its card's type colour
        --ag-c is set inline via JS (_mobTypeAccent).
        Overdue class keeps red; today class uses the type colour.          */
  .mob-agenda-pill:not(.mob-agenda-overdue) {
    background:   color-mix(in srgb, var(--ag-c, #f59e0b) 10%, rgba(255,255,255,0.04)) !important;
    border-color: color-mix(in srgb, var(--ag-c, #f59e0b) 28%, rgba(255,255,255,0.08)) !important;
  }
  .mob-agenda-pill:not(.mob-agenda-overdue) .mob-agenda-bdg {
    color: color-mix(in srgb, var(--ag-c, #f59e0b) 85%, white 15%) !important;
  }
  .mob-agenda-pill:not(.mob-agenda-overdue):active {
    background: color-mix(in srgb, var(--ag-c, #f59e0b) 20%, rgba(255,255,255,0.06)) !important;
  }
  /* Overdue pills: keep red border but add a micro type-tint to the bg */
  .mob-agenda-pill.mob-agenda-overdue {
    background: rgba(239,68,68,0.11) !important;
    border-color: rgba(239,68,68,0.30) !important;
  }

  /* 2. Generic progress fill: cards without a specific mob-bar-* class
        use the card's own type-gradient as fill (the typed bars keep theirs). */
  .card.mob-card .mob-progress-bar:not([class*="mob-bar-"]) .mob-progress-fill {
    background: linear-gradient(
      90deg,
      var(--mob-border-color, #6366f1),
      color-mix(in srgb, var(--mob-border-color, #6366f1) 62%, white 38%)
    ) !important;
  }

  /* 3. Section header count badge: neutral instead of hardcoded violet */
  .mob-shdr-count {
    background: rgba(255,255,255,0.07) !important;
    color:       rgba(255,255,255,0.40) !important;
  }

  /* 4. Section header divider line: barely-visible accent (ties to feed theme) */
  .mob-section-hdr::after {
    background: linear-gradient(
      to left,
      transparent,
      rgba(255,255,255,0.06) 30%,
      rgba(255,255,255,0.06) 70%,
      transparent
    ) !important;
  }

}

/* ── P314: Ripple & Tactile Polish Wave ──────────────────────────────────── */
/* Adds iOS-style radial ripple on counter / quick-row buttons (CSS-only).   */
@media (max-width: 767px) {

  /* 1. Counter/log buttons: ripple on press
        ::after is free (only ::before is blocked on .mob-card itself).      */
  .card.mob-card .mob-counter-btn {
    position: relative !important;
    overflow: hidden !important;
  }
  .card.mob-card .mob-counter-btn::after {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: radial-gradient(
      circle at 50% 50%,
      rgba(255,255,255,0.28) 0%,
      transparent 65%
    ) !important;
    opacity: 0 !important;
    transform: scale(0.4) !important;
    border-radius: inherit !important;
    /* On finger-up, fade out */
    transition: transform 0.35s ease-out, opacity 0.35s ease-out !important;
    pointer-events: none !important;
  }
  .card.mob-card .mob-counter-btn:active::after {
    /* On finger-down: appear instantly */
    opacity: 1 !important;
    transform: scale(2.2) !important;
    transition: none !important;
  }

  /* 2. Quick-row buttons (mob-qr-btn): same ripple treatment */
  .card.mob-card .mob-qr-btn {
    position: relative !important;
    overflow: hidden !important;
  }
  .card.mob-card .mob-qr-btn::after {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: radial-gradient(
      circle at 50% 50%,
      rgba(255,255,255,0.22) 0%,
      transparent 70%
    ) !important;
    opacity: 0 !important;
    transform: scale(0.3) !important;
    border-radius: inherit !important;
    transition: transform 0.3s ease-out, opacity 0.3s ease-out !important;
    pointer-events: none !important;
  }
  .card.mob-card .mob-qr-btn:active::after {
    opacity: 1 !important;
    transform: scale(2.0) !important;
    transition: none !important;
  }

  /* 3. Stat separator: type-tinted instead of generic white */
  .card.mob-card .mob-stat {
    border-inline-start-color: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 18%,
      rgba(255, 255, 255, 0.06)
    ) !important;
  }

  /* 4. Hero zone: gentle top-fade to remove hard edge at card bg join */
  .card.mob-card .mob-hero {
    position: relative !important;
  }

}

/* ── P315: Sheet Deep Identity Wave ──────────────────────────────────────── */
/* Sheet elements that were still using generic colors now get type accent.   */
@media (max-width: 767px) {

  /* 1. Edit button: type-tinted (the primary semantic action for the card)   */
  .mob-sheet[style*="--sheet-type-color"] .msb-edit {
    border-color: color-mix(in srgb, var(--sheet-type-color) 30%, rgba(255,255,255,0.08)) !important;
    background:   color-mix(in srgb, var(--sheet-type-color) 10%, rgba(255,255,255,0.04)) !important;
    color:        color-mix(in srgb, var(--sheet-type-color) 70%, #e8eef7) !important;
  }
  .mob-sheet[style*="--sheet-type-color"] .msb-edit:active {
    background: color-mix(in srgb, var(--sheet-type-color) 22%, rgba(255,255,255,0.06)) !important;
    transform: scale(0.97) !important;
  }

  /* 2. Preview block border: type-tinted left edge + subtle bg */
  .mob-sheet[style*="--sheet-type-color"] .msb-preview {
    border-inline-start-width: 2px !important;
    border-inline-start-color: color-mix(in srgb, var(--sheet-type-color) 44%, rgba(255,255,255,0.06)) !important;
    background: color-mix(in srgb, var(--sheet-type-color) 5%, rgba(255,255,255,0.035)) !important;
  }

  /* 3. Stat tiles (msb-tile): subtle type wash on bg + border */
  .mob-sheet[style*="--sheet-type-color"] .msb-tile {
    background:   color-mix(in srgb, var(--sheet-type-color) 8%, rgba(255,255,255,0.03)) !important;
    border-color: color-mix(in srgb, var(--sheet-type-color) 16%, rgba(255,255,255,0.05)) !important;
  }
  /* Active tile stays cyan-branded (semantic) */
  .mob-sheet[style*="--sheet-type-color"] .msb-tile.is-active {
    background:   color-mix(in srgb, var(--sheet-type-color) 18%, rgba(255,255,255,0.06)) !important;
    border-color: color-mix(in srgb, var(--sheet-type-color) 40%, rgba(255,255,255,0.10)) !important;
    color:        color-mix(in srgb, var(--sheet-type-color) 80%, white 20%) !important;
  }

  /* 4. Secondary buttons: ripple on press */
  .msb-secondary,
  .msb-edit {
    position: relative !important;
    overflow: hidden !important;
  }
  .msb-secondary::after,
  .msb-edit::after {
    content: '' !important;
    position: absolute !important;
    inset: 0 !important;
    background: radial-gradient(circle at 50% 50%, rgba(255,255,255,0.16) 0%, transparent 70%) !important;
    opacity: 0 !important;
    transform: scale(0.3) !important;
    border-radius: inherit !important;
    transition: transform 0.3s ease-out, opacity 0.3s ease-out !important;
    pointer-events: none !important;
  }
  .msb-secondary:active::after,
  .msb-edit:active::after {
    opacity: 1 !important;
    transform: scale(2.2) !important;
    transition: none !important;
  }

}

/* ── P316: Speed Dial Color + Compact Tap Wave ───────────────────────────── */
@media (max-width: 767px) {

  /* 1. Speed dial icon active state: match card type vs generic indigo */
  .mob-sd-item:active .mob-sd-icon {
    /* Keep existing scale; the bg color is now set inline via JS */
    transform: scale(0.88) !important;
    filter: brightness(1.2) !important;
  }
  .mob-sd-item:active .mob-sd-label {
    opacity: 0.7 !important;
    transform: scale(0.96) translateX(-2px) !important;
    transition: transform 0.1s, opacity 0.1s !important;
  }

  /* 2. Compact row tap feedback: type-tinted highlight */
  .card.mob-card.mob-card-compact:active {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 14%,
      rgba(12, 17, 26, 0.8)
    ) !important;
  }

  /* 3. Compact row: icon gets a very subtle type-tinted capsule bg */
  .card.mob-card.mob-card-compact .mob-cp-icon {
    background: color-mix(
      in srgb,
      var(--mob-border-color, #6366f1) 12%,
      rgba(255,255,255,0.04)
    ) !important;
    padding: 3px 4px !important;
    border-radius: 8px !important;
    width: 26px !important;
    text-align: center !important;
  }

  /* 4. Improve KR-inc button border-radius (make it rounder — friendlier) */
  .card.mob-card .mob-kr-inc {
    border-radius: 10px !important;
  }

  /* 5. Progress ring track: 15% opacity instead of existing 12-15%
        Already using specific stroke colors — just add a global glow to ring fill */
  .card.mob-card .mob-prog-ring .mob-ring-fill {
    filter: drop-shadow(0 0 2.5px color-mix(in srgb, var(--mob-border-color, #818cf8) 45%, transparent)) !important;
  }
  /* Done ring: keep the existing done glow, not the type glow */
  .card.mob-card .mob-prog-ring.mob-ring-done .mob-ring-fill {
    filter: none !important; /* mob-ring-done-pulse animation handles glow */
  }

}

/* ── P317: Ring Color Unification Wave ────────────────────────────────────── */
/* Progress ring stroke colours historically didn't match card type accents.   *
 * This unifies ALL non-semantic rings to use --mob-border-color so ring fill, *
 * glow, hero gradient, stat values, and border are all the same hue.          *
 *                                                                              *
 * Excluded: mob-ring-done (green), mob-ring-expense-warn/over (amber/red),    *
 *           mob-ring-plant-warn/dry (amber/red), mob-ring-pomo-active (red)   */
@media (max-width: 767px) {

  /* 1. Ring fill arc: type-accurate stroke */
  .card.mob-card .mob-prog-ring:not(
    .mob-ring-done,
    .mob-ring-expense-warn,
    .mob-ring-expense-over,
    .mob-ring-plant-warn,
    .mob-ring-plant-dry,
    .mob-ring-pomo-active
  ) .mob-ring-fill {
    stroke: var(--mob-border-color, #818cf8) !important;
  }

  /* 2. Ring track (background arc): consistent 18% opacity of the fill color */
  .card.mob-card .mob-prog-ring:not(
    .mob-ring-done,
    .mob-ring-expense-warn,
    .mob-ring-expense-over,
    .mob-ring-plant-warn,
    .mob-ring-plant-dry,
    .mob-ring-pomo-active
  ) .mob-ring-track {
    stroke: color-mix(
      in srgb,
      var(--mob-border-color, #818cf8) 18%,
      transparent
    ) !important;
  }

  /* 3. Remove the blanket drop-shadow from P316 on these rings now that the
        actual stroke IS the type color — let the P316 rule stand for rings
        with different stroke colours. But for unified rings, the drop-shadow
        already uses --mob-border-color so it just works. No override needed. */

}

/* ── P318: Micro-Animation Wave ──────────────────────────────────────────── */
/* Entrance animations on card sub-elements make each re-render feel alive.  *
 * Progress bars fill in from the start edge, hero numbers slide up, stat    *
 * values fade in, ring arcs appear after card enters — all at 0 cost since  *
 * they play only once (mob-no-anim suppresses them on re-renders).          */@media (max-width: 768px) {

  /* 1. Progress fill reveal — scaleX 0→1 from the RTL start edge (right)   *
   *    Applied only to generic bars; typed bars (mob-bar-*) keep their own. */
  @keyframes mob-fill-reveal {
    from { transform: scaleX(0); }
    to   { transform: scaleX(1); }
  }

  .card.mob-card .mob-progress-bar:not([class*="mob-bar-"]) .mob-progress-fill {
    transform-origin: right center;
    animation: mob-fill-reveal 0.50s cubic-bezier(0.16,1,0.3,1) 0.12s both;
  }

  /* 2. Hero number slide-up + subtle scale entrance */
  @keyframes mob-hero-num-in {
    from { opacity: 0; transform: translateY(7px) scale(0.88); }
    to   { opacity: 1; transform: none; }
  }

  .card.mob-card .mob-hero-num {
    animation: mob-hero-num-in 0.30s cubic-bezier(0.16,1,0.3,1) 0.08s both;
  }

  /* 3. Stat values: subtle fade + 3px lift */
  @keyframes mob-stat-val-in {
    from { opacity: 0; transform: translateY(3px); }
    to   { opacity: 1; transform: none; }
  }

  .card.mob-card .mob-stat-v {
    animation: mob-stat-val-in 0.24s ease-out 0.10s both;
  }

  /* 4. Progress ring arc: fade in after card entrance so it feels "loaded"  */
  @keyframes mob-ring-fill-fadein {
    from { opacity: 0; }
    to   { opacity: 1; }
  }

  .card.mob-card .mob-prog-ring .mob-ring-fill {
    animation: mob-ring-fill-fadein 0.38s ease-out 0.22s both;
  }

  /* 5. NO RE-ENTER: suppress all sub-element animations for already-visible *
   *    cards. JS adds .mob-no-anim when a card's data-id was already in the  *
   *    grid DOM before renderCards() was called.                              *
   *                                                                           *
   *  CRITICAL: The P153 entrance rule sets `opacity: 0` directly on the      *
   *  element (not inside keyframes), so killing the animation alone would     *
   *  leave already-visible cards permanently invisible. We force opacity:1.  */
  .card.mob-card.mob-no-anim {
    animation: none !important;
    animation-delay: 0ms !important;
    opacity: 1 !important;       /* ← counteracts P153's explicit opacity:0 */
    transform: none !important;  /* ← reset any from-keyframe transform too  */
  }
  .card.mob-card.mob-no-anim .mob-progress-fill,
  .card.mob-card.mob-no-anim .mob-hero-num,
  .card.mob-card.mob-no-anim .mob-stat-v,
  .card.mob-card.mob-no-anim .mob-prog-ring .mob-ring-fill {
    animation: none !important;
    animation-delay: 0ms !important;
  }
  /* Restore sub-element opacity/transform that might be frozen by fill-mode:both */
  .card.mob-card.mob-no-anim .mob-hero-num,
  .card.mob-card.mob-no-anim .mob-stat-v,
  .card.mob-card.mob-no-anim .mob-prog-ring .mob-ring-fill {
    opacity: 1 !important;
    transform: none !important;
  }
  .card.mob-card.mob-no-anim .mob-progress-bar:not([class*="mob-bar-"]) .mob-progress-fill {
    transform: scaleX(1) !important;  /* ← restore from scaleX(0) fill-mode */
  }

  /* 6. Reduced-motion: also suppress new animations */
  @media (prefers-reduced-motion: reduce) {
    .card.mob-card .mob-hero-num,
    .card.mob-card .mob-stat-v,
    .card.mob-card .mob-prog-ring .mob-ring-fill,
    .card.mob-card .mob-progress-bar:not([class*="mob-bar-"]) .mob-progress-fill {
      animation: none !important;
    }
  }

}

/* ── P319: Action Glow Wave ──────────────────────────────────────────────── */
/* Post-render feedback: type-colored outline ring pulses when a quick action *
 * updates a card. Also upgrades compact tap ripple and scroll highlight.     */@media (max-width: 768px) {

  /* 1. Action flash — outline ring expands from card border then fades out   *
   *    P319 rule comes after P318 .mob-no-anim, so it wins for updated cards */
  @keyframes mob-card-action-outline {
    0%   { outline: 0px solid transparent;                                       outline-offset: 0px; }
    18%  { outline: 3px solid color-mix(in srgb,
             var(--mob-border-color, #a78bfa) 58%, transparent);
           outline-offset: 2px; }
    100% { outline: 0px solid transparent;                                       outline-offset: 8px; }
  }

  .card.mob-card.mob-card-action-flash {
    animation: mob-card-action-outline 0.88s cubic-bezier(0.16,1,0.3,1) forwards !important;
  }

  /* 2. Scroll-to-card highlight — now type-aware (replaces hard-coded red    *
   *    box-shadow pulse which was invisible behind per-type !important rules) */
  .mob-card-highlight {
    animation: mob-card-action-outline 1.20s ease forwards !important;
  }

  /* 3. Compact card tap ripple — type-colored wash expands on :active        */
  .card.mob-card.mob-card-compact { position: relative; }

  .card.mob-card.mob-card-compact::after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: color-mix(in srgb, var(--mob-border-color, #818cf8) 20%, transparent);
    opacity: 0;
    transform: scale(0.90);
    transition: opacity 0.30s ease-out, transform 0.30s ease-out;
    pointer-events: none;
    z-index: 0;
  }

  .card.mob-card.mob-card-compact:active::after {
    opacity: 1;
    transform: scale(1);
    transition: none;
  }

  /* 4. Reduced-motion: show outline without animation instead of nothing     */
  @media (prefers-reduced-motion: reduce) {
    .card.mob-card.mob-card-action-flash,
    .mob-card-highlight {
      animation: none !important;
      outline: 3px solid color-mix(in srgb, var(--mob-border-color, #a78bfa) 40%, transparent) !important;
    }
  }

}

/* ── P320: Notifications Settings Pane ──────────────────────────────────── */
.settings-badge-status {
  font-size: .78rem;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 20px;
  background: rgba(255,255,255,.06);
  letter-spacing: .01em;
}
.notif-enable-btn {
  display: inline-block;
  margin: 2px 0 10px;
  padding: 7px 18px;
  border-radius: 10px;
  background: var(--accent, #22d375);
  color: #0e0c15;
  font-size: .82rem;
  font-weight: 700;
  border: none;
  cursor: pointer;
  transition: opacity .15s;
}
.notif-enable-btn:active { opacity: .75; }
/* ── end P320 ────────────────────────────────────────────────────────────── */

/* ── P321: Filter Transition + Skeleton Loading ──────────────────────────── */
@media (max-width: 600px) {

  /* ─ Grid exit / enter ─ */
  @keyframes mobGridFadeOut {
    from { opacity: 1; transform: translateY(0); }
    to   { opacity: 0; transform: translateY(-8px); }
  }
  @keyframes mobGridFadeIn {
    from { opacity: 0; transform: translateY(10px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .mob-grid-exit {
    animation: mobGridFadeOut 0.09s ease-in forwards;
    pointer-events: none;
  }
  .mob-grid-enter {
    animation: mobGridFadeIn 0.22s cubic-bezier(0.16,1,0.3,1) both;
  }

  /* ─ Skeleton cards ─ */
  @keyframes mobSkeletonShimmer {
    0%   { background-position: -400px 0; }
    100% { background-position:  400px 0; }
  }
  .mob-skeleton-card {
    border-radius: 16px;
    overflow: hidden;
    height: 96px;
    margin-bottom: 10px;
    background: linear-gradient(
      90deg,
      rgba(255,255,255,.04) 25%,
      rgba(255,255,255,.09) 50%,
      rgba(255,255,255,.04) 75%
    );
    background-size: 800px 100%;
    animation: mobSkeletonShimmer 1.4s infinite linear;
    border: 1px solid rgba(255,255,255,.06);
    position: relative;
  }
  .mob-skeleton-card::before {
    content: '';
    position: absolute;
    inset: 14px 14px auto 14px;
    height: 12px;
    border-radius: 6px;
    background: rgba(255,255,255,.08);
  }
  .mob-skeleton-card::after {
    content: '';
    position: absolute;
    top: 40px;
    left: 14px;
    right: 40%;
    height: 9px;
    border-radius: 5px;
    background: rgba(255,255,255,.05);
  }
  /* varied heights for visual interest */
  .mob-skeleton-card:nth-child(2) { height: 76px; }
  .mob-skeleton-card:nth-child(3) { height: 112px; }
  .mob-skeleton-card:nth-child(4) { height: 80px; }
  .mob-skeleton-card:nth-child(5) { height: 100px; animation-delay: .1s; }
  .mob-skeleton-card:nth-child(6) { height: 76px;  animation-delay: .2s; }

}
/* ── end P321 ────────────────────────────────────────────────────────────── */

/* ── P322: Haptic + Quick-Action Tap Feedback ────────────────────────────── */
@media (max-width: 600px) {

  /* Burst animation on quick-action button tap */
  @keyframes mobQrTap {
    0%   { transform: scale(1); filter: brightness(1); }
    25%  { transform: scale(1.12); filter: brightness(1.35); }
    55%  { transform: scale(0.97); }
    100% { transform: scale(1); filter: brightness(1); }
  }
  .mob-qr-btn.mob-qr-tap,
  .mob-dose-log-btn.mob-qr-tap,
  .mob-celebrate-btn.mob-qr-tap,
  .mob-zakat-pay-btn.mob-qr-tap,
  .mob-contact-log-btn.mob-qr-tap,
  .mob-plant-fert-btn.mob-qr-tap,
  .mob-review-quick-btn.mob-qr-tap,
  .mob-loan-remind-btn.mob-qr-tap,
  .mob-meet-remind-btn.mob-qr-tap,
  .mob-appl-warranty-btn.mob-qr-tap {
    animation: mobQrTap 0.32s cubic-bezier(0.16, 1, 0.3, 1) both !important;
  }

}
/* ── end P322 ────────────────────────────────────────────────────────────── */

/* ── P323: Smart Compact Cards ───────────────────────────────────────────── */
@media (max-width: 600px) {

  /* Thin progress bar at bottom of compact card */
  .mob-cp-pbar {
    height: 3px;
    background: rgba(255,255,255,0.05);
    border-radius: 0 0 10px 10px;
    overflow: hidden;
    margin: 0;
  }
  .mob-cp-pbar-fill {
    height: 100%;
    background: var(--mob-border-color, #6366f1);
    border-radius: inherit;
    transition: width 0.4s cubic-bezier(0.16,1,0.3,1);
    opacity: 0.85;
  }

  /* Context badges in compact row (urgency / progress % / streak) */
  .mob-cp-badge {
    flex-shrink: 0;
    font-size: 0.58rem;
    font-weight: 800;
    padding: 1px 5px;
    border-radius: 5px;
    white-space: nowrap;
    letter-spacing: 0.01em;
    border: 1px solid transparent;
  }
  .mob-cp-bdg-danger {
    background: rgba(239,68,68,.14);
    color: #f87171;
    border-color: rgba(239,68,68,.22);
  }
  .mob-cp-bdg-warn {
    background: rgba(251,191,36,.12);
    color: #fbbf24;
    border-color: rgba(251,191,36,.18);
  }
  .mob-cp-bdg-pct {
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 13%, transparent);
    color: var(--mob-border-color, #6366f1);
    border-color: color-mix(in srgb, var(--mob-border-color, #6366f1) 22%, transparent);
  }
  .mob-cp-bdg-streak {
    background: rgba(251,191,36,.1);
    color: #fbbf24;
    border-color: rgba(251,191,36,.14);
  }
  .mob-cp-bdg-done {
    background: rgba(34,197,94,.13);
    color: #4ade80;
    border-color: rgba(34,197,94,.2);
  }

}
/* ── end P323 ────────────────────────────────────────────────────────────── */

/* ── P324: Goals Badge + Today Quick-Complete + Hero Goals Row ───────────── */
@media (max-width: 768px) {
  /* Goals nav badge — green accent to distinguish from tasks (amber) */
  .mob-nav-badge-goals {
    background: #22d375;
    color: #0d1117;
  }

  /* ── Home hero goals progress row ─────────────────────────── */
  .mob-hw-goals {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    background: rgba(99,102,241,0.08);
    border: 1px solid rgba(99,102,241,0.18);
    border-radius: 10px;
    margin-bottom: 10px;
    cursor: pointer;
    transition: background 0.15s;
  }
  .mob-hw-goals:active { background: rgba(99,102,241,0.15); }
  .mob-hw-goals-all {
    background: rgba(34,211,117,0.08);
    border-color: rgba(34,211,117,0.2);
  }
  .mob-hw-goals-ico { font-size: 14px; flex-shrink: 0; }
  .mob-hw-goals-body { flex: 1; display: flex; flex-direction: column; gap: 4px; }
  .mob-hw-goals-lbl {
    font-size: 0.7rem;
    font-weight: 600;
    color: rgba(165,164,255,0.9);
  }
  .mob-hw-goals-all .mob-hw-goals-lbl { color: rgba(34,211,117,0.9); }
  .mob-hw-goals-track {
    height: 3px;
    background: rgba(255,255,255,0.07);
    border-radius: 2px;
    overflow: hidden;
  }
  .mob-hw-goals-fill {
    height: 100%;
    background: linear-gradient(90deg, #6366f1, #a78bfa);
    border-radius: 2px;
    transition: width 0.4s ease;
  }
  .mob-hw-goals-all .mob-hw-goals-fill {
    background: linear-gradient(90deg, #22d375, #34d399);
  }

  /* ── Today page: overdue "complete all" button ─────────────── */
  .today-complete-all-btn {
    margin-right: auto;
    padding: 3px 10px;
    border-radius: 8px;
    border: 1px solid rgba(239,68,68,0.3);
    background: rgba(239,68,68,0.08);
    color: #fca5a5;
    font-size: 0.68rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.12s, transform 0.1s;
    font-family: inherit;
    direction: rtl;
  }
  .today-complete-all-btn:active {
    background: rgba(239,68,68,0.18);
    transform: scale(0.96);
  }

  /* ── Goals panel: all-done celebrate state ─────────────────── */
  .goals-all-done {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
    padding: 16px 0 8px;
  }
  .goals-all-done-msg {
    font-size: 0.85rem;
    font-weight: 700;
    color: #22d375;
    text-align: center;
  }
  .goals-new-week-btn {
    padding: 8px 20px;
    border-radius: 10px;
    border: 1px solid rgba(99,102,241,0.3);
    background: rgba(99,102,241,0.1);
    color: #a5b4fc;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    transition: background 0.15s;
  }
  .goals-new-week-btn:active { background: rgba(99,102,241,0.2); }
}
/* ── end P324 ────────────────────────────────────────────────────────────── */

/* ── P325: Inline Habit Checkboxes in Today Page ────────────────────────── */
@media (max-width: 768px) {
  /* Replaces the old today-habits-grid */
  .today-habits-expanded { display: flex; flex-direction: column; gap: 10px; }

  /* Each routine card in the today habits section */
  .today-rtn-card {
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.06);
    border-radius: 12px;
    overflow: hidden;
  }

  /* Routine card header row (tap → opens card sheet) */
  .today-rtn-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    cursor: pointer;
    background: rgba(255,255,255,0.02);
    border-bottom: 1px solid rgba(255,255,255,0.05);
  }
  .today-rtn-header:active { background: rgba(255,255,255,0.05); }
  .today-rtn-icon { font-size: 18px; flex-shrink: 0; }
  .today-rtn-meta { flex: 1; display: flex; flex-direction: column; gap: 4px; overflow: hidden; }
  .today-rtn-title {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--text-primary, #e8eef7);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .today-rtn-track {
    height: 3px;
    background: rgba(255,255,255,0.08);
    border-radius: 2px;
    overflow: hidden;
  }
  .today-rtn-fill {
    height: 100%;
    background: linear-gradient(90deg, #34d399, #22d375);
    border-radius: 2px;
    transition: width 0.3s ease;
  }
  .today-rtn-frac {
    font-size: 0.68rem;
    font-variant-numeric: tabular-nums;
    color: rgba(255,255,255,0.45);
    flex-shrink: 0;
  }

  /* Individual habit items list */
  .today-rtn-items { padding: 6px 0; }

  .today-habit-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    cursor: pointer;
    transition: background 0.1s;
    border-radius: 0;
  }
  .today-habit-item:active { background: rgba(255,255,255,0.04); }
  .today-habit-done { opacity: 0.5; }
  .today-habit-done .today-habit-item-text { text-decoration: line-through; }

  /* Checkbox circle */
  .today-habit-cb {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,0.2);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.15s, border-color 0.15s, transform 0.1s;
    color: #fff;
  }
  .today-habit-cb-done {
    background: #22d375;
    border-color: #22d375;
    transform: scale(1.05);
  }
  .today-habit-item:active .today-habit-cb:not(.today-habit-cb-done) {
    border-color: rgba(34,211,117,0.5);
    background: rgba(34,211,117,0.1);
  }

  /* Habit text */
  .today-habit-item-text {
    font-size: 0.8rem;
    color: var(--text-primary, #e8eef7);
    flex: 1;
    line-height: 1.3;
  }
}
/* ── end P325 ────────────────────────────────────────────────────────────── */

/* ── P326: Today Page Polish ─────────────────────────────────────────────── */
@media (max-width: 768px) {
  /* Today page goals stat tile */
  .today-stat.today-stat-goals {
    background: rgba(99,102,241,0.06);
    border: 1px solid rgba(99,102,241,0.18);
    cursor: pointer;
    transition: background 0.12s;
  }
  .today-stat.today-stat-goals:active { background: rgba(99,102,241,0.14); }
  .today-stat.today-stat-goals .today-stat-num { color: #a5b4fc; }
  .today-stat.today-stat-goals[data-all-done="1"] .today-stat-num { color: #22d375; }

  /* Hero "clear" tone (overdue=0, today=0, but habits done) */
  .today-hero-clear {
    background: linear-gradient(160deg, #0d4f35 0%, #0f2d24 40%, #0d1827 100%);
    border-bottom: 1px solid rgba(34,211,117,0.12);
  }

  /* "All done today" banner above sections */
  .today-all-clear-banner {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 8px 14px;
    margin-bottom: 12px;
    background: rgba(34,211,117,0.07);
    border: 1px solid rgba(34,211,117,0.18);
    border-radius: 10px;
    font-size: 0.75rem;
    font-weight: 700;
    color: #34d399;
    text-align: center;
  }

  /* Improved empty-final celebrate state */
  .today-empty-celebrate {
    text-align: center;
    padding: 32px 16px;
  }
  .today-empty-celebrate-icon {
    font-size: 3.5rem;
    margin-bottom: 12px;
    animation: todayCelebPulse 2s ease-in-out infinite;
  }
  @keyframes todayCelebPulse {
    0%, 100% { transform: scale(1); opacity: 1; }
    50% { transform: scale(1.12); opacity: 0.85; }
  }
  .today-empty-actions {
    display: flex;
    gap: 8px;
    justify-content: center;
    margin-top: 14px;
  }
}
/* ── end P326 ────────────────────────────────────────────────────────────── */

/* ── P327: Multi-type Hero Capture ──────────────────────────────────────── */
@media (max-width: 768px) {
  .mob-hw-cap-types {
    display: flex;
    gap: 6px;
    margin-bottom: 8px;
    padding: 0 2px;
  }
  .mob-hw-cap-type {
    flex: 1;
    background: rgba(255,255,255,0.06);
    border: 1.5px solid rgba(255,255,255,0.1);
    border-radius: 10px;
    padding: 6px 4px;
    font-size: 1.15rem;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, transform 0.1s;
    text-align: center;
    line-height: 1;
  }
  .mob-hw-cap-type:active { transform: scale(0.88); }
  .mob-hw-cap-type.active {
    background: rgba(99,102,241,0.25);
    border-color: rgba(99,102,241,0.7);
    box-shadow: 0 0 8px rgba(99,102,241,0.3);
  }
  .mob-hw-cap-row {
    display: flex;
    align-items: center;
    gap: 8px;
  }
  .mob-hw-cap-ico {
    font-size: 1.2rem;
    min-width: 24px;
    text-align: center;
    flex-shrink: 0;
    transition: transform 0.15s;
  }
}
/* ── end P327 ────────────────────────────────────────────────────────────── */

/* ── P328: Long-press Card Quick Action Menu ────────────────────────────── */
.mob-card-ctx {
  position: fixed;
  inset: 0;
  z-index: 9200;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  pointer-events: none;
}
.mob-card-ctx.mob-card-ctx-open { pointer-events: auto; }
.mob-card-ctx-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,0);
  transition: background 0.2s;
}
.mob-card-ctx.mob-card-ctx-open .mob-card-ctx-backdrop { background: rgba(0,0,0,0.55); }
.mob-card-ctx-panel {
  position: relative;
  width: 100%;
  max-width: 480px;
  background: #1c1930;
  border-radius: 22px 22px 0 0;
  border-top: 1px solid rgba(255,255,255,0.1);
  padding: 0 0 max(16px, env(safe-area-inset-bottom));
  transform: translateY(102%);
  transition: transform 0.28s cubic-bezier(0.16, 1, 0.3, 1);
  overflow: hidden;
}
.mob-card-ctx.mob-card-ctx-open .mob-card-ctx-panel { transform: translateY(0); }
.mob-card-ctx-title {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 20px 12px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
  font-weight: 600;
  font-size: 0.9rem;
  color: rgba(232,238,247,0.8);
  direction: rtl;
  text-align: right;
}
.mob-card-ctx-items {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(80px, 1fr));
  gap: 8px;
  padding: 12px 12px 4px;
}
.mob-card-ctx-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 5px;
  background: rgba(255,255,255,0.05);
  border: 1.5px solid rgba(255,255,255,0.09);
  border-radius: 14px;
  padding: 12px 6px 10px;
  cursor: pointer;
  color: rgba(232,238,247,0.82);
  font-size: 0.73rem;
  font-family: inherit;
  transition: background 0.12s, transform 0.1s;
  -webkit-tap-highlight-color: transparent;
}
.mob-card-ctx-item:active { background: rgba(255,255,255,0.11); transform: scale(0.91); }
.mob-ctx-active { background: rgba(99,102,241,0.2) !important; border-color: rgba(99,102,241,0.45) !important; color: #a5b4fc !important; }
.mob-ctx-danger { color: rgba(248,113,113,0.85) !important; }
.mob-ctx-danger:active { background: rgba(239,68,68,0.1) !important; }
.mob-ctx-ico { font-size: 1.35rem; line-height: 1; }
/* P357: type-specific primary action + separator */
.mob-ctx-primary {
  background: rgba(99,102,241,0.14) !important;
  border-color: rgba(99,102,241,0.32) !important;
  color: #a5b4fc !important;
}
.mob-ctx-primary:active { background: rgba(99,102,241,0.25) !important; }
.mob-ctx-sep {
  grid-column: 1 / -1;
  height: 1px;
  background: rgba(255,255,255,0.07);
  margin: 2px 0;
}
/* ── end P328 ────────────────────────────────────────────────────────────── */

/* ── P330: Card Sheet Prev/Next Navigation ──────────────────────────────── */
@media (max-width: 768px) {
  .mob-sheet-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 16px 4px;
    border-top: 1px solid rgba(255,255,255,0.07);
    margin-top: 4px;
  }
  .mob-sheet-nav-btn {
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 10px;
    color: rgba(232,238,247,0.8);
    font-size: 0.78rem;
    font-family: inherit;
    padding: 6px 14px;
    cursor: pointer;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
    flex: 1;
    text-align: center;
  }
  .mob-sheet-nav-btn:active { background: rgba(255,255,255,0.12); transform: scale(0.94); }
  .mob-sheet-nav-disabled { opacity: 0.3; cursor: default; }
  .mob-sheet-nav-disabled:active { transform: none !important; }
  .mob-sheet-nav-pos {
    font-size: 0.72rem;
    color: rgba(148,163,184,0.6);
    min-width: 40px;
    text-align: center;
    flex-shrink: 0;
  }
}
/* ── end P330 ────────────────────────────────────────────────────────────── */

/* ── P332: Recently Opened Quick-Access Strip ───────────────────────────── */
@media (max-width: 768px) {
  .mob-hw-recent {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 0 0 6px;
  }
  .mob-hw-recent-lbl {
    font-size: 0.67rem;
    color: rgba(148,163,184,0.5);
    letter-spacing: 0.3px;
    font-weight: 500;
    padding: 0 2px;
  }
  .mob-hw-recent-chips {
    display: flex;
    gap: 7px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  .mob-hw-recent-chips::-webkit-scrollbar { display: none; }
  .mob-hw-rec-chip {
    display: flex;
    align-items: center;
    gap: 6px;
    background: rgba(255,255,255,0.04);
    border: 1.5px solid rgba(255,255,255,0.08);
    border-inline-start: 3px solid var(--rcc, #6366f1);
    border-radius: 10px;
    padding: 6px 11px;
    cursor: pointer;
    color: rgba(232,238,247,0.80);
    font-size: 0.74rem;
    font-family: inherit;
    white-space: nowrap;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
    opacity: 0;
    animation: mob-rc-chip-in 0.22s ease forwards;
    transition: background 0.12s, transform 0.1s;
  }
  .mob-hw-rec-chip:hover { background: rgba(255,255,255,0.07); }
  .mob-hw-rec-chip:active { background: rgba(255,255,255,0.11); transform: scale(0.93); }
  .mob-hw-rec-ico { font-size: 0.92rem; line-height: 1; }
  .mob-hw-rec-ttl {
    font-size: 0.71rem;
    max-width: 110px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: rgba(232,238,247,0.78);
  }
  @keyframes mob-rc-chip-in {
    from { opacity: 0; transform: translateX(6px); }
    to   { opacity: 1; transform: translateX(0); }
  }
}
/* ── end P332 ────────────────────────────────────────────────────────────── */

/* ── P333: Clickable Sheet Tags + Related Cards Strip ───────────────────── */
@media (max-width: 768px) {
  /* Tag buttons — tapping filters the feed */
  .mob-sheet-tag {
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s, transform 0.1s, opacity 0.12s;
    font-family: inherit;
  }
  .mob-sheet-tag:hover { background: rgba(108,99,255,0.2); }
  .mob-sheet-tag:active { transform: scale(0.90); opacity: 0.7; }

  /* Related cards strip */
  .mob-sheet-related {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px 16px 6px;
    border-top: 1px solid rgba(255,255,255,0.06);
    margin-top: 2px;
  }
  .mob-srel-lbl {
    font-size: 0.67rem;
    color: rgba(148,163,184,0.5);
    letter-spacing: 0.3px;
    font-weight: 500;
  }
  .mob-srel-chips {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-bottom: 2px;
  }
  .mob-srel-chips::-webkit-scrollbar { display: none; }
  .mob-srel-chip {
    display: flex;
    align-items: center;
    gap: 6px;
    background: rgba(255,255,255,0.04);
    border: 1.5px solid rgba(255,255,255,0.09);
    border-radius: 10px;
    padding: 7px 11px;
    cursor: pointer;
    color: rgba(232,238,247,0.78);
    font-size: 0.74rem;
    font-family: inherit;
    white-space: nowrap;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.12s, transform 0.1s;
  }
  .mob-srel-chip:active { background: rgba(255,255,255,0.1); transform: scale(0.93); }
  .mob-srel-ico { font-size: 0.9rem; line-height: 1; }
  .mob-srel-ttl {
    font-size: 0.71rem;
    max-width: 110px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}
/* ── end P333 ────────────────────────────────────────────────────────────── */

/* ── P334: Voice Mic Button + Sheet Inline Title Edit ───────────────────── */
@media (max-width: 768px) {
  /* Mic button in hero capture row */
  .mob-hw-mic-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255,255,255,0.06);
    border: 1.5px solid rgba(255,255,255,0.1);
    font-size: 1rem;
    cursor: pointer;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
    transition: background 0.15s, transform 0.1s, box-shadow 0.15s;
    color: rgba(232,238,247,0.7);
    font-family: inherit;
  }
  .mob-hw-mic-btn:active { transform: scale(0.88); background: rgba(99,102,241,0.2); }
  .mob-hw-mic-btn.mob-mic-active {
    background: rgba(239,68,68,0.18);
    border-color: rgba(239,68,68,0.4);
    box-shadow: 0 0 10px rgba(239,68,68,0.3);
    animation: mob-mic-pulse 0.9s ease-in-out infinite;
  }
  @keyframes mob-mic-pulse {
    0%, 100% { box-shadow: 0 0 8px rgba(239,68,68,0.3); }
    50%       { box-shadow: 0 0 18px rgba(239,68,68,0.55); }
  }

  /* Sheet title — tap-to-edit */
  .mob-sheet-title { cursor: pointer; }
  .mob-sheet-title:active { opacity: 0.7; }

  /* Inline input inside sheet title */
  .mob-st-inp {
    width: 100%;
    background: rgba(255,255,255,0.07);
    border: 1.5px solid rgba(99,102,241,0.5);
    border-radius: 8px;
    color: rgba(232,238,247,0.95);
    font-size: 1rem;
    font-weight: 600;
    font-family: inherit;
    padding: 4px 8px;
    outline: none;
    direction: rtl;
    box-shadow: 0 0 0 3px rgba(99,102,241,0.15);
  }
  .mob-st-inp:focus {
    border-color: rgba(99,102,241,0.8);
    box-shadow: 0 0 0 3px rgba(99,102,241,0.25);
  }
}
/* ── end P334 ────────────────────────────────────────────────────────────── */

/* ── P335: Today Page "Live Now" Timers Section ─────────────────────────── */
.today-live-section {
  padding: 10px 16px 4px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.today-live-head {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 0.72rem;
  color: rgba(148,163,184,0.55);
  font-weight: 600;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
.today-live-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #22d375;
  animation: today-live-pulse 1.4s ease-in-out infinite;
}
@keyframes today-live-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.5; transform: scale(0.75); }
}
.today-live-item {
  display: flex;
  align-items: center;
  gap: 10px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 14px;
  padding: 10px 12px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.12s, transform 0.1s;
}
.today-live-item:active { background: rgba(255,255,255,0.09); transform: scale(0.98); }
.today-live-fasting  { border-color: rgba(129,140,248,0.25); }
.today-live-pomodoro { border-color: rgba(248,113,113,0.25); }
.today-live-icon { font-size: 1.3rem; width: 28px; text-align: center; flex-shrink: 0; }
.today-live-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.today-live-title {
  font-size: 0.8rem;
  font-weight: 600;
  color: rgba(232,238,247,0.85);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.today-live-timer {
  font-size: 0.76rem;
  color: rgba(148,163,184,0.75);
  font-variant-numeric: tabular-nums;
  direction: ltr;
  text-align: right;
}
.today-live-track {
  height: 4px;
  background: rgba(255,255,255,0.08);
  border-radius: 2px;
  overflow: hidden;
}
.today-live-fill {
  height: 100%;
  border-radius: 2px;
  transition: width 30s linear;
}
.today-live-fill-fasting  { background: linear-gradient(90deg, #818cf8, #a78bfa); }
.today-live-fill-pomodoro { background: linear-gradient(90deg, #f87171, #fb923c); }
.today-live-badge {
  font-size: 0.62rem;
  padding: 2px 7px;
  border-radius: 99px;
  white-space: nowrap;
  flex-shrink: 0;
  font-weight: 500;
}
.today-live-badge-fasting  { background: rgba(129,140,248,0.15); color: #a5b4fc; border: 1px solid rgba(129,140,248,0.25); }
.today-live-badge-pomodoro { background: rgba(248,113,113,0.15); color: #fca5a5; border: 1px solid rgba(248,113,113,0.25); }
/* ── end P335 ────────────────────────────────────────────────────────────── */

/* ── P336: Week Strip Tap Navigation + Day Peek Panel ───────────────────── */
/* Button resets for week-strip day cells */
.mob-hw-day {
  background: none;
  border: none;
  color: inherit;
  font: inherit;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.mob-hw-day:active { opacity: 0.68; transform: scale(0.88); }
/* Day peek panel — inserted after hero in the feed grid */
.mob-day-peek {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transition: max-height 0.28s cubic-bezier(0.4,0,0.2,1), opacity 0.2s;
  margin: 0 4px;
}
.mob-day-peek.mob-dp-vis {
  max-height: 300px;
  opacity: 1;
}
.mob-dp-inner {
  background: rgba(16,13,26,0.97);
  border: 1px solid rgba(139,92,246,0.22);
  border-radius: 14px;
  padding: 10px 12px;
  margin: 0 0 10px;
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  box-shadow: 0 6px 32px rgba(0,0,0,0.55), 0 0 0 1px rgba(139,92,246,0.06);
  animation: mob-dp-in 0.22s cubic-bezier(0.34,1.56,0.64,1) both;
}
@keyframes mob-dp-in {
  from { transform: translateY(-6px) scale(0.97); opacity: 0; }
  to   { transform: none; opacity: 1; }
}
.mob-dp-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.mob-dp-date {
  font-size: 0.76rem;
  font-weight: 600;
  color: rgba(255,255,255,0.82);
  letter-spacing: 0.01em;
}
.mob-dp-past { color: rgba(255,255,255,0.32); }
.mob-dp-close {
  background: none;
  border: none;
  color: rgba(255,255,255,0.3);
  font-size: 0.75rem;
  cursor: pointer;
  padding: 3px 8px;
  border-radius: 8px;
  line-height: 1;
  -webkit-tap-highlight-color: transparent;
}
.mob-dp-close:active { opacity: 0.5; }
.mob-dp-list { display: flex; flex-direction: column; gap: 3px; }
.mob-dp-card-row {
  display: flex;
  align-items: center;
  gap: 9px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 9px;
  padding: 8px 10px;
  cursor: pointer;
  width: 100%;
  text-align: start;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.1s, border-color 0.1s;
}
.mob-dp-card-row:active {
  background: rgba(139,92,246,0.1);
  border-color: rgba(139,92,246,0.28);
}
.mob-dp-ico { font-size: 1rem; flex-shrink: 0; }
.mob-dp-ttl {
  flex: 1;
  font-size: 0.79rem;
  color: rgba(255,255,255,0.84);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mob-dp-arr { color: rgba(255,255,255,0.22); font-size: 0.88rem; flex-shrink: 0; }
/* ── end P336 ────────────────────────────────────────────────────────────── */

/* ── P337: Today Page 28-Day Activity Heatmap ───────────────────────────── */
.today-heatmap {
  margin: 10px 16px 4px;
  padding: 10px 12px 9px;
  background: rgba(255,255,255,0.035);
  border: 1px solid rgba(255,255,255,0.06);
  border-radius: 13px;
  animation: today-heat-fade 0.3s ease both;
}
@keyframes today-heat-fade {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: none; }
}
.today-heat-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 7px;
}
.today-heat-lbl {
  font-size: 0.68rem;
  color: rgba(255,255,255,0.38);
  letter-spacing: 0.02em;
  font-weight: 500;
}
.today-heat-cnt {
  font-size: 0.68rem;
  color: rgba(34,211,117,0.65);
  font-weight: 600;
}
.today-heat-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 3px;
}
.today-heat-cell {
  aspect-ratio: 1;
  border-radius: 3px;
  transition: opacity 0.15s;
}
.today-heat-cell:active { opacity: 0.6; }
.today-heat-0 { background: rgba(255,255,255,0.05); }
.today-heat-1 { background: rgba(34,211,117,0.22); }
.today-heat-2 { background: rgba(34,211,117,0.46); }
.today-heat-3 { background: rgba(34,211,117,0.70); }
.today-heat-4 { background: rgba(34,211,117,0.95); box-shadow: 0 0 4px rgba(34,211,117,0.4); }
.today-heat-today {
  outline: 2px solid rgba(167,139,250,0.75);
  outline-offset: 1px;
  border-radius: 4px;
}
/* ── end P337 ────────────────────────────────────────────────────────────── */

/* ── P338: Home Feed Active Session Bar ──────────────────────────────────── */
.mob-session-bar {
  margin: 0 12px 10px;
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid color-mix(in srgb, var(--sb-color, #6366f1) 30%, transparent);
  background: var(--sb-glow, rgba(99,102,241,0.08));
  animation: mob-sb-in 0.24s cubic-bezier(0.34,1.56,0.64,1) both;
}
@keyframes mob-sb-in {
  from { opacity: 0; transform: scaleY(0.75) translateY(-6px); }
  to   { opacity: 1; transform: none; }
}
.mob-sb-inner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 13px;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}
.mob-sb-inner:active { opacity: 0.72; }
.mob-sb-icon { font-size: 1.15rem; flex-shrink: 0; }
.mob-sb-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.mob-sb-title {
  font-size: 0.77rem;
  font-weight: 600;
  color: rgba(255,255,255,0.85);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mob-sb-track {
  height: 3px;
  background: rgba(255,255,255,0.1);
  border-radius: 2px;
  overflow: hidden;
}
.mob-sb-fill {
  height: 100%;
  background: var(--sb-color, #6366f1);
  border-radius: 2px;
  transition: width 1s linear;
  box-shadow: 0 0 5px var(--sb-color, #6366f1);
}
.mob-sb-label {
  font-size: 0.74rem;
  color: var(--sb-color, rgba(255,255,255,0.5));
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
  flex-shrink: 0;
  letter-spacing: -0.01em;
}
/* ── end P338 ────────────────────────────────────────────────────────────── */

/* ── P339: Sheet Cross-Type Related Tasks ───────────────────────────────── */
.mob-sheet-tasks {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 16px 4px;
  border-top: 1px solid rgba(255,255,255,0.06);
}
.mob-stask-lbl {
  font-size: 0.63rem;
  color: rgba(255,255,255,0.32);
  text-transform: uppercase;
  letter-spacing: 0.07em;
  font-weight: 600;
}
.mob-stask-rows { display: flex; flex-direction: column; gap: 4px; }
.mob-stask-row {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 7px 10px;
  background: rgba(255,255,255,0.035);
  border: 1px solid rgba(255,255,255,0.06);
  border-inline-start: 3px solid var(--stc, #6366f1);
  border-radius: 9px;
  cursor: pointer;
  width: 100%;
  text-align: start;
  color: inherit;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.1s;
}
.mob-stask-row:active { background: rgba(255,255,255,0.07); }
.mob-stask-ico { font-size: 0.92rem; flex-shrink: 0; }
.mob-stask-ttl {
  flex: 1;
  font-size: 0.77rem;
  color: rgba(255,255,255,0.82);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mob-stask-badge {
  font-size: 0.61rem;
  color: var(--stc, #6366f1);
  background: color-mix(in srgb, var(--stc, #6366f1) 14%, transparent);
  padding: 2px 7px;
  border-radius: 99px;
  white-space: nowrap;
  flex-shrink: 0;
  font-weight: 600;
}
/* ── end P339 ────────────────────────────────────────────────────────────── */

/* ── P340: Sheet Inline Due-Date Picker ──────────────────────────────────── */
.mob-sdp-row {
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  padding: 8px 16px;
  border-top: 1px solid rgba(255,255,255,0.06);
  animation: mob-sdp-in 0.16s ease both;
}
@keyframes mob-sdp-in {
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: none; }
}
.mob-sdp-lbl {
  font-size: .75rem;
  color: rgba(255,255,255,0.45);
  white-space: nowrap;
  flex-shrink: 0;
}
/* P381: Quick date preset chips */
.mob-sdp-presets {
  display: flex;
  gap: 4px;
  flex: 1 1 auto;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.mob-sdp-presets::-webkit-scrollbar { display: none; }
.mob-sdp-preset {
  background: rgba(99,102,241,.13);
  border: 1px solid rgba(99,102,241,.28);
  border-radius: 20px;
  color: #a5b4fc;
  font-size: .68rem;
  font-weight: 600;
  padding: 3px 9px;
  white-space: nowrap;
  cursor: pointer;
  flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
  transition: background .12s, transform .1s;
}
.mob-sdp-preset:active {
  background: rgba(99,102,241,.3);
  transform: scale(.93);
}
.mob-sdp-inp {
  flex: 1 1 140px;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 8px;
  padding: 6px 10px;
  color: #e8eef7;
  font-size: 0.82rem;
  min-width: 0;
  cursor: pointer;
  font-family: inherit;
  appearance: none;
  -webkit-appearance: none;
}
.mob-sdp-inp:focus {
  outline: 2px solid rgba(99,102,241,0.7);
  border-color: transparent;
}
.mob-sdp-cancel {
  background: none;
  border: none;
  color: rgba(255,255,255,0.3);
  font-size: 0.78rem;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 6px;
  flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
}
.mob-sdp-cancel:active { opacity: 0.5; }
/* ── end P340 / P381 quick-presets ──────────────────────────────────────── */

/* ── P341: Sheet Universal Quick-Note Appender ───────────────────────────── */
.mob-sheet-quick-note {
  padding: 8px 16px 10px;
  border-top: 1px solid rgba(255,255,255,0.06);
  display: flex;
  flex-direction: column;
  gap: 5px;
}
.mob-sqn-preview { display: flex; flex-direction: column; gap: 2px; }
.mob-sqn-prev-line {
  font-size: 0.73rem;
  color: rgba(255,255,255,0.42);
  padding: 2px 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.mob-sqn-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.mob-sqn-inp {
  flex: 1;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 9px;
  padding: 7px 11px;
  color: #e8eef7;
  font-size: 0.8rem;
  font-family: inherit;
  min-width: 0;
}
.mob-sqn-inp::placeholder { color: rgba(255,255,255,0.28); }
.mob-sqn-inp:focus {
  outline: none;
  border-color: rgba(99,102,241,0.5);
  background: rgba(99,102,241,0.06);
}
.mob-sqn-btn {
  background: rgba(99,102,241,0.15);
  border: 1px solid rgba(99,102,241,0.25);
  border-radius: 8px;
  color: #a5b4fc;
  font-size: 0.85rem;
  padding: 6px 10px;
  cursor: pointer;
  flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
  transition: background 0.1s;
}
.mob-sqn-btn:active { background: rgba(99,102,241,0.28); }
/* ── end P341 ────────────────────────────────────────────────────────────── */

/* ── P342: Routine Sheet — 14-day streak calendar + habit list ────────────── */
.mob-rt-sheet-list .msb-prev-item { cursor: pointer; user-select: none; align-items: flex-start; gap: .45rem; }
.mob-rt-chk { font-size: .9rem; min-width: 1.1rem; text-align: center; color: var(--mob-border-color); opacity: .7; flex-shrink: 0; }
.msb-prev-item.done .mob-rt-chk { opacity: 1; }
.mob-rt-habit-emoji { font-size: .9rem; flex-shrink: 0; line-height: 1; }
.mob-rt-sheet-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: .25rem .85rem .1rem;
  font-size: .75rem;
}
.mob-rt-sheet-streak {
  color: var(--mob-border-color);
  font-weight: 700;
  font-size: .8rem;
}
.mob-rt-sheet-pct { color: rgba(232,238,247,.45); }
.mob-rt-sheet-cal {
  display: flex;
  gap: 3px;
  padding: .35rem .85rem .65rem;
  align-items: center;
}
.mob-rt-cal-cell {
  flex: 1;
  height: 10px;
  border-radius: 3px;
  background: rgba(255,255,255,.07);
}
.mob-rt-cal-lvl-1 { background: color-mix(in srgb, var(--mob-border-color) 22%, transparent); }
.mob-rt-cal-lvl-2 { background: color-mix(in srgb, var(--mob-border-color) 45%, transparent); }
.mob-rt-cal-lvl-3 { background: color-mix(in srgb, var(--mob-border-color) 70%, transparent); }
.mob-rt-cal-lvl-4 { background: var(--mob-border-color); }
.mob-rt-cal-today {
  outline: 2px solid var(--mob-border-color);
  outline-offset: 2px;
  border-radius: 3px;
}
/* ── end P342 ────────────────────────────────────────────────────────────── */

/* ── P343: Goal KR breakdown + Project task list in sheet preview ─────────── */
.mob-gs-kr-list { padding-bottom: .2rem; }
.mob-gs-kr-row {
  display: flex; align-items: center; gap: .4rem;
  padding: .32rem .5rem;
  border-radius: 7px;
  transition: background .12s;
}
.mob-gs-kr-row.mob-gs-kr-done { opacity: .55; }
.mob-gs-kr-chk {
  font-size: .85rem; min-width: 1rem; text-align: center;
  color: var(--mob-border-color); flex-shrink: 0;
}
.mob-gs-kr-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.mob-gs-kr-text { font-size: .76rem; color: rgba(232,238,247,.85); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.mob-gs-kr-bar { height: 3px; background: rgba(255,255,255,.09); border-radius: 2px; overflow: hidden; }
.mob-gs-kr-fill { height: 100%; background: var(--mob-border-color); border-radius: 2px; transition: width .3s; }
.mob-gs-kr-frac { font-size: .68rem; color: rgba(232,238,247,.5); flex-shrink: 0; }
.mob-gs-kr-inc {
  padding: 0 .45rem; height: 22px; border: none;
  border-radius: 5px; background: color-mix(in srgb, var(--mob-border-color) 22%, transparent);
  color: var(--mob-border-color); font-size: .8rem; font-weight: 700; cursor: pointer;
  flex-shrink: 0; line-height: 1;
}
.mob-gs-kr-inc:active { background: color-mix(in srgb, var(--mob-border-color) 40%, transparent); }
.mob-gs-total-bar { height: 3px; background: rgba(255,255,255,.08); border-radius: 2px; overflow: hidden; margin: .25rem .5rem .2rem; }
.mob-gs-total-fill { height: 100%; border-radius: 2px; transition: width .4s; }
/* Project task list — reuse msb-prev-item + add chk style */
.mob-prj-sheet-list .msb-prev-item { cursor: pointer; user-select: none; }
.mob-prj-chk { font-size: .85rem; min-width: 1rem; text-align: center; color: var(--mob-border-color); flex-shrink: 0; }
/* ── end P343 ────────────────────────────────────────────────────────────── */

/* ── P344: Meeting time-until + Meditation ring in sheet preview ──────────── */
.mob-meeting-prev { border-left: 3px solid var(--prev-c, var(--mob-border-color)) !important; }
.mob-mt-time-row { display: flex; align-items: center; gap: .4rem; }
.mob-mt-clock { font-size: .95rem; }
.mob-mt-time-str { font-size: .95rem; font-weight: 700; color: var(--prev-c, rgba(232,238,247,.9)); }
.mob-med-prev { padding: .6rem .75rem !important; }
.mob-med-row { display: flex; align-items: center; gap: .8rem; }
.mob-med-ring-wrap { position: relative; width: 44px; height: 44px; flex-shrink: 0; }
.mob-med-ring-track {
  fill: none; stroke: rgba(255,255,255,.1); stroke-width: 4;
}
.mob-med-ring-fill {
  fill: none; stroke: #6366f1; stroke-width: 4;
  stroke-linecap: round; transition: stroke-dasharray .5s;
}
.mob-med-ring-fill.mob-med-ring-done { stroke: #22d375; }
.mob-med-ring-pct {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  font-size: .55rem; font-weight: 700; color: rgba(232,238,247,.8);
}
.mob-med-meta { flex: 1; display: flex; flex-direction: column; gap: 3px; }
.mob-med-today { font-size: .8rem; color: rgba(232,238,247,.9); }
.mob-med-streak { font-size: .75rem; color: rgba(232,238,247,.6); }
.mob-med-total  { font-size: .72rem; color: rgba(232,238,247,.45); }
/* ── end P344 ────────────────────────────────────────────────────────────── */

/* ── P345: Quran progress + Watchlist status/rating + Birthday countdown ──── */
.mob-quran-prev-meta {
  font-size: .72rem; color: rgba(232,238,247,.5);
  padding: .2rem 0 0; margin-top: .1rem;
}
/* Watchlist */
.mob-wl-prev { padding: .55rem .8rem !important; display: flex; flex-direction: column; gap: .3rem; }
.mob-wl-status { font-size: .82rem; color: rgba(232,238,247,.85); }
.mob-wl-rating { display: flex; align-items: center; gap: .3rem; }
.mob-wl-stars { font-size: .85rem; color: #f59e0b; letter-spacing: 1px; }
.mob-wl-rat-num { font-size: .72rem; color: rgba(232,238,247,.5); }
.mob-wl-episode { font-size: .75rem; color: rgba(232,238,247,.5); }
/* Birthday */
.mob-bd-prev {
  padding: .6rem .8rem !important;
  border-inline-start: 3px solid var(--bd-c, var(--mob-border-color)) !important;
}
.mob-bd-row { display: flex; align-items: center; gap: .75rem; }
.mob-bd-num-wrap { display: flex; flex-direction: column; align-items: center; min-width: 2.4rem; }
.mob-bd-num { font-size: 1.5rem; font-weight: 800; color: var(--bd-c, var(--mob-border-color)); line-height: 1.1; }
.mob-bd-num-lbl { font-size: .6rem; color: rgba(232,238,247,.45); margin-top: -.1rem; }
.mob-bd-info { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.mob-bd-headline { font-size: .85rem; font-weight: 600; color: rgba(232,238,247,.9); }
.mob-bd-age { font-size: .72rem; color: rgba(232,238,247,.5); }
/* ── end P345 ────────────────────────────────────────────────────────────── */

/* ── P346: Urgency sort mode highlight ───────────────────────────────────── */
/* First option in sort sheet (urgency) gets fire accent */
.mob-sort-options .mob-sort-opt:first-child {
  border-color: rgba(251,146,60,.25) !important;
  background: rgba(251,146,60,.04) !important;
}
.mob-sort-options .mob-sort-opt:first-child .mob-sort-opt-label { color: #fb923c; }
.mob-sort-options .mob-sort-opt:first-child.mob-sort-opt-active {
  background: rgba(251,146,60,.14) !important;
  border-color: rgba(251,146,60,.4) !important;
}
/* ── end P346 ────────────────────────────────────────────────────────────── */

/* ── P347: Plant watering + Vitals BP + Chore schedule previews ───────────── */
.mob-plant-prev { border-inline-start: 3px solid var(--pl-c, #22c55e) !important; }
.mob-plant-species { font-size: .78rem; color: rgba(232,238,247,.6); padding-bottom: .2rem; }
/* Vitals */
.mob-vitals-prev {
  padding: .6rem .8rem !important;
  border-inline-start: 3px solid var(--vt-c, #22d375) !important;
}
.mob-vt-row { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.mob-vt-bp  { display: flex; align-items: baseline; gap: .15rem; }
.mob-vt-num { font-size: 1.35rem; font-weight: 800; color: var(--vt-c, #22d375); line-height: 1; }
.mob-vt-sep { font-size: .9rem; color: rgba(232,238,247,.4); }
.mob-vt-unit { font-size: .65rem; color: rgba(232,238,247,.45); margin-inline-start: .25rem; }
.mob-vt-badges { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.mob-vt-status {
  font-size: .72rem; font-weight: 700;
  color: var(--vt-c, #22d375);
  background: color-mix(in srgb, var(--vt-c, #22d375) 15%, transparent);
  border-radius: 4px; padding: 1px 6px;
}
.mob-vt-pulse { font-size: .72rem; color: rgba(232,238,247,.5); }
.mob-vt-date  { font-size: .7rem; color: rgba(232,238,247,.4); margin-top: .3rem; }
/* Chore */
.mob-chore-prev { border-inline-start: 3px solid rgba(255,255,255,.12) !important; }
.mob-chore-count { font-size: .7rem; color: rgba(232,238,247,.4); margin-top: .25rem; }
/* ── end P347 ────────────────────────────────────────────────────────────── */

/* ── P348: Today Page — Active Streaks Row ───────────────────────────────── */
.today-streaks-row {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .6rem 1rem .4rem;
}
.today-streaks-lbl {
  font-size: .7rem;
  color: rgba(232,238,247,.4);
  flex-shrink: 0;
  white-space: nowrap;
}
.today-streaks-chips {
  display: flex;
  gap: .4rem;
  overflow-x: auto;
  scrollbar-width: none;
  flex: 1;
}
.today-streaks-chips::-webkit-scrollbar { display: none; }
.today-streak-chip {
  display: flex;
  align-items: center;
  gap: .25rem;
  padding: .28rem .5rem;
  border-radius: 8px;
  border: 1px solid color-mix(in srgb, var(--sc, #f59e0b) 30%, transparent);
  background: color-mix(in srgb, var(--sc, #f59e0b) 8%, transparent);
  color: rgba(232,238,247,.85);
  font-size: .72rem;
  cursor: pointer;
  flex-shrink: 0;
  transition: background .12s, transform .1s;
  -webkit-tap-highlight-color: transparent;
}
.today-streak-chip:active { transform: scale(0.93); }
.today-streak-chip.today-streak-done {
  opacity: .5;
  border-style: dashed;
}
.today-sc-icon { font-size: .85rem; }
.today-sc-count { font-size: .7rem; color: var(--sc, #f59e0b); font-weight: 700; }
.today-sc-tick { font-size: .65rem; color: #22d375; font-weight: 700; }
/* ── end P348 ────────────────────────────────────────────────────────────── */

/* ── P349: Gold value + Crypto gain/loss + Net Worth sheet previews ─────── */
/* Gold */
.mob-gold-prev { padding: .55rem .8rem !important; border-inline-start: 3px solid #f59e0b !important; }
.mob-gold-row { display: flex; align-items: center; justify-content: space-between; }
.mob-gold-main { display: flex; align-items: baseline; gap: .2rem; }
.mob-gold-num { font-size: 1.2rem; font-weight: 800; color: #f59e0b; }
.mob-gold-cur { font-size: .72rem; color: rgba(232,238,247,.5); }
.mob-gold-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 1px; font-size: .7rem; color: rgba(232,238,247,.5); }
.mob-gold-price { font-size: .68rem; color: rgba(232,238,247,.35); margin-top: .2rem; }
/* Crypto */
.mob-cr-prev { padding: .55rem .8rem !important; border-inline-start: 3px solid #f97316 !important; }
.mob-cr-row { display: flex; align-items: center; justify-content: space-between; }
.mob-cr-val { display: flex; align-items: baseline; gap: .15rem; }
.mob-cr-num { font-size: 1.15rem; font-weight: 800; color: #f97316; }
.mob-cr-unit { font-size: .7rem; color: rgba(232,238,247,.5); }
.mob-cr-gain { font-size: .78rem; font-weight: 700; }
.mob-cr-count { font-size: .7rem; color: rgba(232,238,247,.4); margin-top: .25rem; }
/* Net Worth */
.mob-nw-prev { padding: .55rem .8rem !important; }
.mob-nw-net-row { display: flex; align-items: center; justify-content: space-between; }
.mob-nw-lbl { font-size: .72rem; color: rgba(232,238,247,.5); }
.mob-nw-num { font-size: .95rem; font-weight: 800; }
.mob-nw-bar-row { display: flex; height: 4px; background: rgba(255,255,255,.07); border-radius: 2px; overflow: hidden; margin: .3rem 0 .2rem; position: relative; }
.mob-nw-a-seg, .mob-nw-l-seg { position: absolute; height: 100%; border-radius: 2px; transition: width .4s; }
.mob-nw-a-seg { left: 0; }
.mob-nw-l-seg { left: 0; }
.mob-nw-detail { display: flex; justify-content: space-between; font-size: .68rem; color: rgba(232,238,247,.35); }
/* ── end P349 ────────────────────────────────────────────────────────────── */

/* ── P350: Podcast + Review + Recipe + Medicine sheet previews ─────────── */
/* podcast */
.mob-podcast-prev { padding: .55rem .8rem !important; }
.mob-pd-row { display: flex; align-items: center; gap: .45rem; margin-bottom: .35rem; flex-wrap: wrap; }
.mob-pd-badge { font-size: .7rem; padding: .18rem .55rem; border-radius: 6px; font-weight: 600; }
.mob-pd-ep { font-size: .7rem; color: rgba(232,238,247,.55); margin-right: auto; }
.mob-pd-stars { display: flex; align-items: center; gap: .12rem; margin-bottom: .3rem; }
.mob-pd-star-on  { color: #f59e0b; font-size: .95rem; }
.mob-pd-star-off { color: rgba(232,238,247,.2); font-size: .95rem; }
.mob-pd-rat-num { font-size: .68rem; color: rgba(232,238,247,.45); margin-right: .25rem; }
.mob-pd-takeaway { font-size: .7rem; color: rgba(232,238,247,.5); line-height: 1.35; direction: rtl; border-top: 1px solid rgba(232,238,247,.07); padding-top: .3rem; margin-top: .15rem; }
/* review */
.mob-review-prev { padding: .5rem .8rem !important; }
.mob-rv-meta { display: flex; align-items: center; gap: .5rem; margin-top: .3rem; }
.mob-rv-type-badge { font-size: .66rem; background: rgba(139,92,246,.18); color: #a78bfa; border-radius: 4px; padding: .1rem .4rem; font-weight: 600; }
.mob-rv-count { font-size: .68rem; color: rgba(232,238,247,.45); }
/* recipe */
.mob-recipe-prev { padding: .55rem .8rem !important; }
.mob-rc-main-row { display: flex; align-items: center; gap: .6rem; margin-bottom: .3rem; }
.mob-rc-cook-wrap { display: flex; flex-direction: column; align-items: center; min-width: 2.4rem; }
.mob-rc-cook-num  { font-size: 1.5rem; font-weight: 700; color: var(--vt-c, #e8eef7); line-height: 1; }
.mob-rc-cook-lbl  { font-size: .6rem; color: rgba(232,238,247,.4); }
.mob-rc-cook-emoji { font-size: 1.6rem; }
.mob-rc-meta-col  { display: flex; flex-direction: column; gap: .18rem; flex: 1; }
.mob-rc-meta-item { font-size: .7rem; color: rgba(232,238,247,.55); }
.mob-rc-meta-item.mob-rc-today { color: #22d375 !important; font-weight: 600; }
.mob-rc-stars { display: flex; gap: .15rem; }
.mob-rc-star-on  { color: #f59e0b; font-size: 1rem; }
.mob-rc-star-off { color: rgba(232,238,247,.2); font-size: 1rem; }
/* medicine */
.mob-medicine-prev { padding: .55rem .8rem !important; }
.mob-md-refill-row { display: flex; align-items: center; gap: .5rem; margin-bottom: .3rem; }
.mob-md-refill-icon { font-size: 1.3rem; flex-shrink: 0; }
.mob-md-refill-info { display: flex; flex-direction: column; gap: .1rem; flex: 1; }
.mob-md-name { font-size: .75rem; color: rgba(232,238,247,.85); font-weight: 600; }
.mob-md-days { font-size: .68rem; font-weight: 600; }
.mob-md-empty { font-size: .75rem; color: rgba(232,238,247,.4); padding: .2rem 0; }
.mob-md-dose-row { display: flex; align-items: center; gap: .5rem; font-size: .68rem; border-top: 1px solid rgba(232,238,247,.07); padding-top: .28rem; margin-top: .1rem; }
.mob-md-dose-last { color: rgba(232,238,247,.45); }
.mob-md-dose-last.mob-md-dose-today { color: #22d375; font-weight: 600; }
.mob-md-streak { color: #f59e0b; font-weight: 600; }
/* ── end P350 ────────────────────────────────────────────────────────────── */

/* ── P351: Document + Vehicle + Appliance + Gift sheet previews ─────────── */
/* document */
.mob-document-prev { padding: .5rem .8rem !important; }
.mob-dc-counts { display: flex; gap: .6rem; font-size: .68rem; margin-top: .25rem; }
.mob-dc-valid   { color: #22d375; font-weight: 600; }
.mob-dc-expired { color: #f59e0b; font-weight: 600; }
/* vehicle */
.mob-vehicle-prev { padding: .5rem .8rem !important; }
.mob-vh-counts { display: flex; gap: .5rem; font-size: .68rem; margin: .25rem 0; }
.mob-vh-overdue { color: #ef4444; font-weight: 600; }
.mob-vh-soon    { color: #f59e0b; font-weight: 600; }
/* appliance */
.mob-appliance-prev { padding: .55rem .8rem !important; }
.mob-ap-type-row { display: flex; align-items: center; justify-content: space-between; margin-bottom: .35rem; }
.mob-ap-type-label { font-size: .75rem; color: rgba(232,238,247,.75); font-weight: 600; }
.mob-ap-warr { font-size: .68rem; font-weight: 600; }
.mob-ap-service-row { display: flex; align-items: center; gap: .4rem; font-size: .68rem; border-top: 1px solid rgba(232,238,247,.07); padding-top: .28rem; margin-top: .1rem; }
.mob-ap-svc-lbl { color: rgba(232,238,247,.4); }
.mob-ap-svc-val { color: rgba(232,238,247,.7); }
.mob-ap-svc-val.mob-ap-svc-today { color: #22d375; font-weight: 600; }
.mob-ap-svc-count { color: rgba(232,238,247,.35); margin-right: auto; font-size: .64rem; }
/* gift */
.mob-gift-prev { padding: .55rem .8rem !important; }
.mob-gt-progress-row { display: flex; align-items: center; gap: .4rem; margin-bottom: .3rem; }
.mob-gt-frac { display: flex; align-items: baseline; gap: .05rem; min-width: 2.2rem; }
.mob-gt-num  { font-size: 1.3rem; font-weight: 800; color: var(--vt-c, #e8eef7); line-height: 1; }
.mob-gt-tot  { font-size: .75rem; color: rgba(232,238,247,.4); }
.mob-gt-bar-wrap { flex: 1; height: 6px; background: rgba(255,255,255,.08); border-radius: 3px; overflow: hidden; }
.mob-gt-bar  { height: 100%; background: rgba(255,255,255,.08); }
.mob-gt-fill { height: 100%; border-radius: 3px; transition: width .4s; }
.mob-gt-pct  { font-size: .68rem; color: rgba(232,238,247,.45); min-width: 2rem; text-align: left; }
.mob-gt-next { font-size: .7rem; color: rgba(232,238,247,.6); margin-bottom: .2rem; }
.mob-gt-empty { font-size: .72rem; color: rgba(232,238,247,.35); }
.mob-gt-date  { font-size: .68rem; margin-top: .2rem; }
.mob-gt-recip { font-size: .68rem; color: rgba(232,238,247,.4); margin-top: .12rem; }
/* ── end P351 ────────────────────────────────────────────────────────────── */

/* ── P352: Zakat + Playlist + Idea + WeekPlan sheet previews ────────────── */
/* zakat */
.mob-zakat-prev { padding: .55rem .8rem !important; }
.mob-zk-main-row { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: .3rem; }
.mob-zk-label  { font-size: .72rem; color: rgba(232,238,247,.55); }
.mob-zk-amount { font-size: .95rem; font-weight: 800; }
.mob-zk-pct-row { display: flex; justify-content: space-between; font-size: .65rem; color: rgba(232,238,247,.4); margin-top: .2rem; }
.mob-zk-paid   { font-size: .7rem; color: #22d375; font-weight: 600; margin-top: .25rem; }
.mob-zk-empty  { font-size: .72rem; color: rgba(232,238,247,.35); }
/* playlist */
.mob-playlist-prev { padding: .55rem .8rem !important; }
.mob-pl-header-row { display: flex; align-items: center; gap: .45rem; margin-bottom: .35rem; }
.mob-pl-platform { font-size: .72rem; font-weight: 700; }
.mob-pl-genre { font-size: .65rem; color: rgba(232,238,247,.45); background: rgba(255,255,255,.06); border-radius: 4px; padding: .1rem .35rem; }
.mob-pl-track-row { display: flex; align-items: baseline; gap: .25rem; }
.mob-pl-track-num { font-size: 1.45rem; font-weight: 800; color: var(--vt-c, #e8eef7); line-height: 1; }
.mob-pl-track-lbl { font-size: .72rem; color: rgba(232,238,247,.5); }
.mob-pl-dur { font-size: .68rem; color: rgba(232,238,247,.4); margin-right: auto; }
.mob-pl-mood { font-size: .68rem; color: rgba(232,238,247,.45); margin-top: .25rem; }
.mob-pl-empty { font-size: .72rem; color: rgba(232,238,247,.35); }
/* idea */
.mob-idea-prev { padding: .55rem .8rem !important; }
.mob-id-status-row { display: flex; align-items: center; gap: .4rem; margin-bottom: .3rem; }
.mob-id-badge { font-size: .68rem; padding: .15rem .45rem; border-radius: 5px; font-weight: 600; }
.mob-id-wc { font-size: .65rem; color: rgba(232,238,247,.4); margin-right: auto; }
.mob-id-preview { font-size: .7rem; color: rgba(232,238,247,.6); line-height: 1.4; direction: rtl; }
/* week_plan */
.mob-week-plan-prev { padding: .5rem .8rem !important; }
.mob-wp-today-items { margin-top: .28rem; display: flex; flex-direction: column; gap: .14rem; }
.mob-wp-item { font-size: .7rem; color: rgba(232,238,247,.6); }
.mob-wp-item.mob-wp-item-done { color: rgba(232,238,247,.3); text-decoration: line-through; }
.mob-wp-more { font-size: .65rem; color: rgba(232,238,247,.3); margin-top: .1rem; }
/* ── end P352 ────────────────────────────────────────────────────────────── */

/* ── P353: Password + Code + Inbox + Linkgroup sheet previews ───────────── */
/* password */
.mob-password-prev { padding: .55rem .8rem !important; }
.mob-pw-prev-row { display: flex; align-items: center; gap: .45rem; margin-bottom: .35rem; }
.mob-pw-prev-icon { font-size: 1.2rem; flex-shrink: 0; }
.mob-pw-prev-info { display: flex; flex-direction: column; gap: .1rem; flex: 1; }
.mob-pw-prev-user { font-size: .75rem; color: rgba(232,238,247,.85); font-weight: 600; }
.mob-pw-prev-domain { font-size: .65rem; color: rgba(232,238,247,.4); }
.mob-pw-prev-strength { font-size: .7rem; font-weight: 700; }
.mob-pw-prev-bar { display: flex; gap: 3px; height: 5px; margin-bottom: .25rem; }
.mob-pw-prev-seg { flex: 1; height: 100%; background: rgba(255,255,255,.1); border-radius: 2px; transition: background .3s; }
.mob-pw-prev-seg.mob-pw-prev-act { opacity: .85; }
.mob-pw-prev-age { font-size: .66rem; font-weight: 600; }
/* code */
.mob-code-prev { padding: .5rem .8rem !important; }
.mob-cd-header-row { display: flex; align-items: center; gap: .4rem; margin-bottom: .3rem; }
.mob-cd-lang-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.mob-cd-lang-label { font-size: .72rem; font-weight: 700; }
.mob-cd-line-count { font-size: .65rem; color: rgba(232,238,247,.4); margin-right: auto; }
.mob-cd-preview { font-size: .64rem; font-family: monospace; color: rgba(232,238,247,.65); background: rgba(0,0,0,.25); border-radius: 4px; padding: .3rem .5rem; margin: 0; overflow: hidden; white-space: pre; max-height: 3.8rem; line-height: 1.35; }
.mob-cd-empty { font-size: .72rem; color: rgba(232,238,247,.35); }
/* inbox */
.mob-inbox-prev { padding: .5rem .8rem !important; }
.mob-ib-next { font-size: .7rem; color: rgba(232,238,247,.55); margin-top: .25rem; direction: rtl; }
.mob-ib-done { font-size: .7rem; color: #22d375; margin-top: .25rem; font-weight: 600; }
/* linkgroup */
.mob-linkgroup-prev { padding: .5rem .8rem !important; }
.mob-lg-prev-list { display: flex; flex-direction: column; gap: .2rem; }
.mob-lg-prev-row { display: flex; align-items: center; gap: .3rem; padding: .15rem 0; }
.mob-lg-prev-fav { width: 14px; height: 14px; flex-shrink: 0; object-fit: contain; }
.mob-lg-prev-title { font-size: .72rem; color: rgba(232,238,247,.75); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; direction: ltr; }
.mob-lg-prev-arrow { font-size: .6rem; color: rgba(232,238,247,.3); }
.mob-lg-prev-more { font-size: .65rem; color: rgba(232,238,247,.35); padding-top: .1rem; }
.mob-lg-empty { font-size: .72rem; color: rgba(232,238,247,.35); }
/* ── end P353 ────────────────────────────────────────────────────────────── */

/* ── P354: Status + Command + Page + Fields sheet previews ──────────────── */
/* status/server */
.mob-status-prev { padding: .55rem .8rem !important; }
.mob-st-status-row { display: flex; align-items: center; gap: .45rem; margin-bottom: .3rem; }
.mob-st-dot { width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.mob-st-label { font-size: .78rem; font-weight: 700; }
.mob-st-latency { font-size: .65rem; color: rgba(232,238,247,.45); margin-right: auto; }
.mob-st-mini-graph { display: flex; gap: 3px; margin-bottom: .28rem; height: 16px; align-items: flex-end; }
.mob-st-mini-bar { width: 6px; height: 16px; background: #22d375; border-radius: 2px; opacity: .75; }
.mob-st-mini-bar.mob-st-mini-off { background: #ef4444; height: 8px; }
.mob-st-stats { display: flex; align-items: center; gap: .5rem; font-size: .68rem; flex-wrap: wrap; }
.mob-st-stat { font-weight: 600; }
.mob-st-domain { color: rgba(232,238,247,.35); font-size: .63rem; direction: ltr; margin-right: auto; }
/* command */
.mob-command-prev { padding: .5rem .8rem !important; }
.mob-cmd-header-row { display: flex; align-items: center; gap: .4rem; margin-bottom: .25rem; }
.mob-cmd-icon { font-size: 1rem; }
.mob-cmd-meta { font-size: .65rem; color: rgba(232,238,247,.4); background: rgba(255,255,255,.06); border-radius: 4px; padding: .1rem .3rem; }
.mob-cmd-code { max-height: 3.2rem; direction: ltr; text-align: left; }
/* page */
.mob-page-prev { padding: .5rem .8rem !important; }
.mob-pg-children { display: flex; flex-direction: column; gap: .18rem; }
.mob-pg-child-row { display: flex; align-items: center; gap: .35rem; padding: .15rem 0; border-bottom: 1px solid rgba(232,238,247,.05); }
.mob-pg-child-row:last-child { border-bottom: none; }
.mob-pg-child-icon { font-size: .9rem; flex-shrink: 0; }
.mob-pg-child-title { font-size: .72rem; color: rgba(232,238,247,.75); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; direction: rtl; }
.mob-pg-child-arrow { font-size: .7rem; color: rgba(232,238,247,.3); }
.mob-pg-more { font-size: .65rem; color: rgba(232,238,247,.3); padding-top: .15rem; }
.mob-pg-empty { font-size: .72rem; color: rgba(232,238,247,.35); }
/* fields */
.mob-fields-prev { padding: .5rem .8rem !important; }
.mob-fd-fields-list { display: flex; flex-direction: column; gap: .18rem; }
.mob-fd-field-row { display: flex; align-items: baseline; gap: .4rem; }
.mob-fd-label { font-size: .65rem; color: rgba(232,238,247,.4); min-width: 4rem; flex-shrink: 0; }
.mob-fd-value { font-size: .72rem; color: rgba(232,238,247,.8); flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; direction: rtl; }
.mob-fd-more { font-size: .65rem; color: rgba(232,238,247,.3); margin-top: .1rem; }
.mob-fd-empty { font-size: .72rem; color: rgba(232,238,247,.35); }
/* ── end P354 ────────────────────────────────────────────────────────────── */

/* ── P355: Sticky frosted section headers + tasks urgency groups ─────────── */
@media (max-width: 767px) {
  /* Upgrade mob-section-hdr → sticky frosted glass with left accent border */
  .mob-section-hdr {
    position: sticky !important;
    top: calc(92px + env(safe-area-inset-top, 0px)) !important;
    z-index: 9 !important;
    -webkit-backdrop-filter: blur(12px) !important;
    backdrop-filter: blur(12px) !important;
    background: rgba(10,8,18,0.92) !important;
    border-bottom: 1px solid rgba(255,255,255,0.06) !important;
    border-top: none !important;
    padding: 8px 10px 7px !important;
    margin: 4px -10px 2px !important;
    width: calc(100% + 20px) !important;
    gap: 8px !important;
    border-inline-start: 3px solid rgba(139,92,246,0.55) !important;
    box-sizing: border-box !important;
  }
  /* Hide the old flex-spacer ::after line (replaced by border-bottom above) */
  .mob-section-hdr::after { display: none !important; }
  /* "جميع الكروت" section — neutral accent */
  .mob-section-hdr-all {
    border-inline-start: 3px solid rgba(148,163,184,0.28) !important;
  }
  /* ── Tasks urgency variants ── */
  .mob-section-hdr-overdue {
    border-inline-start: 3px solid rgba(239,68,68,0.80) !important;
    background: rgba(239,30,30,0.07) !important;
  }
  .mob-section-hdr-overdue .mob-shdr-label { color: rgba(252,165,165,0.90) !important; }
  .mob-section-hdr-overdue .mob-shdr-icon  { opacity: 1 !important; }
  .mob-section-hdr-overdue .mob-shdr-count {
    background: rgba(239,68,68,0.18) !important;
    color: #f87171 !important;
    border: 1px solid rgba(239,68,68,0.28) !important;
  }
  .mob-section-hdr-today {
    border-inline-start: 3px solid rgba(245,158,11,0.72) !important;
  }
  .mob-section-hdr-today .mob-shdr-label { color: rgba(251,191,36,0.88) !important; }
  .mob-section-hdr-today .mob-shdr-icon  { opacity: 1 !important; }
  .mob-section-hdr-today .mob-shdr-count {
    background: rgba(245,158,11,0.14) !important;
    color: #fbbf24 !important;
    border: 1px solid rgba(245,158,11,0.24) !important;
  }
  .mob-section-hdr-future {
    border-inline-start: 3px solid rgba(34,197,94,0.52) !important;
  }
  .mob-section-hdr-future .mob-shdr-label { color: rgba(74,222,128,0.75) !important; }
  .mob-section-hdr-future .mob-shdr-count {
    background: rgba(34,197,94,0.10) !important;
    color: #4ade80 !important;
    border: 1px solid rgba(34,197,94,0.18) !important;
  }
  .mob-section-hdr-nodate {
    border-inline-start: 3px solid rgba(148,163,184,0.22) !important;
  }
  .mob-section-hdr-nodate .mob-shdr-label { color: rgba(148,163,184,0.55) !important; }
  .mob-section-hdr-nodate .mob-shdr-count {
    background: rgba(148,163,184,0.08) !important;
    color: #94a3b8 !important;
    border: 1px solid rgba(148,163,184,0.15) !important;
  }
}
/* ── end P355 ────────────────────────────────────────────────────────────── */

/* ── P356: Rich reminder card sheet preview ─────────────────────────────── */
@media (max-width: 767px) {
  .msb-reminder-prev { gap: 6px; flex-direction: column; }
  .msb-rd-hdr {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
  }
  .msb-rd-date {
    font-size: 0.82rem;
    font-weight: 600;
    color: rgba(232,238,247,0.85);
    flex: 1;
    min-width: 0;
  }
  /* Urgency badges */
  .msb-rd-badge {
    font-size: 0.65rem;
    font-weight: 800;
    padding: 2px 8px;
    border-radius: 99px;
    flex-shrink: 0;
    letter-spacing: 0.02em;
  }
  .msb-rd-overdue { background: rgba(239,68,68,0.20); color: #f87171; border: 1px solid rgba(239,68,68,0.30); }
  .msb-rd-today   { background: rgba(245,158,11,0.18); color: #fbbf24; border: 1px solid rgba(245,158,11,0.28); }
  .msb-rd-soon    { background: rgba(96,165,250,0.15); color: #93c5fd; border: 1px solid rgba(96,165,250,0.25); }
  .msb-rd-week    { background: rgba(148,163,184,0.12); color: #94a3b8; border: 1px solid rgba(148,163,184,0.20); }
  .msb-rd-recur {
    font-size: 0.62rem;
    color: rgba(167,139,250,0.8);
    background: rgba(139,92,246,0.12);
    border: 1px solid rgba(139,92,246,0.20);
    padding: 1px 6px;
    border-radius: 99px;
    flex-shrink: 0;
  }
  .msb-rd-snooze-note {
    font-size: 0.7rem;
    color: rgba(251,191,36,0.75);
    background: rgba(245,158,11,0.08);
    padding: 4px 10px;
    border-radius: 8px;
    border: 1px solid rgba(245,158,11,0.15);
  }
  /* Quick postpone row */
  .msb-rd-postpone-row {
    display: flex;
    gap: 6px;
    margin-top: 2px;
  }
  .msb-rd-post-btn {
    flex: 1;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 6px 4px;
    border-radius: 10px;
    border: 1px solid rgba(96,165,250,0.25);
    background: rgba(96,165,250,0.08);
    color: #93c5fd;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
    min-height: 36px;
  }
  .msb-rd-post-btn:active {
    background: rgba(96,165,250,0.18);
    transform: scale(0.96);
  }
}
/* ── end P356 ────────────────────────────────────────────────────────────── */

/* ── P358: Quick-capture bars for content filters ───────────────────────── */
@media (max-width: 767px) {
  .mob-quick-cap-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 12px;
    border-radius: 14px;
    border: 1.5px solid rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.04);
    margin-bottom: 6px;
    animation: mob-card-enter 0.18s ease-out both;
  }
  .mob-qcb-notes { border-color: rgba(99,102,241,0.22); background: rgba(99,102,241,0.06); }
  .mob-qcb-tasks { border-color: rgba(239,68,68,0.20);  background: rgba(239,68,68,0.05);  }
  .mob-qcb-ico { font-size: 1.1rem; flex-shrink: 0; }
  .mob-qcb-input {
    flex: 1;
    background: transparent;
    border: none;
    outline: none;
    font-size: 0.88rem;
    font-family: var(--font-ar, inherit);
    color: rgba(232,238,247,0.88);
    min-width: 0;
    caret-color: #a5b4fc;
  }
  .mob-qcb-input::placeholder { color: rgba(232,238,247,0.35); }
  .mob-qcb-notes .mob-qcb-input:focus { caret-color: #a5b4fc; }
  .mob-qcb-tasks .mob-qcb-input:focus { caret-color: #f87171; }
  .mob-qcb-btn {
    width: 32px; height: 32px;
    border-radius: 10px;
    border: 1px solid rgba(99,102,241,0.3);
    background: rgba(99,102,241,0.14);
    color: #a5b4fc;
    font-size: 1.1rem;
    font-family: inherit;
    cursor: pointer;
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s, transform 0.1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-qcb-btn:active { background: rgba(99,102,241,0.28); transform: scale(0.9); }
  .mob-qcb-tasks .mob-qcb-btn,
  .mob-qcb-btn-tasks {
    border-color: rgba(239,68,68,0.30);
    background: rgba(239,68,68,0.12);
    color: #f87171;
  }
  .mob-qcb-tasks .mob-qcb-btn:active,
  .mob-qcb-btn-tasks:active { background: rgba(239,68,68,0.24); }
}
/* ── end P358 ────────────────────────────────────────────────────────────── */

/* ── P359: Progress Bar Glow Wave — shimmer gradients for all typed bars ─── */
@media (max-width: 767px) {
  /* pill-shaped track + depth groove */
  .card.mob-card .mob-progress-bar {
    border-radius: 99px !important;
    background: rgba(255,255,255,0.055) !important;
    box-shadow: inset 0 1px 1px rgba(0,0,0,0.18) !important;
  }
  .card.mob-card .mob-progress-fill { border-radius: 99px !important; }

  /* sheet preview bar: pill + depth */
  .msb-prev-bar { border-radius: 99px !important; box-shadow: inset 0 1px 1px rgba(0,0,0,0.15) !important; }
  .msb-prev-fill { border-radius: 99px !important; }

  /* quran: emerald → teal shimmer */
  .mob-progress-bar.mob-bar-quran .mob-progress-fill {
    background: linear-gradient(90deg, #065f46 0%, #10b981 42%, #34d399 78%, #10b981 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 3.8s linear infinite !important;
    box-shadow: 0 0 8px rgba(16,185,129,.42) !important;
  }
  /* pomo: deep red → orange shimmer */
  .mob-progress-bar.mob-bar-pomo .mob-progress-fill {
    background: linear-gradient(90deg, #7f1d1d 0%, #ef4444 42%, #f97316 78%, #ef4444 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 3s linear infinite !important;
    box-shadow: 0 0 8px rgba(239,68,68,.42) !important;
  }
  /* course: navy → blue → sky shimmer */
  .mob-progress-bar.mob-bar-course .mob-progress-fill {
    background: linear-gradient(90deg, #1e3a8a 0%, #3b82f6 44%, #60a5fa 80%, #3b82f6 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 3.5s linear infinite !important;
    box-shadow: 0 0 8px rgba(59,130,246,.38) !important;
  }
  /* loan: deep crimson → rose shimmer */
  .mob-progress-bar.mob-bar-loan .mob-progress-fill {
    background: linear-gradient(90deg, #7f1d1d 0%, #dc2626 42%, #f87171 78%, #dc2626 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 4s linear infinite !important;
    box-shadow: 0 0 8px rgba(220,38,38,.36) !important;
  }
  /* meditation: deep violet → lavender shimmer */
  .mob-progress-bar.mob-bar-meditation .mob-progress-fill {
    background: linear-gradient(90deg, #4c1d95 0%, #7c3aed 44%, #c4b5fd 80%, #7c3aed 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 4.5s linear infinite !important;
    box-shadow: 0 0 8px rgba(124,58,237,.38) !important;
  }
  /* fasting: midnight purple → violet shimmer */
  .mob-progress-bar.mob-bar-fasting .mob-progress-fill {
    background: linear-gradient(90deg, #3b0764 0%, #7e22ce 42%, #a855f7 78%, #7e22ce 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 4s linear infinite !important;
    box-shadow: 0 0 8px rgba(168,85,247,.38) !important;
  }
  /* tracker: slate → indigo → cyan shimmer */
  .mob-progress-bar.mob-bar-tracker .mob-progress-fill {
    background: linear-gradient(90deg, #1e3a5f 0%, #6366f1 42%, #22d3ee 78%, #6366f1 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 3.5s linear infinite !important;
    box-shadow: 0 0 8px rgba(99,102,241,.38) !important;
  }
  /* meals: deep orange → amber shimmer */
  .mob-progress-bar.mob-bar-meals .mob-progress-fill {
    background: linear-gradient(90deg, #7c2d12 0%, #ea580c 42%, #fb923c 78%, #ea580c 100%) !important;
    background-size: 200% auto !important;
    animation: mob-shimmer 3.5s linear infinite !important;
    box-shadow: 0 0 8px rgba(234,88,12,.38) !important;
  }
}
/* ── end P359 ────────────────────────────────────────────────────────────── */

/* ── P360: Empty State Polish — floating icon + gradient CTA + glow ──────── */
@keyframes mob-es-float {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-7px); }
}
@keyframes mob-es-cta-glow {
  0%, 100% { box-shadow: 0 0 0   0   rgba(139,92,246,.00); }
  50%       { box-shadow: 0 0 18px 3px rgba(139,92,246,.20); }
}
@media (max-width: 767px) {
  /* entrance animation + relative positioning for pseudo-element */
  .empty-state {
    animation: mob-card-enter 0.28s ease-out both !important;
    position: relative !important;
    overflow: visible !important;
  }
  /* ambient radial behind the icon */
  .empty-state::before {
    content: '' !important;
    position: absolute !important;
    left: 50% !important;
    transform: translateX(-50%) !important;
    top: 20px !important;
    width: 140px !important;
    height: 140px !important;
    background: radial-gradient(ellipse at center, rgba(139,92,246,.13) 0%, transparent 68%) !important;
    pointer-events: none !important;
    z-index: 0 !important;
  }
  /* icon: floating + drop shadow */
  .empty-state .empty-icon {
    position: relative !important;
    z-index: 1 !important;
    animation: mob-es-float 3.6s ease-in-out infinite !important;
    filter: drop-shadow(0 4px 10px rgba(139,92,246,.22)) !important;
  }
  .empty-state .empty-title,
  .empty-state .empty-sub { position: relative !important; z-index: 1 !important; }
  /* CTA button: gradient glass + glow pulse */
  .empty-state > button,
  .empty-state .empty-cta {
    position: relative !important;
    z-index: 1 !important;
    background: linear-gradient(135deg, rgba(99,102,241,.18), rgba(139,92,246,.18)) !important;
    border: 1.5px solid rgba(139,92,246,.38) !important;
    color: #c4b5fd !important;
    border-radius: 14px !important;
    padding: 11px 28px !important;
    font-size: 0.95rem !important;
    font-weight: 700 !important;
    animation: mob-es-cta-glow 3s ease-in-out infinite !important;
    transition: background .14s, transform .1s !important;
    -webkit-tap-highlight-color: transparent !important;
    cursor: pointer !important;
  }
  .empty-state > button:active,
  .empty-state .empty-cta:active {
    transform: scale(0.94) !important;
  }
  /* today all-clear: green tint */
  .mob-today-all-clear::before {
    background: radial-gradient(ellipse at center, rgba(34,197,94,.12) 0%, transparent 68%) !important;
  }
  .mob-today-all-clear > button {
    background: linear-gradient(135deg, rgba(34,197,94,.16), rgba(16,185,129,.16)) !important;
    border-color: rgba(34,197,94,.38) !important;
    color: #86efac !important;
    animation: none !important;
  }
  /* smart all-clear button */
  .smart-show-all-btn {
    background: linear-gradient(135deg, rgba(34,211,112,.15), rgba(16,185,129,.15)) !important;
    border: 1.5px solid rgba(34,211,112,.30) !important;
    color: #34d399 !important;
    border-radius: 14px !important;
    padding: 11px 28px !important;
    font-weight: 700 !important;
    font-size: 0.93rem !important;
    transition: background .14s, transform .1s !important;
    -webkit-tap-highlight-color: transparent !important;
  }
  .smart-show-all-btn:active { transform: scale(0.94) !important; }
}
/* ── end P360 ────────────────────────────────────────────────────────────── */

/* ── P361: Sheet inline tag-add ──────────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-st-tag-add {
    opacity: 0.55 !important;
    font-size: 0.78rem !important;
    padding: 2px 7px !important;
    border-style: dashed !important;
    border-color: rgba(139,92,246,.35) !important;
    color: #c4b5fd !important;
    transition: opacity .15s, background .14s !important;
  }
  .mob-st-tag-add:active { opacity: 1 !important; background: rgba(139,92,246,.15) !important; }
  .mob-sheet-tag-inp-wrap {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 2px 2px;
    animation: mob-card-enter .15s ease-out both;
  }
  .mob-sheet-tag-inp {
    flex: 1;
    background: rgba(139,92,246,.08);
    border: 1.5px solid rgba(139,92,246,.30);
    border-radius: 10px;
    color: rgba(232,238,247,.9);
    font-size: 0.84rem;
    padding: 6px 10px;
    outline: none;
    font-family: var(--font-ar, inherit);
    caret-color: #a5b4fc;
    min-width: 0;
  }
  .mob-sheet-tag-inp::placeholder { color: rgba(232,238,247,.32); }
  .mob-sheet-tag-inp:focus { border-color: rgba(139,92,246,.55); }
  .mob-stag-ok {
    width: 30px; height: 30px;
    border-radius: 9px;
    border: 1px solid rgba(139,92,246,.35);
    background: rgba(139,92,246,.15);
    color: #c4b5fd;
    font-size: .9rem;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    transition: background .12s, transform .1s;
    -webkit-tap-highlight-color: transparent;
  }
  .mob-stag-ok:active { background: rgba(139,92,246,.30); transform: scale(0.9); }
}
/* ── end P361 ────────────────────────────────────────────────────────────── */

/* ── P362: Collapsible section headers ───────────────────────────────────── */
@media (max-width: 767px) {
  /* Chevron icon in section header */
  .mob-shdr-chevron {
    margin-inline-start: auto !important;
    font-size: 0.85rem !important;
    opacity: 0.55 !important;
    transition: transform .22s ease, opacity .15s !important;
    display: inline-block !important;
    pointer-events: none !important;
  }
  /* Collapsed state: rotate chevron */
  .mob-section-hdr.mob-shdr-collapsed .mob-shdr-chevron {
    transform: rotate(-90deg) !important;
    opacity: 0.75 !important;
  }
  /* Collapsed header: slightly muted */
  .mob-section-hdr.mob-shdr-collapsed {
    opacity: 0.70 !important;
  }
  /* Hidden card when section is collapsed */
  .mob-section-card-hidden {
    display: none !important;
  }
}
/* ── end P362 ────────────────────────────────────────────────────────────── */

/* ── P363: Full-screen reading mode for long notes ───────────────────────── */
.mob-note-reader {
  position: fixed;
  inset: 0;
  background: #0b0914;
  z-index: 9000;
  display: flex;
  flex-direction: column;
  transform: translateY(100%);
  transition: transform .28s cubic-bezier(.16,1,.3,1);
  will-change: transform;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
}
.mob-note-reader.mob-nr-open { transform: translateY(0); }
.mob-nr-hdr {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: calc(env(safe-area-inset-top, 0px) + 18px) 20px 14px;
  border-bottom: 1px solid rgba(255,255,255,0.07);
  position: relative;
  flex-shrink: 0;
  background: rgba(8,6,18,0.96);
}
.mob-nr-title {
  font-size: 1.15rem;
  font-weight: 800;
  color: rgba(232,238,247,.95);
  font-family: var(--font-ar, inherit);
  padding-inline-end: 36px;
}
.mob-nr-meta {
  font-size: 0.8rem;
  color: rgba(148,163,184,.55);
}
.mob-nr-close {
  position: absolute;
  top: calc(env(safe-area-inset-top, 0px) + 14px);
  inset-inline-end: 16px;
  width: 32px; height: 32px;
  border-radius: 50%;
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.10);
  color: rgba(232,238,247,.7);
  font-size: 1.2rem;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .12s;
}
.mob-nr-close:active { background: rgba(255,255,255,0.14); }
.mob-nr-body {
  flex: 1;
  overflow-y: auto;
  padding: 20px 22px 16px;
  font-size: 1.02rem;
  line-height: 1.85;
  color: rgba(232,238,247,.85);
  font-family: var(--font-ar, inherit);
  direction: rtl;
  white-space: pre-wrap;
  word-break: break-word;
  -webkit-overflow-scrolling: touch;
  letter-spacing: 0.01em;
}
.mob-nr-actions {
  display: flex;
  gap: 10px;
  padding: 12px 20px calc(env(safe-area-inset-bottom, 0px) + 16px);
  border-top: 1px solid rgba(255,255,255,0.06);
  flex-shrink: 0;
}
.mob-nr-btn-copy,
.mob-nr-btn-edit {
  flex: 1;
  padding: 11px 0;
  border-radius: 13px;
  font-size: 0.93rem;
  font-weight: 700;
  font-family: var(--font-ar, inherit);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
  transition: background .12s, transform .1s;
}
.mob-nr-btn-copy {
  background: rgba(255,255,255,0.07);
  border: 1px solid rgba(255,255,255,0.12);
  color: rgba(232,238,247,.75);
}
.mob-nr-btn-edit {
  background: rgba(99,102,241,0.18);
  border: 1.5px solid rgba(99,102,241,0.35);
  color: #a5b4fc;
}
.mob-nr-btn-copy:active,
.mob-nr-btn-edit:active { transform: scale(0.96); }
/* ── end P363 ────────────────────────────────────────────────────────────── */

/* ── P364: Tag suggestion chips under tag-add input ─────────────────────── */
@media (max-width: 767px) {
  .mob-stag-sugg {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 4px 0 6px;
    animation: mob-card-enter .14s ease-out both;
  }
  .mob-stag-sugg-chip {
    font-size: 0.78rem;
    font-weight: 700;
    padding: 3px 9px;
    border-radius: 99px;
    background: rgba(139,92,246,.08);
    border: 1px solid rgba(139,92,246,.22);
    color: rgba(196,181,253,.8);
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background .12s, transform .1s;
    font-family: var(--font-ar, inherit);
    white-space: nowrap;
  }
  .mob-stag-sugg-chip:active {
    background: rgba(139,92,246,.22);
    transform: scale(0.94);
  }
}
/* ── end P364 ────────────────────────────────────────────────────────────── */

/* ── P365: Today's Daily Summary Strip ───────────────────────────────────── */
@media (max-width: 767px) {
  .mob-daily-strip {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 8px;
    animation: mob-card-enter .2s ease-out both;
  }
  .mob-ds-pill {
    font-size: 0.8rem;
    font-weight: 700;
    padding: 5px 11px;
    border-radius: 99px;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: transform .1s, opacity .12s;
    white-space: nowrap;
    font-family: var(--font-ar, inherit);
  }
  .mob-ds-pill:active { transform: scale(0.93); opacity: 0.8; }
  .mob-ds-overdue {
    background: rgba(239,68,68,.12);
    border: 1px solid rgba(239,68,68,.28);
    color: #fca5a5;
  }
  .mob-ds-today {
    background: rgba(245,158,11,.10);
    border: 1px solid rgba(245,158,11,.25);
    color: #fcd34d;
  }
  .mob-ds-done {
    background: rgba(34,197,94,.10);
    border: 1px solid rgba(34,197,94,.25);
    color: #86efac;
  }
  .mob-ds-partial {
    background: rgba(99,102,241,.10);
    border: 1px solid rgba(99,102,241,.25);
    color: #a5b4fc;
  }
  .mob-ds-none {
    background: rgba(100,116,139,.08);
    border: 1px solid rgba(100,116,139,.18);
    color: rgba(148,163,184,.65);
  }
}
/* ── end P365 ────────────────────────────────────────────────────────────── */

/* ── P366: Batch-complete overdue tasks banner ───────────────────────────── */
@media (max-width: 767px) {
  .mob-batch-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 10px 14px;
    border-radius: 13px;
    background: rgba(239,68,68,.09);
    border: 1.5px solid rgba(239,68,68,.22);
    margin-bottom: 6px;
    animation: mob-card-enter .2s ease-out both;
  }
  .mob-bb-label {
    font-size: 0.87rem;
    font-weight: 700;
    color: #fca5a5;
    font-family: var(--font-ar, inherit);
  }
  .mob-bb-btn {
    font-size: 0.83rem;
    font-weight: 800;
    padding: 6px 14px;
    border-radius: 10px;
    background: rgba(239,68,68,.18);
    border: 1.5px solid rgba(239,68,68,.35);
    color: #fca5a5;
    cursor: pointer;
    font-family: var(--font-ar, inherit);
    -webkit-tap-highlight-color: transparent;
    transition: background .12s, transform .1s;
    white-space: nowrap;
    flex-shrink: 0;
  }
  .mob-bb-btn:active {
    background: rgba(239,68,68,.30);
    transform: scale(0.94);
  }
}
/* ── end P366 ────────────────────────────────────────────────────────────── */

/* ── P367: Swipe gesture hint banner ─────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-swipe-hint {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 9px 12px;
    border-radius: 12px;
    background: rgba(99,102,241,.08);
    border: 1px solid rgba(99,102,241,.18);
    margin-bottom: 6px;
    animation: mob-card-enter .25s ease-out both;
  }
  .mob-sh-ico { font-size: 1rem; flex-shrink: 0; }
  .mob-sh-text {
    flex: 1;
    font-size: 0.78rem;
    color: rgba(165,180,252,.75);
    font-family: var(--font-ar, inherit);
    direction: rtl;
    line-height: 1.4;
  }
  .mob-sh-close {
    width: 24px; height: 24px;
    border-radius: 50%;
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(255,255,255,.10);
    color: rgba(148,163,184,.6);
    font-size: 0.9rem;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
    transition: background .12s;
  }
  .mob-sh-close:active { background: rgba(255,255,255,.12); }
}
/* ── end P367 ────────────────────────────────────────────────────────────── */

/* ── P369: Tappable type-chip active state + streak corner badge ─────────── */
@media (max-width: 767px) {
  /* Type chip is now a button — reset button styles, keep visual identity */
  .card.mob-card .mob-type-chip {
    cursor: pointer !important;
    -webkit-tap-highlight-color: transparent;
    transition: background .12s, transform .1s, box-shadow .12s !important;
    user-select: none;
  }
  .card.mob-card .mob-type-chip:active { transform: scale(0.88) !important; }
  .card.mob-card .mob-type-chip.mob-tc-active {
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 28%, rgba(255,255,255,0.07)) !important;
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--mob-border-color, #6366f1) 50%, transparent) !important;
  }

  /* Streak corner badge overlay */
  .mob-streak-corner-wrap {
    position: absolute;
    top: 8px;
    left: 8px; /* LTR: top-left = visual top-left in RTL is top-right */
    z-index: 4;
    pointer-events: none;
  }
  .mob-streak-corner {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    background: rgba(30,27,40,0.82);
    border: 1px solid rgba(251,191,36,0.35);
    border-radius: 99px;
    padding: 2px 6px 2px 5px;
    backdrop-filter: blur(4px);
    box-shadow: 0 2px 8px rgba(0,0,0,0.3);
    animation: mob-streak-pop .22s cubic-bezier(0.34,1.56,0.64,1) both;
  }
  .mob-streak-num {
    font-size: 11px;
    font-weight: 800;
    color: #fbbf24;
    font-family: var(--font-en, sans-serif);
    line-height: 1;
  }
  @keyframes mob-streak-pop {
    from { transform: scale(0.6); opacity: 0; }
    to   { transform: scale(1);   opacity: 1; }
  }
}
/* ── end P369 ────────────────────────────────────────────────────────────── */

/* ── P370: Floating ambient pomodoro timer strip ─────────────────────────── */
@media (max-width: 767px) {
  .mob-pomo-strip {
    margin: 0 0 8px 0;
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(239,68,68,0.12) 0%, rgba(254,100,50,0.08) 100%);
    border: 1px solid rgba(239,68,68,0.28);
    overflow: hidden;
    animation: mob-card-enter .2s ease-out both;
  }
  .mob-ps-inner {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
  }
  .mob-ps-ico {
    font-size: 1.25rem;
    flex-shrink: 0;
    animation: mob-ps-pulse 1.2s ease-in-out infinite;
  }
  @keyframes mob-ps-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.65; transform: scale(0.88); }
  }
  .mob-ps-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 5px;
  }
  .mob-ps-title {
    font-size: 0.82rem;
    font-weight: 700;
    color: rgba(255,255,255,0.88);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }
  .mob-ps-bar {
    height: 4px;
    border-radius: 2px;
    background: rgba(239,68,68,0.18);
    overflow: hidden;
  }
  .mob-ps-fill {
    height: 100%;
    border-radius: 2px;
    background: linear-gradient(90deg, #ef4444 0%, #f97316 100%);
    transition: width .8s linear;
    box-shadow: 0 0 6px rgba(239,68,68,0.5);
  }
  .mob-ps-timer {
    font-size: 1.1rem;
    font-weight: 800;
    color: #f87171;
    font-family: var(--font-en, monospace);
    letter-spacing: 0.04em;
    flex-shrink: 0;
    min-width: 44px;
    text-align: center;
    font-variant-numeric: tabular-nums;
  }
  .mob-ps-done {
    width: 34px; height: 34px;
    border-radius: 50%;
    background: rgba(239,68,68,0.16);
    border: 1.5px solid rgba(239,68,68,0.4);
    color: #f87171;
    font-size: 1rem;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
    transition: background .12s, transform .1s;
  }
  .mob-ps-done:active { background: rgba(239,68,68,0.32); transform: scale(0.9); }
}
/* ── end P370 ────────────────────────────────────────────────────────────── */

/* ── P372: Time-aware greeting + date bar ─────────────────────────────────── */
@media (max-width: 767px) {
  .mob-greet-bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 14px;
    background: linear-gradient(135deg, rgba(99,102,241,0.08) 0%, rgba(139,92,246,0.05) 100%);
    border: 1px solid rgba(99,102,241,0.14);
    border-radius: 14px;
    margin: 0 0 10px 0;
    animation: mob-card-enter .22s ease-out both;
  }
  .mob-gb-left {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
  }
  .mob-gb-ico {
    font-size: 1.7rem;
    line-height: 1;
    flex-shrink: 0;
  }
  .mob-gb-text {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
  }
  .mob-gb-greeting {
    font-size: 0.9rem;
    font-weight: 800;
    color: rgba(255,255,255,0.9);
    white-space: nowrap;
  }
  .mob-gb-date {
    font-size: 0.72rem;
    color: rgba(148,163,184,0.75);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: var(--font-ar, inherit);
  }
  .mob-gb-stat {
    font-size: 0.7rem;
    font-weight: 700;
    color: color-mix(in srgb, #a5b4fc 70%, rgba(255,255,255,0.4));
    white-space: nowrap;
    flex-shrink: 0;
    padding: 4px 8px;
    background: rgba(99,102,241,0.12);
    border-radius: 99px;
    border: 1px solid rgba(99,102,241,0.2);
  }
}
/* ── end P372 ────────────────────────────────────────────────────────────── */

/* ── P374: Habit 7-day mini heatmap strip ────────────────────────────────── */
@media (max-width: 767px) {
  .mob-habit-heatmap {
    padding: 10px 12px;
    background: rgba(15,13,26,0.6);
    border: 1px solid rgba(99,102,241,0.12);
    border-radius: 14px;
    margin: 0 0 8px 0;
    animation: mob-card-enter .2s ease-out both;
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .mob-hh-drow {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 2px;
  }
  .mob-hh-dspacer { width: 22px; flex-shrink: 0; }
  .mob-hh-dh {
    flex: 1;
    text-align: center;
    font-size: 0.6rem;
    color: rgba(148,163,184,0.45);
    font-weight: 600;
  }
  .mob-hh-dh.mob-hh-today {
    color: rgba(165,180,252,0.8);
  }
  .mob-hh-row {
    display: flex;
    align-items: center;
    gap: 4px;
  }
  .mob-hh-ico {
    font-size: 13px;
    width: 22px;
    text-align: center;
    flex-shrink: 0;
  }
  .mob-hh-dot {
    flex: 1;
    height: 8px;
    border-radius: 3px;
    background: rgba(255,255,255,0.07);
    border: 1px solid rgba(255,255,255,0.06);
    transition: background .15s;
  }
  .mob-hh-dot.mob-hh-dot-on {
    background: color-mix(in srgb, var(--mob-border-color, #6366f1) 70%, rgba(255,255,255,0.2));
    border-color: transparent;
    box-shadow: 0 0 4px color-mix(in srgb, var(--mob-border-color, #6366f1) 40%, transparent);
  }
  .mob-hh-dot.mob-hh-dot-today {
    border-color: rgba(148,163,184,0.3);
  }
  .mob-hh-streak {
    font-size: 0.6rem;
    color: #fbbf24;
    font-weight: 800;
    white-space: nowrap;
    width: 28px;
    flex-shrink: 0;
    text-align: left;
  }
}
/* ── end P374 ────────────────────────────────────────────────────────────── */

/* ── P376: "Reschedule to today" sheet tile ──────────────────────────────── */
@media (max-width: 767px) {
  .mob-p376-today-tile {
    background: rgba(99,102,241,0.14) !important;
    border-color: rgba(99,102,241,0.28) !important;
    color: #a5b4fc !important;
  }
  .mob-p376-today-tile:active {
    background: rgba(99,102,241,0.26) !important;
    transform: scale(0.92);
  }
}
/* ── end P376 ────────────────────────────────────────────────────────────── */

/* ── P377: Type-specific empty state ─────────────────────────────────────── */
@media (max-width: 767px) {
  .mob-es-type {
    padding: 48px 24px 32px !important;
  }
  .mob-es-type-ico {
    font-size: 3.5rem;
    margin-bottom: 12px;
    filter: drop-shadow(0 0 16px rgba(99,102,241,0.3));
    animation: mob-streak-pop .3s cubic-bezier(0.34,1.56,0.64,1) both;
  }
  .mob-es-add-btn {
    font-size: 0.95rem !important;
    font-weight: 700 !important;
    padding: 12px 28px !important;
    background: rgba(99,102,241,0.18) !important;
    border: 1.5px solid rgba(99,102,241,0.35) !important;
    color: #a5b4fc !important;
    border-radius: 12px !important;
    display: block;
    margin: 16px auto 8px auto !important;
    width: fit-content;
  }
  .mob-es-add-btn:active { transform: scale(0.95) !important; }
  .mob-es-back-btn {
    font-size: 0.8rem !important;
    color: rgba(148,163,184,0.6) !important;
    background: none !important;
    border: none !important;
    padding: 6px 16px !important;
    display: block;
    margin: 0 auto !important;
    cursor: pointer;
  }
}
/* ── end P377 ────────────────────────────────────────────────────────────── */

/* ── P378: Tag cluster chips in home feed ─────────────────────────────────── */
@media (max-width: 767px) {
  .mob-tag-clusters {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 8px 0;
    animation: mob-card-enter .2s ease-out both;
  }
  .mob-tc-cluster {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 10px;
    border-radius: 99px;
    background: rgba(255,255,255,0.05);
    border: 1px solid rgba(255,255,255,0.1);
    color: rgba(148,163,184,0.8);
    font-size: 0.72rem;
    font-weight: 600;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    transition: background .12s, border-color .12s, color .12s;
    font-family: var(--font-ar, inherit);
  }
  .mob-tc-cluster:active { transform: scale(0.92); }
  .mob-tc-cluster.mob-tc-cluster-on {
    background: rgba(99,102,241,0.18);
    border-color: rgba(99,102,241,0.4);
    color: #a5b4fc;
  }
  .mob-tc-cluster.mob-tc-cluster-clear {
    background: rgba(239,68,68,0.08);
    border-color: rgba(239,68,68,0.2);
    color: #f87171;
  }
  .mob-tcc-cnt {
    font-size: 0.62rem;
    background: rgba(255,255,255,0.1);
    border-radius: 99px;
    padding: 0 4px;
    min-width: 16px;
    text-align: center;
    line-height: 14px;
    display: inline-block;
  }
  .mob-tc-cluster.mob-tc-cluster-on .mob-tcc-cnt {
    background: rgba(99,102,241,0.25);
  }
}
/* ── end P378 ────────────────────────────────────────────────────────────── */

/* ── P379: Quick reminder tile in card sheet ─────────────────────────────── */
.mob-p379-remind-tile {
  background: rgba(251,191,36,.07);
}
.mob-p379-remind-tile:active {
  background: rgba(251,191,36,.2);
  transform: scale(.93);
}
/* ── end P379 ────────────────────────────────────────────────────────────── */

/* ── P380: Type-filter aggregate summary bar ─────────────────────────────── */
.mob-type-sumbar {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  margin: 0 0 6px;
  background: color-mix(in srgb, var(--tsb-ac, #6366f1) 9%, var(--mob-card-bg, #1a1730));
  border-right: 3px solid var(--tsb-ac, #6366f1);
  border-radius: 10px;
  animation: mob-fade-up .22s ease both;
}
.mob-tsb-name {
  font-size: .75rem;
  font-weight: 700;
  color: var(--tsb-ac, #6366f1);
  letter-spacing: .02em;
}
.mob-tsb-count {
  font-size: .7rem;
  font-weight: 600;
  background: color-mix(in srgb, var(--tsb-ac, #6366f1) 18%, transparent);
  color: var(--tsb-ac, #6366f1);
  border-radius: 12px;
  padding: 1px 7px;
  min-width: 20px;
  text-align: center;
}
.mob-tsb-stats {
  font-size: .71rem;
  color: var(--mob-text-dim, #8a8fa8);
  margin-inline-start: auto;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 58%;
}
/* ── end P380 ────────────────────────────────────────────────────────────── */

/* ── P381 quick date presets: already injected above in P340 block ──────── */

/* ── P382: Recently-opened quick-access strip ────────────────────────────── */
.mob-recent-strip {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  margin: 0 0 4px;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  animation: mob-fade-up .2s ease both;
}
.mob-recent-strip::-webkit-scrollbar { display: none; }
.mob-rs-lbl {
  font-size: .7rem;
  color: rgba(255,255,255,.3);
  flex-shrink: 0;
  margin-inline-end: 2px;
}
.mob-rs-chip {
  display: flex;
  align-items: center;
  gap: 4px;
  background: color-mix(in srgb, var(--rs-ac, #6366f1) 12%, rgba(255,255,255,.04));
  border: 1px solid color-mix(in srgb, var(--rs-ac, #6366f1) 30%, transparent);
  border-radius: 20px;
  padding: 4px 9px 4px 6px;
  white-space: nowrap;
  cursor: pointer;
  flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
  transition: background .12s, transform .1s;
  max-width: 130px;
}
.mob-rs-chip:active {
  background: color-mix(in srgb, var(--rs-ac, #6366f1) 28%, transparent);
  transform: scale(.94);
}
.mob-rs-ico { font-size: .82rem; }
.mob-rs-ttl {
  font-size: .68rem;
  font-weight: 500;
  color: rgba(255,255,255,.7);
  overflow: hidden;
  text-overflow: ellipsis;
}
/* ── end P382 ────────────────────────────────────────────────────────────── */

/* ── P383: Daily focus card ──────────────────────────────────────────────── */
.mob-focus-card {
  border-right: 3px solid #fbbf24 !important;
  box-shadow: 0 0 0 1px rgba(251,191,36,.15), 0 4px 16px rgba(251,191,36,.08);
  position: relative;
}
.mob-focus-banner {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 8px 14px;
  margin: 0 0 6px;
  background: rgba(251,191,36,.07);
  border-right: 3px solid #fbbf24;
  border-radius: 10px;
  cursor: pointer;
  animation: mob-fade-up .2s ease both;
  -webkit-tap-highlight-color: transparent;
}
.mob-fb-ico { font-size: .9rem; flex-shrink: 0; }
.mob-fb-label {
  font-size: .68rem;
  font-weight: 700;
  color: #fbbf24;
  white-space: nowrap;
  flex-shrink: 0;
}
.mob-fb-title {
  font-size: .74rem;
  color: rgba(255,255,255,.75);
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mob-fb-clear {
  background: none;
  border: none;
  color: rgba(255,255,255,.3);
  font-size: .72rem;
  cursor: pointer;
  padding: 3px 7px;
  border-radius: 4px;
  flex-shrink: 0;
}
.mob-fb-clear:active { color: rgba(255,255,255,.6); }
.mob-p383-focus-tile { background: rgba(251,191,36,.07); }
.mob-p383-focus-tile.is-active {
  background: rgba(251,191,36,.2);
  box-shadow: 0 0 0 1px rgba(251,191,36,.4) inset;
}
.mob-p383-focus-tile:active { background: rgba(251,191,36,.28); }
/* ── end P383 ────────────────────────────────────────────────────────────── */

/* ── P384: Progress rings in pinned strip ── already in pinned strip block ─ */

/* ── P385: Card bottom progress stripe ──────────────────────────────────── */
@media (max-width: 768px) {
  .mob-cpb-bar {
    position: absolute;
    bottom: 0;
    inset-inline-start: 0;
    height: 2px;
    opacity: .5;
    pointer-events: none;
    z-index: 4;
    /* overflow:hidden on .card.mob-card clips this to card's border-radius */
  }
}
/* ── end P385 ────────────────────────────────────────────────────────────── */

/* ── P386: Type group sub-headers for finance/tracking/links/notes ──────── */
@media (max-width: 768px) {
  .mob-type-grp-hdr {
    border-inline-start: 3px solid color-mix(in srgb, var(--tgh-c, #6366f1) 65%, transparent) !important;
    background: color-mix(in srgb, var(--tgh-c, #6366f1) 7%, rgba(10,8,18,0.92)) !important;
  }
  .mob-type-grp-hdr .mob-shdr-label {
    color: color-mix(in srgb, var(--tgh-c, #6366f1) 80%, rgba(255,255,255,0.7)) !important;
  }
  .mob-type-grp-hdr .mob-shdr-count {
    background: color-mix(in srgb, var(--tgh-c, #6366f1) 16%, transparent) !important;
    color: color-mix(in srgb, var(--tgh-c, #6366f1) 90%, white) !important;
    border: 1px solid color-mix(in srgb, var(--tgh-c, #6366f1) 28%, transparent) !important;
  }
}
/* ── end P386 ────────────────────────────────────────────────────────────── */

/* ── P389: Live fasting card feed timer ─────────────────────────────────── */
@media (max-width: 768px) {
  .mob-pill-fast-live {
    display: inline-flex;
    align-items: center;
  }
  .mob-pill-fast-live::before {
    content: '';
    display: inline-block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #818cf8;
    margin-inline-end: 5px;
    flex-shrink: 0;
    animation: mob-fast-pulse 2s ease-in-out infinite;
  }
  @keyframes mob-fast-pulse {
    0%, 100% { opacity: 0.3; transform: scale(0.85); }
    50%       { opacity: 1;   transform: scale(1.3);  }
  }
}
/* ── end P389 ────────────────────────────────────────────────────────────── */

/* ── P390: Done-today card glow ────────────────────────────────────────────── */
@media (max-width: 768px) {
  /* For cards without a custom accent color, tint the border green */
  .mob-card-done-today.card:not(.card-has-accent) {
    border-color: rgba(34, 197, 94, 0.30) !important;
  }
  /* For all done-today cards, add a faint inner ring via box-shadow */
  .mob-card-done-today.card {
    box-shadow:
      inset 0 0 0 1px rgba(34, 197, 94, 0.12),
      0 6px 28px rgba(0, 0, 0, 0.42) !important;
  }
  /* Done reminders: muted / faded feel */
  .mob-card-done-today.card[data-type="reminder"] {
    opacity: 0.72;
  }
}
/* ── end P390 ────────────────────────────────────────────────────────────── */

/* ── P391: Active-session breathing pulse (fasting / pomodoro running) ─────── */
@media (max-width: 768px) {
  @keyframes mob-acs-pulse {
    0%, 100% { outline: 2px solid color-mix(in srgb, var(--mob-border-color, #6366f1) 0%,   transparent); }
    50%       { outline: 2px solid color-mix(in srgb, var(--mob-border-color, #6366f1) 30%, transparent); }
  }
  .mob-card.mob-card-active-session {
    outline-offset: -1px;
    animation: mob-acs-pulse 3.5s ease-in-out infinite;
  }
}
/* ── end P391 ────────────────────────────────────────────────────────────── */

/* ── P392: Quick progress summary strip ─────────────────────────────────── */
@media (max-width: 768px) {
  .mob-prog-strip {
    display: flex;
    overflow-x: auto;
    gap: 6px;
    padding: 2px 14px 8px;
    margin: 2px 0 0;
    scrollbar-width: none;
  }
  .mob-prog-strip::-webkit-scrollbar { display: none; }

  .mob-ps2-pill {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 9px;
    background: color-mix(in srgb, var(--ps2-c, #6366f1) 10%, rgba(255,255,255,0.03));
    border: 1px solid color-mix(in srgb, var(--ps2-c, #6366f1) 22%, transparent);
    border-radius: 10px;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.15s, transform 0.1s;
    font-family: inherit;
    font-size: inherit;
    color: inherit;
    -webkit-tap-highlight-color: transparent;
    touch-action: manipulation;
  }
  .mob-ps2-pill:active {
    background: color-mix(in srgb, var(--ps2-c, #6366f1) 20%, rgba(255,255,255,0.06));
    transform: scale(0.96);
  }
  .mob-ps2-ico { font-size: 14px; line-height: 1; }
  .mob-ps2-bar {
    width: 40px;
    height: 3px;
    background: rgba(255,255,255,0.07);
    border-radius: 2px;
    overflow: hidden;
  }
  .mob-ps2-fill {
    height: 100%;
    border-radius: 2px;
    background: var(--ps2-c, #6366f1);
    transition: width 0.3s ease;
  }
  .mob-ps2-pct {
    font-size: 11px;
    font-weight: 600;
    color: color-mix(in srgb, var(--ps2-c, #6366f1) 75%, rgba(232,238,247,0.9));
    min-width: 26px;
    text-align: start;
    line-height: 1;
  }
}
/* ── end P392 ────────────────────────────────────────────────────────────── */

/* ── P393: Focus-mode card dimming ─────────────────────────────────────── */
@media (max-width: 768px) {
  /* All non-focus cards become subdued */
  .mob-feed-focus-mode .card.mob-card:not(.mob-focus-card) {
    opacity: 0.66;
    filter: brightness(0.86) saturate(0.70);
    transition: opacity 0.35s ease, filter 0.35s ease;
  }
  /* Section headers also dim */
  .mob-feed-focus-mode .mob-section-hdr,
  .mob-feed-focus-mode .mob-pomo-strip,
  .mob-feed-focus-mode .mob-prog-strip {
    opacity: 0.55;
    transition: opacity 0.35s ease;
  }
  /* Focus card: elevated with accent ring */
  .mob-feed-focus-mode .card.mob-focus-card {
    position: relative;
    z-index: 1;
    box-shadow:
      0 0 0 2px color-mix(in srgb, var(--mob-border-color, #6366f1) 55%, transparent),
      0 12px 40px rgba(0, 0, 0, 0.48) !important;
    transform: scale(1.012);
    transition: box-shadow 0.3s ease, transform 0.3s ease;
    opacity: 1 !important;
    filter: none !important;
  }
}
/* ── end P393 ────────────────────────────────────────────────────────────── */

/* ── P394: Disable global click ripple/circle effects ───────────────────── */
.ripple-wave,
.cl-ripple,
.mob-tap-ripple {
  display: none !important;
  visibility: hidden !important;
  opacity: 0 !important;
  animation: none !important;
  transition: none !important;
  pointer-events: none !important;
}

.mob-qr-tap {
  animation: none !important;
  transform: none !important;
}
/* ── end P394 ────────────────────────────────────────────────────────────── */

/* ── P395: Unified desktop card footer/info strip ───────────────────────── */
@media (min-width: 769px) {
  .dash-grid > .card:not(.card-phantom),
  #page-grid > .card:not(.card-phantom) {
    height: 300px !important;
    min-height: 300px !important;
    max-height: 300px !important;
  }

  .dash-grid .card :is(
    .card-shell,
    .ncd-shell,
    .checklist-dash-shell,
    .note-dash-shell,
    .vehicle-dash-shell,
    .medicine-dash-shell,
    .stocks-dash-shell,
    .loan-dash-shell,
    .iou-dash-shell,
    .nw-dash-shell,
    .wifi-dash-shell,
    .link-dash-shell,
    .page-dash-shell,
    .sub-dash-shell,
    .doc-dash-shell,
    .status-dash-shell,
    .trip-dash-shell
  ),
  #page-grid .card :is(
    .card-shell,
    .ncd-shell,
    .checklist-dash-shell,
    .note-dash-shell,
    .vehicle-dash-shell,
    .medicine-dash-shell,
    .stocks-dash-shell,
    .loan-dash-shell,
    .iou-dash-shell,
    .nw-dash-shell,
    .wifi-dash-shell,
    .link-dash-shell,
    .page-dash-shell,
    .sub-dash-shell,
    .doc-dash-shell,
    .status-dash-shell,
    .trip-dash-shell
  ) {
    height: 100% !important;
    min-height: 0 !important;
    display: flex !important;
    flex-direction: column !important;
  }

  .dash-grid .card .dash-unified-foot,
  #page-grid .card .dash-unified-foot {
    direction: rtl;
    margin-top: auto !important;
    min-height: 40px;
    padding: 7px 14px 8px;
    border-top: 1px solid rgba(255,255,255,0.055);
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex-shrink: 0;
    box-sizing: border-box;
    overflow: visible;
    color: rgba(232,238,247,0.52);
    background: linear-gradient(180deg, rgba(255,255,255,0.012), rgba(0,0,0,0.05));
  }

  .dash-grid .card .card-shell > .dash-unified-foot,
  #page-grid .card .card-shell > .dash-unified-foot {
    padding-inline: 0;
    background: transparent;
  }

  .dash-grid .card .dash-foot-info,
  #page-grid .card .dash-foot-info {
    min-width: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: rgba(232,238,247,0.44);
    font-family: var(--font-ar);
    font-size: 0.7rem;
    line-height: 1.55;
    white-space: nowrap;
    overflow: visible;
  }

  .dash-grid .card .dash-foot-k,
  #page-grid .card .dash-foot-k {
    color: rgba(232,238,247,0.30);
    font-weight: 700;
  }

  .dash-grid .card .dash-foot-v,
  #page-grid .card .dash-foot-v {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 600;
    line-height: 1.55;
  }

  .dash-grid .card .dash-foot-state,
  #page-grid .card .dash-foot-state {
    height: 24px;
    padding: 0 10px;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,0.075);
    background: rgba(255,255,255,0.035);
    color: rgba(232,238,247,0.62);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    font-family: var(--font-ar);
    font-size: 0.68rem;
    font-weight: 800;
    line-height: 24px;
    white-space: nowrap;
  }

  .dash-grid .card .dash-foot-state-fresh,
  #page-grid .card .dash-foot-state-fresh {
    border-color: rgba(34,197,94,0.20);
    background: rgba(34,197,94,0.09);
    color: rgba(141,248,198,0.88);
  }

  .dash-grid .card .dash-foot-state-recent,
  #page-grid .card .dash-foot-state-recent {
    border-color: rgba(59,130,246,0.18);
    background: rgba(59,130,246,0.08);
    color: rgba(147,197,253,0.82);
  }

  .dash-grid .card .dash-foot-state-quiet,
  #page-grid .card .dash-foot-state-quiet {
    border-color: rgba(255,255,255,0.075);
    background: rgba(255,255,255,0.035);
    color: rgba(232,238,247,0.58);
  }

  .dash-grid .card .dash-foot-state-stale,
  #page-grid .card .dash-foot-state-stale {
    border-color: rgba(248,113,113,0.18);
    background: rgba(248,113,113,0.08);
    color: rgba(252,165,165,0.84);
  }

  .dash-grid .card .dash-foot-state-unknown,
  #page-grid .card .dash-foot-state-unknown {
    color: rgba(232,238,247,0.42);
  }

  .dash-grid .card :is(
    .card-footer-action,
    .cld-foot-actions,
    .nd-foot-actions,
    .vd-foot-actions,
    .med-foot-actions,
    .sd-foot-actions,
    .wd-foot-actions,
    .ld-foot-actions,
    .pd-foot-actions,
    .dd-foot-actions
  ),
  #page-grid .card :is(
    .card-footer-action,
    .cld-foot-actions,
    .nd-foot-actions,
    .vd-foot-actions,
    .med-foot-actions,
    .sd-foot-actions,
    .wd-foot-actions,
    .ld-foot-actions,
    .pd-foot-actions,
    .dd-foot-actions
  ) {
    display: none !important;
  }

  .dash-grid .card .ncd-body > .ncd-reminder-done-btn:last-child,
  #page-grid .card .ncd-body > .ncd-reminder-done-btn:last-child {
    display: none !important;
  }
}
/* ── end P395 ────────────────────────────────────────────────────────────── */

/* ── P396: Preserve completed reminder state inside pages/archive ───────── */
.dash-grid .card[data-type="reminder"].card-reminder-done,
#page-grid .card[data-type="reminder"].card-reminder-done {
  opacity: 1 !important;
  border-color: rgba(34, 197, 94, 0.30) !important;
  box-shadow:
    0 12px 34px rgba(0, 0, 0, 0.42),
    0 0 28px rgba(34, 197, 94, 0.12) !important;
}

.dash-grid .card[data-type="reminder"].card-reminder-done:not(.nc-dash-card),
#page-grid .card[data-type="reminder"].card-reminder-done:not(.nc-dash-card) {
  background:
    radial-gradient(circle at 92% 8%, rgba(34, 197, 94, 0.12), transparent 34%),
    linear-gradient(180deg, rgba(8, 18, 13, 0.96), rgba(5, 8, 7, 0.98)) !important;
}

.dash-grid .card[data-type="reminder"].card-reminder-done .card-title,
#page-grid .card[data-type="reminder"].card-reminder-done .card-title {
  color: rgba(236, 253, 245, 0.96) !important;
  text-decoration: none !important;
}

.dash-grid .card[data-type="reminder"].card-reminder-done .card-type-badge,
#page-grid .card[data-type="reminder"].card-reminder-done .card-type-badge,
.dash-grid .card[data-type="reminder"].card-reminder-done .archive-card-chip,
#page-grid .card[data-type="reminder"].card-reminder-done .archive-card-chip {
  color: #86efac !important;
  border-color: rgba(34, 197, 94, 0.26) !important;
  background: rgba(34, 197, 94, 0.10) !important;
}
/* ── end P396 ────────────────────────────────────────────────────────────── */
