/* BDA theme core v2 (site-wide theme programme, shared reading rhythm)
   ==========================================================================
   The shared dashboard + Panchang theme source: tokens, Sanatan icon vectors,
   motion, reduced-motion behaviour, and the approved responsive reading rhythm.
   PRESENTATION ONLY. The four dashboard/Panchang templates load this file
   before their legacy styles; shared reading-rhythm declarations use explicit
   priority so the canonical values override those legacy component rules.
   Family-specific markup remains in the templates, but visual values live here.
   tests/test_bda_theme_core_parity.py proves every token value, mask data-URI
   and keyframe body below equals that live source byte for byte.
   Serve: /static/bda_theme_core.css?v=<token> (immutable when versioned).

   Sources (service main 1ff57a3d):
     base tokens   app/dashboard_prototype_desktop.html:78-86, app/dashboard_prototype_mobile.html:90-98,
                   app/panchang_prototype_desktop.html:144-151, app/panchang_prototype_mobile.html:144-151
     icon masks    app/static/dashboard_v3.css:481-514 (32 masks, byte-identical)
     navy flip     app/static/dashboard_v3.css:380-382 == 615-617 == 654-656 (variable recipe);
                   surface from :618 (the copies' surfaces differ, see section 4)
     keyframes     app/static/dashboard_v3.css:944-946,1013,1035,1090,1104-1105,1131;
                   app/panchang_prototype_desktop.html:633,648,651,812 (== mobile 549,564,567,728)
     tilt + light  app/static/dashboard_v3.css:863,867-874 (consumer of bda_theme_fx.js)

   Fonts stay Google (not embedded here; no @font-face). Include on the page, as
   the templates do (preconnect + media=print onload + noscript):
     <link rel="preconnect" href="https://fonts.googleapis.com">
     <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
     <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Tiro+Devanagari+Hindi:ital@0;1&family=Inter:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap" media="print" onload="this.media='all'">
   The dashboard MOBILE template loads Tiro Devanagari Hindi upright only:
     https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=Tiro+Devanagari+Hindi&family=Inter:wght@400;500;600;700&family=Playfair+Display:wght@600;700&display=swap

   Token differences between the four templates (the core carries the union):
     token                                         dash desk  dash mob  panch desk  panch mob  core
     --deva                                        Tiro,Noto  Tiro,Noto Tiro,Noto   Tiro only  Tiro,Noto (3 of 4;
                                                   the Noto fallback only matters if the Tiro webfont fails)
     --good-bg / --bad-bg / --neutral-bg           yes        yes       -           -          section 2
     --z-filterbar/-dropdown/-location-menu/       yes        yes       -           -          section 2
       -scrim/-modal
     --z-drawer-scrim / --z-drawer                 -          yes       -           -          section 2
     (panchang mobile writes its :root without a space after ";" - formatting only)

   Keyframes are re-emitted under bda-core-* names so they can never collide with
   a page's own (the dashboard and Panchang each define a DIFFERENT bda-twinkle):
     core name                   source name     source
     bda-core-spinang            bda-spinang     dashboard_v3.css
     bda-core-pulse              bda-pulse       dashboard_v3.css
     bda-core-spin               bda-spin        dashboard_v3.css
     bda-core-shine              bda-shine       dashboard_v3.css
     bda-core-twinkle            bda-twinkle     dashboard_v3.css
     bda-core-draw               bda-draw        dashboard_v3.css
     bda-core-draw2              bda-draw2       dashboard_v3.css
     bda-core-rip                bda-rip         dashboard_v3.css
     bda-core-now-pulse          bda-now-pulse   panchang templates
     bda-core-bar-fill           bda-bar-fill    panchang templates
     bda-core-ring-draw          bda-ring-draw   panchang templates
     bda-core-twinkle-panchang   bda-twinkle     panchang templates
   bda-core-spinang animates --bda-ang, so the dashboard's @property --bda-ang
   registration is carried verbatim (an identical re-registration is a no-op).
   ========================================================================== */

