/* UI 3.2 — Dashboard, Widgets, Charts & Notifications */
.ja-chart{display:grid;gap:10px;width:100%;min-width:0}.ja-chart>header{display:grid;gap:2px}.ja-chart>header strong{font:700 12px/1.2 var(--ja-font-display);color:var(--ja-text)}.ja-chart>header small{font-size:10px;color:var(--ja-muted)}.ja-chart-stage{position:relative;min-height:116px}.ja-chart svg{display:block;width:100%;height:100%;min-height:116px;overflow:visible}.ja-chart-grid{stroke:var(--ja-line);stroke-width:1}.ja-chart-line{fill:none;stroke:var(--ja-accent);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:900;stroke-dashoffset:900;animation:ja-chart-draw 700ms var(--ja-ease-soft) forwards}.ja-chart-area{fill:color-mix(in srgb,var(--ja-accent) 18%,transparent);opacity:0;animation:ja-chart-fade 520ms var(--ja-ease-soft) 80ms forwards}.ja-chart-point{fill:var(--ja-surface);stroke:var(--ja-accent);stroke-width:3;opacity:0;animation:ja-chart-fade 250ms var(--ja-ease-soft) 300ms forwards}.ja-chart-label{fill:var(--ja-muted);font:10px var(--ja-font)}.ja-chart-bar{fill:var(--ja-accent);transform-box:fill-box;transform-origin:center bottom;animation:ja-chart-bar-in 480ms var(--ja-ease-soft) both}.ja-chart-donut-segment{stroke:var(--ja-accent);opacity:.95;animation:ja-chart-fade 360ms var(--ja-ease-soft) both}.ja-chart-donut-segment.seg-1{stroke:var(--ja-domain-finance)}.ja-chart-donut-segment.seg-2{stroke:var(--ja-domain-sport)}.ja-chart-donut-segment.seg-3{stroke:var(--ja-domain-members)}.ja-chart-donut-segment.seg-4{stroke:var(--ja-domain-communication)}.ja-chart-donut-segment.seg-5{stroke:var(--ja-domain-commerce)}.ja-chart-donut-value{fill:var(--ja-text);font:700 26px var(--ja-font-display)}.ja-chart-donut-label{fill:var(--ja-muted);font:11px var(--ja-font)}.ja-chart-progress-track{height:8px;overflow:hidden;border-radius:999px;background:var(--ja-surface-3)}.ja-chart-progress-track i{display:block;width:var(--ja-progress,0%);height:100%;border-radius:inherit;background:var(--ja-accent);transition:width 700ms var(--ja-ease-soft)}.ja-chart-progress-meta{display:flex;justify-content:space-between;gap:10px;margin-top:8px;color:var(--ja-muted);font-size:10px}.ja-chart-progress-meta strong{color:var(--ja-text)}.ja-chart-percentage{display:grid;gap:7px;align-content:center;min-height:105px}.ja-chart-percentage>strong{font:760 30px/1 var(--ja-font-display);letter-spacing:-.04em}.ja-chart-percentage>small{color:var(--ja-muted);font-size:10px}
@keyframes ja-chart-draw{to{stroke-dashoffset:0}}@keyframes ja-chart-fade{to{opacity:1}}@keyframes ja-chart-bar-in{from{transform:scaleY(.04);opacity:.3}to{transform:scaleY(1);opacity:1}}
.ja-notification-center{position:fixed;top:var(--ja-topbar-h,48px);right:0;bottom:0;left:var(--nav3-rail,68px);z-index:340000;background:var(--ja-bg);opacity:0;transform:translateY(7px);transition:opacity var(--ja-motion-normal) var(--ja-ease-soft),transform var(--ja-motion-slow) var(--ja-ease-soft);pointer-events:none}.ja-notification-center.is-open{opacity:1;transform:none;pointer-events:auto}.ja-notif-page{height:100%;display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden}.ja-notif-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 24px 14px;border-bottom:1px solid var(--ja-line)}.ja-notif-head>div:first-child{display:grid;gap:2px}.ja-notif-head small{color:var(--ja-accent);font-size:9px;font-weight:800;letter-spacing:.09em}.ja-notif-head h1{margin:0;font:730 24px/1.1 var(--ja-font-display);letter-spacing:-.03em}.ja-notif-head p{margin:0;color:var(--ja-muted);font-size:11px}.ja-notif-head>div:last-child{display:flex;gap:7px}.ja-notif-tabs{display:flex;gap:3px;min-height:44px;padding:6px 20px;border-bottom:1px solid var(--ja-line);overflow-x:auto}.ja-notif-tab{position:relative;display:inline-flex;align-items:center;gap:6px;padding:0 10px;border:0;border-radius:8px;background:transparent;color:var(--ja-muted);font:650 12px/1 var(--ja-font);white-space:nowrap;cursor:pointer;transition:background var(--ja-motion-fast),color var(--ja-motion-fast)}.ja-notif-tab:hover{background:var(--ja-surface-2);color:var(--ja-text)}.ja-notif-tab.active{color:var(--ja-text)}.ja-notif-tab.active::after{content:"";position:absolute;right:8px;bottom:-7px;left:8px;height:2px;border-radius:2px;background:var(--ja-accent);animation:ja-tab-line var(--ja-motion-normal) var(--ja-ease-soft) both}.ja-notif-tab em{display:grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--ja-surface-3);color:var(--ja-muted);font:700 9px/1 var(--ja-font);font-style:normal}.ja-notif-layout{min-height:0;display:grid;grid-template-columns:210px minmax(0,1fr)}.ja-notif-sources{display:flex;flex-direction:column;gap:4px;overflow:auto;padding:16px 10px;border-right:1px solid var(--ja-line);background:color-mix(in srgb,var(--ja-surface) 70%,var(--ja-bg))}.ja-notif-sources h2{margin:0 8px 8px;color:var(--ja-muted);font:750 10px/1 var(--ja-font);letter-spacing:.06em;text-transform:uppercase}.ja-notif-sources button{display:grid;grid-template-columns:22px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:34px;padding:0 8px;border:0;border-radius:8px;background:transparent;color:var(--ja-muted);text-align:left;cursor:pointer;transition:background var(--ja-motion-fast),color var(--ja-motion-fast),transform var(--ja-motion-fast) var(--ja-ease-soft)}.ja-notif-sources button:hover{background:var(--ja-surface-2);color:var(--ja-text)}.ja-notif-sources button.active{background:var(--ja-surface-2);color:var(--ja-text)}.ja-notif-sources button i{color:var(--src-color);font-style:normal;text-align:center}.ja-notif-sources button span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.ja-notif-sources button em{font:700 9px/1 var(--ja-font);font-style:normal;color:var(--ja-muted)}.ja-notif-list{min-height:0;overflow:auto;padding:16px 22px 42px}.ja-notif-row{position:relative;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:12px;align-items:start;max-width:980px;margin:0 auto 7px;padding:13px 14px;border:1px solid var(--ja-line);border-radius:13px;background:var(--ja-surface);box-shadow:var(--ja-shadow-xs);transition:transform var(--ja-motion-normal) var(--ja-ease-soft),opacity var(--ja-motion-normal),background var(--ja-motion-normal),border-color var(--ja-motion-normal),height var(--ja-motion-normal)}.ja-notif-row:hover{transform:translateY(-1px);border-color:var(--ja-line-strong);box-shadow:var(--ja-shadow-sm)}.ja-notif-row.unread{background:color-mix(in srgb,var(--notif-color) 5%,var(--ja-surface));border-color:color-mix(in srgb,var(--notif-color) 24%,var(--ja-line))}.ja-notif-row.unread::before{content:"";position:absolute;left:-1px;top:12px;bottom:12px;width:3px;border-radius:3px;background:var(--notif-color)}.ja-notif-row.is-leaving{opacity:0;transform:translateX(14px) scale(.99)}.ja-notif-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:color-mix(in srgb,var(--notif-color) 11%,var(--ja-surface-2));color:var(--notif-color);font-size:16px}.ja-notif-copy{display:grid;gap:4px;min-width:0}.ja-notif-copy>div{display:flex;justify-content:space-between;gap:12px}.ja-notif-copy strong{font-size:12px}.ja-notif-copy time{color:var(--ja-muted);font-size:10px;white-space:nowrap}.ja-notif-copy p{margin:0;color:var(--ja-muted);font-size:11px;line-height:1.45}.ja-notif-copy small{color:color-mix(in srgb,var(--notif-color) 75%,var(--ja-muted));font-size:9px;text-transform:uppercase;letter-spacing:.04em}.ja-notif-actions{display:flex;gap:4px}.ja-notif-actions button{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--ja-line);border-radius:8px;background:var(--ja-surface-2);color:var(--ja-muted);cursor:pointer;transition:background var(--ja-motion-fast),color var(--ja-motion-fast),transform var(--ja-motion-fast) var(--ja-ease-soft)}.ja-notif-actions button:hover{background:var(--ja-surface-3);color:var(--ja-text);transform:translateY(-1px)}.ja-notif-empty{display:grid;place-items:center;align-content:center;gap:6px;min-height:320px;color:var(--ja-muted);text-align:center}.ja-notif-empty>span{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:color-mix(in srgb,var(--ja-success) 10%,var(--ja-surface));color:var(--ja-success);font-size:22px}.ja-notif-empty strong{color:var(--ja-text);font-size:14px}.ja-notif-empty p{margin:0;font-size:11px}
.ja-lab-widget-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.ja-lab-widget{min-height:130px;padding:14px;border:1px solid var(--ja-line);border-radius:14px;background:var(--ja-surface)}.ja-lab-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ja-lab-chart-card{min-height:220px;padding:14px;border:1px solid var(--ja-line);border-radius:14px;background:var(--ja-surface)}
@media(max-width:900px){.ja-notification-center{left:var(--nav3-rail,68px)}.ja-notif-layout{grid-template-columns:1fr}.ja-notif-sources{display:flex;flex-direction:row;border-right:0;border-bottom:1px solid var(--ja-line);overflow-x:auto}.ja-notif-sources h2{display:none}.ja-notif-sources button{grid-template-columns:18px auto auto;flex:0 0 auto}.ja-lab-widget-grid,.ja-lab-chart-grid{grid-template-columns:1fr}}
@media(max-width:650px){.ja-notification-center{top:var(--ja-topbar-h,48px);left:0}.ja-notif-head{padding:14px}.ja-notif-head .ja-button{display:none}.ja-notif-tabs{padding-inline:8px}.ja-notif-list{padding:10px 8px 30px}.ja-notif-row{grid-template-columns:36px minmax(0,1fr);padding:11px}.ja-notif-icon{width:36px;height:36px}.ja-notif-actions{grid-column:2;justify-content:flex-end}.ja-notif-copy>div{align-items:flex-start;flex-direction:column;gap:3px}}
@media(prefers-reduced-motion:reduce){.ja-chart-line,.ja-chart-area,.ja-chart-point,.ja-chart-bar,.ja-chart-donut-segment{animation:none!important;opacity:1!important;stroke-dashoffset:0!important}.ja-notification-center,.ja-notif-row{transition:none!important}}
.ja-widget-plugin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}.ja-widget-plugin-head>div{display:grid;gap:3px}.ja-widget-plugin-head small{color:var(--ja-muted);font-size:9px;font-weight:750;letter-spacing:.06em}.ja-widget-plugin-head strong{font:720 20px/1.05 var(--ja-font-display);letter-spacing:-.025em}.ja-widget-plugin-chart{min-height:96px}.ja-widget-plugin-chart.large{min-height:145px}


