/* Dashboard animations and chart styling. Colors follow the entity: sales orange, profit green, cost navy, expense pink. */
.dv-reveal{animation:dvRise .6s cubic-bezier(.2,.8,.2,1) backwards;animation-delay:calc(var(--i,0)*70ms)}
@keyframes dvRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.dv-lift{transition:transform .2s,box-shadow .2s}
.dv-lift:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(23,32,43,.08)}
.dv-row{margin-bottom:18px}
.dv-recent{margin-bottom:18px}
.dv-item{animation:dvRise .5s cubic-bezier(.2,.8,.2,1) backwards;animation-delay:calc(var(--i,0)*50ms + 500ms)}

/* metric cards */
.metric-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;min-height:26px}
.dv-spark{width:84px;height:26px;flex:0 0 auto;overflow:visible}

/* shared line drawing */
.dv-line{fill:none;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0;animation:dvDraw 1.3s .35s cubic-bezier(.4,0,.2,1) backwards}
@keyframes dvDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}

/* line chart */
.dv-chart{margin-top:8px}
.dv-legend{display:flex;gap:18px;font-size:12px;color:#52616a;margin-bottom:8px}
.dv-legend span{display:inline-flex;align-items:center;gap:7px}
.dv-legend i,.dv-tip i,.dv-split-legend i{display:inline-block;width:10px;height:10px;border-radius:3px}
.dv-scroll{overflow-x:auto;overflow-y:hidden}
.dv-plot{position:relative;min-width:480px}
.dv-plot svg{display:block;width:100%;height:auto;touch-action:pan-y}
.dv-grid{stroke:#e8ebee;stroke-width:1}
.dv-grid.zero{stroke:#c9d0d4}
.dv-axis{font:500 11px 'DM Sans',sans-serif;fill:#84909b}
.dv-area{opacity:0;animation:dvFade .9s 1s ease forwards}
@keyframes dvFade{to{opacity:1}}
.dv-dot{fill:#fff;stroke-width:2.5;opacity:0;transform-box:fill-box;transform-origin:center;animation:dvPop .4s var(--d,1.2s) cubic-bezier(.3,1.6,.5,1) forwards;transition:r .15s}
.dv-dot.sales{fill:#0f9d9a;stroke:#fff}
.dv-dot.profit{fill:#5e9b76;stroke:#fff}
.dv-dot.hot{r:6}
@keyframes dvPop{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}
.dv-cross{stroke:#84909b;stroke-width:1;stroke-dasharray:3 3;opacity:0;transition:opacity .15s;pointer-events:none}
.dv-cross.on{opacity:1}
.dv-tip{position:absolute;z-index:2;min-width:170px;padding:10px 12px;border-radius:10px;background:#fff;border:1px solid #e2e6e3;box-shadow:0 12px 30px rgba(23,32,43,.14);font-size:12px;color:#17202b;pointer-events:none;transform:translate(12px,0);display:grid;gap:5px}
.dv-tip[hidden]{display:none}
.dv-tip.flip{transform:translate(calc(-100% - 12px),0)}
.dv-tip b{font:800 12px Manrope,sans-serif}
.dv-tip span{display:flex;align-items:center;gap:7px;color:#52616a}
.dv-tip strong{margin-left:auto;padding-left:12px;color:#17202b}
.dv-table{margin-top:10px;font-size:12px;color:#52616a}
.dv-table summary{cursor:pointer;font-weight:700;color:#84909b}
.dv-table table{width:100%;border-collapse:collapse;margin-top:8px}
.dv-table th,.dv-table td{text-align:left;padding:7px 8px;border-bottom:1px solid #e8ebee}
.dv-table th{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#84909b}

/* margin ring */
.dv-ring{position:relative;width:min(100%,190px);margin:14px auto 4px}
.dv-ring svg{display:block;width:100%;height:auto}
.dv-ring-track{fill:none;stroke:#edf1f0;stroke-width:12}
.dv-ring-bar{fill:none;stroke:#5e9b76;stroke-width:12;stroke-linecap:round;stroke-dashoffset:var(--o);animation:dvRing 1.4s .4s cubic-bezier(.4,0,.2,1) backwards}
@keyframes dvRing{from{stroke-dashoffset:var(--c)}to{stroke-dashoffset:var(--o)}}
.dv-ring-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.dv-ring-text strong{font:800 26px Manrope,sans-serif;letter-spacing:-.8px}
.dv-ring-text span{color:#84909b;font-size:11px;text-transform:uppercase;letter-spacing:.1em}

/* sales split */
.dv-split{display:flex;gap:2px;height:22px;margin:18px 0 20px}
.dv-split i{display:block;min-width:4px;border-radius:4px;transform-origin:left;animation:dvGrowX .9s calc(var(--i)*120ms + 400ms) cubic-bezier(.2,.8,.2,1) backwards}
@keyframes dvGrowX{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.dv-split-legend{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.dv-split-legend li{display:flex;align-items:center;gap:9px;font-size:13px;color:#52616a}
.dv-split-legend strong{margin-left:auto;color:#17202b}
.dv-split-legend em{width:38px;text-align:right;font-style:normal;color:#84909b;font-size:12px}

/* branch bars */
.dv-bars{display:grid;gap:16px;margin-top:16px}
.dv-bar-head{display:flex;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:7px}
.dv-bar-head span{color:#17202b;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dv-bar-head strong{color:#52616a;font-weight:600;white-space:nowrap}
.dv-bar-track{height:10px;border-radius:5px;background:#f1f4f3;overflow:hidden}
.dv-bar-track i{display:block;height:100%;border-radius:0 5px 5px 0;background:#234d62;transform-origin:left;animation:dvGrowX 1s calc(var(--i)*100ms + 450ms) cubic-bezier(.2,.8,.2,1) backwards}

@media(prefers-reduced-motion:reduce){
  .dv-reveal,.dv-item,.dv-line,.dv-dot,.dv-ring-bar,.dv-split i,.dv-bar-track i,.dv-area{animation-duration:.001s!important;animation-delay:0s!important}
  .dv-dot,.dv-area{opacity:1}
}