/* ---------- 1. Base tokens (identical in all four templates) ---------- */
:root{
  --gold:#BF9941; --gold-pale:#FFE6AB; --gold-deep:#80662C; --yellow:#FFCC57; --yellow-pale:#FFF3C4;
  --navy:#1A244D; --navy-soft:#51597A; --red:#FE393C; --red-deep:#A92628; --white:#FFFFFF; --online:#22C55E;
  --good:#2f9968; --bad:#d15a5c; --neutral:#8b94ad;
  --head:"Space Grotesk",system-ui,sans-serif; --serif:"Playfair Display",Georgia,serif;
  --deva:"Tiro Devanagari Hindi","Noto Serif Devanagari",serif; --sans:"Inter",system-ui,sans-serif;
  --ink:#1A244D; --muted:#6B7191; --line:rgba(26,36,77,.09); --page:#FAF7F0;
}

/* ---------- 2. Dashboard-only tokens (tinted backgrounds + z-index scale) ---------- */
:root{
  --good-bg:#e8f5ee; --bad-bg:#fbecec; --neutral-bg:#eef0f5;
  --z-filterbar:200; --z-dropdown:300; --z-location-menu:301; --z-drawer-scrim:900; --z-drawer:901; --z-scrim:100000; --z-modal:100400;
}

/* ---------- 3. Sanatan icon masks (dashboard_v3.css:481-514, byte-identical) ----------
   Use: el::before{content:"";background:currentColor;-webkit-mask:var(--si) center/contain no-repeat;
   mask:var(--si) center/contain no-repeat} with --si:var(--bda-si-<name>) on the element. */
