| @tailwind base; |
| @tailwind components; |
| @tailwind utilities; |
|
|
| @layer base { |
| html { |
| font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif; |
| } |
| body { |
| @apply bg-ui-bg text-ui-text; |
| |
| overflow-y: scroll; |
| -webkit-overflow-scrolling: touch; |
| } |
|
|
| |
|
|
|
|
| |
| html.is-chrome .safari-stable-form { |
| background: #ffffff; |
| border: 1px solid #e5e7eb; |
| border-radius: 12px; |
| box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); |
| } |
|
|
| html.is-chrome .safari-stable-form select { |
| background: #ffffff; |
| border: 1px solid #d1d5db; |
| border-radius: 8px; |
| padding: 8px 12px; |
| font-size: 14px; |
| font-weight: 500; |
| color: #374151; |
| transition: all 0.2s ease; |
| } |
|
|
| html.is-chrome .safari-stable-form select:focus { |
| outline: none; |
| border-color: #6366f1; |
| box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); |
| } |
|
|
| html.is-chrome .safari-stable-form textarea { |
| background: #ffffff; |
| border: 1px solid #d1d5db; |
| border-radius: 8px; |
| padding: 12px; |
| font-size: 14px; |
| font-weight: 400; |
| color: #374151; |
| transition: all 0.2s ease; |
| resize: none; |
| } |
|
|
| html.is-chrome .safari-stable-form textarea:focus { |
| outline: none; |
| border-color: #6366f1; |
| box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); |
| } |
|
|
| html.is-chrome .safari-stable-form button { |
| background: #6366f1; |
| color: #ffffff; |
| border: none; |
| border-radius: 8px; |
| padding: 8px 16px; |
| font-size: 14px; |
| font-weight: 500; |
| transition: all 0.2s ease; |
| cursor: pointer; |
| } |
|
|
| html.is-chrome .safari-stable-form button:hover { |
| background: #5856eb; |
| transform: translateY(-1px); |
| box-shadow: 0 4px 12px rgba(99, 102, 241, 0.3); |
| } |
|
|
| html.is-chrome .safari-stable-form button:disabled { |
| background: #9ca3af; |
| cursor: not-allowed; |
| transform: none; |
| box-shadow: none; |
| } |
| } |
|
|
| @layer components { |
| .nav-selection { |
| position: relative; |
| border-radius: 14px; |
| } |
| .nav-selection::before { |
| content: ''; |
| position: absolute; |
| inset: -2px; |
| border-radius: 18px; |
| padding: 2px; |
| background: conic-gradient(from 0deg, theme('colors.ui.neonBlue') 0%, theme('colors.ui.neonCyan') 50%, theme('colors.ui.neonBlue') 100%); |
| -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); |
| -webkit-mask-composite: xor; |
| mask-composite: exclude; |
| animation: hueSpin 6s linear infinite; |
| } |
| @keyframes hueSpin { |
| to { transform: rotate(360deg); } |
| } |
| h1, h2, h3 { |
| @apply text-ui-text; |
| } |
| a { |
| @apply text-ui-neonBlue hover:text-ui-neonPink; |
| } |
| .btn-primary { |
| @apply bg-ui-neonBlue hover:bg-ui-neonBlue/90 text-white font-semibold py-2 px-4 rounded-2xl transition-colors duration-200 shadow-[0_4px_0_rgba(0,0,0,0.15)]; |
| } |
| |
| .btn-secondary { |
| @apply bg-ui-panel hover:bg-ui-panel/80 text-ui-text font-medium py-2 px-4 rounded-2xl border border-ui-border transition-colors duration-200; |
| } |
| |
| .btn-danger { |
| @apply bg-red-600 hover:bg-red-700 text-white font-medium py-2 px-4 rounded-lg transition-colors duration-200; |
| } |
| |
| .input-field { |
| @apply w-full px-3 py-2 border border-ui-border rounded-lg bg-ui-panel text-ui-text placeholder-ui-text/50 focus:outline-none focus:ring-2 focus:ring-ui-neonCyan focus:border-transparent; |
| } |
| |
| .card { |
| @apply bg-ui-panel rounded-3xl shadow-sm border border-ui-border p-6; |
| } |
| |
| .highlight-cultural { |
| @apply bg-yellow-100 border-b-2 border-yellow-400 px-1 rounded; |
| } |
| |
| .text-gradient { |
| @apply bg-gradient-to-r from-ui-neonPink to-ui-neonCyan bg-clip-text text-transparent; |
| } |
|
|
| .neon-border { |
| box-shadow: 0 0 0 1px theme('colors.ui.border') inset, 0 0 16px rgba(41,243,255,0.35); |
| } |
| |
| .font-smiley { |
| font-family: 'SF Pro Display', 'Segoe UI', 'Roboto', 'Inter', system-ui, sans-serif; |
| font-weight: 400; |
| } |
| |
| .font-source-text { |
| font-family: 'SF Pro Display', 'Segoe UI', 'Roboto', 'Inter', system-ui, sans-serif; |
| font-weight: 500; |
| } |
| } |
|
|
| @layer utilities { |
| .line-clamp-1 { |
| overflow: hidden; |
| display: -webkit-box; |
| -webkit-box-orient: vertical; |
| -webkit-line-clamp: 1; |
| } |
| |
| .line-clamp-2 { |
| overflow: hidden; |
| display: -webkit-box; |
| -webkit-box-orient: vertical; |
| -webkit-line-clamp: 2; |
| } |
| |
| .line-clamp-3 { |
| overflow: hidden; |
| display: -webkit-box; |
| -webkit-box-orient: vertical; |
| -webkit-line-clamp: 3; |
| } |
| } |
|
|
| |
| |
| .switch { position: relative; display: inline-block; width: 44px; height: 24px; } |
| .switch input { opacity: 0; width: 0; height: 0; } |
| .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #d1d5db; transition: .2s; border-radius: 9999px; } |
| .slider:before { position: absolute; content: ""; height: 18px; width: 18px; left: 3px; bottom: 3px; background-color: white; transition: .2s; border-radius: 9999px; } |
| input:checked + .slider { background-color: #10b981; } |
| input:checked + .slider:before { transform: translateX(20px); } |
|
|
| |
| html.is-chrome body, html.is-chrome #root { |
| will-change: scroll-position; |
| scroll-behavior: smooth; |
| } |
| |
| html.is-chrome { font-family: 'SF Pro Text', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica, Arial, system-ui, sans-serif; } |
| html.is-chrome body { font-weight: 400; } |
| html.is-chrome h1, html.is-chrome h2, html.is-chrome h3 { font-weight: 600; } |
| |
| html.is-chrome .app-shell { content-visibility: visible; contain-intrinsic-size: auto; } |
|
|
| |
| |
| html.is-chrome .qa-card { min-height: 0; } |
| html.is-chrome .qa-card h3 { line-height: 1.25; font-weight: 600; } |
| html.is-chrome .qa-card p { line-height: 1.25; } |
| html.is-chrome .qa-card .icon-wrap { flex-shrink: 0; } |
| |
| html.is-chrome .qa-card .icon-wrap + div { margin-left: 1rem; } |
| |
| html.is-chrome .qa-card > .flex { align-items: center; } |
|
|
| |
| html.is-chrome .qa-grid { contain: layout paint; } |
| html.is-chrome .qa-card { will-change: transform; transform: translateZ(0); backface-visibility: hidden; } |
| |
| html.is-chrome main { will-change: auto; transform: none; } |
| html.is-chrome body { overscroll-behavior: contain; } |
|
|
| |
| html.is-chrome .sidebar-shell { background: rgba(255,255,255,0.9); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); position: fixed; top: 56px; left: 0; bottom: 0; width: 15rem; display: flex; flex-direction: column; } |
| |
| html.is-chrome .sidebar-nav { position: sticky; top: 0; width: auto; } |
| html.is-chrome .sidebar-footer { position: sticky; bottom: 0; width: auto; background: transparent; } |
| html.is-chrome .sidebar-shell { overflow: visible; } |
| |
| html.is-chrome .sidebar-shell a { pointer-events: auto; } |
|
|
| |
| html.is-chrome body { font-weight: 400; } |
| html.is-chrome h1, html.is-chrome h2, html.is-chrome h3 { font-weight: 700; } |
| html.is-chrome .text-ui-text { -webkit-font-smoothing: antialiased; } |
| |
| html.is-chrome .sidebar-nav a span { font-weight: 700; } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 8px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: #f1f1f1; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: #c1c1c1; |
| border-radius: 4px; |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: #a8a8a8; |
| } |
|
|
| |
| .fade-in { |
| animation: fadeIn 0.3s ease-in-out; |
| } |
|
|
| @keyframes fadeIn { |
| from { |
| opacity: 0; |
| transform: translateY(10px); |
| } |
| to { |
| opacity: 1; |
| transform: translateY(0); |
| } |
| } |
|
|
| .slide-in { |
| animation: slideIn 0.3s ease-out; |
| } |
|
|
| @keyframes slideIn { |
| from { |
| transform: translateX(-100%); |
| } |
| to { |
| transform: translateX(0); |
| } |
| } |
|
|
| |
| .cultural-element { |
| position: relative; |
| cursor: help; |
| } |
|
|
| .cultural-element:hover::after { |
| content: attr(data-tooltip); |
| position: absolute; |
| bottom: 100%; |
| left: 50%; |
| transform: translateX(-50%); |
| background: #1f2937; |
| color: white; |
| padding: 8px 12px; |
| border-radius: 6px; |
| font-size: 14px; |
| white-space: nowrap; |
| z-index: 1000; |
| box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); |
| } |
|
|
| .cultural-element:hover::before { |
| content: ''; |
| position: absolute; |
| bottom: 100%; |
| left: 50%; |
| transform: translateX(-50%); |
| border: 5px solid transparent; |
| border-top-color: #1f2937; |
| z-index: 1000; |
| } |
|
|
| |