
.dashboard-layout{display:grid;gap:14px}
.progress-ring{--p:60;width:150px;height:150px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) calc(var(--p)*1%),#e5ece7 0);position:relative}
.progress-ring::after{content:"";position:absolute;inset:15px;background:white;border-radius:50%}
.progress-center{position:relative;z-index:2;text-align:center}
.progress-center strong{font-size:32px;line-height:1}
.progress-center span{display:block;color:var(--muted);font-size:12px;margin-top:6px}
.progress-card-inner{display:flex;gap:18px;align-items:center}
.progress-copy{flex:1}
.motivation{margin-top:10px;padding:10px 12px;border-radius:14px;background:var(--green-soft);color:var(--green-2);font-weight:800;font-size:13px}
.carousel-dots{display:flex;justify-content:center;gap:6px;margin-top:12px}
.carousel-dot{width:7px;height:7px;border-radius:50%;background:#cbd8ce}
.carousel-dot.active{background:var(--green)}
.call-map{display:grid;grid-template-columns:repeat(10,1fr);gap:7px;margin-top:14px}
.call-dot{aspect-ratio:1;border-radius:50%;background:#dce5df;border:1px solid rgba(0,0,0,.04)}
.call-dot.success{background:var(--green)}
.call-dot.missed{background:var(--red)}
.call-dot.refusal{background:var(--orange)}
.call-dot.callback{background:var(--yellow)}
.legend{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:12px;font-size:11px;color:var(--muted)}
.legend i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}
.reminder-line{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:1px solid var(--line)}
.reminder-line:last-child{border-bottom:0}
.reminder-count{font-size:22px;font-weight:900}
.funnel{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:12px}
.funnel-step{text-align:center;background:var(--surface-2);border-radius:13px;padding:10px 6px}
.funnel-step strong{display:block;font-size:20px}
.funnel-step span{font-size:10px;color:var(--muted)}
.delta.good{color:var(--green)}
.delta.bad{color:var(--red)}
.tree-wrap{display:flex;align-items:center;gap:16px}
.tree-visual{width:108px;height:108px;border-radius:24px;background:linear-gradient(180deg,#e7f8ed,#f8fbf9);display:grid;place-items:center;font-size:64px}
.tree-progress{height:9px;border-radius:999px;background:#e5ece7;overflow:hidden;margin:9px 0}
.tree-progress>div{height:100%;background:var(--green);border-radius:inherit}
.call-cta{background:linear-gradient(135deg,#159447,#0f7838);color:white;border:0;box-shadow:0 18px 45px rgba(21,148,71,.24)}
.call-cta h2{font-size:28px;margin-bottom:6px}
.call-cta p{opacity:.88;margin-bottom:16px}
.call-cta .btn{background:white;color:var(--green-2)}

/* v1.3 dashboard polish */
#progress-carousel{min-height:260px;display:flex;flex-direction:column;justify-content:space-between}
.progress-card-inner{min-height:190px}
.progress-copy{display:flex;flex-direction:column;justify-content:center}
#reminders-card{min-height:150px}
#conversion-card{min-height:310px}
#tree-card{min-height:250px;overflow:hidden}
.tree-wrap{align-items:stretch}
.tree-visual{width:46%;min-width:138px;height:190px;border-radius:20px;overflow:hidden;background:#eef7f0;padding:0}
.tree-visual .tree-scene{width:100%;height:100%}
.funnel-step{min-height:68px;display:flex;flex-direction:column;justify-content:center}
.funnel-step strong{font-variant-numeric:tabular-nums}
.call-map{grid-template-columns:repeat(10,minmax(0,1fr))}
.call-cta{min-height:180px;text-align:left;display:flex;flex-direction:column;justify-content:center}
@media(max-width:420px){
  .progress-ring{width:132px;height:132px}
  .progress-card-inner{gap:12px}
  .progress-center strong{font-size:28px}
  .tree-wrap{gap:12px}
  .tree-visual{min-width:125px;height:175px}
  .funnel{gap:5px}
  .funnel-step{padding:8px 4px}
}

/* ===== v1.4 dashboard mobile layout ===== */
.dashboard-layout{display:flex!important;flex-direction:column!important;gap:14px!important}
.dashboard-layout>.stack{width:100%}
#progress-carousel{min-height:0!important}
.progress-card-inner{min-height:0!important;display:grid!important;grid-template-columns:126px minmax(0,1fr)!important;gap:14px!important}
.progress-ring{width:126px!important;height:126px!important}
#reminders-card,#conversion-card,#tree-card{min-height:0!important}
.call-cta{min-height:150px!important}
.funnel{grid-template-columns:repeat(4,minmax(0,1fr))!important}
.funnel-step{min-width:0!important;padding:8px 3px!important}
.funnel-step strong{font-size:18px!important}
.funnel-step span{font-size:9px!important;white-space:normal!important}
.tree-wrap{display:grid!important;grid-template-columns:148px minmax(0,1fr)!important;gap:14px!important;align-items:center!important}
.tree-visual{width:148px!important;min-width:0!important;height:158px!important;padding:0!important;border-radius:18px!important}
.tree-visual .tree-scene{width:100%!important;height:100%!important}
.tree-visual img{object-fit:cover!important;width:100%!important;height:100%!important}
@media(max-width:360px){
  .progress-card-inner{grid-template-columns:112px minmax(0,1fr)!important;gap:10px!important}
  .progress-ring{width:112px!important;height:112px!important}
  .tree-wrap{grid-template-columns:125px minmax(0,1fr)!important;gap:10px!important}
  .tree-visual{width:125px!important;height:145px!important}
}

/* v1.5 tree presentation */
.tree-visual{background:transparent!important}
.tree-visual .tree-scene{box-shadow:inset 0 0 0 1px rgba(34,102,61,.05)}
#progress-carousel{touch-action:pan-y;user-select:none;cursor:grab}
#progress-carousel.is-dragging{cursor:grabbing}

/* v2.8.1 smooth progress carousel */
.progress-slides-viewport{width:100%;overflow:hidden;min-width:0}
.progress-slides-track{display:flex;width:100%;will-change:transform;transform:translate3d(0,0,0)}
.progress-slide{flex:0 0 100%;width:100%;min-width:0}
#progress-carousel.is-dragging .progress-slides-track{cursor:grabbing}
.carousel-dot{cursor:pointer;transition:transform .22s ease,background-color .22s ease}
.carousel-dot.active{transform:scale(1.25)}

/* v2.8.2 dashboard spacing */
#progress-carousel{min-height:218px!important;padding-top:19px;padding-bottom:18px}
#progress-carousel .progress-slide>.card-title{margin-bottom:14px}
#progress-carousel .progress-card-inner{min-height:134px!important}
#progress-carousel .carousel-dots{margin-top:15px}