:root{
  --bda-si-panchang:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%229.5%22 r=%223.2%22/%3E%3Cpath d=%22M12 3v1.6M12 14.4V16M5.5 9.5h1.6M16.9 9.5h1.6M7.4 4.9l1.1 1.1M15.5 13l1.1 1.1M16.6 4.9 15.5 6M8.5 13l-1.1 1.1M4.5 18.2c4.5 3.3 10.5 3.3 15 0%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M4.5 18.2c4.5 3.3 10.5 3.3 15 0-4.5 1.6-10.5 1.6-15 0Z%22/%3E%3C/svg%3E");
  --bda-si-surya:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%224.2%22/%3E%3Cpath d=%22M12 2.8v3M12 18.2v3M2.8 12h3M18.2 12h3M5.5 5.5l2.1 2.1M16.4 16.4l2.1 2.1M18.5 5.5l-2.1 2.1M7.6 16.4l-2.1 2.1%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 cx=%2212%22 cy=%2212%22 r=%224.2%22/%3E%3C/svg%3E");
  --bda-si-om:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Ctext x=%2212%22 y=%2218%22 text-anchor=%22middle%22 font-size=%2217%22 font-family=%22Nirmala UI,Kohinoor Devanagari,Noto Sans Devanagari,serif%22 fill=%22%23000%22 stroke=%22none%22%3E%E0%A5%90%3C/text%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%2210.2%22 fill=%22none%22 stroke=%22%23000%22 stroke-opacity=%22.4%22 stroke-width=%221.2%22/%3E%3C/svg%3E");
  --bda-si-lotus:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M12 4.5c-2.6 3-2.6 7 0 10.5 2.6-3.5 2.6-7.5 0-10.5Z%22/%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 4.5c-2.6 3-2.6 7 0 10.5 2.6-3.5 2.6-7.5 0-10.5Z%22/%3E%3Cpath d=%22M12 15c-4 0-7-2.5-7.5-6 3 .5 5.5 2.5 7.5 6Zm0 0c4 0 7-2.5 7.5-6-3 .5-5.5 2.5-7.5 6Z%22/%3E%3Cpath d=%22M4.5 17.8h15M8 20.2h8%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-star:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 3.2 14.1 9.9 20.8 12 14.1 14.1 12 20.8 9.9 14.1 3.2 12 9.9 9.9Z%22/%3E%3Cpath d=%22m6.6 6.6 2.6 1.4M17.4 6.6 16 9.2M17.4 17.4 14.8 16M6.6 17.4 8 14.8%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2212%22 cy=%2212%22 r=%221.7%22/%3E%3C/svg%3E");
  --bda-si-flame:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 d=%22M12 3.2c3.6 4 5.1 7 5.1 10.1a5.1 5.1 0 0 1-10.2 0c0-2.6 1.5-4.6 3-6.1 0 2 1 3.1 2.1 3.6 0-2.5 0-5 0-7.6Z%22/%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M12 13c1.3 1.3 1.7 2.4 1.7 3.2a1.7 1.7 0 0 1-3.4 0c0-.8.4-1.9 1.7-3.2Z%22/%3E%3C/svg%3E");
  --bda-si-chakra:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%228.2%22/%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%222.1%22/%3E%3Cpath d=%22M12 3.8v6.1M12 14.1v6.1M3.8 12h6.1M14.1 12h6.1M6.2 6.2l4.3 4.3M13.5 13.5l4.3 4.3M17.8 6.2l-4.3 4.3M10.5 13.5l-4.3 4.3%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-phase:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Ccircle fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 cx=%2212%22 cy=%2212%22 r=%227.6%22/%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22M12 4.4a7.6 7.6 0 0 1 0 15.2 4.2 7.6 0 0 0 0-15.2Z%22/%3E%3C/svg%3E");
  --bda-si-tithi:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%225%22 cy=%2211%22 r=%222.7%22/%3E%3Ccircle cx=%2212%22 cy=%2211%22 r=%222.7%22/%3E%3Cpath d=%22M3 17.2h18M7 20h10%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22M12 8.3a2.7 2.7 0 0 1 0 5.4Z%22/%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2219%22 cy=%2211%22 r=%222.7%22/%3E%3C/svg%3E");
  --bda-si-tula:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 4.5V19.5M8 20h8M4.6 7.5h14.8M5 7.5 3 12.6M5 7.5l2 5.1M19 7.5l-2 5.1M19 7.5l2 5.1M2.6 12.6c1 2.6 3.8 2.6 4.8 0Zm14 0c1 2.6 3.8 2.6 4.8 0Z%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2212%22 cy=%224%22 r=%221.1%22/%3E%3C/svg%3E");
  --bda-si-kailash:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M2.5 19.5 9 8.5l2.8 3.6 2.7-6.6 7 14Z%22/%3E%3Ccircle cx=%225.6%22 cy=%225.6%22 r=%221.4%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22m12.7 9.4 1.8-3.9 1.9 3.9-1.2-.5-.7 1-.7-1Z%22/%3E%3C/svg%3E");
  --bda-si-yantra:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223.8%22 y=%223.8%22 width=%2216.4%22 height=%2216.4%22 rx=%221%22/%3E%3Cpath d=%22M12 6.5 17.6 15.6H6.4ZM12 17.5 6.4 8.4h11.2Z%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2212%22 cy=%2212%22 r=%221.1%22/%3E%3C/svg%3E");
  --bda-si-graha:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%224.4%22/%3E%3Cellipse cx=%2212%22 cy=%2212%22 rx=%229.6%22 ry=%223.3%22 transform=%22rotate%28-22 12 12%29%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2220.2%22 cy=%228.6%22 r=%221.1%22/%3E%3C/svg%3E");
  --bda-si-kalash:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7 12.2c0 5.4 2 7.5 5 7.5s5-2.1 5-7.5c0-2-1.5-3-5-3s-5 1-5 3Z%22/%3E%3Cpath d=%22M9.5 9.2V7.6h5v1.6M10 7.6c0-2.5 1-3.8 2-3.8s2 1.3 2 3.8M9.8 7.4C8 6.9 6.5 5.6 6 4.6c1.8.2 3.2 1.2 4 2.4M14.2 7.4c1.8-.5 3.3-1.8 3.8-2.8-1.8.2-3.2 1.2-4 2.4M7.5 14.2h9%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2212%22 cy=%2216.6%22 r=%22.9%22/%3E%3C/svg%3E");
  --bda-si-sunrise:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M3 18h18M6 20.8h12M7 18a5 5 0 0 1 10 0M12 7.2v2.6M5.4 11.3l1.8 1.5M18.6 11.3l-1.8 1.5M3.4 15.4h2M18.6 15.4h2%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M7 18a5 5 0 0 1 10 0Z%22/%3E%3C/svg%3E");
  --bda-si-dhwaja:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6 21V3.6M3.5 21h5M6 4.2 19 7.2 13.6 9.3l5.4 2.4L6 12.6%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M6 4.2 19 7.2 13.6 9.3l5.4 2.4L6 12.6Z%22/%3E%3C/svg%3E");
  --bda-si-trishul:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 21V7M6.4 4.6c0 4.2 2 5.9 5.6 5.9s5.6-1.7 5.6-5.9M5 6.3l1.4-2.9 1.4 2.9M16.2 6.3l1.4-2.9 1.4 2.9M10.2 13.6h3.6l-3.6 2.8h3.6Z%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22m12 2.8 1.5 3.4h-3Z%22/%3E%3C/svg%3E");
  --bda-si-yogi:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%225.4%22 r=%222%22/%3E%3Cpath d=%22M12 7.6c-2.2 0-3 2-3 5h6c0-3-.8-5-3-5ZM9.3 10.4 7 14l3 1M14.7 10.4 17 14l-3 1M4.5 17.6c2.5-2 12.5-2 15 0-2.5 1.6-12.5 1.6-15 0Z%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-diya:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 3.4c2 3 2.5 5 2.5 6.3a2.5 2.5 0 0 1-5 0c0-1.3.5-3.3 2.5-6.3ZM12 12.3V14M3.5 14c1.5 4.6 15.5 4.6 17 0ZM20.5 14l1.6-1.4M9 20.6h6%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M12 3.4c2 3 2.5 5 2.5 6.3a2.5 2.5 0 0 1-5 0c0-1.3.5-3.3 2.5-6.3Z%22/%3E%3C/svg%3E");
  --bda-si-rashi:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%228.6%22/%3E%3Ccircle cx=%2212%22 cy=%2212%22 r=%224%22/%3E%3Cpath d=%22M16 12h4.6M8 12H3.4M12 16v4.6M12 8V3.4M15.5 14l3.9 2.3M8.5 14l-3.9 2.3M8.5 10 4.6 7.7M15.5 10l3.9-2.3M14 15.5l2.3 3.9M10 15.5l-2.3 3.9M10 8.5 7.7 4.6M14 8.5l2.3-3.9%22/%3E%3C/g%3E%3Ccircle fill=%22%23000%22 stroke=%22none%22 cx=%2212%22 cy=%2212%22 r=%221.5%22/%3E%3C/svg%3E");
  --bda-si-pothi:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%222.6%22 y=%225.6%22 width=%2218.8%22 height=%223.4%22 rx=%221.7%22/%3E%3Crect x=%222.6%22 y=%2210.3%22 width=%2218.8%22 height=%223.4%22 rx=%221.7%22/%3E%3Crect x=%222.6%22 y=%2215%22 width=%2218.8%22 height=%223.4%22 rx=%221.7%22/%3E%3Cpath d=%22M7.2 4.2v16.2M7.2 20.4l-1 1.4M7.2 20.4l1 1.4%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-person:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Ccircle cx=%2212%22 cy=%228%22 r=%223.6%22/%3E%3Cpath d=%22M4.6 20c.5-4.4 3.4-6.4 7.4-6.4s6.9 2 7.4 6.4M12 5.4v2%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-hourglass:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7 3.5h10M7 20.5h10M8 3.5c0 4.5 4 6.5 4 8.5s-4 4-4 8.5M16 3.5c0 4.5-4 6.5-4 8.5s4 4 4 8.5%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 stroke=%22none%22 d=%22M9.6 19.6Q12 16.6 14.4 19.6Z%22/%3E%3C/svg%3E");
  --bda-si-temple:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 4.6V2.8l2.6.9-2.6.9M8 20v-7c0-4 2.5-7 4-8.4 1.5 1.4 4 4.4 4 8.4v7M10 9.6h4M9.2 12.6h5.6M5.5 20v-4.5H8M18.5 20v-4.5H16M4.2 20.6h15.6%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M10.8 20v-3a1.2 1.2 0 0 1 2.4 0v3Z%22/%3E%3C/svg%3E");
  --bda-si-kundli:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Crect x=%223.8%22 y=%223.8%22 width=%2216.4%22 height=%2216.4%22 rx=%22.6%22/%3E%3Cpath d=%22M3.8 3.8l16.4 16.4M20.2 3.8 3.8 20.2M12 3.8 20.2 12 12 20.2 3.8 12Z%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-bow:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M7 3.5c7 2.5 7 14.5 0 17M7 3.5v17M3.5 12h17M17.6 9.4l2.9 2.6-2.9 2.6M3.5 12 5 10.4M3.5 12 5 13.6%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-varmala:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cpath fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 d=%22M4 4.5c0 9.5 4 14.5 8 14.5s8-5 8-14.5M12 19v2.6%22/%3E%3Cg fill=%22%23000%22 stroke=%22none%22%3E%3Ccircle cx=%224.4%22 cy=%229%22 r=%221.2%22/%3E%3Ccircle cx=%226.3%22 cy=%2214.4%22 r=%221.2%22/%3E%3Ccircle cx=%229%22 cy=%2217.7%22 r=%221.2%22/%3E%3Ccircle cx=%2212%22 cy=%2219%22 r=%221.4%22/%3E%3Ccircle cx=%2215%22 cy=%2217.7%22 r=%221.2%22/%3E%3Ccircle cx=%2217.7%22 cy=%2214.4%22 r=%221.2%22/%3E%3Ccircle cx=%2219.6%22 cy=%229%22 r=%221.2%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-tulsi:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M6.8 15h10.4M7.5 15l1.2 5.5h6.6L16.5 15M12 15V6.5M12 11.5c-2.5 0-3.8-1.5-4-3 2 0 3.5 1 4 3Zm0 0c2.5 0 3.8-1.5 4-3-2 0-3.5 1-4 3ZM12 7.6c-1.2-.8-1.5-2.2-1-3.5 1.2.8 1.5 2.1 1 3.5Zm0 0c1.2-.8 1.5-2.2 1-3.5%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M7.5 15h9l-1.2 5.5H8.7Z%22/%3E%3C/svg%3E");
  --bda-si-feet:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cellipse cx=%228.6%22 cy=%2215%22 rx=%222.6%22 ry=%224%22 transform=%22rotate%28-10 8.6 15%29%22/%3E%3Cellipse cx=%2215.6%22 cy=%229.4%22 rx=%222.6%22 ry=%224%22 transform=%22rotate%2810 15.6 9.4%29%22/%3E%3C/g%3E%3Cg fill=%22%23000%22 stroke=%22none%22%3E%3Ccircle cx=%227%22 cy=%229.6%22 r=%22.75%22/%3E%3Ccircle cx=%228.6%22 cy=%229.2%22 r=%22.75%22/%3E%3Ccircle cx=%2210.2%22 cy=%229.6%22 r=%22.75%22/%3E%3Ccircle cx=%2214.4%22 cy=%224%22 r=%22.75%22/%3E%3Ccircle cx=%2216%22 cy=%223.9%22 r=%22.75%22/%3E%3Ccircle cx=%2217.5%22 cy=%224.5%22 r=%22.75%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-house:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M4 11 12 4.5 20 11M6 10v10h12V10M10.5 20v-5h3v5M6 11.6q2 1.5 4 0 2 1.5 4 0 2 1.5 4 0%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-shankha:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M5 15c0-5 4-9.5 9.5-9.5 2.5 0 4.5 1.7 4.5 4 0 2-1.6 3.5-3.6 3.5-1.7 0-3-1.3-3-2.9 0-1.3 1-2.3 2.3-2.3M5 15c1.5 2.6 4.6 4 8 3.6l4.5 1.9-1.6-4.2M8.5 16.5c1.3-1.9 3.6-3.1 6-3%22/%3E%3C/g%3E%3C/svg%3E");
  --bda-si-bell:url("data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22%3E%3Cg fill=%22none%22 stroke=%22%23000%22 stroke-width=%221.6%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22%3E%3Cpath d=%22M12 3v1.6M7 16.5V11a5 5 0 0 1 10 0v5.5l1.6 1.8H5.4ZM10.4 20.3a1.7 1.7 0 0 0 3.2 0%22/%3E%3C/g%3E%3Cpath fill=%22%23000%22 fill-opacity=%22.25%22 stroke=%22none%22 d=%22M7 16.5V11a5 5 0 0 1 10 0v5.5Z%22/%3E%3C/svg%3E");
}

