|
|
@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, html.is-chrome body, html.is-chrome h1, html.is-chrome h2, html.is-chrome h3, html.is-chrome p, |
|
|
html.is-chrome .font-smiley, html.is-chrome .font-source-text, html.is-chrome .text-ui-text { |
|
|
-webkit-font-smoothing: antialiased; |
|
|
text-rendering: optimizeLegibility; |
|
|
font-synthesis: none; |
|
|
} |
|
|
|
|
|
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; margin-bottom: 0.25rem; 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 .mb-8:has(> .qa-grid) > h2 { font-weight: 600; } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
html.is-chrome .mb-8:has(> .bg-white.rounded-lg.shadow-sm.border.border-gray-200.p-6) > h2 { font-weight: 600; } |
|
|
|
|
|
|
|
|
html.is-chrome .bg-white.rounded-lg.shadow-sm.border.border-gray-200.p-6 h3.text-lg.font-medium.text-gray-900 { font-weight: 600; } |
|
|
|
|
|
|
|
|
html.is-chrome .bg-ui-panel.rounded-xl.shadow-sm.border.border-ui-border.p-6 h3.text-lg { font-weight: 600; } |
|
|
|
|
|
|
|
|
::-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; |
|
|
} |
|
|
|
|
|
|