Files
homaroma/apps/spa/src/index.css
T
2026-06-29 19:24:57 -04:00

274 lines
7.4 KiB
CSS

@import "tailwindcss";
@theme {
--font-sans: var(--font-sans-active, var(--font-sans-locale, 'Sarabun')), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-heading: var(--font-heading-active, var(--font-heading-locale, 'Prompt')), ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-serif: var(--font-serif-active, var(--font-serif-locale, ui-serif)), Georgia, Cambria, "Times New Roman", Times, serif;
--color-pop-pink: #FF6B6B;
--color-pop-yellow: #FFF200;
--color-pop-orange: #FFA07A;
--color-pop-red: #FF4500;
--color-pop-cyan: #E0FFFF;
--color-pop-green: #98FB98;
--color-pop-purple: #D8BFD8;
--color-pop-bg: #FFF0F5;
--color-pop-black: #333333;
/* Spa Theme Colors */
--color-spa-light: #FDFDF9;
--color-spa-sand: #F4EDE2;
--color-spa-sage: #EAEFEA;
--color-spa-stone: #4B4B46;
--color-spa-charcoal: #2E2E2A;
--color-spa-forest: #1F3D2D;
--color-spa-gold: #D4AF37;
--color-night-900: #111827;
--shadow-brutal: 0 10px 25px rgba(0,0,0,0.05);
--shadow-brutal-hover: 0 20px 40px rgba(0,0,0,0.1);
--animate-pop-in: fade-in-up 0.6s ease-out forwards;
--animate-spin-slow: spin 15s linear infinite;
@keyframes fade-in-up {
0% { opacity: 0; transform: translateY(20px); }
100% { opacity: 1; transform: translateY(0); }
}
}
@layer base {
:root,
html {
--font-sans-locale: 'Sarabun';
--font-heading-locale: 'Prompt';
--font-serif-locale: ui-serif;
}
html[lang="en"] {
--font-sans-locale: 'Inter';
--font-heading-locale: 'Inter';
--font-serif-locale: ui-serif;
}
html[lang="ja"] {
--font-sans-locale: '"Noto Sans JP"';
--font-heading-locale: '"Noto Sans JP"';
--font-serif-locale: '"Noto Serif JP"';
}
html[lang="zh"] {
--font-sans-locale: '"Noto Sans SC"';
--font-heading-locale: '"Noto Sans SC"';
--font-serif-locale: '"Noto Serif SC"';
}
html[lang="ko"] {
--font-sans-locale: '"Noto Sans KR"';
--font-heading-locale: '"Noto Sans KR"';
--font-serif-locale: '"Noto Serif KR"';
}
body {
@apply bg-pop-bg text-pop-black font-sans antialiased;
background-image: radial-gradient(circle at top right, rgba(255,107,107,0.15), transparent 40%),
radial-gradient(circle at bottom left, rgba(255,160,122,0.15), transparent 40%);
min-height: 100vh;
}
h1, h2, h3, h4 {
@apply text-pop-black font-semibold tracking-tight;
}
}
@layer components {
.ui-page-shell {
@apply min-h-screen bg-pop-bg;
}
.ui-section-band {
@apply px-6 py-16 md:px-8 md:py-24;
}
.ui-section-inner {
@apply mx-auto max-w-7xl;
}
.ui-section-title {
@apply text-3xl font-semibold text-pop-black md:text-5xl;
}
.ui-section-subtitle {
@apply mx-auto max-w-2xl text-pop-black/60;
}
.ui-shell-card {
@apply rounded-3xl border border-pop-black/10 bg-night-900 shadow-brutal transition-all duration-300;
}
.ui-shell-card-hover {
@apply hover:-translate-y-1 hover:shadow-brutal-hover;
}
.ui-chip {
@apply inline-flex items-center justify-center rounded-full border px-4 py-2 text-xs font-bold uppercase tracking-widest transition;
}
.ui-button-primary {
@apply inline-flex items-center justify-center rounded-full bg-pop-pink px-6 py-3 text-xs font-bold uppercase tracking-widest text-pop-bg transition-colors hover:opacity-90;
}
.ui-button-secondary {
@apply inline-flex items-center justify-center rounded-full bg-pop-bg px-6 py-3 text-xs font-bold uppercase tracking-widest text-pop-black transition-colors hover:bg-pop-pink hover:text-pop-bg;
}
.ui-input-shell {
@apply w-full rounded-full border border-pop-black/20 bg-transparent px-6 py-4 text-sm text-pop-black outline-none transition placeholder:text-pop-black/50 focus:border-pop-pink;
}
.ui-muted-text {
@apply text-pop-black/70;
}
.ui-hero-shell {
@apply relative flex min-h-[90vh] items-center justify-center overflow-hidden bg-night-900 text-pop-bg md:aspect-[21/9] md:min-h-0;
}
.ui-hero-content {
@apply relative z-10 mx-auto mt-16 w-full max-w-4xl space-y-6 px-8 text-center md:mt-0;
}
.ui-hero-title {
@apply font-serif text-5xl font-light leading-tight tracking-wide drop-shadow-md md:text-7xl lg:text-8xl;
color: var(--color-pop-black);
}
.ui-hero-copy {
@apply mx-auto max-w-2xl pb-8 pt-4 text-lg font-light drop-shadow-md md:text-xl;
color: var(--color-pop-black);
}
.ui-banner-shell {
@apply relative mx-auto min-h-[350px] max-w-7xl overflow-hidden rounded-3xl shadow-brutal;
}
.ui-banner-overlay {
@apply absolute inset-0 bg-gradient-to-r from-pop-black/80 via-pop-black/40 to-transparent;
}
.ui-banner-content {
@apply relative z-10 max-w-xl space-y-4 p-8 text-pop-bg md:p-16;
}
.ui-card-soft {
@apply rounded-2xl border border-pop-black/10 bg-night-900 shadow-sm;
}
.ui-dark-shell {
@apply bg-pop-black px-6 py-20 text-pop-bg;
}
.ui-dark-card {
@apply overflow-hidden rounded-3xl border border-pop-black/10 bg-night-900;
}
.ui-dark-card-title {
@apply text-xl font-serif font-light tracking-wide text-pop-black md:text-2xl;
}
.ui-dark-card-copy {
@apply text-sm font-light leading-relaxed text-pop-black/70;
}
.ui-dark-link {
@apply inline-flex items-center gap-2 text-xs font-bold uppercase tracking-widest text-pop-pink transition-colors hover:text-pop-black;
}
.brutal-box {
@apply bg-night-900 border border-pop-black/20 rounded-2xl shadow-brutal transition-all duration-300;
}
.brutal-box-hover {
@apply hover:-translate-y-2 hover:shadow-brutal-hover;
}
.brutal-button {
@apply px-8 py-4 bg-pop-pink text-pop-bg font-medium rounded-full shadow-brutal transition-all duration-300 hover:opacity-90 hover:-translate-y-1 hover:shadow-brutal-hover;
}
.brutal-button-alt {
@apply px-8 py-4 bg-transparent text-pop-pink font-medium rounded-full border border-pop-pink shadow-brutal transition-all duration-300 hover:bg-pop-pink hover:text-pop-bg hover:-translate-y-1 hover:shadow-brutal-hover;
}
}
/* Custom Scrollbar */
::-webkit-scrollbar {
width: 8px;
}
::-webkit-scrollbar-track {
@apply bg-pop-bg;
}
::-webkit-scrollbar-thumb {
@apply bg-pop-black/30 rounded-full;
}
::-webkit-scrollbar-thumb:hover {
@apply bg-pop-black/50;
}
.hide-scrollbar::-webkit-scrollbar {
display: none;
}
.hide-scrollbar {
-ms-overflow-style: none;
scrollbar-width: none;
}
/* Smooth Scrolling */
html {
scroll-behavior: smooth;
}
/* Product Editorial Image Overrides */
.product-editorial img {
width: 100%;
max-width: 480px;
margin: 2rem auto;
display: block;
border-radius: 16px;
box-shadow: var(--shadow-brutal);
}
/* Fallback Thai Serif to Prompt for luxury classical look */
:lang(th) .font-serif {
font-family: 'Prompt', sans-serif !important;
}
.ui-prose p {
@apply mb-4 leading-relaxed;
}
.ui-prose p:last-child {
@apply mb-0;
}
.ui-prose ul {
@apply list-inside list-disc mb-4 space-y-1;
}
.ui-prose ol {
@apply list-inside list-decimal mb-4 space-y-1;
}
.ui-prose h1, .ui-prose h2, .ui-prose h3, .ui-prose h4 {
@apply font-serif font-semibold mt-8 mb-4 text-pop-black;
}
.ui-prose a {
@apply text-pop-pink underline hover:opacity-80 transition-opacity;
}
.ui-prose strong {
@apply font-bold;
}
.ui-prose blockquote {
@apply border-l-4 border-pop-pink pl-4 italic opacity-80 my-4;
}