:root{
  --gold-ink:#8a5a14;  /* readable gold for TEXT on light panels; --gold stays the fill colour */
  --bg:#eef1f6;
  --panel:#ffffff;
  --panel-2:#f6f8fb;
  --line:#dde3ec;
  --line-strong:#c7d0dd;
  --ink:#1b2333;
  --dim:#606a7e;
  --navy:#26365c;
  --navy-2:#324876;
  --head:#26365c;
  --head-2:#324876;
  --gold:#a9762c;
  --gold-bg:#fbf1e0;
  --good:#2f8f5b;
  --good-bg:#e8f6ee;
  --bad:#bb4b3f;
  --bad-bg:#fbebe8;
  --retro:#bb4b3f;
  --radius:3px;
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:'Inter',sans-serif;
  font-size:13px;
  line-height:1.45;
}
.mono{font-family:'IBM Plex Mono',monospace;}
h1,h2,h3{font-family:'Fraunces',serif; margin:0;}
::selection{background:var(--gold-bg); color:var(--gold-ink);}
button{font-family:inherit;}
input,select{font-family:inherit;}

/* ---- fail-closed boot: the real app shell stays invisible until JS
   explicitly reveals it (see body.authed rule near the auth styles
   below) -- so a blocked/broken script can never leave the app open
   and unauthenticated by default. ---- */
.shell{ visibility:hidden; }
body.authed .shell{ visibility:visible; }

.boot-fallback{
  position:fixed; inset:0; z-index:2000; display:flex; align-items:center; justify-content:center;
  background:var(--navy); padding:24px;
}
.boot-fallback-card{
  max-width:420px; background:var(--panel); color:var(--ink);
  border-radius:16px; padding:26px 24px; box-shadow:0 20px 50px rgba(0,0,0,.35); text-align:left;
}
.boot-fallback-card h3{margin:10px 0 8px; font-size:17px;}
.boot-fallback-card p{margin:0 0 8px; font-size:12.5px; line-height:1.55; color:var(--ink);}
.boot-fallback-card p.sub{color:var(--dim); margin-bottom:0;}
.boot-fallback-card code{background:var(--panel-2); border:1px solid var(--line); border-radius:4px; padding:1px 5px; font-family:'IBM Plex Mono',monospace; font-size:11.5px;}
.sub{color:var(--dim); font-size:11.5px;}

/* ---------- shell ----------
   .shell is a row: sidebar first (full height, top to bottom via flex
   stretch), then .content-col holds the header, birth-detail bar and
   main content stacked beside it. On mobile the sidebar switches to an
   off-canvas fixed drawer (see the max-width:900px block below), which
   takes it out of this flow entirely, so content-col naturally fills
   the full width there — this same layout serves both breakpoints. */
.shell{display:flex; flex-direction:row; height:100vh;}

.content-col{
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  min-height:0;
}

.topbar{
  background:var(--navy);
  color:#fff;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:12px 20px;
  border-bottom:1px solid #1b2540;
  flex-wrap:nowrap;
  position:relative;
}

/* hamburger — hidden on desktop, shown on tablet/phone */
.menu-toggle{
  display:none;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  gap:4px;
  width:34px; height:34px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.22);
  border-radius:var(--radius);
  cursor:pointer;
  padding:0;
  flex-shrink:0;
}
.menu-toggle span{
  display:block; width:16px; height:2px; background:#fff; border-radius:2px;
  transition:transform .18s ease, opacity .18s ease;
}
.menu-toggle.open span:nth-child(1){transform:translateY(6px) rotate(45deg);}
.menu-toggle.open span:nth-child(2){opacity:0;}
.menu-toggle.open span:nth-child(3){transform:translateY(-6px) rotate(-45deg);}

