// ── 대시보드 ────────────────────────────────────── .dashboard { width: 100%; max-width: 960px; // ── 재무 요약 카드 ── &__cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; margin-bottom: 32px; } &__card { border: 1px solid hsl(var(--border)); border-radius: 8px; padding: 20px; background: hsl(var(--background)); display: flex; flex-direction: column; gap: 6px; } &__card-icon { font-size: 1.25rem; color: hsl(var(--muted-foreground)); margin-bottom: 4px; } &__card-label { font-size: 0.8125rem; color: hsl(var(--muted-foreground)); } &__card-value { font-size: 1.5rem; font-weight: 700; color: hsl(var(--foreground)); &--primary { color: hsl(var(--primary)); } &--danger { color: var(--color-danger); } } // ── 섹션 ── &__section { margin-bottom: 32px; } &__section-title { font-size: 1.125rem; font-weight: 600; color: hsl(var(--foreground)); margin-bottom: 8px; } &__section-desc { font-size: 0.8125rem; color: hsl(var(--muted-foreground)); margin-bottom: 16px; } // ── 위젯 URL ── &__widget-list { display: flex; flex-direction: column; gap: 12px; } &__widget-item { border: 1px solid hsl(var(--border)); border-radius: 8px; padding: 16px 20px; background: hsl(var(--background)); display: flex; align-items: center; gap: 16px; } &__widget-info { display: flex; flex-direction: column; gap: 2px; min-width: 120px; flex-shrink: 0; } &__widget-label { font-size: 0.9375rem; font-weight: 600; color: hsl(var(--foreground)); } &__widget-desc { font-size: 0.75rem; color: hsl(var(--muted-foreground)); } &__widget-url { flex: 1; width: 0; min-width: 0; overflow: hidden; } &__widget-url-text { display: block; font-size: 0.8125rem; color: hsl(var(--muted-foreground)); background: hsl(var(--muted)); padding: 6px 10px; border-radius: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-family: 'Fira Code', 'Consolas', monospace; } &__widget-actions { display: flex; gap: 6px; flex-shrink: 0; } &__widget-btn { display: inline-flex; align-items: center; gap: 4px; padding: 6px 12px; border: 1px solid hsl(var(--border)); border-radius: calc(var(--radius) - 2px); font-size: 0.8125rem; font-weight: 500; cursor: pointer; background: hsl(var(--background)); color: hsl(var(--foreground)); transition: background-color 0.15s; white-space: nowrap; &:hover { background: hsl(var(--accent)); } &--copied { background: hsl(var(--primary)); color: hsl(var(--primary-foreground)); border-color: hsl(var(--primary)); } &--open { color: hsl(var(--primary)); border-color: hsl(var(--primary)); &:hover { background: hsl(var(--primary) / 0.1); } } } // ── 최근 후원 ── &__donation-list { display: flex; flex-direction: column; gap: 8px; } &__donation-item { border: 1px solid hsl(var(--border)); border-radius: 8px; padding: 14px 20px; background: hsl(var(--background)); } &__donation-info { display: flex; justify-content: space-between; align-items: center; margin-bottom: 4px; } &__donation-name { font-size: 0.9375rem; font-weight: 600; color: hsl(var(--foreground)); } &__donation-amount { font-size: 0.9375rem; font-weight: 700; color: hsl(var(--primary)); } &__donation-msg { font-size: 0.8125rem; color: hsl(var(--foreground)); margin-bottom: 4px; line-height: 1.4; } &__donation-time { font-size: 0.75rem; color: hsl(var(--muted-foreground)); } &__empty { border: 1px solid hsl(var(--border)); border-radius: 8px; padding: 40px 24px; text-align: center; color: hsl(var(--muted-foreground)); font-size: 0.875rem; } // ── 반응형 ── @media (max-width: 768px) { &__cards { grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 24px; } &__card { padding: 14px; } &__card-value { font-size: 1.25rem; } &__section { margin-bottom: 24px; } &__section-title { font-size: 1rem; } &__widget-item { flex-direction: column; align-items: flex-start; gap: 10px; padding: 14px 16px; } &__widget-info { min-width: 0; width: 100%; } &__widget-url { width: 100%; } &__widget-url-text { font-size: 0.75rem; padding: 8px 10px; } &__widget-actions { width: 100%; .dashboard__widget-btn { flex: 1; justify-content: center; padding: 10px 12px; } } &__donation-item { padding: 12px 14px; } &__donation-name { font-size: 0.875rem; } &__donation-amount { font-size: 0.875rem; } &__donation-msg { font-size: 0.75rem; } &__empty { padding: 28px 16px; } } @media (max-width: 480px) { &__cards { grid-template-columns: 1fr; } &__card-label { font-size: 0.75rem; } &__card-value { font-size: 1.125rem; } &__widget-list { gap: 10px; } &__widget-item { padding: 12px 14px; gap: 8px; } &__widget-label { font-size: 0.875rem; } &__widget-desc { font-size: 0.6875rem; } &__donation-list { gap: 6px; } &__donation-info { flex-direction: column; align-items: flex-start; gap: 2px; margin-bottom: 6px; } &__donation-time { font-size: 0.6875rem; } } }