@tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { color-scheme: light; } html { scroll-behavior: smooth; } body { margin: 0; min-height: 100vh; color: #0f172a; background: #f4faff; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; } ::selection { background-color: rgba(45, 212, 191, 0.32); color: #0f172a; } } @layer components { .studio-page-bg { @apply min-h-screen antialiased; background-color: #f4faff; background-image: radial-gradient( ellipse 90% 68% at 50% -24%, rgba(45, 212, 191, 0.18), transparent 56% ), radial-gradient(circle at 14% 8%, rgba(56, 189, 248, 0.14), transparent 32%), radial-gradient(circle at 88% 16%, rgba(251, 191, 36, 0.14), transparent 32%), linear-gradient(180deg, rgba(255, 255, 255, 0.86) 0%, rgba(241, 249, 255, 0.94) 44%, rgba(236, 246, 255, 1) 100%), linear-gradient(rgba(148, 163, 184, 0.14) 1px, transparent 1px), linear-gradient(90deg, rgba(148, 163, 184, 0.14) 1px, transparent 1px); background-size: auto, auto, auto, auto, 54px 54px, 54px 54px; background-attachment: scroll; } .studio-shell { @apply mx-auto w-full max-w-6xl px-4 sm:px-6; } .studio-header { @apply relative z-20; border-bottom: 1px solid rgba(45, 212, 191, 0.28); background: rgba(248, 253, 255, 0.82); backdrop-filter: blur(18px); box-shadow: 0 18px 38px -30px rgba(15, 23, 42, 0.25); } .studio-hero-panel { @apply relative flex flex-col gap-4 overflow-hidden rounded-[24px] border p-4 sm:flex-row sm:items-center sm:justify-between sm:p-5; border-color: rgba(45, 212, 191, 0.34); background: linear-gradient(140deg, rgba(238, 252, 255, 0.95) 0%, rgba(229, 247, 255, 0.92) 48%, rgba(243, 251, 255, 0.95) 100%); box-shadow: 0 24px 48px -32px rgba(15, 23, 42, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.85); } .studio-hero-panel::before { content: ''; @apply pointer-events-none absolute inset-0; background: radial-gradient(circle at 85% 18%, rgba(80, 227, 194, 0.17), transparent 32%), radial-gradient(circle at 16% 78%, rgba(255, 126, 185, 0.15), transparent 34%); } .studio-kicker { @apply inline-flex w-fit items-center rounded-full border px-3.5 py-1 text-[0.67rem] font-semibold uppercase tracking-[0.2em]; border-color: rgba(45, 212, 191, 0.42); background-color: rgba(45, 212, 191, 0.16); color: #0b766b; } .studio-health-grid { @apply grid grid-cols-2 gap-2.5 sm:min-w-[260px]; } .studio-status-chip { @apply inline-flex items-center gap-1.5 rounded-xl border px-3 py-1.5 text-[0.7rem] font-medium; border-color: rgba(56, 189, 248, 0.3); background-color: rgba(255, 255, 255, 0.82); color: #0f172a; } .studio-status-chip-ok { border-color: rgba(16, 185, 129, 0.45); background-color: rgba(16, 185, 129, 0.14); } .studio-status-chip-warn { border-color: rgba(245, 158, 11, 0.45); background-color: rgba(245, 158, 11, 0.12); color: #92400e; } .studio-status-chip-error { border-color: rgba(239, 68, 68, 0.45); background-color: rgba(239, 68, 68, 0.12); color: #b91c1c; } .studio-status-chip-muted { opacity: 0.78; } .studio-card { @apply relative overflow-hidden rounded-[28px] border; border-color: rgba(56, 189, 248, 0.24); background: linear-gradient(152deg, rgba(255, 255, 255, 0.97) 0%, rgba(246, 252, 255, 0.97) 56%, rgba(239, 248, 255, 0.97) 100%); box-shadow: 0 26px 42px -34px rgba(15, 23, 42, 0.2), 0 0 0 1px rgba(45, 212, 191, 0.1); } .studio-card > * { @apply relative z-[1]; } .studio-card::before { content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 1px; background: linear-gradient(135deg, rgba(45, 212, 191, 0.48), rgba(56, 189, 248, 0.22) 42%, rgba(245, 158, 11, 0.2) 72%, transparent 100%); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; pointer-events: none; } .studio-card-inner { @apply relative z-[1] p-6 sm:p-8; } .studio-step-title { @apply flex flex-col gap-1.5 sm:flex-row sm:items-center sm:gap-4; } .studio-step-badge { @apply flex h-10 w-10 shrink-0 items-center justify-center rounded-xl font-display text-sm font-bold tracking-tight text-white shadow-inner; background: linear-gradient(145deg, rgba(45, 212, 191, 0.45), rgba(56, 189, 248, 0.34)); box-shadow: inset 0 1px 0 0 rgba(255, 255, 255, 0.24), 0 14px 24px -20px rgba(56, 189, 248, 0.9); } .studio-label { @apply text-[0.65rem] font-semibold uppercase tracking-[0.14em] text-slate-500; } .studio-input { @apply mt-1.5 w-full rounded-xl border px-4 py-2.5 text-sm text-slate-800 transition; border-color: rgba(56, 189, 248, 0.26); background-color: rgba(255, 255, 255, 0.96); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85); @apply placeholder:text-slate-400; @apply focus:outline-none; } .studio-input:focus { border-color: rgba(45, 212, 191, 0.64); box-shadow: 0 0 0 4px rgba(45, 212, 191, 0.2); } .studio-select { @apply studio-input cursor-pointer appearance-none; background-color: rgba(255, 255, 255, 0.98); background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%2322d3ee'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C/path%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 1rem; padding-right: 2.5rem; } .studio-import-panel { @apply relative mt-6 rounded-2xl border p-5 sm:p-6; border-color: rgba(45, 212, 191, 0.34); background: linear-gradient(to bottom right, rgba(45, 212, 191, 0.11), rgba(255, 255, 255, 0.85) 72%); box-shadow: 0 0 0 1px rgba(45, 212, 191, 0.1), 0 16px 28px -24px rgba(15, 23, 42, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.9); } .studio-btn-primary { @apply inline-flex items-center justify-center rounded-xl px-6 py-3 text-sm font-semibold text-white transition; background-image: linear-gradient(145deg, #14b8a6 0%, #06b6d4 52%, #f59e0b 100%); box-shadow: 0 18px 36px -20px rgba(20, 184, 166, 0.8); @apply hover:brightness-110 active:scale-[0.98] disabled:pointer-events-none disabled:opacity-45; } .studio-btn-secondary { @apply inline-flex items-center justify-center rounded-xl border px-5 py-2.5 text-sm font-medium text-slate-700 transition; border-color: rgba(56, 189, 248, 0.3); background-color: rgba(255, 255, 255, 0.9); @apply hover:border-cyan-300 hover:bg-cyan-50 active:scale-[0.98] disabled:opacity-45; } .studio-btn-ghost { @apply text-xs font-medium text-slate-500 underline decoration-slate-400 underline-offset-4 transition hover:text-slate-700; } .studio-pill { @apply inline-flex items-center gap-1.5 rounded-full border px-3 py-1 text-[0.7rem] font-medium tracking-wide shadow-sm; border-color: rgba(56, 189, 248, 0.36); background: rgba(255, 255, 255, 0.86); color: #0f172a; backdrop-filter: blur(5px); } .studio-progress-track { @apply h-2 overflow-hidden rounded-full shadow-inner; border: 1px solid rgba(56, 189, 248, 0.24); background-color: rgba(207, 250, 254, 0.55); } .studio-progress-fill { @apply h-full rounded-full shadow-sm; background-image: linear-gradient(90deg, rgba(20, 184, 166, 0.9), rgba(56, 189, 248, 0.9)); } .studio-shot-card { @apply relative rounded-xl border px-4 py-3.5 transition hover:border-slate-400; border-color: rgba(56, 189, 248, 0.26); background: rgba(255, 255, 255, 0.92); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.95); } .studio-shot-card::before { content: ''; @apply absolute left-0 top-3 bottom-3 w-0.5 rounded-full; background-color: rgba(56, 189, 248, 0.54); } /* Theme compatibility for existing utility classes inside the flow component. */ .studio-page-bg .text-slate-900 { color: #0f172a !important; } .studio-page-bg .text-slate-800 { color: #1e293b !important; } .studio-page-bg .text-slate-700, .studio-page-bg .text-slate-600 { color: #334155 !important; } .studio-page-bg .text-slate-500 { color: #64748b !important; } .studio-page-bg .text-accent { color: #0f766e !important; } .studio-page-bg .text-accent\/80 { color: rgba(15, 118, 110, 0.9) !important; } .studio-page-bg .text-accent-dim { color: #14b8a6 !important; } .studio-page-bg .border-slate-200, .studio-page-bg .border-slate-300, .studio-page-bg .border-slate-400\/80 { border-color: rgba(56, 189, 248, 0.3) !important; } .studio-page-bg .bg-white, .studio-page-bg .bg-slate-50, .studio-page-bg .bg-slate-100, .studio-page-bg .bg-slate-100\/70 { background-color: rgba(255, 255, 255, 0.92) !important; } .studio-page-bg .bg-accent\/\[0\.08\], .studio-page-bg .bg-accent\/\[0\.1\], .studio-page-bg .bg-accent\/\[0\.12\] { background-color: rgba(20, 184, 166, 0.16) !important; } .studio-page-bg .bg-red-50 { background-color: rgba(239, 68, 68, 0.14) !important; } .studio-page-bg .border-red-300 { border-color: rgba(239, 68, 68, 0.36) !important; } .studio-page-bg .text-red-700 { color: #ffb9b9 !important; } .studio-page-bg code { background-color: rgba(226, 247, 255, 0.95) !important; color: #0f172a !important; } }