.dv-shell{max-width:960px;margin:0 auto;padding:24px 20px 64px;display:flex;flex-direction:column;gap:14px;color:var(--ww-text)}.dv-empty,.dv-error,.dv-loading{padding:48px;text-align:center;background:#fff;border-radius:16px;border:1px solid var(--ww-border)}.dv-error{color:#c8201a;background:#fff1f0}.dv-empty h2{margin:0 0 12px}.dv-empty button{margin-top:8px}.dv-hero{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 24px;background:#fff;border-radius:16px;border:1px solid var(--ww-border)}.dv-hero-sub{font-size:12px;font-weight:600;color:var(--ww-text-muted);letter-spacing:-.1px}.dv-hero-title{font-size:22px;font-weight:800;letter-spacing:-.4px;margin:2px 0 4px}.dv-hero-line{font-size:13px;color:var(--ww-text-muted);margin:0}.dv-hero-critical{color:#c8201a;font-weight:700}.dv-hero-actions{display:flex;gap:8px}.dv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.dv-card{background:#fff;border:1px solid var(--ww-border);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:6px;transition:all .14s var(--ww-ease)}.dv-card:hover{transform:translateY(-1px);box-shadow:0 4px 10px rgba(0,0,0,.04)}.dv-card-wide{grid-column:1/-1}.dv-card-good{border-color:#c0e7ce}.dv-card-brand{border-color:var(--ww-brand)}.dv-card-warning{border-color:#f9d976}.dv-card-critical{border-color:#f7b4b1;background:#fff8f7}.dv-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.dv-card-title{font-size:12px;font-weight:600;color:var(--ww-text-muted);margin:0;letter-spacing:-.1px}.dv-card-value{font-size:22px;font-weight:800;letter-spacing:-.4px;color:var(--ww-text);font-variant-numeric:tabular-nums;line-height:1.2}.dv-card-hint{font-size:11px;color:var(--ww-text-muted);margin:0;line-height:1.45}.dv-card-meta{font-size:12px;color:var(--ww-text-muted)}.dv-card-action{margin-top:auto;align-self:flex-start;background:none;border:none;font-size:13px;font-weight:600;color:var(--ww-brand-strong);cursor:pointer;padding:0}.dv-card-action:hover{text-decoration:underline}.dv-reserve-caption{font-size:11px;color:var(--ww-text-muted);margin:-2px 0 0}.dv-reserve-bar{height:8px;border-radius:999px;background:#eef1f5;overflow:hidden;margin:2px 0}.dv-reserve-bar-fill{display:block;height:100%;border-radius:999px;background:var(--ww-brand);transition:width .3s ease}.dv-reserve-breakdown{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:var(--ww-text-muted)}.dv-reserve-breakdown strong{color:var(--ww-text);font-weight:700}.dv-trend{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px}.dv-trend-up{background:#e7f7ee;color:#167c3f}.dv-trend-down{background:#fff1f0;color:#c8201a}.dv-trend-flat{background:var(--ww-surface);color:var(--ww-text-muted)}.dv-skeleton{height:36px;background:linear-gradient(90deg,#eef0f3,#f7f8fa 50%,#eef0f3);background-size:200% 100%;animation:dv-skeleton 1.4s linear infinite;border-radius:6px}@keyframes dv-skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.dv-notice{padding:14px 18px;background:var(--ww-brand-soft);border:1px solid #cfe1fb;border-radius:12px;font-size:13px;color:var(--ww-brand-strong);line-height:1.5}.dv-notice.subtle{background:#fffbe6;border-color:#f9d976;color:#7a5a00}.dv-notice.warn{background:#fff1f0;border-color:#ffa39e;color:#a8071a}.dv-btn{display:inline-flex;align-items:center;justify-content:center;padding:10px 18px;border-radius:10px;font-size:14px;font-weight:600;cursor:pointer;transition:all .14s var(--ww-ease);border:none;font-family:inherit}.dv-btn.primary{background:var(--ww-brand);color:#fff}.dv-btn.primary:hover{background:var(--ww-brand-strong);transform:translateY(-1px)}.dv-btn.secondary{background:#fff;border:1px solid var(--ww-border);color:var(--ww-text)}.dv-btn.secondary:hover{border-color:var(--ww-brand);color:var(--ww-brand-strong)}.dv-task-mini-list{display:flex;flex-direction:column;gap:6px;margin:4px 0 0;padding:0;list-style:none}.dv-task-mini{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--ww-surface);border-radius:10px;border-left:4px solid var(--ww-border)}.dv-task-mini-critical{border-left-color:#e53935;background:#fff8f7}.dv-task-mini-warning{border-left-color:#fbbc04;background:#fffbe6}.dv-task-mini-info{border-left-color:var(--ww-brand)}.dv-task-mini-opportunity{border-left-color:#16a34a;background:#f3fbf6}.dv-task-mini-tag{font-size:11px;font-weight:700;color:var(--ww-text-muted);white-space:nowrap}.dv-task-mini-body{flex:1;min-width:0}.dv-task-mini-body strong{font-size:14px;display:block;margin-bottom:2px}.dv-task-mini-body p{font-size:12px;color:var(--ww-text-muted);margin:0}.dv-task-mini-cta{flex-shrink:0;padding:6px 12px;background:#fff;border:1px solid var(--ww-border);border-radius:8px;font-size:12px;font-weight:600;color:var(--ww-text);cursor:pointer}.dv-task-mini-cta:hover{border-color:var(--ww-brand);color:var(--ww-brand-strong)}.dv-calendar-list{display:flex;flex-direction:column;gap:4px;margin:4px 0 0;padding:0;list-style:none}.dv-calendar-row{display:grid;grid-template-columns:80px 1fr auto;gap:12px;align-items:center;padding:10px 12px;border-radius:8px;background:var(--ww-surface);font-size:13px}.dv-calendar-critical{background:#fff8f7}.dv-calendar-warning{background:#fffbe6}.dv-calendar-dday{font-weight:700;font-family:ui-monospace,SF Mono,Menlo,monospace;color:var(--ww-text)}.dv-calendar-critical .dv-calendar-dday{color:#c8201a}.dv-calendar-warning .dv-calendar-dday{color:#b07000}.dv-calendar-title{font-weight:600}.dv-calendar-date{color:var(--ww-text-muted);font-size:12px}.dv-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px}.dv-table td,.dv-table th{padding:10px 12px;text-align:left;border-bottom:1px solid var(--ww-border)}.dv-table th{font-size:12px;font-weight:600;color:var(--ww-text-muted);background:var(--ww-surface)}.dv-num{text-align:right;font-variant-numeric:tabular-nums}.dv-num.pos{color:#167c3f}.dv-num.neg{color:#c8201a}.dv-num.bold{font-weight:700;color:var(--ww-text)}.dv-empty-inline{display:flex;align-items:center;justify-content:space-between;padding:8px 0;font-size:14px;color:var(--ww-text)}.dv-section{display:flex;flex-direction:column;gap:10px;padding:18px;border-radius:16px;border:1px solid var(--ww-border);background:#fff}.dv-section-main{border-color:var(--ww-brand);background:linear-gradient(180deg,var(--ww-brand-soft) 0,#fff 60px)}.dv-section-head{display:flex;align-items:center;gap:10px;padding-bottom:4px;border-bottom:1px dashed var(--ww-border);margin-bottom:4px}.dv-section-head h2{margin:0;font-size:15px;font-weight:800;color:var(--ww-text);letter-spacing:-.2px;flex:1}.dv-section-badge{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;background:var(--ww-surface);font-size:10px;font-weight:700;color:var(--ww-text-muted);letter-spacing:.4px;text-transform:uppercase}.dv-section-badge.main{background:var(--ww-brand);color:#fff}.dv-section-link{background:none;border:none;font-size:12px;font-weight:700;color:var(--ww-brand-strong);cursor:pointer;padding:0}.dv-section-link:hover{text-decoration:underline}.progress-widget{padding:14px 20px}.progress-step,.progress-widget-row{display:flex;align-items:center;gap:8px}.progress-step{flex-shrink:0}.progress-step strong{font-size:12px;font-weight:600;white-space:nowrap}.progress-step.done strong{color:#16a34a}.progress-step.current strong{color:var(--ww-brand-strong)}.progress-step.waiting strong{color:var(--ww-text-subtle)}.progress-dot{display:inline-block;width:14px;height:14px;border-radius:7px;border:2px solid}.progress-step.done .progress-dot{background:#16a34a;border-color:#16a34a;color:#16a34a}.progress-step.done .progress-dot:before{content:"✓";color:#fff;font-size:10px;font-weight:700;display:block;text-align:center;line-height:10px;margin-top:-1px}.progress-step.current .progress-dot{background:var(--ww-brand);border-color:var(--ww-brand);animation:pulse 1.5s infinite}.progress-step.waiting .progress-dot{background:transparent;border-color:var(--ww-border);color:var(--ww-border)}@keyframes pulse{0%,to{box-shadow:0 0 0 0 rgba(49,130,246,.4)}50%{box-shadow:0 0 0 6px rgba(49,130,246,0)}}.progress-line{flex:1;height:2px;background:var(--ww-border);border-radius:1px;min-width:24px}.progress-line.active{background:var(--ww-brand)}.ops-widget{padding:20px 20px 18px}.ops-widget>.dv-card-head{margin-bottom:6px}.ops-status{display:inline-flex;align-items:center;font-size:11px;font-weight:700;line-height:1;padding:6px 12px;border-radius:999px;white-space:nowrap;flex-shrink:0}.ops-status.ok{background:#e7f7ee;color:#167c3f}.ops-status.warn{background:#fff8e1;color:#b07000}.ops-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin-top:6px}.ops-card{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border:1px solid var(--ww-border);border-radius:12px;background:#fff;transition:all .14s var(--ww-ease)}.ops-card.ops-warn{border-color:#fbbc04;background:#fffbe6}.ops-card.ops-danger{border-color:#e53935;background:#fff8f7}.ops-card.ops-review{border-color:var(--ww-brand);background:var(--ww-brand-soft)}.ops-label{font-size:12px;font-weight:600;color:var(--ww-text-muted)}.ops-value{font-size:18px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--ww-text);line-height:1.2}.ops-card.ops-warn .ops-value{color:#b07000}.ops-card.ops-danger .ops-value{color:#c8201a}.ops-card.ops-review .ops-value{color:var(--ww-brand-strong)}.ops-desc{font-size:11px;color:var(--ww-text-muted);margin:2px 0 6px;line-height:1.4}.ops-desc-done{color:#167c3f;margin-bottom:2px}.ops-action{align-self:flex-start;background:none;border:none;font-size:12px;font-weight:600;color:var(--ww-brand-strong);cursor:pointer;padding:0}.ops-action:hover{text-decoration:underline}@media (max-width:640px){.progress-widget-row{flex-wrap:wrap;gap:6px 4px}.progress-line{min-width:12px}.progress-step strong{font-size:11px}.dv-shell{padding:16px 12px 80px;gap:12px}.dv-hero{flex-direction:column;align-items:flex-start;padding:20px}.dv-hero-title{font-size:24px}.dv-hero-actions{width:100%}.dv-hero-actions .dv-btn{flex:1}.dv-grid{grid-template-columns:1fr 1fr;gap:8px}.dv-card{padding:14px}.dv-card-value{font-size:22px}.dv-card-wide{grid-column:1/-1}.dv-table{font-size:11px}.dv-table td,.dv-table th{padding:6px 4px}.dv-calendar-row{grid-template-columns:56px 1fr auto;font-size:12px}}