.brand{
  display:flex; align-items:center; gap:11px; min-width:0; overflow:hidden;
  flex:1 1 auto;
}
.brand-text{min-width:0; overflow:hidden;}
.brand-title, .brand-tagline{white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.brand-mark{color:#ffd9a8; font-size:18px;}  /* header is always dark (--navy) -> fixed light gold */
.brand-title{font-family:'Fraunces',serif; font-weight:600; font-size:19px; letter-spacing:.13em; color:#f2e6cf; line-height:1.2;}
.brand-tagline{font-family:'Inter',sans-serif; font-size:10.5px; font-weight:400; color:rgba(255,255,255,.8); margin-top:2px;}

.topbar-right{display:flex; align-items:center; gap:14px; flex-shrink:0;}

.sb-section-hs{padding-bottom:14px; border-bottom:1px solid var(--line);}
.hs-toggle{display:flex; border:1px solid var(--line-strong); border-radius:6px; overflow:hidden; background:var(--panel-2);}
.hs-toggle button{
  flex:1; display:flex; align-items:center; justify-content:center; gap:6px;
  border:0; background:transparent; color:var(--dim);
  font-size:12px; font-weight:600; padding:8px 10px; cursor:pointer;
  letter-spacing:.02em; font-family:inherit;
}
.hs-toggle .hs-ic{font-size:12px; line-height:1;}
.hs-toggle button + button{border-left:1px solid var(--line-strong);}
.hs-toggle button:hover{color:var(--head);}
.hs-toggle button{color:var(--ink);}
.hs-toggle button.active{background:var(--navy); color:#fff;}
.hs-toggle button.active .hs-ic{color:#fff;}
:root[data-theme="dark"] .hs-toggle button.active,:root[data-theme="midnight"] .hs-toggle button.active,:root[data-theme="charcoal"] .hs-toggle button.active,:root[data-theme="emerald"] .hs-toggle button.active{background:var(--gold); color:var(--navy);}
:root[data-theme="dark"] .hs-toggle button.active .hs-ic,:root[data-theme="midnight"] .hs-toggle button.active .hs-ic,:root[data-theme="charcoal"] .hs-toggle button.active .hs-ic,:root[data-theme="emerald"] .hs-toggle button.active .hs-ic{color:var(--navy);}

.entry-menu{position:relative;}
.entry-trigger{
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.22);
  color:#fff;
  padding:7px 14px;
  border-radius:var(--radius);
  font-size:12.5px;
  font-weight:600;
  cursor:pointer;
}
.entry-trigger:hover{border-color:var(--gold); color:var(--gold-ink);}
.entry-trigger{display:inline-flex; align-items:center; gap:6px; white-space:nowrap;}
.entry-trigger .et-ic{font-size:12px; line-height:1; display:none;}
.entry-trigger .caret{font-size:10px; margin-left:0;}
.entry-trigger.open{background:var(--gold); color:#2a1d08; border-color:var(--gold);}

.entry-popover{
  display:none;
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  width:230px;
  max-width:calc(100vw - 24px);
  max-height:calc(100vh - 70px);
  overflow-y:auto;
  background:var(--panel);
  color:var(--ink);
  border:1px solid var(--line-strong);
  border-radius:var(--radius);
  box-shadow:0 12px 30px rgba(0,0,0,.22);
  padding:16px;
  z-index:200;
}
@media (max-width:560px){
  .entry-popover{
    position:fixed;
    top:auto; bottom:0; left:0; right:0;
    width:100%; max-width:100%;
    border-radius:12px 12px 0 0;
    max-height:80vh;
  }
}
.entry-popover.open{display:block;}
.entry-popover .tb-field{display:flex; flex-direction:column; gap:4px; margin-bottom:10px; position:relative;}
.entry-popover .tb-field label{font-size:10.5px; color:var(--dim); font-weight:600;}
.entry-popover .tb-field input{
  background:var(--panel-2);
  border:1px solid var(--line-strong);
  color:var(--ink);
  padding:7px 9px;
  border-radius:var(--radius);
  font-size:12.5px;
  width:100%;
}
.entry-popover .tb-field select{
  background:var(--panel-2);
  border:1px solid var(--line-strong);
  color:var(--ink);
  padding:7px 9px;
  border-radius:var(--radius);
  font-size:12.5px;
  width:100%;
}
.entry-popover .tb-field input:focus,
.entry-popover .tb-field select:focus{outline:none; border-color:var(--gold);}
.tb-field-row{display:grid; grid-template-columns:1fr 1fr; gap:8px;}
.entry-popover .tb-save{display:flex; align-items:center; gap:8px; margin:2px 0 8px; font-size:12px; font-weight:600; color:var(--ink); cursor:pointer; user-select:none;}
.entry-popover .tb-save input{width:16px; height:16px; margin:0; accent-color:var(--gold-ink); cursor:pointer; flex:none;}
.entry-popover .tb-save.disabled{opacity:.55; cursor:not-allowed;}
.entry-popover .tb-save.disabled input{cursor:not-allowed;}
.entry-popover .tb-calc{
  width:100%; margin-top:4px;
  background:var(--gold); color:#2a1d08; border:none;
  padding:9px; font-weight:700; font-size:12.5px; border-radius:var(--radius); cursor:pointer;
}
.entry-popover .tb-calc:hover{background:#c08a34;}
.entry-popover .tb-calc:disabled{background:var(--line-strong); color:var(--dim); cursor:progress;}

.entry-popover .city-suggest{
  display:none; position:absolute; top:100%; left:0; margin-top:3px;
  background:var(--panel); border:1px solid var(--line-strong); border-radius:var(--radius);
  width:100%; z-index:210; box-shadow:0 6px 18px rgba(0,0,0,.15); overflow:hidden; max-height:180px; overflow-y:auto;
}
.entry-popover .city-opt{padding:8px 10px; font-size:12px; color:var(--ink); cursor:pointer;}
.entry-popover .city-opt:hover{background:var(--gold-bg); color:var(--gold-ink);}

.tb-status{font-size:11px; color:rgba(255,255,255,.6); white-space:nowrap;}
.tb-status .dot{display:inline-block; width:6px; height:6px; border-radius:50%; background:var(--good); margin-right:5px;}
.tb-status .dot.off{background:var(--bad);}

/* subtitle bar: shows current birth details across every section */
.subtitle-bar{
  display:none;
  background:var(--gold-bg);
  color:var(--gold-ink);
  font-family:'IBM Plex Mono',monospace;
  font-size:11.5px;
  padding:7px 20px;
  border-bottom:1px solid var(--line-strong);
}

@media (max-width:900px){
  /* Birth-detail line is redundant with the entry-popover on mobile and
     eats vertical space, so it's hidden below the same breakpoint the
     sidebar collapses at. Desktop keeps showing it. */
  .subtitle-bar{display:none !important;}
}

.sidebar{
  width:230px;
  background:var(--panel);
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  overflow-y:auto;
  flex-shrink:0;
}

.sidebar-scrim{display:none;}

/* ---- desktop-only collapsible sidebar (mobile keeps its off-canvas drawer) ---- */
.sb-collapse-row{display:none;}
@media (min-width:901px){
  .sidebar{transition:width .18s ease;}
  .sb-collapse-row{
    display:flex; justify-content:flex-start; align-items:center;
    padding:10px 12px; border-bottom:1px solid var(--line);
  }
  .sb-collapse{
    display:inline-flex; align-items:center; justify-content:center;
    width:30px; height:30px; padding:0;
    background:var(--panel-2); border:1px solid var(--line-strong); border-radius:50%;
    color:var(--dim); cursor:pointer;
    transition:background .15s, color .15s, border-color .15s, transform .15s;
  }
  .sb-collapse:hover{background:var(--gold-bg); color:var(--gold-ink); border-color:var(--gold);}
  .sb-collapse:active{transform:scale(.92);}
  .sb-collapse:focus-visible{outline:2px solid var(--gold); outline-offset:2px;}
  .sb-collapse-ic{display:block; transition:transform .18s ease;}

  body.sb-collapsed .sidebar{width:64px;}
  body.sb-collapsed .sb-collapse-row{justify-content:center; padding:10px 0;}
  body.sb-collapsed .sb-collapse-ic{transform:rotate(180deg);}
  body.sb-collapsed .sb-navgroup-label,
  body.sb-collapsed .sb-section:not(.sb-section-hs),
  body.sb-collapsed .sb-foot,
  body.sb-collapsed .sb-account{display:none !important;}

  /* Vedic / KP switch becomes a stacked icon-only pair */
  body.sb-collapsed .sb-section-hs{padding:10px 8px;}
  body.sb-collapsed .sb-section-hs .sb-title{display:none;}
  body.sb-collapsed .hs-toggle{flex-direction:column;}
  body.sb-collapsed .hs-toggle button{font-size:0; padding:8px 0;}
  body.sb-collapsed .hs-toggle button + button{border-left:none; border-top:1px solid var(--line-strong);}
  body.sb-collapsed .hs-toggle .hs-ic{font-size:14px;}

  /* nav becomes an icon rail (label text is a bare text node, so zero the font) */
  body.sb-collapsed .sb-nav{padding:6px 8px 14px;}
  body.sb-collapsed .nav-btn{font-size:0; justify-content:center; padding:10px 0; gap:0;}
  body.sb-collapsed .nav-btn .ic{width:auto; font-size:16px;}
}

@media (max-width:900px){
  /* Sidebar becomes an off-canvas drawer over the content, opened via the
     hamburger button, instead of pushing content down in normal flow. */
  .sidebar{
    position:fixed;
    top:0; left:0; bottom:0;
    width:min(78vw, 300px);
    z-index:400;
    transform:translateX(-100%);
    transition:transform .22s ease;
    box-shadow:0 0 0 rgba(0,0,0,0);
    padding-top:env(safe-area-inset-top);
  }
  .sidebar.open{
    transform:translateX(0);
    box-shadow:8px 0 24px rgba(0,0,0,.25);
  }
  .sidebar-scrim{
    display:block;
    position:fixed; inset:0;
    background:rgba(15,20,35,.45);
    z-index:390;
    opacity:0;
    pointer-events:none;
    transition:opacity .18s ease;
  }
  .sidebar-scrim.open{opacity:1; pointer-events:auto;}
  .menu-toggle{display:flex;}
  body.nav-open{overflow:hidden;}
}

.sb-section{padding:14px 16px 10px;}
.sb-title{font-size:10px; letter-spacing:.4px; color:var(--dim); margin-bottom:9px; font-weight:600; text-transform:uppercase;}
.profile-select{
  width:100%; padding:7px 8px; border:1px solid var(--line-strong); border-radius:var(--radius);
  background:var(--panel-2); font-size:12.5px; color:var(--ink); margin-bottom:8px;
}
.profile-picker{position:relative; margin-bottom:8px;}
.profile-search-input{
  width:100%; padding:7px 26px 7px 8px; border:1px solid var(--line-strong); border-radius:var(--radius);
  background:var(--panel-2); font-size:12.5px; color:var(--ink); box-sizing:border-box;
}
.profile-search-input:focus{outline:none; border-color:var(--gold);}
.profile-picker .ps-caret{
  position:absolute; right:8px; top:50%; transform:translateY(-50%);
  font-size:10px; color:var(--dim); pointer-events:none;
}
.profile-dropdown{
  position:absolute; top:100%; left:0; right:0; margin-top:3px; z-index:220;
  background:var(--panel); border:1px solid var(--line-strong); border-radius:var(--radius);
  max-height:220px; overflow-y:auto; box-shadow:0 6px 18px rgba(0,0,0,.15);
}
.profile-dropdown .pd-opt{padding:8px 10px; font-size:12px; color:var(--ink); cursor:pointer; display:flex; flex-direction:column; gap:1px;}
.profile-dropdown .pd-opt .pd-opt-meta{font-size:10.5px; color:var(--dim);}
.profile-dropdown .pd-opt:hover, .profile-dropdown .pd-opt.hi{background:var(--gold-bg); color:var(--gold-ink);}
.profile-dropdown .pd-opt:hover .pd-opt-meta, .profile-dropdown .pd-opt.hi .pd-opt-meta{color:inherit; opacity:.75;}
.profile-dropdown .pd-empty{padding:10px; font-size:12px; color:var(--dim);}
.sb-btnrow{display:flex; gap:6px;}
.sb-btn{
  flex:1; background:var(--panel-2); border:1px solid var(--line-strong); color:var(--head);
  padding:6px 4px; border-radius:var(--radius); font-size:11.5px; cursor:pointer; font-weight:600;
}
.sb-btn:hover{border-color:var(--navy);}
.sb-btn.danger{color:var(--bad);}
.notes-wrap{
  max-width:820px; display:flex; flex-direction:column;
  height:calc(100vh - 180px); height:calc(100dvh - 180px);
}
.notes-input{
  flex:1; width:100%; box-sizing:border-box; resize:vertical; min-height:320px;
  background:var(--panel-2); border:1px solid var(--line-strong); color:var(--ink);
  padding:12px 14px; border-radius:var(--radius); font:inherit; font-size:14px; line-height:1.55;
}
.notes-input:focus{outline:none; border-color:var(--gold);}
.notes-bar{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:10px; flex:none;}
.notes-bar .sb-btn{flex:none; padding:8px 18px;}
.notes-bar .sub{font-size:12px; color:var(--dim);}
.notes-count{margin-left:auto; font-size:11px; color:var(--dim);}

.sb-nav{padding:6px 10px 14px;}
.sb-navgroup{margin-bottom:4px;}
.sb-navgroup-label{font-size:9.5px; letter-spacing:.4px; color:var(--dim); text-transform:uppercase; padding:10px 10px 4px; font-weight:600;}
.nav-btn{
  display:flex; align-items:center; gap:10px;
  width:100%;
  padding:8px 10px;
  background:none; border:none; text-align:left;
  color:var(--ink); font-size:12.5px; cursor:pointer; border-radius:var(--radius);
  margin-bottom:1px;
}
.nav-btn .ic{width:16px; text-align:center; color:var(--dim); font-size:13px;}
.nav-btn:hover{background:var(--panel-2);}
.nav-btn.active{background:var(--gold-bg); color:var(--gold-ink);}
.nav-btn.active .ic{color:var(--gold-ink);}

.sb-account{
  margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:8px;
  padding:12px 16px; border-top:1px solid var(--line); background:var(--panel-2);
}
.sb-account-user{
  font-size:12.5px; font-weight:600; color:var(--ink);
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.sb-account .icon-btn{flex:0 0 auto;}
.sb-foot{padding:14px 16px; font-size:10.5px; color:var(--dim); border-top:1px solid var(--line);}

main{flex:1; overflow-y:auto; padding:18px 22px 60px;}

.view-header{
  display:flex; justify-content:space-between; align-items:baseline; flex-wrap:wrap; gap:8px;
  margin-bottom:14px; padding-bottom:10px; border-bottom:1px solid var(--line-strong);
}
.view-header h2{font-size:20px; color:var(--head);}

.err-box{
  background:var(--bad-bg); border:1px solid var(--bad); color:#8a352b;
  padding:10px 14px; border-radius:var(--radius); font-size:12.5px; margin-bottom:14px;
}
.empty-box{
  border:1px dashed var(--line-strong); border-radius:var(--radius);
  padding:60px 20px; text-align:center; color:var(--dim);
}
.empty-box h3{font-family:'Fraunces',serif; font-weight:500; font-size:16px; color:var(--dim); margin-bottom:6px;}

.panel{
  background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:14px 16px; margin-bottom:16px;
}
.panel h3{
  font-family:'Inter',sans-serif; font-weight:700; font-size:11px; letter-spacing:.3px;
  color:var(--head); margin-bottom:12px; text-transform:uppercase;
  display:flex; align-items:center; gap:6px;
}
.panel h3 .mk{color:var(--gold-ink);}

.analysis-grid{display:grid; grid-template-columns:1fr 1fr; gap:16px; align-items:start;}
@media (max-width:1000px){ .analysis-grid{grid-template-columns:1fr;} }

.top-grid{display:grid; grid-template-columns:420px 1fr; gap:16px; align-items:start; margin-bottom:16px;}
@media (max-width:1150px){ .top-grid{grid-template-columns:1fr;} }
.kp-chart-panel{margin-bottom:0;}

.stat-strip{display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:1px; background:var(--line); border:1px solid var(--line); margin-bottom:16px;}
.stat-strip div{background:var(--panel); padding:9px 12px;}
.stat-strip .k{font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.3px;}
.stat-strip .v{font-family:'IBM Plex Mono',monospace; font-size:13px; color:var(--head); margin-top:2px;}

/* North Indian chart grid */
.ni-chart{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  grid-template-rows:repeat(4,1fr);
  aspect-ratio:1/1;
  border:1.5px solid var(--navy);
  background:var(--navy);
  gap:1px;
}
.ni-cell{
  background:var(--panel);
  padding:clamp(3px, 1.5vw, 6px);
  display:flex;
  flex-direction:column;
  position:relative;
  min-height:0;
  overflow:hidden;
  cursor:pointer;
}
.ni-cell:hover{background:var(--panel-2);}
.ni-cell.asc-house:hover{background:var(--gold-bg);}
.ni-cell .sign{
  position:absolute; top:3px; right:4px; margin:0; text-align:right; flex-shrink:0;
  font-family:'Fraunces',serif; font-weight:600; color:var(--head);
  font-size:clamp(8px, 2.3vw, 10.5px); line-height:1.1;
}
.ni-cell .hnum{position:absolute; top:3px; left:4px; font-family:'IBM Plex Mono',monospace; font-size:clamp(7.5px, 2vw, 9.5px); color:var(--dim);}
.ni-cell .sign .signno{
  font-family:'IBM Plex Mono',monospace; font-weight:600; font-size:8px; color:var(--gold-ink);
  margin-left:1px;
}
.ni-cell.asc-house{background:var(--gold-bg);}
.ni-cell.asc-house .sign{color:var(--gold-ink);}
/* .planets can hold every planet in a single house (a full stellium) --
   it scales itself down via --pl-scale (set in JS from the chart's
   densest house) rather than clipping or overflowing the cell. The
   clamp() floor also shrinks with viewport width, so a crowded house
   keeps shrinking further on narrow phones instead of stalling at a
   size that only fit on a tablet-width chart. */
.ni-cell .planets{
  display:flex; flex-wrap:wrap; align-content:flex-start; justify-content:center;
  gap:calc(clamp(1px, 0.8vw, 3px) * var(--pl-scale, 1)); flex:1; min-height:0; overflow:visible;
  padding-top:clamp(11px, 3.4vw, 15px);   /* clears the house no. + short sign in the top row */
}
.ni-cell .pl{
  font-size:calc(clamp(7px, 2.6vw, 10.5px) * var(--pl-scale, 1));
  line-height:1.3;
  font-weight:600; color:var(--head-2); font-family:'IBM Plex Mono',monospace;
  padding:0 1px; cursor:default;
}
.ni-cell .pl sup{font-size:7px; margin-left:1px; line-height:1;}
.ni-cell .pl sup.flag-r{color:var(--retro);}
.ni-cell .pl sup.flag-c{color:var(--gold-ink);}
.ni-center{
  grid-column:2 / span 2; grid-row:2 / span 2;
  background:var(--navy); color:#f2e6cf;
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  padding:clamp(4px, 1.6vw, 8px);
  overflow-y:auto;
  cursor:pointer;
}
.ni-center.detail-mode{justify-content:flex-start;}
.ni-center .nm{font-family:'Fraunces',serif; font-size:14px; font-weight:600; color:#fff;}
.ni-center .dt{font-size:10px; color:rgba(255,255,255,.55); margin-top:5px; font-family:'IBM Plex Mono',monospace;}
.ni-center .lg{font-size:10.5px; color:var(--gold-ink); margin-top:8px; font-weight:600;}
.ni-center .ni-hint{font-size:8.5px; color:rgba(255,255,255,.35); margin-top:10px;}
.ni-center.detail-mode .nm{font-size:12px;}
.ni-center.detail-mode .lg{font-size:9.5px; color:rgba(255,255,255,.55); font-weight:500; margin-top:8px;}
.ni-detail{margin-top:6px; display:flex; flex-direction:column; gap:5px; width:100%; padding:0 6px;}
.ni-detail > div{display:flex; justify-content:space-between; align-items:center; gap:6px; font-size:9px;}
.ni-detail .dl{color:rgba(255,255,255,.5); text-transform:uppercase; letter-spacing:.2px; flex-shrink:0;}
.ni-detail .dv{color:var(--gold-ink); font-weight:700; font-family:'IBM Plex Mono',monospace; text-align:right;}
.ni-center .ni-sub-sign{font-weight:400; opacity:.75; font-size:.85em;}
/* Planets / Significators rows: same label + value rhythm as Star Lord
   and Sub Lord above them, but the value is a wrapping row of pills
   instead of plain mono text, so a crowded house still reads as one
   consistent list rather than a different-looking block. */
.ni-detail > div.ni-row-pills{align-items:flex-start;}
.ni-detail .dv.ni-pill-value{
  display:flex; flex-wrap:wrap; gap:3px; justify-content:flex-end;
  max-width:72%; max-height:56px; overflow-y:auto; font-family:'Inter',sans-serif;
}
.ni-detail .dv.ni-pill-value .pill{
  margin:0; font-size:8.5px; font-weight:600; padding:1px 6px; border-radius:8px;
  background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.25); color:#fff;
}
.ni-detail .dv.ni-pill-value .pill sup{margin-left:2px;}
.ni-detail .dv.ni-pill-value .pill sup.flag-r{color:#ff8a7a;}
.ni-detail .dv.ni-pill-value .pill sup.flag-c{color:var(--gold-ink);}

/* Phones: the North Indian chart itself shrinks a lot, so the center
   box's detail view (Star/Sub lord + Planets + Significators pills)
   needs its own tighter sizing and a firm scroll cap -- otherwise a
   crowded house (several planets + several significators) overflows
   the tiny center cell or forces the whole 4x4 grid taller than its
   aspect-ratio square. */
@media (max-width:560px){
  .ni-center{padding:3px;}
  .ni-center .nm{font-size:11px;}
  .ni-center.detail-mode .nm{font-size:10px;}
  .ni-center .dt{font-size:8px; margin-top:2px;}
  .ni-center .lg{font-size:8px; margin-top:4px;}
  .ni-center.detail-mode .lg{font-size:7.5px; margin-top:4px;}
  .ni-detail{gap:3px; padding:0 2px;}
  .ni-detail > div{font-size:7.5px;}
  .ni-detail .dv.ni-pill-value{max-height:40px; gap:2px;}
  .ni-detail .dv.ni-pill-value .pill{font-size:7.5px; padding:1px 4px;}
}

/* ---------- instant analysis (Chart analysis view) ---------- */
.instant-panel{padding-bottom:16px;}
.chip-row{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:16px;}
.chip{
  display:flex; align-items:baseline; gap:6px;
  background:var(--panel-2); border:1px solid var(--line-strong); border-radius:var(--radius);
  padding:6px 12px;
}
.chip .chip-n{font-family:'Fraunces',serif; font-weight:600; font-size:16px; color:var(--head);}
.chip .chip-l{font-size:10.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.2px;}
.chip.warn .chip-n{color:var(--bad);}
.chip.good .chip-n{color:var(--good);}

.ia-cols{display:grid; grid-template-columns:1fr 1fr; gap:20px;}
@media (max-width:1100px){ .ia-cols{grid-template-columns:repeat(2,1fr);} }
@media (max-width:420px){ .ia-cols{grid-template-columns:1fr;} }
.ia-block{margin-top:14px;}
.dig-cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(74px,1fr)); gap:6px;}
.dig-card{display:flex; flex-direction:column; gap:5px; min-width:0; padding:6px 7px; border:1px solid var(--line-strong); border-radius:var(--radius); background:var(--panel-2);}
.dig-card.empty{opacity:.45;}
.dig-card .dtag.short{align-self:flex-start;}
.dig-card-pl{display:flex; flex-wrap:wrap; gap:3px; min-height:16px; align-items:center;}
.mini-pl{display:inline-flex; align-items:center; justify-content:center; min-width:22px; padding:2px 5px; border-radius:10px; background:var(--pc,#69748a); color:#fff; font:600 10px/1.1 'IBM Plex Mono',monospace;}
.conj-cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(128px,1fr)); gap:6px;}
.conj-cards-quick{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));}
.conj-cards-theory{grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); gap:8px;}
.conj-pair-block{margin-bottom:6px;}
.conj-pair-block:last-child{margin-bottom:0;}
.conj-theory-text{margin:2px 0 0; font-size:12px; line-height:1.35; cursor:pointer;}
.conj-theory-text.expanded{color:var(--ink);}
.conj-more{color:var(--gold-ink); font-size:11px; font-weight:600; white-space:nowrap;}
.conj-card{display:flex; gap:7px; align-items:flex-start; padding:6px 8px; border:1px solid var(--line-strong); border-radius:var(--radius); background:var(--panel-2); min-width:0;}
.conj-card.conj-theory-card{flex-direction:column; align-items:stretch;}
.conj-sign{font:600 10px/1 'IBM Plex Mono',monospace; color:var(--dim); text-transform:uppercase; padding-top:4px;}
.conj-pairs{display:flex; flex-direction:column; gap:4px; min-width:0;}
.conj-pair{display:flex; align-items:center; gap:3px; flex-wrap:wrap;}
.conj-pair i{font-style:normal; color:var(--dim); font-size:10px;}
.ia-legend{margin-top:12px; font-size:10.5px; line-height:1.5;}
.ia-subhead{font-size:10px; letter-spacing:.3px; color:var(--dim); text-transform:uppercase; font-weight:600; margin-bottom:8px;}

.bar-row{display:grid; grid-template-columns:78px 1fr 18px; align-items:center; gap:8px; margin-bottom:6px;}
.bar-label{font-size:10.5px; color:var(--ink); line-height:1.2;}
.bar-track{height:8px; background:var(--panel-2); border:1px solid var(--line); border-radius:20px; overflow:hidden;}
.bar-fill{height:100%; border-radius:20px; transition:width .25s ease;}
.bar-count{font-family:'IBM Plex Mono',monospace; font-size:10.5px; color:var(--dim); text-align:right;}

.hocc-strip{display:grid; grid-template-columns:repeat(6,1fr); gap:4px;}
.hocc-cell{
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:var(--radius); padding:6px 2px;
  background:var(--panel-2);
}
.hocc-cell .hocc-h{font-family:'IBM Plex Mono',monospace; font-size:9px; color:var(--dim);}
.hocc-cell .hocc-n{font-family:'Fraunces',serif; font-weight:600; font-size:13px; color:var(--head); margin-top:2px; min-height:15px;}
.hocc-cell.lvl1{background:#eef3fb;}
.hocc-cell.lvl2{background:#dfe9f8; border-color:#c3d4ee;}
.hocc-cell.lvl3{background:#c9dbf4; border-color:#a9c4e8;}
.hocc-cell.lvl4{background:var(--navy); border-color:var(--navy);}
.hocc-cell.lvl4 .hocc-h, .hocc-cell.lvl4 .hocc-n{color:#f2e6cf;}
.hocc-cell.peak{outline:2px solid var(--gold); outline-offset:-1px;}

table{width:100%; border-collapse:collapse;}
th,td{text-align:left; padding:6px 8px; border-bottom:1px solid var(--line); font-size:12px;}
th{color:var(--dim); font-weight:600; font-size:10px; text-transform:uppercase; letter-spacing:.2px; background:var(--panel-2);}
td.mono, th.mono{font-family:'IBM Plex Mono',monospace;}
.user-edit-row td{background:var(--panel-2); padding:12px 8px;}
.user-edit-row .tb-field-row{display:flex; gap:12px; flex-wrap:wrap;}
.user-edit-row .tb-field{min-width:160px; margin-bottom:0;}
tr:last-child td{border-bottom:none;}
tr:hover td{background:var(--panel-2);}
.retro-flag{color:var(--retro); font-size:9.5px; font-weight:700; margin-left:3px;}
.combust-flag{color:var(--gold-ink); font-size:9.5px; font-weight:700; margin-left:3px;}
.empty-row td{color:var(--dim);}

.pill{
  display:inline-block; padding:1px 7px; border:1px solid var(--line-strong); border-radius:20px;
  font-size:10.5px; color:var(--head-2); margin:2px 3px 2px 0; background:var(--panel-2);
}
.pill.gold{border-color:var(--gold); color:var(--gold-ink); background:var(--gold-bg);}

.sig-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px;}
.sig-card{border:1px solid var(--line); border-radius:var(--radius); padding:12px; background:var(--panel);}
.sig-card .hn{font-family:'Fraunces',serif; font-size:18px; color:var(--gold-ink); margin-bottom:6px;}
.sig-lvl{margin-bottom:6px;}
.sig-lvl .lbl{font-size:9px; color:var(--dim); text-transform:uppercase; margin-bottom:2px;}

.maha{border:1px solid var(--line); border-radius:var(--radius); margin-bottom:8px; background:var(--panel);}
.maha-head{display:flex; justify-content:space-between; align-items:center; padding:11px 14px; cursor:pointer;}
.maha-head:hover{background:var(--panel-2);}
.maha-head .lord{font-family:'Fraunces',serif; font-weight:600; font-size:14.5px; color:var(--head);}
.maha-head .dates{font-family:'IBM Plex Mono',monospace; font-size:11px; color:var(--dim);}
.maha-body{display:none; padding:0 14px 12px;}
.maha-body.open{display:block;}
.bhukti-row{display:flex; justify-content:space-between; padding:6px 8px; border-top:1px solid var(--line); font-size:12px;}
.bhukti-row .dates{font-family:'IBM Plex Mono',monospace; color:var(--dim); font-size:10.5px;}
.now-tag{background:var(--gold); color:#2a1d08; font-size:9px; padding:1px 6px; border-radius:20px; margin-left:6px; font-weight:700;}

.verdict{border-radius:var(--radius); padding:14px 16px; margin-bottom:14px; display:flex; align-items:center; gap:14px;}
.verdict.yes{background:var(--good-bg); border:1px solid var(--good);}
.verdict.no{background:var(--bad-bg); border:1px solid var(--bad);}
.verdict .big{font-family:'Fraunces',serif; font-size:20px;}
.verdict.yes .big{color:var(--good);}
.verdict.no .big{color:var(--bad);}

.pf-search-input{
  font-size:14px; font-family:inherit; border:1px solid var(--line); border-radius:var(--radius);
  background:var(--panel); color:var(--ink); outline:none;
}
.pf-search-input:focus{border-color:var(--gold);}
.profile-row{display:flex; justify-content:space-between; align-items:center; padding:10px 14px; border:1px solid var(--line); border-radius:var(--radius); margin-bottom:8px; background:var(--panel);}
.profile-row .name{font-family:'Fraunces',serif; font-size:14px; color:var(--head); font-weight:600;}
.profile-row .meta{font-family:'IBM Plex Mono',monospace; font-size:10.5px; color:var(--dim); margin-top:2px;}
.icon-btn{background:none; border:1px solid var(--line-strong); color:var(--dim); padding:5px 10px; border-radius:var(--radius); cursor:pointer; font-size:11px; font-weight:600;}
.icon-btn:hover{border-color:var(--navy); color:var(--head);}
.profile-row-wrap{margin-bottom:8px;}
.profile-row-wrap .profile-row{margin-bottom:0;}
.pf-edit-form{border:1px solid var(--line); border-top:none; border-radius:0 0 var(--radius) var(--radius); background:var(--panel); padding:12px 14px; margin-top:-1px;}
.pf-edit-grid{display:grid; grid-template-columns:1fr 1fr; gap:8px 12px;}
.pf-edit-form .tb-field{display:flex; flex-direction:column; gap:4px; margin-bottom:0;}
.pf-edit-form .tb-field label{font-size:10.5px; color:var(--dim); font-weight:600;}
.pf-edit-form .tb-field input, .pf-edit-form .tb-field select{
  padding:7px 9px; border:1px solid var(--line-strong); border-radius:var(--radius);
  background:var(--bg); color:var(--head); font-size:12.5px; font-family:inherit;
}
.pf-edit-form .tb-field input:focus, .pf-edit-form .tb-field select:focus{outline:none; border-color:var(--gold);}
@media (max-width:520px){ .pf-edit-grid{grid-template-columns:1fr;} }

.spin{display:inline-block; width:11px; height:11px; border:2px solid rgba(0,0,0,.2); border-top-color:#2a1d08; border-radius:50%; animation:sp .7s linear infinite; vertical-align:-1px; margin-right:6px;}
@keyframes sp{to{transform:rotate(360deg);}}

.field-inline{display:grid; grid-template-columns:1fr 1fr; gap:10px;}
.form-panel .field{margin-bottom:11px;}
.form-panel label{display:block; font-size:11px; color:var(--dim); margin-bottom:4px;}
.form-panel input, .form-panel select{width:100%; padding:7px 9px; border:1px solid var(--line-strong); border-radius:var(--radius); font-size:12.5px; font-family:'IBM Plex Mono',monospace; background:var(--panel-2); color:var(--ink);}
.form-panel input:focus{outline:1px solid var(--gold); border-color:var(--gold);}
.btn-primary{
  width:100%; background:var(--navy); color:#fff; border:none; padding:9px; border-radius:var(--radius);
  font-weight:600; font-size:12.5px; cursor:pointer; margin-top:4px;
}
.btn-primary:hover{background:var(--navy-2);}

/* ---------- Life overview: sub-topic tab strip + cards ---------- */
.subtab-row{display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px;}
.subtab-btn{
  background:var(--panel-2); border:1px solid var(--line-strong); color:var(--head-2);
  padding:6px 13px; border-radius:20px; font-size:11.5px; font-weight:600; cursor:pointer;
}
.subtab-btn:hover{border-color:var(--navy); color:var(--head);}
.subtab-btn.active{background:var(--navy); color:#fff; border-color:var(--navy);}
.life-cards{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px;}

/* ---------- phone / small-tablet refinements ---------- */
@media (max-width:900px){
  .topbar{padding:8px 10px; gap:8px; position:relative;}
  .brand-tagline{display:none;}
  .brand{
    gap:8px;
    position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
    pointer-events:none; flex:0 0 auto;
  }
  .brand-mark{font-size:15px;}
  .brand-title{font-size:15px;}
  .topbar-right{margin-left:auto;}
  main{padding:14px 14px 50px;}
  .view-header h2{font-size:17px;}
  .top-grid{gap:12px;}
  .hocc-strip{grid-template-columns:repeat(3,1fr);}
  .field-inline{grid-template-columns:1fr;}
  .tb-field-row{grid-template-columns:1fr;}
}

@media (max-width:560px){
  body{font-size:13.5px;}
  .topbar{padding:7px 8px; gap:6px;}
  .topbar-right{gap:6px;}
  .tb-status{display:none;} /* reclaim space on very narrow phones */
  .entry-trigger{padding:7px 9px; font-size:11.5px;}
  .ia-cols{gap:14px;}
  .sig-grid{grid-template-columns:1fr;}
  .stat-strip{grid-template-columns:repeat(2,1fr);}
  table{font-size:11px;}
  th,td{padding:6px 5px;}
}

@media (max-width:400px){
  .entry-trigger .entry-label{display:none;}
  .entry-trigger .et-ic{display:inline;}
  .entry-trigger{padding:8px 10px;}
}

/* Touch-friendly tap targets across breakpoints where a mouse can't be assumed */
@media (pointer:coarse){
  .nav-btn{padding:11px 10px; font-size:13px;}
  .menu-toggle, .entry-trigger, .sb-btn, .icon-btn, .subtab-btn, .btn-primary{min-height:40px;}
  .ni-cell{cursor:default;}
}

/* ---------- Dasha Analysis: "running now" strip + drill-down navigator ---------- */
.dasha-now{
  border:1px solid var(--gold); background:linear-gradient(180deg,var(--gold-bg),var(--panel) 55%);
  border-radius:var(--radius); padding:14px 16px; margin-bottom:14px;
}
.dasha-now .cap{font-size:9.5px; color:var(--gold-ink); text-transform:uppercase; letter-spacing:.04em; font-weight:700; margin-bottom:8px;}
.dasha-now .chain, .ov-dasha-chain{display:flex; flex-wrap:wrap; align-items:center; gap:8px;}
.dasha-now .lvl, .ov-dasha-chain .lvl{display:flex; flex-direction:column; align-items:flex-start; gap:2px;}
.dasha-now .lvl .pbadge, .ov-dasha-chain .lvl .pbadge{margin-bottom:1px;}
.dasha-now .lvl .lord, .ov-dasha-chain .lvl .lord{font-family:'Fraunces',serif; font-weight:600; font-size:14px; color:var(--head);}
.dasha-now .lvl .lbl, .ov-dasha-chain .lvl .lbl{font-size:8.5px; color:var(--dim); text-transform:uppercase;}
.dasha-now .sep, .ov-dasha-chain .sep{color:var(--line-strong); font-size:14px; margin:0 1px; align-self:center;}
.dasha-now .until{margin-top:10px; font-size:11px; color:var(--dim); font-family:'IBM Plex Mono',monospace;}

.dnow-bar-row{display:flex; align-items:center; gap:10px; margin-top:12px;}
.dnow-pct{font-size:11px; color:var(--head); font-weight:600; min-width:46px; text-align:right;}
.dnow-spans{
  display:grid; grid-template-columns:repeat(3,1fr); gap:10px 16px; margin-top:12px;
  padding-top:12px; border-top:1px dashed var(--line-strong);
}
.dnow-spans > div{display:flex; flex-direction:column; gap:2px;}
.dnow-spans .dl{font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.03em;}
.dnow-spans .dv{font-size:12.5px; color:var(--head); font-weight:600;}
@media (max-width:640px){ .dnow-spans{grid-template-columns:1fr;} }

.dperiod-bar{height:6px; background:var(--panel-2); border:1px solid var(--line); border-radius:20px; overflow:hidden; flex:1;}
.dperiod-bar.lg{height:9px;}
.dperiod-fill{height:100%; background:var(--gold); border-radius:20px; transition:width .25s ease;}

/* ---------- Dasha Analysis: "Compute periods" panel (Depth + Cycles
   kept on one line, using short MhD/AtD/PyD/SkD/PrD depth labels) ---------- */
.dasha-compute-panel{max-width:640px;}
.dasha-compute-row{display:flex; align-items:flex-end; gap:10px; flex-wrap:wrap;}
.dasha-compute-fields{display:flex; align-items:flex-end; gap:8px; flex:1 1 220px; min-width:0;}
.dasha-compute-fields .field{flex:1 1 0; min-width:0; margin-bottom:0;}
.dasha-compute-fields .field select{text-overflow:ellipsis;}
.dasha-cycles-field{flex:0 0 68px;}
.dasha-compute-btn{flex:1 1 150px; margin-top:0; min-width:130px; white-space:nowrap;}
@media (max-width:480px){
  .dasha-compute-row{gap:8px;}
  .dasha-compute-fields{gap:6px;}
  .dasha-cycles-field{flex:0 0 58px;}
  .dasha-compute-btn{flex-basis:100%;}
}

.dasha-level-label{
  display:flex; align-items:center; font-size:9.5px; color:var(--dim); text-transform:uppercase;
  letter-spacing:.04em; margin-bottom:6px;
}

.dasha-level-label .dl-count{margin-left:6px; text-transform:none; letter-spacing:0; font-size:10.5px;}

/* ---- Period list: card per period (levels 1-3 rich, 4-5 lean) ---- */
.dlist{display:flex; flex-direction:column; gap:8px;}
.ditem{
  --pc:#69748a;
  position:relative; cursor:default; min-width:0;
  border:1px solid var(--line); border-left:4px solid var(--pc); border-radius:12px;
  background:var(--panel); padding:11px 14px;
  display:grid; align-items:center; column-gap:16px; row-gap:9px;
  grid-template-columns:minmax(170px,1.05fr) minmax(0,1.5fr) auto;
  grid-template-areas:"main when chev" "meta meta meta";
  transition:box-shadow .15s, transform .15s, border-color .15s, background .15s;
}
.ditem.clickable{cursor:pointer;}
.ditem.clickable:hover{background:var(--panel-2); border-color:color-mix(in srgb,var(--pc) 55%, var(--line)); border-left-color:var(--pc); box-shadow:0 6px 16px -10px rgba(20,30,60,.35); transform:translateY(-1px);}
.ditem.clickable:focus-visible{outline:2px solid var(--gold); outline-offset:2px;}
.ditem.active{background:linear-gradient(180deg,var(--gold-bg),var(--panel) 85%); border-color:var(--gold); border-left-color:var(--pc); box-shadow:0 3px 14px -8px rgba(169,118,44,.55);}
.ditem.past{background:var(--panel-2);}
.ditem.past .lord, .ditem.past .dc-d{opacity:.78;}
.ditem.past .pbadge{opacity:.6;}

.dc-main{grid-area:main; display:flex; align-items:center; gap:11px; min-width:0;}
.ditem .dlord-col{display:flex; flex-direction:column; gap:3px; min-width:0;}
.ditem .lord{font-family:'Fraunces',serif; font-weight:600; font-size:15px; color:var(--head); display:flex; align-items:center; flex-wrap:wrap; gap:4px 8px;}
.ditem .dspan{font-size:11px; color:var(--dim);}
.dc-st{font:700 8.5px/1 'Inter',sans-serif; letter-spacing:.06em; text-transform:uppercase; padding:3px 7px; border-radius:20px; border:1px solid transparent;}
.dc-st.run{background:var(--gold); color:#2a1d08;}
.dc-st.past{background:transparent; color:var(--dim); border-color:var(--line-strong);}
.dc-st.next{background:color-mix(in srgb,var(--navy-2) 10%, transparent); color:var(--navy-2); border-color:color-mix(in srgb,var(--navy-2) 25%, transparent);}

.dc-when{grid-area:when; display:flex; align-items:center; gap:12px; min-width:0;}
.dc-dt{display:flex; flex-direction:column; gap:1px; min-width:0;}
.dc-k{font-size:8.5px; text-transform:uppercase; letter-spacing:.07em; color:var(--dim); font-weight:600;}
.dc-d{font:600 12.5px 'IBM Plex Mono',monospace; color:var(--head); white-space:nowrap;}
.dc-t{font-size:10px; color:var(--dim);}
.dc-arrow{color:var(--line-strong); font-size:16px; flex:none; padding-top:8px;}
.dc-when.lite .dates{font:500 10.5px 'IBM Plex Mono',monospace; color:var(--dim);}

.dc-meta{grid-area:meta; display:flex; flex-wrap:wrap; gap:6px; padding-top:9px; border-top:1px dashed var(--line);}
.dc-chip{display:inline-flex; align-items:baseline; gap:6px; padding:3px 10px; border-radius:20px; background:var(--panel-2); border:1px solid var(--line); font-size:11px; color:var(--head);}
.ditem.active .dc-chip{background:var(--panel);}
.dc-chip em{font-style:normal; font-size:9px; text-transform:uppercase; letter-spacing:.06em; color:var(--dim); font-weight:600;}
.dc-chip b{font-weight:600; font-size:11px;}

.ditem .chev{grid-area:chev; color:var(--line-strong); font-size:22px; line-height:1; justify-self:end; transition:transform .15s, color .15s;}
.ditem.clickable:hover .chev{color:var(--pc); transform:translateX(2px);}
.ditem.active .chev{color:var(--gold-ink);}
.dc-main .chev{margin-left:auto; font-size:18px;}

.dc-prog{grid-column:1 / -1; display:flex; align-items:center; gap:10px; order:9;}
.dc-prog .dperiod-bar{height:7px; flex:1;}
.dc-pct{font-size:10.5px; font-weight:600; color:var(--head); min-width:40px; text-align:right;}

/* lean rows (Sookshma / Prana): one compact line each */
.dlist:not(.rich) .ditem{padding:8px 12px; border-radius:10px; row-gap:4px; grid-template-columns:minmax(0,1fr) auto; grid-template-areas:"main when";}
.dlist:not(.rich) .pbadge{width:26px; height:26px; font-size:9.5px;}
.dlist:not(.rich) .lord{font-size:13.5px;}
.dlist:not(.rich) .dc-when{justify-content:flex-end;}

/* ---- tablet: dates drop under the name, chevron stays on the right ---- */
@media (max-width:860px){
  .ditem{grid-template-columns:minmax(0,1fr) auto; column-gap:12px; grid-template-areas:"main chev" "when when" "meta meta";}
  .dc-when{padding-top:2px;}
}
/* ---- phone ---- */
@media (max-width:560px){
  .dlist{gap:7px;}
  .ditem{padding:10px 11px 10px 12px; border-radius:11px; row-gap:8px;}
  .ditem .lord{font-size:14.5px;}
  .ditem .pbadge.lg{width:34px; height:34px; font-size:11.5px;}
  .dc-when{display:grid; grid-template-columns:1fr auto 1fr; gap:8px; background:var(--panel-2); border:1px solid var(--line); border-radius:9px; padding:7px 10px;}
  .ditem.active .dc-when{background:var(--panel);}
  .dc-arrow{padding-top:0; text-align:center;}
  .dc-dt:last-child{align-items:flex-end; text-align:right;}
  .dc-d{font-size:11.5px;}
  .dc-meta{padding-top:8px; gap:5px;}
  .dc-chip{padding:3px 8px;}
  .dlist:not(.rich) .ditem{grid-template-columns:1fr; grid-template-areas:"main" "when";}
  .dlist:not(.rich) .dc-when{display:flex; justify-content:flex-start; background:none; border:0; padding:0;}
}
@media (max-width:360px){
  .dc-d{font-size:10.5px;}
  .dc-chip em{display:none;}
}
@media (prefers-reduced-motion:reduce){ .ditem, .ditem .chev{transition:none;} .ditem.clickable:hover{transform:none;} }


/* =====================================================================
   Analysis views: Planets · Houses · Rashi · Nakshatra
   Shared building blocks first, then one block per view.
   ===================================================================== */

/* Mobile browsers: 100vh includes the collapsing URL bar, dvh doesn't. */
.shell{height:100vh; height:100dvh;}

/* ---------- shared: planet badge / pills / tags ---------- */
.pbadge{
  display:inline-flex; align-items:center; justify-content:center; flex-shrink:0;
  width:24px; height:24px; border-radius:50%;
  background:var(--pc,#69748a); color:#fff;
  font:600 10px/1 'IBM Plex Mono',monospace; letter-spacing:-.2px;
}
.pbadge.lg{width:40px; height:40px; font-size:13px; box-shadow:0 0 0 3px color-mix(in srgb,var(--pc) 18%,transparent);}

.ppill{
  display:inline-flex; align-items:center; gap:5px; white-space:nowrap;
  padding:2px 9px 2px 7px; margin:2px 4px 2px 0; border-radius:20px;
  font-size:11px; font-weight:500; color:var(--ink);
  background:var(--panel-2); border:1px solid var(--line-strong);
  background:color-mix(in srgb,var(--pc) 12%,var(--panel));
  border-color:color-mix(in srgb,var(--pc) 40%,var(--panel));
}
.ppill i{width:7px; height:7px; border-radius:50%; background:var(--pc); flex-shrink:0;}
.ppill em{font-style:normal; font-family:'IBM Plex Mono',monospace; font-size:10px; color:var(--dim);}

.hpill{
  display:inline-block; margin:2px 4px 2px 0; padding:1px 7px; border-radius:20px;
  font:600 10.5px/1.5 'IBM Plex Mono',monospace;
  background:var(--panel-2); border:1px solid var(--line-strong); color:var(--head-2);
}
.hpill.self{background:var(--gold-bg); border-color:var(--gold); color:var(--gold-ink);}

.tag{
  display:inline-block; padding:1px 7px; border-radius:20px; white-space:nowrap;
  font-size:9.5px; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
  background:var(--panel-2); border:1px solid var(--line-strong); color:var(--dim);
}
.tag-r{color:var(--bad); border-color:var(--bad); background:var(--bad-bg);}
.tag-c, .tag-gold{color:var(--gold-ink); border-color:var(--gold); background:var(--gold-bg);}
.tag-blue{color:var(--head-2); border-color:var(--navy-2); background:#e9eef8;}

.dtag{
  display:inline-block; padding:2px 8px; border-radius:20px; white-space:nowrap; border:1px solid;
  font-size:10px; font-weight:700; letter-spacing:.02em; text-transform:uppercase;
}
.etag{
  display:inline-block; padding:0 7px; border-radius:20px; font-size:10px; font-weight:600;
  color:var(--tc); border:1px solid color-mix(in srgb,var(--tc) 45%,var(--panel));
  background:color-mix(in srgb,var(--tc) 10%,var(--panel));
}

/* ---------- shared: toolbar + segmented control ---------- */
.an-chips{margin-bottom:14px;}
.an-toolbar{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; margin:0 0 14px;}
.an-toolbar-title{font-size:11.5px; color:var(--dim);}
.an-note{margin:10px 2px 0;}

.seg{display:inline-flex; border:1px solid var(--line-strong); border-radius:var(--radius); overflow:hidden; background:var(--panel);}
.seg button{
  border:none; background:none; padding:7px 15px; font-size:11.5px; font-weight:600;
  color:var(--dim); cursor:pointer; white-space:nowrap;
}
.seg button + button{border-left:1px solid var(--line-strong);}
.seg button:hover{color:var(--head); background:var(--panel-2);}
.seg button.active{background:var(--navy); color:#fff;}

/* ---------- shared: KP chain (sign › star › sub) ---------- */
.kp-chain{
  display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);
  align-items:center; gap:4px;
  background:var(--panel-2); border:1px solid var(--line); border-radius:var(--radius);
  padding:9px 8px;
}
.kc-node{display:flex; align-items:center; gap:7px; min-width:0;}
.kc-txt{display:flex; flex-direction:column; min-width:0; line-height:1.2;}
.kc-role{font-size:8.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em;}
.kc-name{font-size:12px; font-weight:600; color:var(--head); overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.kc-note{font-size:9.5px; color:var(--gold-ink); font-family:'IBM Plex Mono',monospace;}
.kc-arrow{color:var(--line-strong); font-size:18px; line-height:1; text-align:center;}

/* pada: four segments, the active one lit */
.pada{display:inline-flex; align-items:center; gap:2px; margin-left:6px; vertical-align:middle;}
.pada i{width:7px; height:7px; border-radius:2px; background:var(--line-strong);}
.pada i.on{background:var(--gold);}
.pada b{margin-left:4px; font:600 10px 'IBM Plex Mono',monospace; color:var(--dim);}

/* ---------- shared: horizontally scrolling tables, sticky first column ---------- */
.tbl-scroll{overflow-x:auto; -webkit-overflow-scrolling:touch;}
.wide-table{min-width:760px;}
.wide-table th, .wide-table td{white-space:nowrap;}
/* Chart analysis Planets / House-cusps tables: shrink the first (Planet /
   House) and House-number columns to their content so Position, Speed,
   Dignity, Star/Sub lord get the room instead of forcing a wide scroll. */
.wide-table.compact-table{min-width:0;}
.compact-table th, .compact-table td{padding:6px 6px;}
.compact-table th:first-child, .compact-table td:first-child{width:1%; padding-left:8px; padding-right:6px;}
.compact-table .tcell-name{gap:5px;}
.compact-table .tcell-name .pbadge{width:20px; height:20px; font-size:8.5px;}
.planet-tbl th:nth-child(3), .planet-tbl td:nth-child(3){width:1%; padding-left:4px; padding-right:4px;}
.sticky-col{position:sticky; left:0; z-index:1; background:var(--panel); box-shadow:1px 0 0 var(--line);}
th.sticky-col{background:var(--panel-2);}
tr:hover td.sticky-col{background:var(--panel-2);}
.tcell-name{display:inline-flex; align-items:center; gap:8px; font-weight:600; color:var(--head);}
.tbl-h{font-family:'Fraunces',serif; color:var(--gold-ink); font-size:14px;}

/* ================= PLANETS ================= */
.pc-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:14px;}
.pcard{
  background:var(--panel); border:1px solid var(--line); border-top:3px solid var(--pc);
  border-radius:var(--radius); padding:14px; display:flex; flex-direction:column; gap:12px;
  transition:box-shadow .15s ease, transform .15s ease;
}
.pcard:hover{box-shadow:0 6px 18px rgba(38,54,92,.10);}
.pc-head{display:flex; align-items:center; gap:12px;}
.pc-title{flex:1; min-width:0;}
.pc-title h4{margin:0; font-family:'Fraunces',serif; font-size:17px; color:var(--head); font-weight:600; line-height:1.15;}
.pc-flags{display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; min-height:0;}
.pc-flags:empty{display:none;}

.pc-pos-main{display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 10px; margin-bottom:7px;}
.pc-deg{font-size:19px; font-weight:600; color:var(--head);}
.pc-sign{font-family:'Fraunces',serif; font-size:14px; color:var(--ink);}
.pc-house{margin-left:auto; font-size:10.5px; font-weight:700; color:var(--gold-ink); background:var(--gold-bg); border:1px solid var(--gold); padding:1px 8px; border-radius:20px;}

.degbar{position:relative; height:6px; border-radius:6px; background:var(--panel-2); border:1px solid var(--line);}
.degbar::before, .degbar::after{content:""; position:absolute; top:0; bottom:0; width:1px; background:var(--line-strong);}
.degbar::before{left:33.33%;} .degbar::after{left:66.66%;}
.degbar span{position:absolute; top:50%; width:12px; height:12px; border-radius:50%; background:var(--pc); border:2px solid #fff; box-shadow:0 0 0 1px var(--pc); transform:translate(-50%,-50%);}

.pc-facts{margin:0; display:flex; flex-direction:column; gap:6px;}

.vp-toggle{
  margin-top:8px; width:100%; text-align:left; background:transparent; cursor:pointer;
  border:1px dashed var(--line-strong); border-radius:var(--radius); padding:6px 10px;
  font-size:12px; font-weight:600; color:var(--gold-dark, var(--gold));
}
.vp-toggle:hover{background:var(--panel-2);}
.vp-panel{margin-top:8px; padding-top:8px; border-top:1px solid var(--line); display:flex; flex-direction:column; gap:10px;}
.vp-block .vp-label{font-size:12px; font-weight:700; margin-bottom:3px;}
.vp-chips{display:flex; flex-wrap:wrap; gap:4px;}
.vp-house-cols{display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:4px;}
.vp-house-col ul{margin:2px 0 0; padding-left:16px; font-size:12px; color:var(--dim); line-height:1.4;}
.vp-house-col b{font-size:11px; text-transform:uppercase; letter-spacing:.03em; color:var(--ink);}
.vp-footnote{font-style:italic;}
@media (max-width:520px){ .vp-house-cols{grid-template-columns:1fr;} }
.pc-facts > div{display:flex; justify-content:space-between; align-items:center; gap:10px; padding-top:6px; border-top:1px dashed var(--line);}
.pc-facts dt{font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; flex-shrink:0;}
.pc-facts dd{margin:0; font-size:12px; color:var(--ink); text-align:right; display:flex; flex-wrap:wrap; justify-content:flex-end; align-items:center;}

/* ---- Planets panel: strength bar + conjunctions/aspects blocks ---- */
.pc-strength{padding-top:8px; border-top:1px dashed var(--line);}
.pc-strength-row{display:flex; align-items:baseline; justify-content:space-between; gap:8px; margin-bottom:5px;}
.pc-strength-label{font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em;}
.pc-strength-val{font-size:12px; font-weight:700;}
.pc-strength-bar{height:6px; background:var(--panel-2); border:1px solid var(--line); border-radius:20px; overflow:hidden;}
.pc-strength-fill{height:100%; border-radius:20px; transition:width .25s ease;}

.pc-block{padding-top:8px; border-top:1px dashed var(--line); display:flex; flex-direction:column; gap:5px;}
.pc-block-label{font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em;}
.pc-block-pills{display:flex; flex-wrap:wrap; gap:6px; align-items:center;}
.pc-conj-item{display:inline-flex; align-items:center; gap:4px;}

/* ================= HOUSES ================= */
.hfilter{margin-bottom:14px;}
.hc-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:14px; margin-bottom:16px; align-items:stretch;}
.hcard{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:14px; display:flex; flex-direction:column; gap:12px;}
.hcard:hover{box-shadow:0 6px 18px rgba(38,54,92,.10);}
.hc-head{display:flex; align-items:center; gap:12px;}
.hc-num{
  flex-shrink:0; width:42px; height:42px; border-radius:10px; display:flex; align-items:center; justify-content:center;
  background:var(--navy); color:#f2e6cf; font-family:'Fraunces',serif; font-size:21px; font-weight:600;
}
.hc-title{min-width:0;}
.hc-title h4{margin:0; font-family:'Fraunces',serif; font-size:15.5px; color:var(--head); font-weight:600; line-height:1.25;}
.hc-title h4 span{font-family:'Inter',sans-serif; font-size:11px; font-weight:400; color:var(--dim);}
.hc-tags{display:flex; flex-wrap:wrap; gap:4px; margin-top:5px;}
.hc-cusp{display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px;}
.hc-cusp-deg{font-size:18px; font-weight:600; color:var(--head);}
.hc-cusp-sign{font-family:'Fraunces',serif; font-size:14px;}
.hc-cusp-nk{font-size:11.5px; color:var(--dim); margin-left:auto;}

.hc-facts{margin:0; display:flex; flex-direction:column; gap:7px;}
.hc-facts > div{display:grid; grid-template-columns:104px 1fr; gap:8px; align-items:start; padding-top:7px; border-top:1px dashed var(--line);}
.hc-facts dt{font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; padding-top:3px;}
.hc-facts dd{margin:0; font-size:12px;}

/* ---------- Life overview: icon tile grid ---------- */
.life-tiles{
  display:grid; grid-template-columns:repeat(auto-fill,minmax(148px,1fr)); gap:8px;
  margin-bottom:16px;
}
.life-tile{
  display:flex; flex-direction:column; align-items:center; gap:4px; text-align:center;
  background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);
  padding:12px 8px 10px; cursor:pointer; font-family:inherit; color:var(--ink);
  transition:border-color .15s ease, background .15s ease, box-shadow .15s ease;
}
.life-tile:hover{border-color:var(--line-strong); box-shadow:0 4px 14px rgba(38,54,92,.08);}
.life-tile.active{
  border-color:var(--gold); background:linear-gradient(180deg,var(--gold-bg),var(--panel) 60%);
  box-shadow:0 0 0 1px var(--gold) inset;
}
.life-tile .lt-ic{font-family:'Fraunces',serif; font-size:20px; color:var(--gold-ink); line-height:1;}
.life-tile .lt-lbl{font-size:11px; font-weight:600; color:var(--head); line-height:1.25;}
.life-tile .lt-houses{display:flex; gap:2px; flex-wrap:wrap; justify-content:center;}
.life-tile .lt-houses .hpill{font-size:9px; padding:0 5px;}
.life-hc-grid{margin-top:2px;}
@media (max-width:720px){
  .life-tiles{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));}
  .life-tile{padding:10px 6px 8px;}
}

.sig-details{border:1px solid var(--line); border-radius:var(--radius); background:var(--panel-2); margin-top:auto;}
.sig-details summary{
  display:flex; justify-content:space-between; align-items:center; cursor:pointer; list-style:none;
  padding:9px 12px; font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--head);
}
.sig-details summary::-webkit-details-marker{display:none;}
.sig-details summary::after{content:"▾"; margin-left:8px; color:var(--dim); transition:transform .15s ease;}
.sig-details summary > span:first-child{flex:1;}
.sig-details[open] summary::after{transform:rotate(180deg);}
.sig-details[open] summary{border-bottom:1px solid var(--line);}
.sum-count{font:600 10.5px 'IBM Plex Mono',monospace; color:var(--dim); background:var(--panel); border:1px solid var(--line-strong); border-radius:20px; padding:0 7px;}
.sig-details > p{margin:0; padding:10px 12px;}
.lvl-row{display:flex; gap:10px; padding:8px 12px; border-top:1px solid var(--line);}
.sig-details summary + .lvl-row{border-top:none;}
.lvl-n{
  flex-shrink:0; width:20px; height:20px; border-radius:50%; margin-top:2px;
  display:flex; align-items:center; justify-content:center; font:700 10.5px 'IBM Plex Mono',monospace;
}
.lvl-lbl{font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.03em; margin-bottom:1px;}
.lvl-body{min-width:0; flex:1;}

/* level shading (1 = strongest) -- shared by the badges and the matrix */
.lv1{background:var(--navy); color:#f2e6cf;}
.lv2{background:#5b73a8; color:#fff;}
.lv3{background:#a9c0e6; color:var(--head);}
.lv4{background:#e3eaf6; color:var(--head-2);}
.lv5{background:var(--gold); color:#fff;}
.lvln{
  display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px;
  border-radius:50%; font-size:9.5px; font-weight:700; margin-right:6px; vertical-align:middle;
}

.mx-table{border-collapse:separate; border-spacing:0; min-width:520px;}
.mx-table th, .mx-table td{text-align:center; padding:4px 3px; border-bottom:1px solid var(--line);}
.mx-table thead th{font-family:'IBM Plex Mono',monospace; color:var(--dim);}
.mx-table th.sticky-col{text-align:left; min-width:104px; padding-left:6px;}
.mx-name{display:flex; align-items:center; gap:8px; font-size:12px; font-weight:600; color:var(--head); text-transform:none; letter-spacing:0;}
.mx-table tr:hover td{background:transparent;}
.mx{
  display:inline-flex; align-items:center; justify-content:center; width:24px; height:24px; border-radius:6px;
  font:700 11px 'IBM Plex Mono',monospace;
}
.mx.none{color:var(--line-strong); background:none; font-weight:400;}
.mx-legend{display:flex; flex-wrap:wrap; gap:6px 16px; margin-top:12px; font-size:11px; color:var(--dim);}
.mx-legend > span{display:inline-flex; align-items:center; gap:6px;}
.mx-legend .mx{width:20px; height:20px; font-size:10px;}

/* ================= RASHI ================= */
.rashi-hero{display:grid; grid-template-columns:minmax(0,380px) 1fr; gap:24px; align-items:center;}
.rashi-wheel-wrap{width:100%;}
.rashi-wheel{width:100%; height:auto; display:block; max-width:380px; margin:0 auto;}
.wh-sign{font:600 10px 'Fraunces',serif; fill:var(--dim);}
.wh-sign.has{fill:var(--navy);}
.wh-pl-t{font:600 7.5px 'IBM Plex Mono',monospace; fill:#fff; pointer-events:none;}
.wh-pl{cursor:default;}
.wh-asc-t{font:700 7px 'Inter',sans-serif; fill:#fff; pointer-events:none;}
.wh-c1{font:600 13px 'Fraunces',serif; fill:#f2e6cf; letter-spacing:.1em;}
.wh-c2{font:400 8.5px 'Inter',sans-serif; fill:rgba(255,255,255,.55);}
.rashi-side h3{margin-bottom:12px;}
.rashi-line{margin:0 0 14px; font-size:12px;}
.wh-legend{display:flex; flex-wrap:wrap; gap:6px 14px; font-size:11px; color:var(--dim);}
.wh-legend span{display:inline-flex; align-items:center; gap:6px;}
.wh-legend i{display:inline-block; width:10px; height:10px; border-radius:3px;}
.wh-legend i.lg-asc{background:var(--gold); border-radius:50%;}
.wh-legend i.lg-retro{background:var(--retro); border-radius:50%; width:8px; height:8px;}

/* ---- Rashi hero (instant analysis) ---- */
.rashi-hero2{grid-template-columns:minmax(0,470px) 1fr;}
.rashi-hero2 .rashi-wheel{max-width:470px; filter:drop-shadow(0 4px 14px rgba(20,30,60,.14));}
.rw-wrap{display:flex; flex-direction:column; align-items:center; gap:8px;}
.rw-name{font-family:'Fraunces',serif; font-weight:600; fill:var(--head-2); letter-spacing:.02em; paint-order:stroke; stroke:var(--panel); stroke-width:.4px;}
.rw-name.has{fill:var(--head); font-weight:700;}
.rw-house{font:600 9px 'IBM Plex Mono',monospace; fill:var(--dim);}
.rw-house.one{fill:var(--gold); font-weight:700;}
.rw-deg{font:600 7px 'IBM Plex Mono',monospace; fill:var(--head);}
.rw-sec,.rw-pl{cursor:pointer;}
.rw-sec:hover path:first-child,.rw-sec.sel path:first-child{fill-opacity:.5;}
.rw-pl > g{transition:transform .12s;}
.rw-pl:hover circle,.rw-pl.sel circle{stroke:var(--gold);}
.rw-bar{display:flex; gap:6px; flex-wrap:wrap; justify-content:center;}
.rw-tg{font:600 11px 'Inter',sans-serif; padding:4px 11px; border-radius:20px; cursor:pointer; color:var(--dim); background:var(--panel-2); border:1px solid var(--line-strong);}
.rw-tg.on{background:var(--navy); color:#f2e6cf; border-color:var(--navy);}
.rw-hint{font-size:10.5px; color:var(--dim);}
.wh-legend i.lg-lagna{background:transparent; border:2px solid var(--gold); border-radius:3px;}
.wh-legend i.lg-moon{background:transparent; border:2px dashed #3f5c9e; border-radius:3px;}
.rs-strip-head{font-size:11px; font-weight:600; color:var(--head); margin:2px 0 6px; text-transform:uppercase; letter-spacing:.2px;}
.rs-strip-head span{font-weight:400; color:var(--dim); text-transform:none; letter-spacing:0;}
.rs-strip{display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:4px; margin:0 0 10px;}
.rs-tile{display:flex; flex-direction:column; align-items:center; gap:1px; padding:5px 0 4px; cursor:pointer; font:inherit; min-width:0;
  background:var(--panel-2); border:1px solid var(--line-strong); border-top:3px solid var(--ec); border-radius:6px; color:var(--dim);}
.rs-tile.has{background:color-mix(in srgb, var(--ec) 14%, var(--panel)); color:var(--head);}
.rs-tile:hover{transform:translateY(-1px); box-shadow:0 2px 6px rgba(0,0,0,.12);}
.rs-tile.lg{box-shadow:0 0 0 2px var(--gold);}
.rs-tile.mn{outline:2px dashed #3f5c9e; outline-offset:1px;}
.rs-n{font:600 14px 'Fraunces',serif; line-height:1.1;}
.rs-s{font:600 9px 'Inter',sans-serif; text-transform:uppercase; letter-spacing:.04em;}
.rs-h{font:500 8px 'IBM Plex Mono',monospace; opacity:.8; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%;}
.scard.flash{animation:scflash 1.4s ease-out;}
@keyframes scflash{0%,40%{box-shadow:0 0 0 3px var(--gold);}100%{box-shadow:none;}}
@media (max-width:560px){
  .rs-strip{grid-template-columns:repeat(6,minmax(0,1fr));}
  .rs-h{font-size:8.5px;}
}

.sc-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(270px,1fr)); gap:14px;}
.scard{
  background:var(--panel); border:1px solid var(--line); border-top:3px solid var(--ec);
  border-radius:var(--radius); padding:13px 14px; display:flex; flex-direction:column; gap:11px;
}
.scard.is-empty{background:var(--panel-2); border-top-color:var(--line-strong);}
.scard.is-empty .sc-num{background:var(--line-strong); color:#fff;}
.scard.is-lagna{box-shadow:0 0 0 1px var(--gold) inset; background:linear-gradient(180deg,var(--gold-bg),var(--panel) 46%);}
.sc-head{display:flex; align-items:center; gap:11px;}
.sc-num{
  flex-shrink:0; width:34px; height:34px; border-radius:50%; background:var(--ec); color:#fff;
  display:flex; align-items:center; justify-content:center; font:700 14px 'Fraunces',serif;
}
.sc-title{flex:1; min-width:0;}
.sc-title h4{margin:0; font-family:'Fraunces',serif; font-size:16px; color:var(--head); font-weight:600;}
.sc-tags{display:flex; gap:4px; margin-top:3px; flex-wrap:wrap;}
.sc-badges{display:flex; flex-direction:column; gap:4px; align-items:flex-end;}
.sc-facts{margin:0; display:flex; flex-direction:column; gap:7px;}
.sc-facts > div{display:grid; grid-template-columns:72px 1fr; gap:8px; align-items:start; padding-top:7px; border-top:1px dashed var(--line);}
.sc-facts dt{font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; padding-top:3px;}
.sc-facts dd{margin:0; font-size:12px;}
.sc-lord dd{display:flex; align-items:center; gap:8px;}
.sc-lord dd span{display:flex; flex-direction:column; line-height:1.2; color:var(--head);}
.sc-lord dd small{font-size:10px; color:var(--dim); font-weight:400;}
.scard-kp{border-top-style:double;}
.kp-ss{display:inline-block; margin:0 6px 3px 0; font-size:11.5px; color:var(--head); font-variant-numeric:tabular-nums;}
.kp-sigrow{display:flex; flex-wrap:wrap; align-items:center; gap:4px 6px; margin-top:6px;}
.kp-siglbl{font-size:10px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em; min-width:92px;}
.scard .kp-chain{flex-wrap:wrap; row-gap:6px;}
.ncard .kp-chain{flex-wrap:wrap; row-gap:6px;}
.nk-occ-main small{margin-left:6px; font-size:11px;}
.nc-lordat{margin:0; font-size:11.5px;}
.ncard-vedic .nk-occ-row{align-items:center;}

/* ================= NAKSHATRA ================= */
.nkm-grid{display:grid; grid-template-columns:repeat(9,minmax(0,1fr)); gap:5px;}
.nkm-h{display:flex; justify-content:center; padding-bottom:2px;}
.nk-tile{
  position:relative; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:3px;
  min-height:66px; padding:6px 3px 5px; border-radius:6px; text-align:center; cursor:default;
  background:var(--panel-2); border:1px solid var(--line); color:var(--dim); font-family:inherit;
}
.nk-tile.occ{background:var(--gold-bg); border-color:var(--gold); color:var(--head); cursor:pointer;}
.nk-tile.occ:hover{box-shadow:0 3px 10px rgba(169,118,44,.28); transform:translateY(-1px);}
.nk-tile:focus-visible{outline:2px solid var(--navy-2); outline-offset:1px;}
.nk-n{position:absolute; top:3px; left:5px; font:500 8.5px 'IBM Plex Mono',monospace; opacity:.7;}
.nk-name{font-size:9.5px; line-height:1.15; font-weight:600; margin-top:9px; overflow-wrap:anywhere;}
.nk-dots{display:flex; flex-wrap:wrap; justify-content:center; gap:2px; margin-top:auto;}
.nk-dots i{display:inline-flex; align-items:center; justify-content:center; width:16px; height:16px; border-radius:50%; background:var(--pc);}
.nk-dots b{font:600 7px 'IBM Plex Mono',monospace; color:#fff;}

.nc-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(310px,1fr)); gap:14px; margin-bottom:16px; align-items:start;}
.ncard{
  background:var(--panel); border:1px solid var(--line); border-left:3px solid var(--pc);
  border-radius:var(--radius); padding:13px 14px; scroll-margin-top:12px;
}
.ncard.is-empty{background:var(--panel-2); border-left-color:var(--line-strong); padding-top:10px; padding-bottom:10px;}
.ncard.is-empty .nc-num{background:var(--line-strong);}
.ncard.flash{animation:nkflash 1.4s ease;}
@keyframes nkflash{0%,60%{box-shadow:0 0 0 3px var(--gold);} 100%{box-shadow:0 0 0 0 transparent;}}
.nc-head{display:flex; align-items:center; gap:11px;}
.nc-num{flex-shrink:0; width:32px; height:32px; border-radius:8px; background:var(--navy); color:#f2e6cf; display:flex; align-items:center; justify-content:center; font:600 13px 'IBM Plex Mono',monospace;}
.nc-title{flex:1; min-width:0;}
.nc-title h4{margin:0; font-family:'Fraunces',serif; font-size:16px; color:var(--head); font-weight:600; line-height:1.2;}
.nc-span{font-size:10.5px; color:var(--dim); margin-top:2px;}
.nc-lord{display:flex; align-items:center; gap:7px; font-size:12px; font-weight:600; color:var(--head);}
.nc-lord span{display:flex; flex-direction:column; line-height:1.15;}
.nc-lord small{font-size:8.5px; font-weight:400; color:var(--dim); text-transform:uppercase; letter-spacing:.04em;}
.nc-empty{margin:6px 0 0 43px;}
.nk-occ-list{margin-top:11px; border-top:1px dashed var(--line);}
.nk-occ-row{display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--line);}
.nk-occ-row:last-child{border-bottom:none; padding-bottom:0;}
.nk-occ-main{flex:1; min-width:0; font-size:12.5px; color:var(--head);}
.nk-sub{display:flex; align-items:center; gap:5px; font-size:11.5px; color:var(--ink);}
.nk-sub-l{font-size:9px; color:var(--dim); text-transform:uppercase; letter-spacing:.04em;}

.sl-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px;}
.sl-cell{border:1px solid var(--line); border-radius:var(--radius); padding:10px 12px; background:var(--panel);}
.sl-cell.is-empty{background:var(--panel-2);}
.sl-head{display:flex; align-items:center; gap:8px; margin-bottom:6px; font-size:12.5px; color:var(--head);}
.sl-count{margin-left:auto; font:600 10.5px 'IBM Plex Mono',monospace; color:var(--dim); background:var(--panel-2); border:1px solid var(--line-strong); border-radius:20px; padding:0 7px;}


/* ================= INSTANT-ANALYSIS HERO CHARTS =================
   One chart per section, shown at the top (see js/charts.js).        */
.an-hero{display:grid; grid-template-columns:minmax(0,380px) 1fr; gap:24px; align-items:center; margin-bottom:14px;}
.an-hero.split-wide{grid-template-columns:minmax(0,460px) 1fr;}
.an-hero.wide{display:flex; flex-direction:column-reverse; align-items:stretch; gap:12px;}
.an-hero-vis{min-width:0;}
.an-hero-vis svg{width:100%; height:auto; display:block; margin:0 auto;}
.an-hero-side{min-width:0;}
.an-hero-side h3{margin-bottom:12px;}
.an-hero.wide .an-hero-side h3{margin-bottom:6px;}
.an-hero-line{margin:0 0 12px; font-size:12px; color:var(--ink);}
.an-hero-line b{color:var(--head);}
.an-hero .chip-row{margin-bottom:12px;}
.hero-list{display:flex; flex-direction:column; gap:7px; margin:0 0 12px;}
.hero-row{display:grid; grid-template-columns:10px 84px 1fr; gap:8px; align-items:center; font-size:11.5px;}
.hero-row > i{width:10px; height:10px; border-radius:3px;}
.hero-row > b{color:var(--head); font-weight:600;}
.hero-row .hr-pl{display:flex; flex-wrap:wrap; gap:4px; min-width:0;}
.hero-row .hr-none{color:var(--dim);}
.hero-mini{display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%; background:var(--pc); color:#fff; font:600 8.5px 'IBM Plex Mono',monospace;}
.hero-bars{display:flex; flex-direction:column; gap:6px; margin:0 0 12px;}
.hb-row{display:grid; grid-template-columns:22px 1fr 34px; gap:8px; align-items:center; font-size:11.5px;}
.hb-row .hb-lbl{display:flex; align-items:center; gap:6px; color:var(--head); min-width:0;}
.hb-track{height:7px; border-radius:20px; background:var(--panel-2); border:1px solid var(--line); overflow:hidden;}
.hb-fill{display:block; height:100%; border-radius:20px;}
.hb-row .hb-v{font:600 10.5px 'IBM Plex Mono',monospace; color:var(--dim); text-align:right;}
.hb-row.hb-wide{grid-template-columns:104px 1fr 34px;}
.hr-sc{display:inline-flex; align-items:center; gap:4px;}
.hr-sc em{font:600 10.5px 'IBM Plex Mono',monospace; color:var(--dim); font-style:normal;}
.hero-sub{margin:0 0 10px; font-size:11px; color:var(--dim);}

/* gauge (Overview) */
.an-gauge{max-width:380px;}
.g-n{font:700 12px 'IBM Plex Mono',monospace; fill:#fff; pointer-events:none;}
.g-big{font:600 30px 'Fraunces',serif; fill:var(--head);}
.g-sm{font:500 10px 'Inter',sans-serif; fill:var(--dim); letter-spacing:.04em; text-transform:uppercase;}

/* polar bars (Chart analysis) + donut (Nakshatra) */
.an-radial, .an-donut{max-width:340px;}
.rb-l{font:600 10px 'IBM Plex Mono',monospace; fill:var(--ink);}
.dn-t{font:700 9px 'IBM Plex Mono',monospace; fill:#fff; pointer-events:none;}

/* degree tracks (Planets) */
.dtk{display:flex; flex-direction:column; gap:8px;}
.dtk-axis, .dtk-row{display:grid; grid-template-columns:62px minmax(0,1fr) 54px 92px; gap:10px; align-items:center;}
.dtk-ticks{position:relative; height:12px; margin:0 12px;}
.dtk-ticks i{position:absolute; top:0; transform:translateX(-50%); font:500 9.5px 'IBM Plex Mono',monospace; color:var(--dim); font-style:normal;}
.dtk-ticks i:first-child{transform:translateX(-30%);}
.dtk-ticks i:last-child{transform:translateX(-70%);}
.dtk-name{display:flex; align-items:center; gap:6px; font-size:11px; color:var(--head);}
.dtk-name .pbadge{width:22px; height:22px; font-size:9px; flex:none;}
.dtk-track{position:relative; height:10px; margin:0 12px; border-radius:20px; border:1px solid var(--line);
  background:linear-gradient(90deg, var(--panel-2) 0 33.33%, color-mix(in srgb,var(--line) 60%, var(--panel-2)) 33.33% 66.66%, var(--panel-2) 66.66% 100%);}
.dtk-fill{position:absolute; left:0; top:0; bottom:0; border-radius:20px; opacity:.3;}
.dtk-mark{position:absolute; top:50%; transform:translate(-50%,-50%); width:22px; height:22px; border-radius:50%; color:#fff;
  display:flex; align-items:center; justify-content:center; font:600 8.5px 'IBM Plex Mono',monospace;}
.dtk-mark sup{position:absolute; top:-6px; right:-6px; width:11px; height:11px; line-height:11px; text-align:center; border-radius:50%;
  background:var(--retro); color:#fff; font:700 6.5px 'Inter',sans-serif;}
.dtk-deg{font-size:10.5px; color:var(--dim); text-align:right;}
.dtk-right{display:flex; align-items:center; gap:4px; min-width:0; font-size:10.5px; color:var(--dim);}

/* house columns (Houses) */
.an-columns{max-width:460px;}
.hc-col{cursor:pointer; outline:none;}
.hc-col:hover rect:nth-of-type(2), .hc-col:focus rect:nth-of-type(2){filter:brightness(1.12);}
.hc-v{font:600 8.5px 'IBM Plex Mono',monospace; fill:var(--dim);}
.hc-h{font:700 10px 'Fraunces',serif; fill:var(--head);}
.hc-s{font:500 8px 'Inter',sans-serif; fill:var(--dim);}
.hc-more{font:700 7.5px 'IBM Plex Mono',monospace; fill:var(--dim);}
.hcard.flash{animation:nkflash 1.4s ease;}

/* radar (Life overview) */
.an-radar{max-width:380px;}
.rd-lbl{cursor:pointer; outline:none;}
.rd-i{font:400 11px 'Inter',sans-serif; fill:var(--dim);}
.rd-t{font:600 8px 'Inter',sans-serif; fill:var(--dim);}
.rd-lbl:hover .rd-t, .rd-lbl:focus .rd-t{fill:var(--head);}
.rd-lbl.on .rd-t{fill:var(--gold); font-weight:700;}
.rd-lbl.on .rd-i{fill:var(--gold);}

@media (max-width:900px){
  .an-hero, .an-hero.split-wide{grid-template-columns:1fr; gap:14px;}
}
@media (max-width:560px){
  .dtk-axis, .dtk-row{grid-template-columns:54px minmax(0,1fr) 48px; gap:8px;}
  .dtk-right{display:none;}
  .dtk-axis > span:last-child{display:none;}
  .hero-row{grid-template-columns:10px 76px 1fr;}
}

/* ================= RESPONSIVE ================= */
@media (max-width:900px){
  .rashi-hero{grid-template-columns:1fr; gap:14px;}
  .sl-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .kc-arrow{font-size:16px;}
}

@media (max-width:720px){
  .pc-grid, .hc-grid, .sc-grid, .nc-grid{grid-template-columns:1fr; gap:12px;}
  .an-toolbar{flex-direction:column; align-items:stretch; gap:8px;}
  .an-toolbar .seg{display:flex; width:100%;}
  .an-toolbar .seg button{flex:1; padding:9px 10px;}
  .hfilter{flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; margin-right:-14px; padding:0 14px 4px 0; scrollbar-width:none;}
  .hfilter::-webkit-scrollbar{display:none;}
  .hfilter .subtab-btn{flex-shrink:0;}
  .hc-facts > div{grid-template-columns:1fr; gap:3px;}
  .hc-facts dt{padding-top:0;}
  .hc-cusp-nk{margin-left:0; width:100%;}
}

@media (max-width:560px){
  .an-chips{display:grid; grid-template-columns:1fr 1fr; gap:8px;}
  .an-chips .chip{flex-direction:column; align-items:flex-start; gap:1px; padding:8px 10px; min-width:0;}
  .an-chips .chip-n{font-size:15px; overflow-wrap:anywhere; line-height:1.2;}
  .rashi-side .chip-row{display:grid; grid-template-columns:1fr 1fr; gap:8px;}
  .rashi-side .chip{flex-direction:column; align-items:flex-start; gap:1px;}
  .pcard, .hcard, .scard{padding:12px;}
  .pbadge.lg{width:36px; height:36px;}
  .kp-chain{padding:8px 6px; gap:2px;}
  .kc-node{gap:5px;}
  .kc-node .pbadge{width:20px; height:20px; font-size:8.5px;}
  .kc-name{font-size:11px;}
  .kc-note{font-size:9px;}

  /* nakshatra map: dots only, names live in the cards below */
  .nkm-grid{gap:3px;}
  .nkm-h .pbadge{width:18px; height:18px; font-size:7.5px;}
  .nk-tile{min-height:44px; padding:14px 1px 4px; border-radius:5px;}
  .nk-name{display:none;}
  .nk-n{top:2px; left:50%; transform:translateX(-50%); font-size:9px; opacity:.8;}
  .nk-dots{gap:2px; margin-top:0;}
  .nk-dots i{width:9px; height:9px;}
  .nk-dots b{display:none;}
  .nk-occ-row{gap:8px;}
  .nc-lord small{display:none;}
  .sl-grid{grid-template-columns:1fr;}

  /* significator matrix: planet badge only, so ~9 house columns fit at once */
  .mx-name span{display:none;}
  .mx-table th.sticky-col{min-width:0; width:40px; padding-left:4px;}
  .mx-table{min-width:0;}
  .mx-table th, .mx-table td{padding:4px 1px;}
  .mx{width:22px; height:22px; font-size:10.5px;}
}

@media (max-width:360px){
  .nk-sub-n{display:none;}
  .kc-role{display:none;}
  .pc-deg, .hc-cusp-deg{font-size:17px;}
}

@media (pointer:coarse){
  .seg button, .hfilter .subtab-btn{min-height:40px;}
  .sig-details summary{min-height:40px;}
}

@media (prefers-reduced-motion:reduce){
  .pcard, .nk-tile, .ncard.flash{transition:none; animation:none;}
}

/* ---------- General overview: hero strip, planet snapshot, age card ---------- */
.ov-hero{
  display:flex; flex-wrap:wrap; align-items:stretch; gap:1px; background:var(--line);
  border:1px solid var(--line); border-radius:var(--radius); overflow:hidden; margin-bottom:14px;
}
.ov-hero-lagna{
  background:var(--panel);
  padding:14px 20px; min-width:150px; display:flex; flex-direction:column; justify-content:center;
  align-items:flex-end; text-align:right;
}
.ov-hero-k{font-size:9.5px; color:var(--gold-ink); text-transform:uppercase; letter-spacing:.06em; font-weight:700;}
.ov-hero-v{font-family:'Fraunces',serif; font-size:24px; font-weight:600; color:var(--head); line-height:1.15; margin-top:2px;}
.ov-hero-sub{font-size:11px; color:var(--dim); margin-top:3px; font-family:'IBM Plex Mono',monospace;}
.ov-hero-facts{
  background:linear-gradient(180deg,var(--gold-bg),var(--panel) 70%);
  padding:14px 20px; flex:1; min-width:200px; display:flex; flex-direction:column; justify-content:center; gap:2px;
}
.ov-hero-name{font-family:'Fraunces',serif; font-size:18px; font-weight:600; color:var(--head);}
.ov-hero-line{font-size:12px; color:var(--dim);}

.ov-snap-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(168px,1fr)); gap:10px;}
.ov-snap-cell{
  display:flex; align-items:center; gap:9px; border:1px solid var(--line); border-radius:var(--radius);
  padding:9px 10px; background:var(--panel);
}
.ov-snap-cell:hover{border-color:var(--pc); box-shadow:0 4px 12px rgba(38,54,92,.08);}
.ov-snap-txt{display:flex; flex-direction:column; gap:1px; min-width:0; flex:1;}
.ov-snap-name{font-family:'Fraunces',serif; font-weight:600; font-size:12.5px; color:var(--head);}
.ov-snap-pos{font-size:10px; color:var(--dim);}
.ov-snap-house{font-size:9.5px; color:var(--gold-ink); text-transform:uppercase; letter-spacing:.02em;}

.age-panel{display:flex; flex-direction:column; justify-content:center; padding-top:10px; padding-bottom:10px;}
.age-hero{font-family:'Fraunces',serif; font-size:16px; font-weight:600; color:var(--head); letter-spacing:.01em; margin:2px 0 4px;}

/* Overview: Running dasha panel stretches to the full row height (matching the
   Flags panel beside it) and its chain area absorbs the spare height, so no
   empty space is left at the bottom of the panel. */
.ov-two{align-items:stretch;}
.ov-dasha-panel{display:flex; flex-direction:column;}
.ov-dasha-panel .ov-dasha-chain{flex:1 1 auto; align-content:center;}
.ov-dasha-foot{display:flex; justify-content:space-between; align-items:center; margin-top:10px; font-size:11.5px; color:var(--dim);}
.ov-dasha-foot .mono{color:var(--head); font-weight:600;}

@media (max-width:640px){
  .ov-hero{flex-direction:column;}
  .ov-hero-lagna{align-items:flex-start; text-align:left;}
  .ov-snap-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));}
}

.panchang-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); gap:10px;}
.pk-card{
  display:flex; flex-direction:column; gap:4px; border:1px solid var(--line); border-radius:var(--radius);
  padding:10px 12px; background:var(--panel-2);
}
.pk-l{font-size:9.5px; color:var(--gold-ink); text-transform:uppercase; letter-spacing:.05em; font-weight:700;}
.pk-v{font-family:'Fraunces',serif; font-size:13.5px; color:var(--head); font-weight:600; line-height:1.3;}

/* ---------- selectable themes (Settings) ---------- */
:root[data-theme="dark"]{--bg:#0f1420;--panel:#171e2e;--panel-2:#1d2638;--line:#2a3550;--line-strong:#3a4869;--ink:#e6eaf2;--dim:#93a0b8;--navy:#1c2a4a;--navy-2:#2a3d6b;--gold:#e0a94f;--gold-bg:#3a2d15;--good:#4cc38a;--good-bg:#14301f;--bad:#ef7d70;--bad-bg:#3a1a17;--retro:#ef7d70;--head:#e3e9f6;--head-2:#aebbd6;--gold-ink:#e0a94f;}
:root[data-theme="sepia"]{--bg:#f3ecdf;--panel:#fffaf0;--panel-2:#f7f0e2;--line:#e2d6bf;--line-strong:#d0c1a3;--ink:#3a2f22;--dim:#716552;--navy:#5a4632;--navy-2:#70573d;--gold:#a9762c;--gold-bg:#f8e9cc;--good:#3f8a52;--good-bg:#e6f2e3;--bad:#b3452f;--bad-bg:#f9e6df;--retro:#b3452f;--head:#5a4632;--head-2:#70573d;}
:root[data-theme="forest"]{--bg:#edf2ee;--panel:#ffffff;--panel-2:#f4f8f5;--line:#d6e1d9;--line-strong:#bccbc0;--ink:#1c2b22;--dim:#5a6d62;--navy:#22483a;--navy-2:#2d5c4a;--gold:#a9762c;--gold-bg:#fbf1e0;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#bb4b3f;--bad-bg:#fbebe8;--retro:#bb4b3f;--head:#22483a;--head-2:#2d5c4a;}
:root[data-theme="royal"]{--bg:#f1eef7;--panel:#ffffff;--panel-2:#f7f5fb;--line:#e0daec;--line-strong:#cbc2de;--ink:#241d36;--dim:#6b6281;--navy:#3d2a6b;--navy-2:#503a86;--gold:#a9762c;--gold-bg:#fbf1e0;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#bb4b3f;--bad-bg:#fbebe8;--retro:#bb4b3f;--head:#3d2a6b;--head-2:#503a86;}
:root[data-theme="dark"]{color-scheme:dark;}
.theme-row{display:flex;flex-wrap:wrap;gap:10px;}
.theme-opt{display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel-2);border:1px solid var(--line-strong);border-radius:var(--radius);color:var(--ink);cursor:pointer;font-size:12px;}
.theme-opt.active{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);}
.theme-sw{width:26px;height:16px;border-radius:2px;border:1px solid var(--line-strong);display:inline-block;}

/* ---------- additional themes ---------- */
:root[data-theme="midnight"]{--bg:#0a0f1f;--panel:#111a33;--panel-2:#17223f;--line:#243158;--line-strong:#34457a;--ink:#e3e8f7;--dim:#8d9cc4;--navy:#0d1630;--navy-2:#1c2b57;--gold:#7fb2ff;--gold-bg:#16264a;--good:#4cc38a;--good-bg:#123024;--bad:#ef7d70;--bad-bg:#3a1a17;--retro:#ef7d70;color-scheme:dark;--head:#dbe6ff;--head-2:#a9c0f0;--gold-ink:#7fb2ff;}
:root[data-theme="charcoal"]{--bg:#161616;--panel:#1f1f1f;--panel-2:#262626;--line:#333333;--line-strong:#444444;--ink:#ececec;--dim:#9a9a9a;--navy:#111111;--navy-2:#2a2a2a;--gold:#f0b653;--gold-bg:#3a2d15;--good:#4cc38a;--good-bg:#14301f;--bad:#ef7d70;--bad-bg:#3a1a17;--retro:#ef7d70;color-scheme:dark;--head:#f0f0f0;--head-2:#cfcfcf;--gold-ink:#f0b653;}
:root[data-theme="ocean"]{--bg:#eaf4f5;--panel:#ffffff;--panel-2:#f2f9fa;--line:#d0e4e6;--line-strong:#b5d2d5;--ink:#152b30;--dim:#536f74;--navy:#0f4c58;--navy-2:#166577;--gold:#a9762c;--gold-bg:#fbf1e0;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#bb4b3f;--bad-bg:#fbebe8;--retro:#bb4b3f;--head:#0f4c58;--head-2:#166577;}
:root[data-theme="rose"]{--bg:#f8eef0;--panel:#ffffff;--panel-2:#fcf5f6;--line:#ecd6da;--line-strong:#dbbcc2;--ink:#33202a;--dim:#7e626a;--navy:#7a2e45;--navy-2:#963d59;--gold:#a9762c;--gold-bg:#fbf1e0;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#bb4b3f;--bad-bg:#fbebe8;--retro:#bb4b3f;--head:#7a2e45;--head-2:#963d59;}
:root[data-theme="sunset"]{--bg:#fbf0e6;--panel:#ffffff;--panel-2:#fdf6ee;--line:#efd9c2;--line-strong:#e0c0a0;--ink:#38241a;--dim:#816452;--navy:#a4471d;--navy-2:#c25a2b;--gold:#d9a04a;--gold-bg:#fbe8c8;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#b3261e;--bad-bg:#fbe3df;--retro:#b3261e;--head:#a4471d;--head-2:#c25a2b;}
:root[data-theme="slate"]{--bg:#e9ecef;--panel:#ffffff;--panel-2:#f3f5f7;--line:#d5dade;--line-strong:#bcc4cb;--ink:#1f262d;--dim:#5d6872;--navy:#3b4650;--navy-2:#4d5a66;--gold:#a9762c;--gold-bg:#fbf1e0;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#bb4b3f;--bad-bg:#fbebe8;--retro:#bb4b3f;--head:#3b4650;--head-2:#4d5a66;}
:root[data-theme="lavender"]{--bg:#f4f1fa;--panel:#ffffff;--panel-2:#f9f7fd;--line:#e3dcf2;--line-strong:#cfc4e6;--ink:#2a2340;--dim:#6e6488;--navy:#6a4fb0;--navy-2:#7f66c4;--gold:#a9762c;--gold-bg:#fbf1e0;--good:#2f8f5b;--good-bg:#e8f6ee;--bad:#bb4b3f;--bad-bg:#fbebe8;--retro:#bb4b3f;--head:#6a4fb0;--head-2:#7f66c4;}
:root[data-theme="emerald"]{--bg:#0b1512;--panel:#12211c;--panel-2:#182b25;--line:#24403a;--line-strong:#345850;--ink:#e2f2ec;--dim:#8bb0a3;--navy:#0c2a22;--navy-2:#16463a;--gold:#e0b45a;--gold-bg:#33290f;--good:#4cc38a;--good-bg:#123024;--bad:#ef7d70;--bad-bg:#3a1a17;--retro:#ef7d70;color-scheme:dark;--head:#d5efe4;--head-2:#a9d6c4;--gold-ink:#e0b45a;}

/* ---------- dark-theme fixes ---------- */
:root[data-theme="dark"],:root[data-theme="midnight"],:root[data-theme="charcoal"],:root[data-theme="emerald"]{--hl1:#1a2236;--hl2:#222d47;--hl3:#2c3a5c;}
:root[data-theme="dark"] .hocc-cell.lvl1,:root[data-theme="midnight"] .hocc-cell.lvl1,:root[data-theme="charcoal"] .hocc-cell.lvl1,:root[data-theme="emerald"] .hocc-cell.lvl1{background:var(--hl1);}
:root[data-theme="dark"] .hocc-cell.lvl2,:root[data-theme="midnight"] .hocc-cell.lvl2,:root[data-theme="charcoal"] .hocc-cell.lvl2,:root[data-theme="emerald"] .hocc-cell.lvl2{background:var(--hl2);border-color:var(--line-strong);}
:root[data-theme="dark"] .hocc-cell.lvl3,:root[data-theme="midnight"] .hocc-cell.lvl3,:root[data-theme="charcoal"] .hocc-cell.lvl3,:root[data-theme="emerald"] .hocc-cell.lvl3{background:var(--hl3);border-color:var(--line-strong);}
:root[data-theme="dark"] .lv2,:root[data-theme="midnight"] .lv2,:root[data-theme="charcoal"] .lv2,:root[data-theme="emerald"] .lv2{background:#3a4d7a;color:#fff;}
:root[data-theme="dark"] .lv3,:root[data-theme="midnight"] .lv3,:root[data-theme="charcoal"] .lv3,:root[data-theme="emerald"] .lv3{background:var(--hl3);color:var(--ink);}
:root[data-theme="dark"] .lv4,:root[data-theme="midnight"] .lv4,:root[data-theme="charcoal"] .lv4,:root[data-theme="emerald"] .lv4{background:var(--hl2);color:var(--ink);}
:root[data-theme="dark"] .tag-blue,:root[data-theme="midnight"] .tag-blue,:root[data-theme="charcoal"] .tag-blue,:root[data-theme="emerald"] .tag-blue{background:var(--panel-2);}
:root[data-theme="dark"] .err-box,:root[data-theme="midnight"] .err-box,:root[data-theme="charcoal"] .err-box,:root[data-theme="emerald"] .err-box{color:var(--bad);}

/* ---------- print / copy-for-AI section ---------- */
.print-opts{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;}
.print-opt{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--ink);cursor:pointer;}
.print-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.print-actions .sb-btn{flex:none;padding:8px 16px;}
.print-text{width:100%;min-height:420px;resize:vertical;background:var(--panel-2);color:var(--ink);border:1px solid var(--line-strong);border-radius:var(--radius);padding:10px;font-size:12px;line-height:1.5;white-space:pre;overflow:auto;}
@page{size:A4;margin:0;}   /* margin 0 hides the browser's own URL/date/page footer; real margins come from .pd-page spacers */
@media print{
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact;}
  .topbar,.sidebar,.subtitle-bar,.view-header,.no-print,.menu-toggle,.print-area>h3,.print-text{display:none !important;}
  html,body,.shell{height:auto !important;overflow:visible !important;background:#fff !important;}
  main,#main-content{display:block !important;overflow:visible !important;height:auto !important;padding:0 !important;margin:0 !important;}
  .print-area{border:none !important;box-shadow:none !important;padding:0 !important;background:#fff !important;}
  .print-doc{display:block !important; border:none !important; border-radius:0 !important; padding:0 !important;}
  .print-doc.on-screen{box-shadow:none !important; max-width:none !important; margin:0 !important; overflow:visible !important;}
  .print-doc.on-screen .pd-page{min-width:0 !important;}
}
.print-doc{
  display:none;color:#1b2333;font-family:'Inter',sans-serif;font-size:10.5px;line-height:1.45;
  border:1.5px solid #26365c; border-radius:8px; padding:14px 16px 12px; background:#fff;
}
.print-doc .pd-head{background:#26365c;color:#fff;padding:16px 20px 14px;border-radius:5px;border:1px solid #1b2540;border-bottom:3px solid #a9762c;margin-bottom:14px;}
.print-doc .pd-brand{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:#e0c48f;}
.print-doc h1{font-family:'Fraunces',serif;font-size:24px;font-weight:600;margin:3px 0 8px;color:#fff;}
.print-doc .pd-meta{display:flex;flex-wrap:wrap;gap:4px 22px;font-size:10.5px;color:#e6ebf7;margin-top:3px;}
.print-doc .pd-meta b{color:#e0c48f;font-weight:600;margin-right:4px;text-transform:uppercase;font-size:8.5px;letter-spacing:.06em;}
.print-doc section{
  margin-bottom:14px;break-inside:auto;border:1px solid #dde3ec;border-radius:6px;
  padding:10px 12px 12px;background:#fefefe;
}
.print-doc h2{font-family:'Fraunces',serif;font-size:14px;font-weight:600;color:#26365c;margin:0 0 8px;padding-bottom:5px;border-bottom:1.5px solid #a9762c;break-after:avoid;}
.print-doc table{width:100%;border-collapse:collapse;font-size:10px;}
.print-doc th{background:#eef1f6;color:#26365c;text-align:left;font-weight:700;font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;padding:5px 7px;border-bottom:1px solid #c7d0dd;}
.print-doc td{padding:4px 7px;border-bottom:1px solid #e6eaf1;vertical-align:top;}
.print-doc tbody tr:nth-child(even) td{background:#f8f9fc;}
.print-doc tr{break-inside:avoid;}
.print-doc td.pl{font-weight:600;color:#26365c;white-space:nowrap;}
.print-doc td.fl{color:#69748a;}
.print-doc tr.sub td{font-size:9.5px;color:#4a556b;}
.print-doc tr.now td{background:#fbf1e0 !important;font-weight:600;color:#7a5215;}
.print-doc .pd-run{background:#fbf1e0;border:1px solid #a9762c;border-left-width:3px;border-radius:3px;padding:6px 10px;margin-bottom:7px;font-size:10.5px;}
.print-doc table.kv td:first-child{width:38%;}
.print-doc .pd-foot{margin-top:6px;padding-top:8px;border-top:1px solid #dde3ec;font-size:8.5px;color:#69748a;text-align:center;}

.print-doc .pd-kv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;}
.print-doc .pd-kv{border:1px solid #dde3ec;border-left:3px solid #a9762c;border-radius:3px;padding:5px 8px;background:#f8f9fc;break-inside:avoid;}
.print-doc .pd-kv span{display:block;font-size:8px;letter-spacing:.06em;text-transform:uppercase;color:#69748a;}
.print-doc .pd-kv b{display:block;font-family:'Fraunces',serif;font-size:11.5px;font-weight:600;color:#26365c;margin-top:1px;}
.print-doc .pd-sub{margin:9px 0 5px;font-size:8.5px;letter-spacing:.08em;text-transform:uppercase;color:#69748a;font-weight:700;}
.print-doc .pd-kv-grid.minor{grid-template-columns:repeat(5,1fr);}
.print-doc .pd-kv-grid.minor .pd-kv{border-left-color:#c7d0dd;background:#fff;}
.print-doc .pd-kv-grid.minor .pd-kv b{font-size:10.5px;color:#4a556b;}
.print-doc .pd-chart-sec{break-inside:avoid;}
.print-doc .pd-chart-wrap{display:flex;justify-content:center;padding:6px 0;}
.print-doc .pd-chart{width:98mm;height:98mm;background:#fff;}
.print-doc .pd-chart-note{text-align:center;font-size:8.5px;color:#69748a;}
.print-doc .pd-notes-sec{background:#fbf9f4;}
.print-doc .pd-notes-body{
  font-family:'Fraunces',serif;font-size:11px;line-height:1.6;color:#3a3226;
  white-space:normal;border-left:3px solid #a9762c;padding:4px 4px 4px 12px;
}

/* ---------- horary (prashna) ---------- */
.hz-layout{grid-template-columns:300px 1fr;}
@media (max-width:1000px){ .hz-layout{grid-template-columns:1fr;} }
#horary-results{display:flex; flex-direction:column; gap:16px; min-width:0;}
#horary-results > .panel, #horary-results > .verdict{margin:0;}
.hz-verdict{flex-wrap:wrap; justify-content:space-between;}
.hz-verdict > div:first-child{flex:1; min-width:220px;}
.hz-verdict-lords{display:flex; gap:8px; flex-wrap:wrap;}
.hz-vl{display:flex; align-items:center; gap:8px; padding:6px 10px; background:var(--panel); border:1px solid var(--line-strong); border-radius:var(--radius);}
.hz-vl i{display:block; font-style:normal; font-size:9px; text-transform:uppercase; letter-spacing:.05em; color:var(--dim);}
.hz-vl b{display:block; font-family:'Fraunces',serif; font-size:13px; color:var(--head);}
.hz-vl.hit{border-color:var(--good); background:var(--good-bg);}
.hz-vl em{font-style:normal; font-size:9.5px; font-weight:700; color:var(--good);}
.hz-rp-all{display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:10px; margin-bottom:12px;}
.hz-rp-card{display:flex; flex-direction:column; align-items:center; gap:5px; padding:10px 8px; background:var(--panel-2); border:1px solid var(--line); border-radius:var(--radius); text-align:center;}
.hz-rp-card b{font-family:'Fraunces',serif; font-size:13.5px; color:var(--head);}
.hz-rp-card.hit{border-color:var(--gold); background:var(--gold-bg);}
.hz-rp-h{display:flex; flex-wrap:wrap; gap:3px; justify-content:center;}
.hz-rp-src{display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:6px;}
.hz-src{display:flex; align-items:center; justify-content:space-between; gap:6px; padding:5px 9px; border:1px solid var(--line); border-radius:var(--radius); font-size:11px; color:var(--dim);}
.hz-judge{border-left:4px solid var(--line-strong);}
.hz-judge.yes{border-left-color:var(--good);} .hz-judge.no{border-left-color:var(--bad);} .hz-judge.warn{border-left-color:var(--gold-ink);}
.hz-judge-head{display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin-bottom:10px;}
.hz-judge-v{font-family:'Fraunces',serif; font-size:18px; font-weight:600; color:var(--head);}
.hz-judge-v.yes{color:var(--good);} .hz-judge-v.no{color:var(--bad);} .hz-judge-v.warn{color:var(--gold-ink);}
.hpill.on{background:var(--good-bg); color:var(--good); border-color:var(--good);}
.hpill.bad{background:var(--bad-bg); color:var(--bad); border-color:var(--bad);}

/* horary: responsive layout */
.hz-top{display:grid; grid-template-columns:minmax(300px,1fr) minmax(0,1fr); gap:16px; align-items:stretch;}
.hz-side{display:flex; flex-direction:column; gap:16px; min-width:0;}
/* no dead space: both columns end level, the last panel of each grows to fill */
.hz-top .panel, .hz-side .panel, #horary-results .analysis-grid .panel{margin:0;}
.hz-top > .panel{display:flex; flex-direction:column; justify-content:center;}
.hz-side > .panel:last-child{flex:1;}
.hz-side .hz-rp-all{grid-template-columns:repeat(auto-fill,minmax(104px,1fr)); align-content:start;}
.hz-side .hz-rp-src{margin-top:auto;}
.hz-side > .panel:last-child{display:flex; flex-direction:column;}
#horary-results .analysis-grid{align-items:stretch;}
#horary-results .analysis-grid > .panel{display:flex; flex-direction:column;}
#horary-results .analysis-grid .tbl-scroll{flex:1;}
.hz-layout > *, .hz-top > *, #horary-results .analysis-grid > *{min-width:0;}
@media (max-width:1000px){ .hz-top{grid-template-columns:1fr;} }
@media (max-width:600px){
  #horary-results, .hz-side, .hz-top{gap:12px;}
  #horary-results .panel, .hz-form{padding:12px 12px;}
  #horary-results h3{font-size:12px; margin-bottom:9px;}
  .hz-verdict{padding:12px; gap:10px;}
  .hz-verdict .big{font-size:17px;}
  .hz-verdict-lords{width:100%; display:grid; grid-template-columns:1fr; gap:6px;}
  .hz-vl{width:100%;}
  .hz-vl em{margin-left:auto;}
  .hz-rp-all{grid-template-columns:repeat(auto-fill,minmax(92px,1fr)); gap:8px;}
  .hz-rp-card{padding:8px 4px;}
  .hz-rp-src{grid-template-columns:1fr 1fr; gap:5px;}
  .hz-src{padding:4px 7px; font-size:10px; flex-wrap:wrap;}
  .hz-judge-head{gap:6px;}
  .hz-judge-v{font-size:16px;}
  #horary-results .hc-facts > div{grid-template-columns:1fr; gap:3px;}
  #horary-results .kp-chain{flex-wrap:wrap; gap:6px;}
  #horary-results table{font-size:11px;}
  #horary-results th, #horary-results td{padding:5px 6px;}
  #horary-results .ni-chart{width:100%; max-width:100%;}
  #horary-results .ni-center .nm{font-size:11px;}
  #horary-results .ni-center .dt{font-size:8.5px; margin-top:3px;}
  #horary-results .ni-center .lg{font-size:9px; margin-top:4px;}
  .hz-form .field-inline{grid-template-columns:1fr 1fr;}
}


/* =====================================================================
   MOBILE LAYOUT — panels stack one after another (one per row) in every
   section, and small stat tiles become single-line "label … value" rows.
   Kept in its own block at the end so it wins over the earlier rules.
   Screen-only: printing / the print preview keep their own layout.
   ===================================================================== */

/* short dignity badge (Ex / MT / Own / Fr / Nt / En / Db) — all screen sizes */
.dtag.short{padding:1px 7px; min-width:30px; text-align:center; font-size:10px; letter-spacing:.03em; flex-shrink:0;}
.ov-snap-name sup.flag-r{color:var(--retro); font-weight:700; margin-left:2px;}
.ov-snap-name sup.flag-c{color:var(--gold-ink); font-weight:700; margin-left:2px;}
.ov-snap-legend{line-height:1.6;}
.ov-snap-legend b{color:var(--head);}

@media screen and (max-width:720px){

  /* 1. Every multi-column panel layout collapses to a single column */
  .analysis-grid, .ov-two, .top-grid, .hz-layout, .hz-top, .ia-cols, .rashi-hero, .an-hero, .an-hero.split-wide,
  .pc-grid, .hc-grid, .sc-grid, .nc-grid, .life-cards, .sig-grid, .sl-grid,
  .hz-rp-all, .hz-rp-src, .panchang-grid, .ov-snap-grid{
    grid-template-columns:1fr !important;
  }
  .analysis-grid, .top-grid, .hz-top, .hz-layout{gap:12px;}
  .analysis-grid > *, .top-grid > *, .hz-top > *, .hz-layout > *, .ia-cols > *, .rashi-hero > *, .an-hero > *{min-width:0; max-width:100%;}
  .panel{min-width:0; max-width:100%; margin-bottom:12px;}
  .analysis-grid > .panel, .top-grid .panel, .hz-top .panel{margin-bottom:0;}

  /* 2. KPI tiles / chips: one per row, label left, value right */
  .chip-row, .an-chips, .rashi-side .chip-row{display:grid !important; grid-template-columns:1fr !important; gap:6px;}
  .chip-row .chip, .an-chips .chip, .rashi-side .chip{
    flex-direction:row-reverse; justify-content:space-between; align-items:center; gap:10px; padding:8px 12px; min-width:0;
  }
  .chip-row .chip-n, .an-chips .chip-n{font-size:14px; text-align:right; overflow-wrap:anywhere;}
  .chip-row .chip-l{text-align:left;}

  .stat-strip{grid-template-columns:1fr !important;}
  .stat-strip > div{display:flex; justify-content:space-between; align-items:baseline; gap:10px; padding:8px 12px;}
  .stat-strip > div > div{padding:0; background:none;}
  .stat-strip .v{margin-top:0; text-align:right;}

  /* 3. Panchang: five limbs as single-line rows */
  .panchang-grid{gap:6px;}
  .pk-card{flex-direction:row; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px;}
  .pk-v{text-align:right; font-size:13px;}

  /* 4. Planet snapshot: one planet per line — badge · name · position · house · dignity */
  .ov-snap-grid{gap:6px;}
  .ov-snap-cell{flex-wrap:nowrap; gap:10px; padding:7px 10px;}
  .ov-snap-cell .pbadge{width:30px; height:30px; font-size:10px; flex-shrink:0;}
  .ov-snap-txt{flex-direction:row; align-items:baseline; gap:8px; flex-wrap:nowrap; min-width:0;}
  .ov-snap-name{flex:0 0 76px; white-space:nowrap;}
  .ov-snap-pos{flex:1 1 auto; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; font-size:11px;}
  .ov-snap-house{flex:0 0 auto; font-size:10px; font-weight:600;}

  /* 5. Dasha: running-period spans as single-line rows */
  .dnow-spans{grid-template-columns:1fr !important; gap:6px;}
  .dnow-spans > div{flex-direction:row; justify-content:space-between; align-items:baseline; gap:10px;}

  /* 6. Horary: ruling-planet cards + lords as rows */
  .hz-rp-card{flex-direction:row; justify-content:space-between; text-align:left; padding:8px 12px;}
  .hz-rp-h{justify-content:flex-end;}
  .hz-verdict-lords{grid-template-columns:1fr !important;}

  /* 7. Print / copy preview: key-value cells one per row */
  .print-doc .pd-kv-grid, .print-doc .pd-kv-grid.minor{grid-template-columns:1fr !important;}
  .print-doc .pd-kv{display:flex; justify-content:space-between; align-items:baseline; gap:10px;}
  .print-doc .pd-kv span, .print-doc .pd-kv b{display:inline; margin-top:0;}

  /* keep wide tables scrollable inside their own panel instead of stretching the page */
  .tbl-scroll{max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;}
  main{overflow-x:hidden;}
}


/* ---------- Life overview: Health & disease panels ---------- */
.tag-good{color:var(--good); border-color:var(--good); background:var(--good-bg);}
.hx-verdicts{display:grid; grid-template-columns:repeat(auto-fit,minmax(170px,1fr)); gap:10px; margin:0 0 14px;}
.hx-verdict{display:flex; flex-direction:column; gap:6px; align-items:flex-start; padding:10px 12px; background:var(--panel); border:1px solid var(--line); border-radius:var(--radius);}
.hx-v-top{display:flex; align-items:center; gap:6px;}
.hx-v-name{font-family:'Fraunces',serif; font-size:14px; color:var(--head);}
.hx-v-sub{display:flex; align-items:center; gap:6px; font-size:11px;}
.hx-v-hs{min-height:22px;}
.hx-v-count{font-size:10.5px;}
.hx-table td, .hx-table th{vertical-align:middle;}
.hx-table .hx-themes{white-space:normal; min-width:230px; font-size:11.5px; color:var(--ink);}
.hx-table tr.hx-now td{background:var(--gold-bg);}
.hx-in{font-size:10px; color:var(--dim); margin:0 3px 0 6px;}
.hx-plus{font-style:normal; color:var(--dim); margin:0 3px; font-size:10px;}
.hx-zones{display:grid; grid-template-columns:repeat(auto-fill,minmax(170px,1fr)); gap:8px;}
.hx-zone{display:flex; flex-direction:column; gap:4px; padding:8px 10px; border:1px solid var(--line-strong); border-radius:var(--radius); background:var(--panel-2); min-width:0;}
.hx-zone-top{display:flex; align-items:center; gap:7px;}
.hx-zone-sign{font-family:'Fraunces',serif; font-size:13.5px; color:var(--head);}
.hx-zone-body{font-size:11.5px; color:var(--ink); line-height:1.4;}
.hx-howto{padding:10px 14px;}
.hx-howto summary{cursor:pointer; font-weight:600; font-size:12.5px; color:var(--head);}
.hx-list{margin:10px 0 2px; padding-left:18px; font-size:12px; line-height:1.55; color:var(--ink);}
.hx-list li{margin-bottom:4px;}
.hx-sub-h{font-family:'Fraunces',serif; font-weight:500; font-size:15px; color:var(--head); margin:18px 0 10px;}
.life-hc-grid{margin-top:0;}

.hx-xlist{display:flex; flex-direction:column; gap:6px;}
.hx-x{display:grid; grid-template-columns:minmax(120px,190px) 1fr; gap:10px; align-items:center; padding:7px 10px; border:1px solid var(--line); border-left:3px solid var(--line-strong); border-radius:var(--radius); background:var(--panel-2); font-size:12px;}
.hx-x-good{border-left-color:var(--good);}
.hx-x-bad{border-left-color:var(--bad);}
.hx-x-l{color:var(--dim); font-size:11px; font-weight:600;}
.hx-x-v{display:flex; flex-wrap:wrap; align-items:center; gap:4px; min-width:0;}
@media (max-width:560px){ .hx-x{grid-template-columns:1fr; gap:4px;} }


/* ---------- Dasha drill-down: sticky context bar ---------- */
/* <main> is the scroll container, so this pins to the top of the content
   area (just under the top bar) while the period list scrolls beneath it. */
.dctx{
  position:sticky; top:0; z-index:6;
  margin:0 -22px 12px; padding:8px 22px 9px;
  background:var(--panel);
  border-bottom:1px solid var(--line-strong);
  box-shadow:0 10px 18px -14px rgba(20,30,60,.45);
}
.dctx-row{display:flex; align-items:stretch; gap:8px;}
.dctx-up{
  flex:none; display:inline-flex; align-items:center; gap:4px;
  padding:0 12px; border:1px solid var(--line-strong); border-radius:var(--radius);
  background:var(--panel-2); color:var(--head-2); font:600 12px 'IBM Plex Sans',sans-serif; cursor:pointer;
}
.dctx-up:hover{border-color:var(--gold); color:var(--gold-ink);}
.dctx-up{font-size:18px; line-height:1;}
.dctx-up-t{font-size:11px; font-weight:600;}
.dctx-trail{
  display:flex; align-items:center; gap:6px; flex:1; min-width:0;
  overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none;
  scroll-snap-type:x proximity; padding:1px 0;
}
.dctx-trail::-webkit-scrollbar{display:none;}
.dctx-sep{flex:none; color:var(--line-strong); font-size:14px;}
.dctx-card{
  flex:none; display:flex; flex-direction:row; align-items:center; text-align:left;
  padding:4px 7px; border:1px solid var(--line-strong); border-radius:var(--radius);
  background:var(--panel-2); color:var(--head); cursor:pointer; scroll-snap-align:start; font:inherit;
}
.dctx-card:hover{border-color:var(--gold);}
.dctx-card.current{border-color:var(--gold); background:var(--gold-bg); cursor:default;}
.dctx-card .l1{display:flex; align-items:center; gap:4px;}
.dctx-card .pbadge{width:16px; height:16px; font-size:7.5px;}
.dctx-card .lord{font-family:'Fraunces',serif; font-weight:600; font-size:11px; color:var(--head); white-space:nowrap;}
.dctx-card .lv,.dctx-card .dt{display:none;}
.dctx-view{display:flex; align-items:center; gap:6px; margin-top:7px; font-size:11px; color:var(--dim);}
.dctx-view b{color:var(--head); font-weight:600;}
.dctx-view .lvln{margin-right:0;}
.dctx-view b .short{display:none;}

@media (max-width:900px){
  .dctx{margin:0 -14px 10px; padding:6px 14px 7px;}
}
@media (max-width:720px){
  .dctx-row{gap:5px;}
  .dctx-up{padding:0 10px; min-height:32px;}
  .dctx-up-t{display:none;}
  .dctx-card{padding:3px 6px; min-height:32px; justify-content:center;}
  .dctx-card .lord{font-size:10.5px;}
  .dctx-view{margin-top:5px; font-size:10.5px;}
  .dctx-view .hint{display:none;}
  .dctx-view b .full{display:none;}
  .dctx-view b .short{display:inline;}
}
@media print{ .dctx{position:static; box-shadow:none;} }

/* ---------- Vedic chart analysis: disciplined, phone-safe panels ---------- */
/* Panels flow down two balanced columns on wide screens (no dead gaps
   between panels), and stack in one column on phones/tablets. */
.vd-wrap{display:block; min-width:0;}
.vd-wrap > .panel{margin:0 0 14px; min-width:0; break-inside:avoid; -webkit-column-break-inside:avoid; page-break-inside:avoid;}
.vd-wrap > .an-note{margin:2px 2px 8px; column-span:all;}
@media (min-width:1000px){
  .vd-wrap{column-count:2; column-gap:14px; column-fill:balance;}
  .vd-wrap > .panel{display:inline-block; width:100%;}
}
.vd-chart-panel .ni-chart{max-width:560px; margin:0 auto;}
.vd-varga-chart{max-width:420px; margin:0 auto;}
.vd-varga-panel{padding-bottom:14px;}
.vd-varga-head{cursor:pointer; margin-bottom:0; justify-content:space-between;}
.vd-varga-panel.open .vd-varga-head{margin-bottom:12px;}
.vd-varga-title{display:flex; align-items:center; gap:6px;}
.vd-varga-controls{display:flex; align-items:center; gap:6px;}
.vd-varga-caret{color:var(--dim); font-size:10px; transition:transform .15s ease;}
.varga-select{
  margin-left:8px; font-size:12px; font-weight:600; font-family:inherit;
  padding:3px 6px; border-radius:6px; border:1px solid var(--line);
  background:var(--panel); color:var(--ink); cursor:pointer; vertical-align:middle;
}
.vd-rank-cols{display:flex; gap:10px; align-items:flex-start;}
.vd-rank-col{flex:1; min-width:0;}
.vd-rank-col-h{font-size:9.5px; letter-spacing:.3px; text-transform:uppercase; color:var(--dim); font-weight:600; margin-bottom:6px;}
.vd-rank-compact{grid-template-columns:44px minmax(16px,1fr) auto; gap:5px; font-size:10px;}
@media (max-width:480px){
  .vd-rank-cols{gap:6px;}
  .vd-rank-compact{grid-template-columns:38px minmax(12px,1fr) auto; font-size:9.5px;}
}
.yk-mk-row{display:flex; align-items:center; justify-content:space-between; gap:8px; padding:7px 8px; border:1px solid var(--line-strong); border-radius:var(--radius); background:var(--panel-2); margin-bottom:6px;}
.yk-mk-row:last-child{margin-bottom:0;}
.yk-mk-label{font-size:10px; letter-spacing:.3px; text-transform:uppercase; color:var(--dim); font-weight:600; flex-shrink:0;}
.yk-mk-val{font-size:12px; color:var(--head); display:flex; align-items:center; gap:4px; flex-wrap:wrap; justify-content:flex-end;}
.vd-kvgrid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px;}
.vd-kv{display:flex; flex-direction:column; gap:3px; padding:6px 8px; border:1px solid var(--line-strong); border-radius:var(--radius); background:var(--panel-2); min-width:0;}
.vd-kv .k{font-size:9.5px; letter-spacing:.3px; text-transform:uppercase; color:var(--dim); font-weight:600;}
.vd-kv .v{font-size:12px; color:var(--head); display:flex; align-items:center; gap:4px; flex-wrap:wrap;}
.vd-dig{grid-template-columns:repeat(3,minmax(0,1fr)) !important;}
.vd-conj{grid-template-columns:repeat(2,minmax(0,1fr)) !important;}
.vd-yogas{display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:6px;}
.vd-yoga{display:flex; flex-direction:column; gap:2px; padding:6px 9px; border:1px solid var(--line-strong); border-left-width:3px; border-radius:var(--radius); background:var(--panel-2); font-size:11.5px; min-width:0;}
.vd-yoga .sub{font-size:10.5px; line-height:1.35;}
.vd-tbl{width:100%; border-collapse:collapse; font-size:11px;}
.vd-tbl th{font-size:9.5px; text-transform:uppercase; letter-spacing:.3px; color:var(--dim); text-align:left; padding:5px 4px; border-bottom:1px solid var(--line-strong); white-space:nowrap;}
.vd-tbl td{padding:5px 4px; border-bottom:1px solid var(--line); vertical-align:middle;}
.vd-tbl td .mini-pl{margin-right:2px;}
.vd-tbl .pill{margin-right:2px;}
.vd-nowrap{white-space:nowrap;}
.vd-bar{display:inline-block; width:38px; height:6px; border-radius:3px; background:var(--line); overflow:hidden; vertical-align:middle; margin-right:4px;}
.vd-bar i{display:block; height:100%;}
.vd-bar.wide{width:100%; height:8px; margin:0;}
.vd-num{font-size:10.5px; color:var(--dim);}
.vd-rank{display:grid; grid-template-columns:56px minmax(20px,1fr) auto; align-items:center; gap:8px; margin-bottom:6px; font-size:11px;}
.vd-rank-l{white-space:nowrap;}
.vd-rank-r{text-align:right; white-space:nowrap; font-size:10.5px;}
@media (max-width:640px){
  .vd-wrap > .panel{margin-bottom:12px;}
  .vd-tbl{font-size:10px;}
  .vd-tbl th, .vd-tbl td{padding:4px 2px;}
  .vd-bar{width:26px; margin-right:2px;}
  .vd-yogas{grid-template-columns:1fr;}
  .vd-kv .v{font-size:11px;}
}

.vd-yoga-bar{margin-bottom:10px; overflow-x:auto;}
.vd-yoga-h{display:flex; align-items:center; justify-content:space-between; gap:6px;}
.yg-cat{font:600 8.5px/1 'IBM Plex Mono',monospace; text-transform:uppercase; letter-spacing:.3px; color:var(--dim); border:1px solid var(--line-strong); border-radius:8px; padding:2px 5px; white-space:nowrap;}
.vd-yoga-bar .seg button{padding:6px 10px; font-size:11px;}

/* ---------- Print section: both charts (KP + Vedic) ---------- */
.pv-chart-row{display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); gap:16px; align-items:start;}
.pv-chart-card{text-align:center; min-width:0;}
.pv-chart-t{font-family:'Fraunces',serif; font-weight:600; color:var(--head); font-size:14px;}
.pv-chart-card .sub{margin-bottom:6px;}
svg.pv-chart{width:100%; max-width:380px; height:auto; background:#fff; border-radius:var(--radius); border:1px solid var(--line);}
.print-doc .pd-chart-pair{display:flex; justify-content:center; align-items:flex-start; gap:8mm; padding:6px 0;}
.print-doc .pd-fig{margin:0; text-align:center;}
.print-doc .pd-chart-cap{font-size:9px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:#26365c; margin-bottom:3px;}
.print-doc .pd-chart-pair .pd-chart{width:88mm; height:88mm;}

/* ---------- Print document: page frame, brand header, repeating footer ---------- */
.print-doc table.pd-page{width:100%; border-collapse:collapse; font-size:inherit;}
.print-doc table.pd-page > thead > tr > td,
.print-doc table.pd-page > tbody > tr > td,
.print-doc table.pd-page > tfoot > tr > td{padding:0; border:0; background:none !important;}
.print-doc table.pd-page > tbody > tr{break-inside:auto;}
.print-doc table.pd-page > thead{display:table-header-group;}
.print-doc table.pd-page > tfoot{display:table-footer-group;}
.print-doc .pd-gap{height:11mm;}
.print-doc .pd-body{padding:0 11mm !important;}
.print-doc .pd-brand{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:2px;}
.print-doc .pd-brand-name{font-family:'Fraunces',serif; font-size:15px; font-weight:600; letter-spacing:.16em; text-transform:uppercase; color:#f2e6cf;}
.print-doc .pd-brand-name i{font-style:normal; color:#e0c48f; margin-right:3px;}
.print-doc .pd-brand-tag{font-size:8.5px; letter-spacing:.14em; text-transform:uppercase; color:#e0c48f;}
.print-doc .pd-foot{
  display:flex; align-items:center; justify-content:space-between; gap:10px;
  margin:5mm 11mm 7mm; padding-top:2.5mm; border-top:1.5px solid #a9762c;
  font-size:8.5px; letter-spacing:.06em; color:#69748a; text-align:left;
}
.print-doc .pd-foot-brand{font-family:'Fraunces',serif; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:#26365c; font-size:9.5px;}
.print-doc .pd-foot-brand i{font-style:normal; color:#a9762c; margin-right:2px;}

/* ---------------- auth: login gate + account badge + users page ---------------- */
.auth-gate{
  display:none; position:fixed; inset:0; z-index:1000;
  align-items:center; align-items:safe center; justify-content:center;
  padding:24px; overflow-y:auto; -webkit-overflow-scrolling:touch;
  background:
    radial-gradient(circle at 18% 15%, rgba(169,118,44,.20), transparent 42%),
    radial-gradient(circle at 82% 78%, rgba(169,118,44,.14), transparent 45%),
    radial-gradient(ellipse at 50% -10%, var(--navy-2), var(--navy) 60%);
}
body.auth-locked .shell{visibility:hidden;} /* also true by default now (see fail-closed rule near :root) -- kept for clarity while the gate is up */
/* drifting starfield behind the card */
.auth-gate::before, .auth-gate::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:.55;
  background-image:
    radial-gradient(1.5px 1.5px at 10% 20%, #fff, transparent),
    radial-gradient(1px 1px at 25% 65%, #fff, transparent),
    radial-gradient(1.5px 1.5px at 40% 12%, #fff, transparent),
    radial-gradient(1px 1px at 55% 78%, #fff, transparent),
    radial-gradient(1.5px 1.5px at 70% 35%, #fff, transparent),
    radial-gradient(1px 1px at 85% 60%, #fff, transparent),
    radial-gradient(1.5px 1.5px at 92% 22%, #fff, transparent),
    radial-gradient(1px 1px at 6% 85%, #fff, transparent),
    radial-gradient(1.5px 1.5px at 60% 90%, #fff, transparent),
    radial-gradient(1px 1px at 33% 40%, #fff, transparent);
  background-size:100% 100%;
  animation:auth-twinkle 5s ease-in-out infinite alternate;
}
.auth-gate::after{ opacity:.25; transform:scale(1.4) rotate(8deg); animation-duration:7s; animation-delay:.6s; }
@keyframes auth-twinkle{ from{opacity:.25;} to{opacity:.7;} }

.auth-shell{
  position:relative; z-index:1;
  display:flex; width:100%; max-width:760px;
  margin:auto;
  border-radius:20px; overflow:hidden;
  box-shadow:0 30px 80px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.06);
  animation:auth-rise .5s cubic-bezier(.2,.9,.25,1) both;
}
@keyframes auth-rise{ from{opacity:0; transform:translateY(18px) scale(.98);} to{opacity:1; transform:translateY(0) scale(1);} }

/* left decorative panel -- hidden on narrow screens */
.auth-visual{
  position:relative; flex:0 0 44%;
  display:flex; flex-direction:column; justify-content:space-between;
  padding:34px 28px;
  background:
    radial-gradient(circle at 30% 20%, rgba(224,169,79,.18), transparent 55%),
    linear-gradient(155deg, var(--navy-2), var(--navy) 75%);
  color:#f2e6cf;
  overflow:hidden;
}
.auth-visual .av-ring{
  position:absolute; right:-70px; top:-70px; width:260px; height:260px;
  border:1px dashed rgba(242,230,207,.28); border-radius:50%;
  animation:auth-spin 40s linear infinite;
}
.auth-visual .av-ring.two{ right:auto; left:-90px; top:auto; bottom:-90px; width:200px; height:200px; animation-duration:55s; animation-direction:reverse; border-color:rgba(242,230,207,.18); }
@keyframes auth-spin{ from{transform:rotate(0deg);} to{transform:rotate(360deg);} }
.auth-visual .av-glyph{ font-size:34px; color:var(--gold-ink); text-shadow:0 0 24px rgba(224,169,79,.6); }
.auth-visual h2{
  font-family:'Fraunces',serif; font-weight:600; font-size:26px; line-height:1.25;
  margin:16px 0 10px; letter-spacing:.01em;
}
.auth-visual p{ font-size:12.5px; line-height:1.6; color:#d9cbb0; max-width:30ch; margin:0; }
.auth-visual .av-foot{ position:relative; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:#a99a7d; }

.auth-card{
  flex:1 1 56%;
  width:100%; max-width:none;
  background:var(--panel); color:var(--ink);
  border:none; border-radius:0;
  box-shadow:none;
  padding:38px 34px 30px;
  display:flex; flex-direction:column; justify-content:center;
}
.auth-brand{display:flex; align-items:center; gap:8px; font-family:'Fraunces',serif; font-weight:700; font-size:15px; color:var(--navy); letter-spacing:.03em; margin-bottom:14px;}
.auth-mark{color:var(--gold-ink); font-size:16px;}
.auth-card h3{margin:0 0 4px; font-size:20px; font-family:'Fraunces',serif; font-weight:600;}
.auth-card .sub{margin:0 0 20px;}
.auth-card .tb-field, .panel form .tb-field{display:flex; flex-direction:column; gap:4px; margin-bottom:14px;}
.auth-card .tb-field label, .panel form .tb-field label{font-size:10.5px; color:var(--dim); font-weight:600; text-transform:uppercase; letter-spacing:.04em;}
.auth-card .tb-field input, .auth-card .tb-field select,
.panel form .tb-field input, .panel form .tb-field select{
  background:var(--panel-2); border:1px solid var(--line-strong); color:var(--ink);
  padding:10px 12px; border-radius:10px; font-size:14px; width:100%;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.auth-card .tb-field input:focus, .panel form .tb-field input:focus{
  outline:none; border-color:var(--gold); box-shadow:0 0 0 3px var(--gold-bg);
}
.auth-pw-wrap{ position:relative; }
.auth-pw-wrap input{ padding-right:40px !important; }
.auth-pw-toggle{
  position:absolute; top:50%; right:6px; transform:translateY(-50%);
  width:28px; height:28px; border:none; background:transparent; cursor:pointer;
  border-radius:6px; color:var(--dim);
  display:flex; align-items:center; justify-content:center; padding:0;
}
.auth-pw-toggle svg{ display:block; }
.auth-pw-toggle:hover{ background:var(--gold-bg); color:var(--ink); }
.auth-pw-toggle:focus-visible{ outline:2px solid var(--gold); outline-offset:1px; }
.auth-card .tb-calc, .panel form .tb-calc{
  width:100%; margin-top:6px;
  background:linear-gradient(180deg, #c08a34, var(--gold));
  color:#2a1d08; border:none;
  padding:12px; font-weight:700; font-size:13.5px; border-radius:10px; cursor:pointer;
  letter-spacing:.02em;
  box-shadow:0 8px 18px rgba(169,118,44,.35);
  transition:transform .12s ease, box-shadow .12s ease, background .15s ease;
}
.auth-card .tb-calc:hover{ transform:translateY(-1px); box-shadow:0 10px 22px rgba(169,118,44,.45); }
.auth-card .tb-calc:active{ transform:translateY(0); }
.auth-card .tb-calc:disabled, .panel form .tb-calc:disabled{background:var(--line-strong); color:var(--dim); cursor:progress; box-shadow:none;}
.auth-error{
  background:var(--bad-bg); color:var(--bad); border-radius:10px; padding:9px 11px;
  font-size:12px; margin-bottom:14px; display:flex; align-items:center; gap:7px;
  animation:auth-shake .3s ease;
}
.auth-error::before{ content:"⚠"; font-size:13px; flex:0 0 auto; }
.auth-error.auth-error--offline{ background:#fff4e2; color:#8a5a12; }
.auth-error.auth-error--offline::before{ content:"⌁"; }
.auth-success{
  background:var(--good-bg); color:var(--good); border-radius:10px; padding:9px 11px;
  font-size:12px; margin-bottom:14px; display:flex; align-items:center; gap:7px;
}
.auth-success::before{ content:"✓"; font-size:13px; flex:0 0 auto; }
@keyframes auth-shake{ 0%,100%{transform:translateX(0);} 25%{transform:translateX(-4px);} 75%{transform:translateX(4px);} }
.auth-card .auth-foot{ margin-top:16px; font-size:11px; color:var(--dim); text-align:center; }

@media (max-width:680px){
  .auth-visual{ display:none; }
  .auth-shell{ max-width:380px; border-radius:16px; }
  .auth-card{ padding:30px 22px 26px; }
  /* iOS Safari auto-zooms the page when a focused input's font is under
     16px -- keep these at 16px on mobile so tapping in doesn't jump-zoom. */
  .auth-card .tb-field input, .auth-card .tb-field select{ font-size:16px; }
  .auth-pw-toggle{ width:34px; height:34px; }
}

@media (max-width:420px){
  /* Extra-small phones: reclaim the outer padding, drop the card's own
     corner radius/shadow so it reads as a full-bleed sheet, not a
     shrunk-down desktop card, and respect notches/home-indicator insets. */
  .auth-gate{
    padding:12px;
    padding-top:calc(12px + env(safe-area-inset-top, 0px));
    padding-bottom:calc(12px + env(safe-area-inset-bottom, 0px));
  }
  .auth-shell{ max-width:100%; border-radius:14px; }
  .auth-card{ padding:24px 18px 20px; }
  .auth-card h3{ font-size:18px; }
  .auth-brand{ margin-bottom:10px; }
  .auth-card .sub{ margin-bottom:16px; }
}


/* ---------------- account page (sidebar "Account" nav item) ---------------- */
.account-hero{
  display:flex; align-items:center; gap:16px; padding:22px 22px;
  background:linear-gradient(135deg, var(--navy-2), var(--navy));
  border-radius:var(--radius); color:#f2e6cf; margin-bottom:16px;
}
.account-avatar{
  flex:0 0 auto; width:52px; height:52px; border-radius:50%;
  background:linear-gradient(180deg,#c08a34,var(--gold)); color:#2a1d08;
  display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces',serif; font-weight:700; font-size:20px;
  box-shadow:0 6px 16px rgba(169,118,44,.4);
}
.account-hero-text .an-name{font-size:16px; font-weight:700; font-family:'Fraunces',serif;}
.account-hero-text .an-role{font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:#d9cbb0; margin-top:2px;}
.account-logout-row{margin-top:14px;}


.icon-btn.danger{color:var(--bad); border-color:var(--bad);}
.icon-btn.danger:hover{background:var(--bad-bg);}

/* ---------------- Users page: account list ---------------- */
.acct-count{
  margin-left:auto; font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0;
  color:var(--dim); background:var(--panel-2); border:1px solid var(--line); border-radius:20px;
  padding:1px 8px; text-transform:none;
}
.panel h3:has(.acct-count){justify-content:space-between;}
.acct-list{display:flex; flex-direction:column; gap:8px;}
.acct-row{
  display:flex; align-items:center; gap:14px; padding:12px 14px;
  background:var(--panel-2); border:1px solid var(--line); border-radius:8px;
  transition:border-color .15s ease, box-shadow .15s ease;
}
.acct-row:hover{border-color:var(--line-strong); box-shadow:0 2px 8px rgba(38,54,92,.06);}
.acct-avatar{
  flex:0 0 auto; width:38px; height:38px; border-radius:50%;
  background:linear-gradient(180deg,#8b96ab,#69748a); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-family:'Fraunces',serif; font-weight:700; font-size:15px;
}
.acct-avatar--admin{background:linear-gradient(180deg,#c08a34,var(--gold)); box-shadow:0 3px 10px rgba(169,118,44,.35);}
.acct-info{flex:1 1 auto; min-width:0;}
.acct-name{font-weight:700; font-size:13.5px; color:var(--ink); display:flex; align-items:center; gap:8px;}
.acct-you{
  font-size:9.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  color:var(--gold-ink); background:var(--gold-bg); border-radius:20px; padding:1px 7px;
}
.acct-meta{display:flex; align-items:center; gap:10px; margin-top:3px; flex-wrap:wrap;}
.role-pill{
  font-size:10px; font-weight:700; letter-spacing:.03em; text-transform:uppercase;
  border-radius:20px; padding:2px 9px; line-height:1.5;
}
.role-pill--admin{color:var(--gold-ink); background:var(--gold-bg);}
.role-pill--user{color:var(--navy); background:#eef1f6;}
.acct-created{font-size:11px; color:var(--dim);}
.acct-actions{flex:0 0 auto; display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end;}
.acct-edit-row{
  margin:-2px 0 8px; padding:12px 14px; background:var(--panel-2);
  border:1px dashed var(--line-strong); border-radius:8px;
}
@media (max-width:680px){
  .acct-row{flex-wrap:wrap;}
  .acct-actions{width:100%; justify-content:flex-start; margin-top:2px;}
}

/* ---- Hub wheels (Planet wheel / Nakshatra wheel) ---- */
.hw-item{cursor:pointer;}
.hw-item:hover .hw-bar, .hw-item.sel .hw-bar{filter:brightness(1.15);}
.hw-item.sel .hw-bar{stroke:var(--gold); stroke-width:1.6;}
.hw-val{font:600 7.5px 'IBM Plex Mono',monospace; fill:#fff; pointer-events:none;}
.hw-h{font:600 8px 'IBM Plex Mono',monospace; fill:var(--dim); pointer-events:none;}
.hw-sign{font:700 7px 'Inter',sans-serif; fill:var(--dim); letter-spacing:.08em; pointer-events:none;}
.hw-nk{font:500 6.6px 'Fraunces',serif; fill:var(--dim); pointer-events:none;}
.hw-nk.on{font-weight:700; fill:var(--head);}
.hw-lord{font:700 5.8px 'IBM Plex Mono',monospace; fill:#fff; pointer-events:none;}
.hw-key{display:flex; flex-wrap:wrap; gap:4px 14px; justify-content:center; font-size:10.5px; color:var(--dim);}
.hw-key span{display:inline-flex; align-items:center; gap:5px;}
.hw-key i{display:inline-block; width:10px; height:10px; border-radius:3px;}
.hw-key i.dot{border-radius:50%; width:8px; height:8px; background:var(--retro);}
.an-hero-side .an-donut{max-width:300px; margin:0 auto 8px;}

/* single-chart hero: the wheel, centred and generous */
.an-hero-solo{margin-bottom:14px;}
.an-hero-solo h3{margin-bottom:10px;}
.an-hero-solo .rashi-wheel{max-width:560px; filter:drop-shadow(0 4px 14px rgba(20,30,60,.14));}

/* ===== Dasha Analysis redesign ===== */
.dasha-compute-panel{max-width:none;}
.dasha-now{box-shadow:0 2px 12px rgba(20,30,60,.06);}
.dn-rows{display:flex; flex-direction:column; gap:12px;}
.dn-row{display:flex; align-items:center; gap:12px; padding:10px 12px; border:1px solid var(--line); border-left:4px solid var(--pc); border-radius:12px; background:var(--panel);}
.dn-row .lvln{flex:none;}
.dn-mid{flex:1; min-width:0; display:flex; flex-direction:column; gap:5px;}
.dn-t{display:flex; align-items:baseline; gap:8px;}
.dn-t b{font-family:'Fraunces',serif; font-size:15px; color:var(--head);}
.dn-lbl{font-size:9.5px; color:var(--dim); text-transform:uppercase; letter-spacing:.05em;}
.dn-pct{margin-left:auto; font-size:11px; color:var(--head); font-weight:600;}
.dn-d{font-size:10.5px; color:var(--dim);}
.dn-d .mono{color:var(--head); font-weight:600;}
.dasha-now .dperiod-bar{height:8px;}

/* ---- Dasha zoom timeline: one row per level, each row zooms into the selected period above it ---- */
.tlz-panel{margin-bottom:14px;}
.tlz-head{display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px;}
.tlz-actions{display:flex; gap:6px;}
.tlz-btn{font:600 11px 'Inter',sans-serif; padding:4px 12px; border-radius:20px; cursor:pointer; color:var(--head); background:var(--panel-2); border:1px solid var(--line-strong);}
.tlz-btn:hover{background:var(--gold-bg); border-color:var(--gold);}
.tlz-btn:disabled{opacity:.4; cursor:default;}
.tlz-row{margin-top:4px;}
.tlz-rh{display:flex; align-items:center; gap:8px; margin:0 0 6px; font-size:11px; color:var(--dim); flex-wrap:wrap;}
.tlz-rh b{color:var(--head); font-family:'Fraunces',serif; font-size:12.5px;}
.tlz-rh .lvln{margin-right:0;}
.tlz-bar{position:relative; display:flex; height:50px; border-radius:10px; background:var(--panel-2); border:1px solid var(--line);}
.tlz-seg{flex:none; min-width:2px; border:0; padding:0; color:#fff; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px;
  background:linear-gradient(180deg, color-mix(in srgb,var(--pc) 100%, #fff 14%), var(--pc)); opacity:.72; cursor:pointer; overflow:hidden;
  border-right:2px solid var(--panel); transition:opacity .15s, transform .15s; font:600 11px 'IBM Plex Mono',monospace;}
.tlz-seg:first-child{border-radius:9px 0 0 9px;}
.tlz-seg:last-of-type{border-radius:0 9px 9px 0; border-right:0;}
.tlz-seg:hover{opacity:1; transform:translateY(-2px);}
.tlz-seg.past{opacity:.36;}
.tlz-seg.run{opacity:1;}
.tlz-seg.sel{opacity:1; box-shadow:inset 0 0 0 2.5px var(--gold), 0 4px 12px color-mix(in srgb,var(--pc) 45%, transparent); z-index:2;}
.tlz-seg.leaf{cursor:default;}
.tlz-seg.leaf:hover{transform:none;}
.tlz-n{font:700 11.5px 'IBM Plex Mono',monospace; line-height:1.1;}
.tlz-y{font:500 8px 'IBM Plex Mono',monospace; opacity:.88; line-height:1.1; white-space:nowrap;}
.tlz-now{position:absolute; top:-5px; bottom:-5px; width:2px; margin-left:-1px; background:var(--ink); border-radius:2px; pointer-events:none; z-index:3;}
.tlz-now b{position:absolute; top:-14px; left:50%; transform:translateX(-50%); font:700 7.5px 'Inter',sans-serif; letter-spacing:.06em; background:var(--ink); color:var(--panel); padding:1px 5px; border-radius:8px;}
.tlz-bridge{height:20px; margin:0; background:color-mix(in srgb,var(--pc) 26%, transparent); clip-path:polygon(var(--l) 0, calc(var(--l) + var(--w)) 0, 100% 100%, 0 100%);}
.tlz-legend{display:flex; flex-wrap:wrap; gap:6px 10px; margin-top:14px;}
.tlz-lg{display:inline-flex; align-items:center; gap:6px; padding:3px 10px 3px 8px; border:1px solid var(--line); border-radius:20px; background:var(--panel-2); font-size:11px; color:var(--head);}
.tlz-lg i{width:9px; height:9px; border-radius:50%;}
.tlz-lg em{font:600 10px 'IBM Plex Mono',monospace; font-style:normal; color:var(--dim);}
.tlz-hint{margin:10px 0 0; font-size:10.5px; color:var(--dim);}
@media (max-width:560px){ .tlz-bar{height:44px;} .tlz-n{font-size:10.5px;} }


/* ================================================================== */
/* Print section v2 — toggle selection, Vedic / KP / Timing parts       */
/* ================================================================== */

/* ---- toggle switch ---- */
.tg{position:relative; display:flex; align-items:center; gap:9px; cursor:pointer; user-select:none; font-size:12.5px; color:var(--ink);}
.tg input{position:absolute; opacity:0; width:0; height:0;}
.tg-track{position:relative; flex:none; width:32px; height:18px; border-radius:999px; background:var(--line-strong); transition:background .15s;}
.tg-track i{position:absolute; top:2px; left:2px; width:14px; height:14px; border-radius:50%; background:#fff; box-shadow:0 1px 2px rgba(0,0,0,.3); transition:transform .15s;}
.tg input:checked + .tg-track{background:var(--gc, var(--gold));}
.tg input:checked + .tg-track i{transform:translateX(14px);}
.tg input:indeterminate + .tg-track{background:var(--gc, var(--gold)); opacity:.55;}
.tg input:indeterminate + .tg-track i{transform:translateX(7px);}
.tg input:focus-visible + .tg-track{outline:2px solid var(--gold); outline-offset:2px;}
.tg-lbl{line-height:1.3;}

/* ---- controls panel ---- */
.pt-top{display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:10px;}
.pt-tabs button{padding:8px 16px; font-size:12.5px;}
.pt-link{--gc:var(--navy); font-size:12px; color:var(--dim);}
.pt-presets{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-bottom:12px;}
.pt-chip{border:1px solid var(--line-strong); background:var(--panel); color:var(--ink); border-radius:999px; padding:4px 12px; font-size:11.5px; cursor:pointer; font-family:inherit;}
.pt-chip:hover{border-color:var(--gold); color:var(--gold-ink); background:var(--gold-bg);}
.pt-groups{display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%, 310px), 1fr)); gap:12px; margin-bottom:14px;}
.pt-group{--gc:var(--gold); border:1px solid var(--line); border-top:3px solid var(--gc); border-radius:var(--radius); background:var(--panel); padding:10px 12px 8px;}
.pt-group.g-general{--gc:#69748a;}
.pt-group.g-vedic{--gc:#a9762c;}
.pt-group.g-kp{--gc:#324876;}
.pt-group.g-timing{--gc:#7a5ca0;}
.pt-ghead{display:flex; align-items:center; gap:10px; padding-bottom:8px; margin-bottom:6px; border-bottom:1px solid var(--line);}
.pt-gic{width:28px; height:28px; border-radius:8px; display:grid; place-items:center; background:var(--gc); color:#fff; font-size:14px; flex:none;}
.pt-gtxt{display:flex; flex-direction:column; min-width:0; flex:1; line-height:1.25;}
.pt-gtxt b{font-family:'Fraunces',serif; font-size:13.5px; color:var(--head);}
.pt-gtxt .sub{font-size:11px;}
.pt-items{display:flex; flex-direction:column;}
.pt-item{padding:6px 2px; border-bottom:1px dashed var(--line);}
.pt-item:last-child{border-bottom:0;}
.pt-count{margin-left:auto;}

/* ---- on-screen print preview (paper) ---- */
.print-doc.on-screen{display:block; max-width:210mm; margin:0 auto; padding:0; border:1px solid var(--line-strong); border-radius:4px; background:#fff; box-shadow:0 6px 24px rgba(20,30,60,.16); overflow-x:auto;}
.print-doc.on-screen .pd-page{min-width:640px;}

/* ---- document parts ---- */
.print-doc .pd-g{--gc:#26365c; --gc2:#a9762c; margin-bottom:4px;}
.print-doc .pd-g.g-vedic{--gc:#7a5215; --gc2:#a9762c;}
.print-doc .pd-g.g-kp{--gc:#1f2f55; --gc2:#324876;}
.print-doc .pd-g.g-timing{--gc:#4b3a68; --gc2:#7a5ca0;}
.print-doc .pd-grp-head{display:flex; align-items:center; gap:12px; margin:0 0 10px; padding:10px 14px; border-radius:6px; color:#fff; background:linear-gradient(100deg, var(--gc) 0%, var(--gc2) 100%); border-bottom:3px solid #e0c48f; break-before:page; break-after:avoid;}
.print-doc .pd-head + .pd-g .pd-grp-head{break-before:auto;}
.print-doc .pd-grp-ic{font-size:22px; line-height:1; width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:rgba(255,255,255,.16); flex:none;}
.print-doc .pd-grp-part{font-size:8px; letter-spacing:.18em; text-transform:uppercase; color:#f2e6cf;}
.print-doc .pd-grp-title{font-family:'Fraunces',serif; font-size:17px; font-weight:600; line-height:1.15;}
.print-doc .pd-grp-sub{margin-left:auto; font-size:9px; text-align:right; max-width:42%; color:#f2e6cf; letter-spacing:.03em;}

.print-doc section.pd-sec{margin-bottom:11px; border:1px solid #dde3ec; border-left:3px solid var(--gc2, #a9762c); border-radius:5px; padding:9px 12px 10px; background:#fff; break-inside:auto;}
.print-doc section.pd-sec.pd-keep{break-inside:avoid;}
.print-doc .pd-sec h2{border-bottom:1px solid #e6eaf1; color:var(--gc, #26365c); font-size:13px; padding-bottom:4px; margin-bottom:7px;}
.print-doc .pd-tbl th{background:#f1f3f8; border-bottom:1.5px solid var(--gc2, #a9762c);}
.print-doc .pd-tbl.compact td{padding:2px 7px; font-size:9.3px;}
.print-doc .pd-tbl td{vertical-align:middle;}
.print-doc .pd-note{margin-top:5px; font-size:8.3px; line-height:1.4; color:#69748a; font-style:italic;}
.print-doc .pd-dim{color:#8a93a6;}

.print-doc .pd-pl{display:inline-flex; align-items:center; gap:4px; font-weight:600; color:var(--pc);}
.print-doc .pd-pl i{width:7px; height:7px; border-radius:50%; background:var(--pc); flex:none;}
.print-doc .pd-chip{display:inline-block; min-width:17px; text-align:center; padding:0 4px; margin-right:2px; border-radius:3px; font-size:8.5px; font-weight:700; line-height:14px; color:#fff; background:var(--pc);}
.print-doc .pd-chip sup{font-size:6.5px; margin-left:1px;}
.print-doc .pd-bar{display:inline-block; width:38px; height:6px; border-radius:3px; background:#e6eaf1; vertical-align:middle; margin-right:4px; overflow:hidden;}
.print-doc .pd-bar i{display:block; height:100%; border-radius:3px;}
.print-doc .pd-num{font-variant-numeric:tabular-nums; color:#26365c;}
.print-doc .pd-band{font-size:8px; font-weight:600; letter-spacing:.02em; white-space:nowrap;}
.print-doc .pd-bar,.print-doc .pd-num{white-space:nowrap;}
.print-doc section.pd-sec.pd-chart-sec{break-inside:avoid;}
.print-doc .pd-t{display:inline-block; padding:0 7px; border-radius:9px; font-size:8.5px; font-weight:600; line-height:14px; border:1px solid currentColor; white-space:nowrap;}
.print-doc .pd-t.good{color:#2f8f5b; background:#2f8f5b14;}
.print-doc .pd-t.bad{color:#bb4b3f; background:#bb4b3f14;}
.print-doc .pd-t.gold{color:#a9762c; background:#a9762c14;}
.print-doc .pd-t.dim{color:#8a93a6; border-color:#c7d0dd;}
.print-doc .pd-t.strong{border:0; padding:0; border-radius:0; font-size:inherit; font-weight:700; color:#26365c; background:none; line-height:inherit; white-space:normal;}

.print-doc .pd-yoga-grid{display:grid; grid-template-columns:1fr 1fr; gap:5px 8px;}
.print-doc .pd-yoga{border:1px solid #dde3ec; border-left:3px solid var(--tc); border-radius:3px; padding:4px 8px; break-inside:avoid; background:#fff;}
.print-doc .pd-yoga-h{display:flex; justify-content:space-between; align-items:baseline; gap:6px;}
.print-doc .pd-yoga-h b{font-size:9.6px; color:#26365c;}
.print-doc .pd-yoga-h span{font-size:7.5px; letter-spacing:.06em; text-transform:uppercase; color:var(--tc); white-space:nowrap;}
.print-doc .pd-yoga-d{font-size:8.8px; color:#4a556b; line-height:1.35;}
.print-doc .pd-chart-pair.small .pd-chart{width:74mm; height:74mm;}

@media (max-width:720px){
  .pt-top{flex-direction:column; align-items:stretch;}
  .pt-tabs{width:100%;} .pt-tabs button{flex:1;}
  .print-doc .pd-yoga-grid{grid-template-columns:1fr;}
  .print-doc .pd-grp-sub{display:none;}
}
@media print{
  .print-doc .pd-yoga-grid{grid-template-columns:1fr 1fr !important;}
  .print-doc .pd-grp-sub{display:block !important;}
}

.print-doc .pd-tbl td:first-child{white-space:nowrap;}
.print-doc .pd-tbl.wrapfirst td:first-child{white-space:normal;}

/* ---- guest mode, contact + legal links on login, support section ---- */
.auth-or{display:flex;align-items:center;gap:10px;margin:16px 0 10px;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line)}
.auth-guest-btn{width:100%;margin-top:10px;padding:11px 14px;border-radius:10px;border:1.5px solid var(--gold);background:transparent;color:var(--gold-ink);font:inherit;font-weight:600;cursor:pointer}
.auth-guest-btn:hover{background:var(--gold-bg)}
.auth-guest-note{margin:8px 0 0;font-size:11.5px;color:var(--dim);text-align:center}
.auth-contact{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:16px}
.auth-contact-link{font-size:12px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;color:var(--ink);text-decoration:none}
.auth-contact-link.wa{border-color:#1f9d55;color:#1f9d55}
.auth-contact-link:hover{background:var(--gold-bg)}
.auth-legal{display:flex;flex-wrap:wrap;gap:4px 12px;justify-content:center;margin-top:12px;font-size:11.5px}
.auth-legal a{color:var(--dim)}
.sb-foot a{color:inherit;text-decoration:underline}
.support-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-top:10px}
.support-card{display:flex;flex-direction:column;gap:2px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;text-decoration:none;color:var(--ink);background:var(--panel)}
.support-card:hover{border-color:var(--gold)}
.support-card.wa{border-color:#1f9d55}
.support-card .sc-t{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--dim);font-weight:600}
.support-card .sc-v{font-weight:600}
.support-links{display:flex;flex-wrap:wrap;gap:8px 18px}
.support-links a{color:var(--gold-ink);font-weight:600}
body.is-guest #sb-save,body.is-guest #sb-del{opacity:.55}

.auth-switch{margin:12px 0 0;text-align:center;font-size:12.5px;color:var(--dim)}
.auth-switch a{color:var(--gold-ink);font-weight:600}
.auth-link-btn{background:none;border:0;padding:0;font:inherit;font-weight:600;color:var(--gold-ink);cursor:pointer;text-decoration:underline}

/* ---------- Admin dashboard (theme-aware; uses only theme variables) ---------- */
.adm-tabs{display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:14px; border-bottom:1px solid var(--line); padding-bottom:10px;}
.adm-tab{border:1px solid var(--line-strong); background:var(--panel); color:var(--ink); border-radius:6px; padding:8px 14px; font:inherit; font-weight:600; cursor:pointer;}
.adm-tab:hover{border-color:var(--navy); color:var(--head);}
.adm-tab.active{background:var(--navy); color:#fff; border-color:var(--navy);}
:root[data-theme="dark"] .adm-tab.active,:root[data-theme="midnight"] .adm-tab.active,:root[data-theme="charcoal"] .adm-tab.active,:root[data-theme="emerald"] .adm-tab.active{background:var(--gold); color:var(--navy); border-color:var(--gold);}
.adm-stats{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:12px; margin-bottom:14px;}
.adm-stat{background:var(--panel); border:1px solid var(--line-strong); border-radius:8px; padding:14px 16px;}
.adm-stat-v{font-family:'Fraunces',serif; font-size:30px; font-weight:600; color:var(--head); line-height:1.1;}
.adm-stat-l{font-size:11px; letter-spacing:.05em; text-transform:uppercase; font-weight:700; color:var(--ink); margin-top:4px;}
.adm-stat-s{font-size:11.5px; color:var(--dim); margin-top:3px;}
.adm-scroll{overflow-x:auto;}
.adm-table{width:100%; border-collapse:collapse; font-size:12.5px; color:var(--ink);}
.adm-table th{text-align:left; font-size:10.5px; letter-spacing:.05em; text-transform:uppercase; color:var(--dim); padding:8px 10px; border-bottom:2px solid var(--line-strong); white-space:nowrap;}
.adm-table td{padding:9px 10px; border-bottom:1px solid var(--line); vertical-align:middle;}
.adm-table tr:hover td{background:var(--panel-2);}
.adm-num{text-align:right !important; font-family:'IBM Plex Mono',monospace; white-space:nowrap;}
.adm-badge{display:inline-block; font-size:10px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; padding:2px 8px; border-radius:20px; border:1px solid currentColor; vertical-align:middle;}
.adm-badge.ok{color:var(--good); background:var(--good-bg);}
.adm-badge.bad{color:var(--bad); background:var(--bad-bg);}
.adm-badge.warn{color:var(--gold-ink); background:var(--gold-bg);}
.adm-chips{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px;}
.adm-chip{border:1px solid var(--line-strong); background:var(--panel); color:var(--ink); border-radius:20px; padding:6px 14px; font:inherit; font-size:12px; font-weight:600; cursor:pointer;}
.adm-chip.active{background:var(--navy); color:#fff; border-color:var(--navy);}
:root[data-theme="dark"] .adm-chip.active,:root[data-theme="midnight"] .adm-chip.active,:root[data-theme="charcoal"] .adm-chip.active,:root[data-theme="emerald"] .adm-chip.active{background:var(--gold); color:var(--navy); border-color:var(--gold);}
.adm-fb-head{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:8px;}
.adm-fb-msg{white-space:pre-wrap; word-break:break-word; line-height:1.55; color:var(--ink);}
.adm-fb-foot{display:flex; gap:10px; align-items:center; margin-top:10px; padding-top:8px; border-top:1px solid var(--line);}
.adm-links{display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px;}
.adm-link{display:flex; flex-direction:column; gap:3px; text-align:left; text-decoration:none; font:inherit; cursor:pointer; background:var(--panel-2); color:var(--ink); border:1px solid var(--line-strong); border-radius:8px; padding:11px 14px;}
.adm-link:hover{border-color:var(--navy); background:var(--gold-bg);}
.adm-link-t{font-weight:700; color:var(--head);}
.adm-link-n{font-size:11.5px; color:var(--dim); word-break:break-all;}

/* ---------- Admin analytics charts ---------- */
.adm-two{display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:14px; align-items:start;}
.adm-two .panel{margin-bottom:0;}
.adm-two{margin-bottom:14px;}
.adm-cols{display:flex; align-items:flex-end; gap:2px; height:150px; padding:6px 0 0; border-bottom:1px solid var(--line-strong);}
.adm-col{flex:1 1 0; min-width:0; height:100%; display:flex; align-items:flex-end; cursor:default;}
.adm-col:hover{background:var(--panel-2);}
.adm-col-stack{width:100%; height:100%; display:flex; align-items:flex-end; justify-content:center; gap:1px;}
.adm-col-bar{display:block; flex:1 1 0; min-width:1px; max-width:18px; border-radius:2px 2px 0 0; background:var(--navy);}
.adm-col-bar--1{background:var(--gold);}
.adm-legend{font-size:11px; font-weight:600; color:var(--dim); margin-left:10px; text-transform:none; letter-spacing:0;}
.adm-legend i{display:inline-block; width:10px; height:10px; border-radius:2px; margin:0 4px 0 10px; vertical-align:-1px; background:var(--navy);}
.adm-legend i.adm-col-bar--1{background:var(--gold);}
:root[data-theme="dark"] .adm-col-bar--0,:root[data-theme="midnight"] .adm-col-bar--0,:root[data-theme="charcoal"] .adm-col-bar--0,:root[data-theme="emerald"] .adm-col-bar--0,
:root[data-theme="dark"] .adm-legend i:not(.adm-col-bar--1),:root[data-theme="midnight"] .adm-legend i:not(.adm-col-bar--1),:root[data-theme="charcoal"] .adm-legend i:not(.adm-col-bar--1),:root[data-theme="emerald"] .adm-legend i:not(.adm-col-bar--1){background:var(--head);}
.adm-axis{display:flex; justify-content:space-between; gap:10px; font-size:11px; color:var(--dim); margin-top:6px;}
.adm-bars{display:flex; flex-direction:column; gap:8px;}
.adm-bar-row{display:grid; grid-template-columns:minmax(80px,38%) 1fr auto; gap:10px; align-items:center; font-size:12.5px;}
.adm-bar-l{overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--ink);}
.adm-bar-track{height:10px; background:var(--panel-2); border:1px solid var(--line); border-radius:20px; overflow:hidden;}
.adm-bar-fill{display:block; height:100%; background:var(--navy); border-radius:20px;}
:root[data-theme="dark"] .adm-bar-fill,:root[data-theme="midnight"] .adm-bar-fill,:root[data-theme="charcoal"] .adm-bar-fill,:root[data-theme="emerald"] .adm-bar-fill{background:var(--gold);}
.adm-bar-n{font-family:'IBM Plex Mono',monospace; font-weight:600; color:var(--ink);}