/* UI 3.3 — adaptive dashboard modal portal */
/* Modal portal */
.ja-dashboard-modal-portal{
  position:fixed;
  inset:0;
  z-index:520000;
  pointer-events:none;
}
.ja-dashboard-modal-portal .swat-dashboard-dialog{
  position:absolute!important;
  inset:0!important;
  display:grid!important;
  place-items:center!important;
  padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))!important;
  overflow:hidden!important;
  background:rgba(0,0,0,.44)!important;
  -webkit-backdrop-filter:blur(14px) saturate(110%)!important;
  backdrop-filter:blur(14px) saturate(110%)!important;
  pointer-events:auto;
}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal{
  width:min(620px,calc(100vw - 32px))!important;
  max-height:min(84dvh,760px)!important;
  display:grid!important;
  grid-template-rows:auto minmax(0,1fr) auto!important;
  overflow:hidden!important;
  border:1px solid color-mix(in srgb,var(--ja-line-strong) 82%,transparent)!important;
  border-radius:20px!important;
  background:color-mix(in srgb,var(--ja-bg-elevated) 97%,transparent)!important;
  box-shadow:0 28px 90px rgba(0,0,0,.48)!important;
  animation:dash-modal-in 240ms var(--dash-ease) both;
}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>header{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:16px;
  padding:18px 18px 16px!important;
  border-bottom:1px solid var(--ja-line)!important;
}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>header>div{display:grid;gap:5px}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>header small{color:var(--ja-accent);font:760 8.5px/1 var(--ja-font);letter-spacing:.085em}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>header h2{margin:0;color:var(--ja-text);font:710 20px/1.12 var(--ja-font-display,var(--ja-font));letter-spacing:-.025em}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>main{display:grid;align-content:start;gap:14px;min-height:0;padding:18px!important;overflow:auto!important;overscroll-behavior:contain}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>footer{display:flex;align-items:center;gap:8px;padding:12px 14px!important;border-top:1px solid var(--ja-line)!important;background:color-mix(in srgb,var(--ja-surface) 82%,transparent)}
.ja-dashboard-modal-portal .swat-dashboard-dialog .ja-modal>footer>span{flex:1}
.ja-dashboard-modal-portal .swat-dashboard-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.ja-dashboard-modal-portal .swat-dashboard-template{position:relative}
.ja-dashboard-modal-portal .swat-dashboard-template input{position:absolute;opacity:0;pointer-events:none}
.ja-dashboard-modal-portal .swat-dashboard-template span{
  display:grid;
  gap:4px;
  min-height:62px;
  padding:11px 12px;
  border:1px solid var(--dash-line);
  border-radius:13px;
  background:color-mix(in srgb,var(--ja-surface-2) 48%,transparent);
  cursor:pointer;
  transition:border-color 140ms ease,background 140ms ease,transform 160ms var(--dash-ease),box-shadow 160ms var(--dash-ease);
}
.ja-dashboard-modal-portal .swat-dashboard-template span:hover{transform:translateY(-1px);border-color:var(--dash-line-strong);background:color-mix(in srgb,var(--ja-surface-2) 78%,transparent)}
.ja-dashboard-modal-portal .swat-dashboard-template input:checked+span{border-color:color-mix(in srgb,var(--ja-accent) 56%,var(--ja-line));background:color-mix(in srgb,var(--ja-accent) 7%,var(--ja-surface-2));box-shadow:0 0 0 3px color-mix(in srgb,var(--ja-accent) 7%,transparent)}
.ja-dashboard-modal-portal .swat-dashboard-template b{color:var(--ja-text);font-size:10.5px;font-weight:650}
.ja-dashboard-modal-portal .swat-dashboard-template small{color:var(--ja-muted);font-size:9px;line-height:1.4}
body.ja-modal-open{overflow:hidden!important}



/* UI 3.5.0 — chart geometry hardening */
[data-module="dashboard"] .ja-chart-donut .ja-chart-stage{display:grid;place-items:center;min-height:0}
[data-module="dashboard"] .ja-chart-donut svg{width:min(100%,240px);height:min(100%,240px);aspect-ratio:1/1;margin:auto}
