@import "tailwindcss"; :root { --color-sky-50: #f0f9ff; --color-sky-100: #e0f2fe; --color-sky-200: #bae6fd; --color-sky-300: #7dd3fc; --color-sky-400: #38bdf8; --color-sky-500: #0ea5e9; --color-sky-600: #0284c7; --color-sky-700: #0369a1; --color-sky-800: #075985; --color-sky-900: #0c4a6e; } body { background-color: var(--color-sky-50); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .card { background-color: white; border-radius: 0.75rem; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); border: 1px solid #e2e8f0; overflow: hidden; transition: box-shadow 0.2s ease; } .card:hover { box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); } .btn-primary { padding: 1rem 1.5rem; background-color: var(--color-sky-500); color: white; border-radius: 0.75rem; font-weight: 500; transition: background-color 0.2s ease, box-shadow 0.2s ease; white-space: nowrap; } .btn-primary:hover { background-color: var(--color-sky-600); } .btn-primary:focus { outline: none; box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.3); } .input-primary { padding: 1rem 1.25rem; border: 1px solid #cbd5e1; border-radius: 0.75rem; transition: all 0.2s ease; } .input-primary:focus { outline: none; border-color: var(--color-sky-500); box-shadow: 0 0 0 3px rgba(14, 165, 233, 0.1); } .input-primary::placeholder { color: #94a3b8; } .avatar { width: 3.5rem; height: 3.5rem; border-radius: 50%; object-fit: cover; flex-shrink: 0; box-shadow: 0 0 0 2px #e0f2fe, 0 0 0 4px white; } .avatar-fallback { width: 3.5rem; height: 3.5rem; border-radius: 50%; background: linear-gradient(135deg, var(--color-sky-400), var(--color-sky-600)); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.25rem; font-weight: 700; flex-shrink: 0; box-shadow: 0 0 0 2px #e0f2fe, 0 0 0 4px white; } .avatar-fallback-sm { width: 3rem; height: 3rem; border-radius: 50%; background: linear-gradient(135deg, var(--color-sky-400), var(--color-sky-600)); display: flex; align-items: center; justify-content: center; color: white; font-size: 1.125rem; font-weight: 700; flex-shrink: 0; box-shadow: 0 0 0 2px #e0f2fe; } .loading-spinner { animation: spin 1s linear infinite; border-radius: 50%; border: 2px solid #e2e8f0; border-top-color: var(--color-sky-500); } @keyframes spin { to { transform: rotate(360deg); } } .link-card { display: block; border: 1px solid #e2e8f0; border-radius: 0.5rem; overflow: hidden; transition: all 0.2s ease; } .link-card:hover { border-color: #bae6fd; background-color: #f8fafc; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); } .image-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.5rem; border-radius: 0.5rem; overflow: hidden; margin-top: 1rem; } .image-grid img { width: 100%; height: auto; object-fit: cover; transition: transform 0.2s ease; } .image-grid img:hover { transform: scale(1.05); } .label-badge { display: inline-flex; align-items: center; padding: 0.125rem 0.625rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; background-color: #fef3c7; color: #b45309; border: 1px solid #fcd34d; } .post-content { color: #334155; font-size: 1.125rem; line-height: 1.75; white-space: pre-wrap; word-break: break-word; } .external-link-preview { padding: 1rem; } .external-link-title { font-weight: 600; color: #0f172a; font-size: 1rem; margin-bottom: 0.25rem; } .external-link-desc { font-size: 0.875rem; color: #475569; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } @media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }