/* static/css/dashboard.css — Mobile-first */ .dash-scroll { flex: 1; overflow-y: auto; padding: var(--sp-4); padding-bottom: calc(var(--sp-4) + env(safe-area-inset-bottom, 0px)); } /* ── Welcome ── */ .dash-welcome { margin-bottom: var(--sp-5); } .dash-welcome h1 { font-size: 22px; font-weight: 700; margin-bottom: var(--sp-1); color: var(--text-1); } .dash-welcome p { font-size: 13px; color: var(--text-2); } /* ── Quick Actions Grid ── */ .dash-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--sp-3); margin-bottom: var(--sp-5); } .dash-card { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--r-lg); padding: var(--sp-4); cursor: pointer; transition: transform 0.15s ease, border-color 0.15s ease; display: flex; flex-direction: column; gap: var(--sp-2); min-height: 100px; position: relative; overflow: hidden; } .dash-card:active { transform: scale(0.97); } .dash-card:hover { border-color: var(--accent-dim); } .dash-card-icon { width: 40px; height: 40px; background: var(--accent-dim); border-radius: var(--r-md); display: flex; align-items: center; justify-content: center; color: var(--accent); font-size: 18px; flex-shrink: 0; } .dash-card h3 { font-size: 14px; font-weight: 600; color: var(--text-1); margin: 0; } .dash-card p { font-size: 12px; color: var(--text-3); margin: 0; line-height: 1.4; } /* ── Widget Card ── */ .dash-widget { background: var(--bg-elevated); border: 1px solid var(--border); border-radius: var(--r-lg); padding: var(--sp-4); margin-bottom: var(--sp-4); } .widget-title { font-size: 13px; font-weight: 600; color: var(--text-2); margin-bottom: var(--sp-4); display: flex; justify-content: space-between; align-items: center; } .widget-action { font-size: 11px; color: var(--accent); cursor: pointer; background: none; border: none; font-weight: 600; padding: var(--sp-1) var(--sp-2); border-radius: var(--r-sm); } .widget-action:active { background: var(--accent-dim); } /* ── Progress Bars ── */ .stat-row { margin-bottom: var(--sp-3); } .stat-row:last-child { margin-bottom: 0; } .stat-label { display: flex; justify-content: space-between; font-size: 12px; color: var(--text-2); margin-bottom: 6px; } .stat-bar { width: 100%; height: 6px; background: rgba(255,255,255,0.06); border-radius: var(--r-full); overflow: hidden; } .stat-fill { height: 100%; background: var(--accent); border-radius: var(--r-full); transition: width 0.6s ease; } /* ── Recent Files ── */ .file-row { display: flex; align-items: center; gap: var(--sp-3); padding: var(--sp-2) 0; border-bottom: 1px solid var(--divider); cursor: pointer; min-height: var(--touch-min); } .file-row:last-child { border-bottom: none; } .file-row:active { opacity: 0.7; } .file-icon { width: 36px; height: 36px; background: var(--accent-dim); border-radius: var(--r-sm); display: flex; align-items: center; justify-content: center; color: var(--accent); font-size: 14px; flex-shrink: 0; } .file-meta h4 { font-size: 13px; font-weight: 500; color: var(--text-1); margin: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 180px; } .file-meta p { font-size: 11px; color: var(--text-3); margin: 0; } /* ── Responsive ── */ @media (min-width: 769px) { .dash-scroll { padding: var(--sp-8); max-width: 1200px; margin: 0 auto; width: 100%; } .dash-welcome h1 { font-size: 28px; } .dash-grid { gap: var(--sp-4); } .dash-card { padding: var(--sp-5); min-height: 120px; } .dash-card h3 { font-size: 15px; } } /* ── Light ── */ :root.light .dash-card { background: var(--bg-surface); border-color: var(--border); } :root.light .dash-widget { background: var(--bg-surface); } :root.light .stat-bar { background: rgba(0,0,0,0.06); }