/* ---------- 4. Navy flip (dashboard_v3.css:380-382 recipe) ----------
   Put .bda-navy on any surface to get a navy card whose inherited theme
   variables flip for legibility (navy/ink become light, gold-deep becomes yellow).
   The dashboard keeps its own selectors; this class is for other pages. No
   !important here: a page's own surface rules may override the surface colours.
   The variables are the same in all three dashboard copies; the SURFACE is not:
   383-384 = border .28 + box-shadow, 618 = border .22 and no shadow, 654-656 =
   none. The surface line below is 618 with !important removed - the plain
   inner-surface variant, so a page adds its own elevation (shadow) if it wants one. */
.bda-navy{
  --navy:#FFFFFF; --ink:#FAF7F0; --muted:rgba(250,247,240,.76); --gold-deep:#FFCC57; --gold-pale:#FFE6AB;
  --line:rgba(255,204,87,.22); --yellow-pale:rgba(255,204,87,.12);
  --good:#5FD39A; --good-bg:rgba(47,153,104,.24); --bad:#FF9597; --bad-bg:rgba(209,90,92,.22); --neutral:#BBC2DA; --neutral-bg:rgba(250,247,240,.08);
  color:#FAF7F0;background:#1A244D;background-image:none;border-color:rgba(255,204,87,.22)}

/* ---------- 5. Generic keyframes (original bodies, de-collided names) ---------- */
@property --bda-ang{syntax:"<angle>";initial-value:0deg;inherits:false}
@keyframes bda-core-spinang{to{--bda-ang:360deg}}
@keyframes bda-core-pulse{0%{box-shadow:0 0 0 0 rgba(35,128,90,.45)}70%{box-shadow:0 0 0 8px rgba(35,128,90,0)}100%{box-shadow:0 0 0 0 rgba(35,128,90,0)}}
@keyframes bda-core-spin{to{transform:rotate(360deg)}}
@keyframes bda-core-shine{60%,100%{transform:translateX(100%)}}
@keyframes bda-core-twinkle{50%{transform:scale(1.25);filter:drop-shadow(0 0 6px rgba(201,150,43,.9))}}
@keyframes bda-core-draw{from{clip-path:inset(0 100% 0 0);opacity:.25}to{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes bda-core-draw2{from{clip-path:inset(0 100% 0 0);opacity:.25}to{clip-path:inset(0 0 0 0);opacity:1}}
@keyframes bda-core-rip{to{transform:scale(4);opacity:0}}
@keyframes bda-core-now-pulse{0%,100%{filter:drop-shadow(0 0 4px rgba(255,204,87,.5));opacity:.75}50%{filter:drop-shadow(0 0 14px rgba(255,204,87,1));opacity:1}}
@keyframes bda-core-bar-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes bda-core-ring-draw{from{stroke-dashoffset:188.5}}
@keyframes bda-core-twinkle-panchang{from{filter:brightness(.7)}to{filter:brightness(1.4)}}

/* ---------- 6. Tilt + cursor light consumer (driven by bda_theme_fx.js) ----------
   Zero specificity (:where) so a page's own rules always win. The script marks
   the hot card data-bda-tilt-on (and data-bda-press on a touch press) and writes
   --bda-rx/--bda-ry/--bda-mx/--bda-my to one <style> in <head>. Numbers from
   dashboard_v3.css:863-874 (lift 6px, scale 1.015, 220px cursor light). */
:where([data-bda-tilt],[data-bda-tilt-seen]){transition:transform .45s cubic-bezier(.22,.61,.36,1)}
:where([data-bda-tilt-on]){position:relative;transform-style:preserve-3d;--bda-ty:-6px;--bda-s:1.015;
  transform:perspective(900px) rotateX(var(--bda-rx,0deg)) rotateY(var(--bda-ry,0deg)) translateY(var(--bda-ty,0px)) scale(var(--bda-s,1));
  transition:transform .12s linear}
:where([data-bda-press]){transition:transform .12s ease-out;transform:perspective(700px) rotateX(var(--bda-rx,0deg)) rotateY(var(--bda-ry,0deg)) scale(.97)}
:where([data-bda-tilt-on])::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;opacity:1;transition:opacity .3s;mix-blend-mode:screen;z-index:4;
  background:radial-gradient(220px circle at var(--bda-mx,50%) var(--bda-my,50%),rgba(255,204,87,.13),transparent 60%)}

/* ---------- 7. Reduced motion (pattern of dashboard_v3.css:476, 1162, 1187) ----------
   Everything shown at rest, nothing moves: no animation or transition inside a
   themed surface, tilt markers never transform. bda_theme_fx.js also does
   nothing at all when the visitor prefers reduced motion. */
@media (prefers-reduced-motion:reduce){
  .bda-navy,.bda-navy *,.bda-navy *::before,.bda-navy *::after{animation:none!important;transition:none!important}
  :is([data-bda-tilt],[data-bda-tilt-seen],[data-bda-tilt-on],[data-bda-press]){transform:none!important;transition:none!important}
  [data-bda-tilt-on]::after{display:none}
}

/* ---------- 8. Shared responsive reading rhythm ----------
   Exact values are reused from the owner-read Festival/Vrat pilot
   (bda-wix-velo/scripts/dynamic-design/bda-dynamic-design.css:438-446).
   Keep this file the authored source; adapters only select prose and section
   headings on each template. The service templates load this sheet before their
   inline styles; !important is limited to these shared text roles so the
   canonical values override legacy component CSS. */
body{
  --bda-reading-body-leading:1.6;
  --bda-reading-heading-leading:1.32;
  --bda-reading-measure:58ch;
  --bda-reading-paragraph-gap:clamp(16px,15.1px + .225vw,18px);
  --bda-reading-section-gap:clamp(34px,27.9px + 1.57vw,48px);
  --bda-reading-heading-gap:clamp(10px,9.1px + .225vw,12px);
  --bda-reading-list-gap:clamp(9px,8.6px + .112vw,10px);
}

/* Prose in the Panchang wrap and dashboard content page. Compact card labels,
   metadata and location/date controls keep their existing component rhythm. */
body :is(.wrap,.page) :where(p:not(.ctitle):not(.csub):not(.meta):not(.tag),li,dd,blockquote){
  max-width:var(--bda-reading-measure)!important;
  line-height:var(--bda-reading-body-leading)!important;
  text-align:start!important;
}
body :is(.wrap,.page) :where(p:not(.ctitle):not(.csub):not(.meta):not(.tag)){
  margin-block-end:var(--bda-reading-paragraph-gap)!important;
}
body :is(.wrap,.page) :where(ul,ol) > li + li{
  margin-block-start:var(--bda-reading-list-gap)!important;
}
body :is(.wrap,.page) :is(h2,h3):not(.bda-gate-title){
  margin-block-start:var(--bda-reading-section-gap)!important;
  margin-block-end:var(--bda-reading-heading-gap)!important;
  line-height:var(--bda-reading-heading-leading)!important;
}
