/* Project card — Carbon Blue surface */ .project-card { background: var(--color-surface-container, #1e1f25); border: 1px solid var(--color-outline-variant, #444651); border-radius: 1rem; padding: 1.5rem; display: flex; flex-direction: column; gap: 0.75rem; transition: border-color 200ms ease, transform 200ms ease; } .project-card:hover, .project-card:focus-within { border-color: var(--color-primary, #b6c4ff); } .project-card:focus-within { outline: 2px solid var(--color-primary, #b6c4ff); outline-offset: 3px; } @media (prefers-reduced-motion: reduce) { .project-card { transition: none; } } .project-card__head { display: flex; align-items: center; justify-content: space-between; font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; } .project-card__type { background: var(--color-primary-12); color: var(--color-primary, #b6c4ff); padding: 0.25rem 0.5rem; border-radius: 0.25rem; font-weight: 600; } .project-card__provider { color: var(--color-on-surface-variant, #c5c5d3); } .project-card__title { font-family: var(--font-sans); font-weight: 700; font-size: 1.125rem; line-height: 1.4; margin: 0; color: var(--color-on-surface, #e3e1e9); } .project-card__title-link { color: inherit; text-decoration: none; } .project-card__title-link:hover { text-decoration: underline; } .project-card__excerpt { color: var(--color-on-surface-variant, #c5c5d3); font-size: 0.9375rem; line-height: 1.6; margin: 0; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; } .project-card__foot { margin-top: auto; padding-top: 0.75rem; border-top: 1px solid var(--color-outline-variant, #444651); display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; } .project-card__meta { display: inline-flex; gap: 0.75rem; align-items: center; color: var(--color-on-surface-variant, #c5c5d3); font-size: 0.875rem; } .project-card__actions { display: inline-flex; gap: 0.5rem; } .project-card__action { display: inline-flex; align-items: center; padding: 0.5rem 0.75rem; border-radius: 0.5rem; font-weight: 600; font-size: 0.875rem; line-height: 1.1; text-decoration: none; border: 2px solid transparent; transition: color 200ms ease, background-color 200ms ease, border-color 200ms ease; } .project-card__action--primary { background: var(--color-primary, #b6c4ff); color: var(--color-on-primary, #05297a); border-color: var(--color-primary, #b6c4ff); } .project-card__action--primary:hover { background: var(--color-primary-87); border-color: var(--color-primary-87); } .project-card__action--secondary { color: var(--color-on-surface, #e3e1e9); border-color: var(--color-outline, #8f909d); } .project-card__action--secondary:hover { border-color: var(--color-primary, #b6c4ff); color: var(--color-primary, #b6c4ff); } .project-card__action:focus-visible { outline: 2px solid var(--color-primary, #b6c4ff); outline-offset: 3px; } .stat-card { background: var(--color-surface-container, #1e1f25); border: 1px solid var(--color-outline-variant, #444651); border-radius: 1rem; padding: 1rem; display: flex; flex-direction: column; align-items: center; gap: 0.25rem; text-align: center; } .stat-card__icon { color: var(--color-on-surface-variant, #c5c5d3); } .stat-card__value { font-weight: 700; font-size: 1.5rem; color: var(--color-on-surface, #e3e1e9); } .stat-card__label { text-transform: uppercase; letter-spacing: 0.08em; font-size: 0.75rem; color: var(--color-on-surface-variant, #c5c5d3); } .meta-row { display: flex; align-items: center; justify-content: space-between; padding: 0.75rem 0; border-bottom: 1px solid var(--color-outline-variant, #444651); font-size: 0.9375rem; } .meta-row:last-child { border-bottom: 0; } .meta-row__label { color: var(--color-on-surface-variant, #c5c5d3); display: inline-flex; align-items: center; gap: 0.5rem; } .meta-row__value { color: var(--color-on-surface, #e3e1e9); font-weight: 600; } .meta-row__icon { color: var(--color-on-surface-variant, #c5c5d3); }