/* dashboard-executive-v21
   목업 기반 종합 대시보드: 히어로(마스코트) + 통계4 + 알림 + 목표/주간그래프 2단 + 바로가기4
   dz- 네임스페이스. 본문 중앙 1320px. 맨 마지막 로드. */

:root{
  --dz-primary:#7c5cfc;
  --dz-primary-deep:#6b4ef0;
  --dz-lilac:#efe9ff;
  --dz-lilac-soft:#f6f3ff;
  --dz-ink:#2c2550;
  --dz-sub:#8b85a8;
  --dz-line:#ece7fb;
  --dz-card:#ffffff;
  --dz-shadow:0 10px 30px rgba(108,78,240,.07);
  --dz-shadow-hover:0 16px 36px rgba(108,78,240,.14);
  --dz-up:#16a34a;
  --dz-down:#e5484d;
  --dz-warn-bg:#fff8e8;
  --dz-warn-line:#ffe4a8;
  --dz-warn-ink:#9a6b00;
}

.dashboard-page.dashboard-executive{
  max-width:1320px!important;
  margin:0 auto!important;
  width:100%;
  display:flex;
  flex-direction:column;
  gap:16px!important;
}

/* ========== BLOCK 1 · 히어로 ========== */
.dz-hero{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) clamp(220px,26%,320px);
  align-items:center;
  gap:20px;
  padding:30px 34px;
  border-radius:26px;
  background:linear-gradient(120deg,#efe9ff 0%,#f3eeff 48%,#e9e4ff 100%);
  overflow:hidden;
}
.dz-hero-body{min-width:0;z-index:1;}
.dz-hero-title{
  margin:0 0 16px;
  color:var(--dz-ink);
  font-size:clamp(22px,2.4vw,30px);
  font-weight:990;
  letter-spacing:-.04em;
  line-height:1.28;
}
.dz-hero-meta{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:8px 18px;
  margin-bottom:22px;
}
.dz-hero-recent, .dz-hero-accuracy{
  display:inline-flex;
  align-items:center;
  gap:7px;
  color:var(--dz-sub);
  font-size:0.9375rem;
  font-weight:800;
}
.dz-hero-meta b{color:var(--dz-ink);font-weight:900;}
.dz-hero-ico{font-size:1rem;filter:saturate(1.1);}
.dz-hero-accuracy{position:relative;padding-left:19px;}
.dz-hero-accuracy::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:1px;height:15px;background:#d6cef2;
}
.dz-hero-actions{display:flex;flex-wrap:wrap;gap:12px;}
.dz-hero-btn{
  display:inline-flex;align-items:center;gap:8px;
  height:50px;padding:0 26px;border-radius:15px;
  font-size:0.9375rem;font-weight:900;text-decoration:none;
  transition:transform .15s ease,box-shadow .15s ease,background .15s ease;
}
.dz-hero-btn.primary{
  background:linear-gradient(135deg,#7c5cfc,#6b4ef0);
  color:#fff;box-shadow:0 12px 24px rgba(108,78,240,.28);
}
.dz-hero-btn.primary:hover{transform:translateY(-2px);box-shadow:0 16px 30px rgba(108,78,240,.36);}
.dz-hero-btn.ghost{
  background:rgba(255,255,255,.72);color:var(--dz-primary-deep);
  border:1.5px solid #d9cffb;
}
.dz-hero-btn.ghost:hover{background:#fff;transform:translateY(-2px);}
.dz-hero-btn span{font-size:0.8em;}

.dz-hero-mascot{
  position:relative;z-index:1;
  display:flex;align-items:flex-end;justify-content:center;
  align-self:stretch;min-height:150px;
}
.dz-hero-mascot img{
  width:auto;height:100%;max-height:200px;object-fit:contain;
  filter:drop-shadow(0 12px 18px rgba(108,78,240,.16));
}
.dz-hero-bubble{
  position:absolute;top:6px;right:2px;z-index:2;
  padding:6px 13px;border-radius:14px 14px 14px 3px;
  background:#fff;color:var(--dz-primary-deep);
  font-size:0.8125rem;font-weight:900;
  box-shadow:0 6px 14px rgba(108,78,240,.16);
}
/* 히어로 우상단 장식 반짝이 */
.dz-hero::before, .dz-hero::after{
  content:"✦";position:absolute;color:#c9bcf7;opacity:.7;pointer-events:none;
}
.dz-hero::before{top:24px;left:50%;font-size:14px;}
.dz-hero::after{bottom:30px;right:34%;font-size:10px;}

/* ========== BLOCK 2 · 통계 4카드 ========== */
.dz-stat-grid{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;
}
.dz-stat-card{
  display:flex;align-items:center;gap:14px;
  padding:18px 20px;border-radius:18px;
  background:var(--dz-card);border:1px solid var(--dz-line);
  box-shadow:var(--dz-shadow);text-decoration:none;
  transition:transform .15s ease,box-shadow .15s ease;
}
.dz-stat-card:hover{transform:translateY(-3px);box-shadow:var(--dz-shadow-hover);}
.dz-stat-ico{
  flex:0 0 auto;width:46px;height:46px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;font-size:1.35rem;
}
.dz-stat-ico.ico-time{background:#efe9ff;}
.dz-stat-ico.ico-mission{background:#fff3d6;}
.dz-stat-ico.ico-accuracy{background:#dcf7ec;}
.dz-stat-ico.ico-streak{background:#ffe6db;}
.dz-stat-body{display:flex;flex-direction:column;gap:2px;min-width:0;}
.dz-stat-label{color:var(--dz-sub);font-size:0.8125rem;font-weight:800;}
.dz-stat-card b{color:var(--dz-ink);font-size:1.6rem;font-weight:990;letter-spacing:-.03em;line-height:1.1;}
.dz-stat-sub{color:var(--dz-sub);font-size:0.75rem;font-weight:700;}
.dz-stat-sub-trend.up{color:var(--dz-up);}
.dz-stat-sub-trend.down{color:var(--dz-down);}

/* ========== BLOCK 3 · 알림 ========== */
.dz-alerts{display:flex;flex-direction:column;gap:10px;}
.dz-alert-item{
  display:flex;align-items:center;gap:12px;
  padding:14px 18px;border-radius:15px;
  background:var(--dz-warn-bg);border:1px solid var(--dz-warn-line);
}
.dz-alert-ico{font-size:1.1rem;flex:0 0 auto;}
.dz-alert-txt{flex:1;color:var(--dz-warn-ink);font-size:0.9375rem;font-weight:820;min-width:0;}
.dz-alert-cta{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;
  padding:8px 15px;border-radius:11px;background:#fff;
  color:var(--dz-primary-deep);border:1.5px solid #e2d8fb;
  font-size:0.8125rem;font-weight:900;text-decoration:none;white-space:nowrap;
  transition:background .14s ease,transform .14s ease;
}
.dz-alert-cta em{font-style:normal;font-size:1.05em;}
.dz-alert-cta:hover{background:var(--dz-lilac);transform:translateY(-1px);}

/* ========== BLOCK 4 · 목표 / 주간그래프 2단 ========== */
.dz-duo{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;}
.dz-panel{
  padding:22px 24px!important;border-radius:20px!important;
  background:var(--dz-card);border:1px solid var(--dz-line)!important;
  box-shadow:var(--dz-shadow)!important;min-height:0!important;
}
.dz-panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;}
.dz-panel-head h2{margin:0;color:var(--dz-ink);font-size:1.0625rem;font-weight:950;letter-spacing:-.02em;}
.dz-panel-more{color:var(--dz-sub);font-size:0.8125rem;font-weight:800;text-decoration:none;}
.dz-panel-more:hover{color:var(--dz-primary-deep);}
.dz-panel-unit{color:var(--dz-sub);font-size:0.75rem;font-weight:700;}
.dz-goal-reset{margin-top:12px;font-size:0.8125rem;}

/* 주간 그래프 */
.dz-week-chart{display:flex;align-items:flex-end;justify-content:space-between;gap:8px;height:170px;padding:8px 0 0;}
.dz-wk-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;height:100%;}
.dz-wk-val{color:var(--dz-sub);font-size:0.75rem;font-weight:800;height:14px;}
.dz-wk-bar-track{flex:1;width:100%;max-width:34px;display:flex;align-items:flex-end;justify-content:center;}
.dz-wk-bar{width:100%;border-radius:8px 8px 4px 4px;background:#d9cffb;min-height:4px;transition:height .4s ease;}
.dz-wk-bar.today{background:linear-gradient(180deg,#7c5cfc,#6b4ef0);}
.dz-wk-label{color:var(--dz-sub);font-size:0.8125rem;font-weight:800;}
.dz-wk-label.today{color:var(--dz-primary-deep);font-weight:950;}
.dz-week-foot{
  display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;
  margin-top:16px;padding:12px;border-radius:13px;background:var(--dz-lilac-soft);
  color:var(--dz-sub);font-size:0.875rem;font-weight:800;
}
.dz-week-foot b{color:var(--dz-ink);font-weight:950;}
.dz-week-foot b.dz-wk-rate{color:var(--dz-primary-deep);}
.dz-week-foot i{width:1px;height:13px;background:#d6cef2;display:inline-block;}

/* ========== BLOCK 5 · 바로가기 4카드 ========== */
.dz-links{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;}
.dz-link-card{
  position:relative;display:flex;align-items:flex-start;gap:14px;
  padding:20px;border-radius:18px;
  background:var(--dz-card);border:1px solid var(--dz-line);
  box-shadow:var(--dz-shadow);text-decoration:none;
  transition:transform .15s ease,box-shadow .15s ease;
}
.dz-link-card:hover{transform:translateY(-3px);box-shadow:var(--dz-shadow-hover);}
.dz-link-ico{
  flex:0 0 auto;width:44px;height:44px;border-radius:13px;
  display:flex;align-items:center;justify-content:center;font-size:1.3rem;
}
.dz-link-ico.ico-village{background:#efe9ff;}
.dz-link-ico.ico-mission{background:#fff3d6;}
.dz-link-ico.ico-ai{background:#dcf7ec;}
.dz-link-ico.ico-report{background:#e5edff;}
.dz-link-text{display:flex;flex-direction:column;gap:4px;min-width:0;}
.dz-link-text b{color:var(--dz-ink);font-size:0.9375rem;font-weight:950;}
.dz-link-text small{color:var(--dz-sub);font-size:0.8125rem;font-weight:700;line-height:1.45;}
.dz-link-arrow{
  position:absolute;right:18px;bottom:16px;
  color:#c3b8ef;font-size:1.1rem;font-weight:900;
  transition:transform .15s ease,color .15s ease;
}
.dz-link-card:hover .dz-link-arrow{transform:translateX(4px);color:var(--dz-primary-deep);}

/* ========== 반응형 ========== */
@media (max-width:1080px){
  .dz-stat-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dz-links{grid-template-columns:repeat(2,minmax(0,1fr));}
  .dz-duo{grid-template-columns:1fr;}
}
@media (max-width:760px){
  .dz-hero{grid-template-columns:1fr;padding:24px 22px;}
  .dz-hero-mascot{display:none;}
  .dz-hero-actions .dz-hero-btn{flex:1;justify-content:center;}
  .dz-stat-card b{font-size:1.4rem;}
  .dz-alert-item{flex-wrap:wrap;}
}
@media (prefers-reduced-motion:reduce){
  .dz-stat-card,.dz-link-card,.dz-hero-btn,.dz-wk-bar{transition:none;}
}
