:root { --bg: #080508; --cream: #f5ebe0; --gold: #c9a84c; --gold2: rgba(201,168,76,0.5); --wine: #8b1a3a; }
* { margin: 0; padding: 0; box-sizing: border-box; -webkit-tap-highlight-color: transparent; }
body { font-family: -apple-system, "PingFang SC", "Source Han Serif CN", serif; background: var(--bg); color: var(--cream); min-height: 100dvh; overflow-x: hidden; }
.app { max-width: 430px; margin: 0 auto; min-height: 100dvh; position: relative; display: flex; flex-direction: column; }
@keyframes pawBounce { 0%,100% { transform: translateY(0) rotate(0); } 50% { transform: translateY(-6px) rotate(-6deg); } }

/* Header */
.header { padding: 1.5rem 1.2rem 1rem; text-align: center; flex-shrink: 0; }
.brand { font-size: 0.6rem; background: linear-gradient(135deg, var(--cream), var(--gold)); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: 0.35em; margin-bottom: 0.8rem; }
.whisper-avatar { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; border: 2px solid rgba(139,26,58,0.3); box-shadow: 0 0 0 4px rgba(139,26,58,0.1); }
.whisper-role { margin-top: 0.5rem; font-size: 0.6rem; color: rgba(245,235,224,0.3); letter-spacing: 0.1em; display: flex; align-items: center; justify-content: center; gap: 0.5rem; }
.role-line { display: inline-block; width: 20px; height: 1px; background: linear-gradient(90deg, transparent, rgba(201,168,76,0.2)); }
.role-line:last-child { background: linear-gradient(90deg, rgba(201,168,76,0.2), transparent); }

/* Card Area */
.card-area { flex: 1; padding: 0 1rem; margin-bottom: 200px; }
.skeleton-card { border-radius: 16px; overflow: hidden; height: 400px; background: linear-gradient(135deg, #1a0f12, #2a1520); animation: shimmer 1.5s ease-in-out infinite; position: relative; }
@keyframes shimmer { 0%,100% { opacity: 0.6; } 50% { opacity: 1; } }
.skeleton-body { position: absolute; bottom: 2rem; left: 2rem; right: 2rem; }
.skeleton-line { height: 14px; background: rgba(255,255,255,0.08); border-radius: 8px; margin-bottom: 10px; }
.skeleton-line.w60 { width: 60%; }
.skeleton-line.w40 { width: 40%; }

/* Daily Card */
.daily-card { position: relative; border-radius: 16px; overflow: hidden; min-height: 400px; }
.card-bg { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; }
.card-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(0,0,0,0.5) 0%, rgba(0,0,0,0.15) 30%, rgba(0,0,0,0.25) 55%, rgba(0,0,0,0.75) 80%, rgba(0,0,0,0.92) 100%); }
.card-content { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; flex-direction: column; }
.card-top { padding: 1.5rem; }
.card-label { font-size: 0.72rem; font-family: "Playfair Display", Georgia, serif; color: #8E8E93; letter-spacing: 0.2em; }
.card-why { margin-top: 0.8rem; font-size: 0.82rem; font-style: italic; color: #D1D1D6; letter-spacing: 0.05em; max-width: 220px; }
.card-bottom { margin-top: auto; padding: 1.5rem; text-align: right; }
.card-story { font-size: 0.78rem; color: #C7C7CC; line-height: 1.65; margin-bottom: 0.8rem; }
.card-wine-name { font-size: 2rem; font-weight: 600; color: #F5F5F5; line-height: 1.1; text-shadow: 0 2px 8px rgba(0,0,0,0.6); }
.card-tags { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; margin-top: 0.5rem; }
.card-tags .tag { font-size: 0.56rem; color: rgba(200,212,224,0.4); background: rgba(180,200,220,0.05); border: 1px solid rgba(180,200,220,0.1); padding: 2px 8px; border-radius: 12px; }
.card-flavor { font-size: 0.7rem; color: rgba(210,175,140,0.7); letter-spacing: 0.1em; margin-top: 0.6rem; text-align: right; }

/* Bottom Actions */
.bottom-actions { position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; display: flex; flex-direction: column; align-items: center; padding: 1rem 1.2rem calc(env(safe-area-inset-bottom, 12px) + 12px); background: linear-gradient(to bottom, transparent 0%, rgba(8,5,8,0.7) 28%, rgba(8,5,8,0.96) 56%, #080508 100%); max-width: 430px; margin: 0 auto; }
.btn-tonight { position: relative; overflow: hidden; width: 100%; height: 52px; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.12); border-radius: 999px; display: flex; align-items: center; justify-content: center; cursor: pointer; backdrop-filter: blur(10px); }
.btn-tonight:active { transform: scale(0.965); opacity: 0.8; }
.btn-tonight-glow { position: absolute; top: 0; left: -120%; width: 60%; height: 100%; background: linear-gradient(105deg, transparent 0%, rgba(201,168,76,0.06) 40%, rgba(245,235,224,0.08) 50%, rgba(201,168,76,0.06) 60%, transparent 100%); animation: meteorGlow 4s ease-in-out infinite; pointer-events: none; }
@keyframes meteorGlow { 0% { left: -120%; opacity: 0; } 10% { opacity: 1; } 60% { left: 160%; opacity: 0; } 100% { left: 160%; opacity: 0; } }
.btn-tonight-text { font-size: 1rem; font-weight: 600; font-family: "Source Han Serif CN", serif; background: linear-gradient(135deg, #f5ebe0, #c9a84c); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: 0.12em; position: relative; z-index: 1; }
.btn-explore { margin-top: 0.7rem; font-size: 0.82rem; color: rgba(245,235,224,0.45); cursor: pointer; text-align: center; }
.btn-explore:active { opacity: 0.3; }
.photo-hint { margin-top: 0.5rem; font-size: 0.6rem; color: rgba(245,235,224,0.3); text-align: center; cursor: pointer; }
.btn-pending { width: 100%; height: 52px; background: rgba(201,168,76,0.1); border: 1px solid rgba(201,168,76,0.25); border-radius: 999px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.btn-pending-text { font-size: 1rem; font-weight: 600; background: linear-gradient(135deg, #f5ebe0, #c9a84c); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: 0.1em; }
.btn-encore { width: 100%; height: 48px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.08); border-radius: 999px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.btn-encore-text { font-size: 0.9rem; color: rgba(245,235,224,0.5); letter-spacing: 0.12em; }
.btn-imprint { width: 100%; height: 52px; background: linear-gradient(135deg, rgba(201,168,76,0.15), rgba(180,40,80,0.1)); border: 1px solid rgba(201,168,76,0.2); border-radius: 999px; display: flex; align-items: center; justify-content: center; cursor: pointer; }
.btn-imprint-text { font-size: 1rem; font-weight: 600; font-family: "Source Han Serif CN", serif; background: linear-gradient(135deg, #f5ebe0, #c9a84c, #e8a0b4); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; letter-spacing: 0.16em; }
.nights-hint { margin-top: 0.6rem; font-size: 0.75rem; color: rgba(201,168,76,0.45); cursor: pointer; }
.end-night { margin-top: 0.5rem; font-size: 0.75rem; color: rgba(212,175,55,0.35); cursor: pointer; animation: endGlow 3s ease-in-out infinite; }
@keyframes endGlow { 0%,100% { opacity: 0.35; } 50% { opacity: 0.55; } }

/* Overlays */
.mood-overlay, .encore-overlay, .camera-overlay, .recognize-overlay, .age-overlay, .loading-overlay { position: fixed; inset: 0; z-index: 100; background: rgba(0,0,0,0.6); backdrop-filter: blur(16px); display: flex; align-items: center; justify-content: center; }
.mood-panel, .encore-panel, .age-card { width: 340px; padding: 2rem 1.5rem; background: rgba(30,22,28,0.92); border: 1px solid rgba(255,255,255,0.06); border-radius: 24px; display: flex; flex-direction: column; align-items: center; gap: 1rem; position: relative; }
.mood-close { position: absolute; top: 12px; right: 16px; font-size: 1.2rem; color: rgba(245,235,224,0.3); cursor: pointer; }
.mood-title { font-size: 1.1rem; font-weight: 600; color: var(--cream); }
.mood-options { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
.mood-opt { padding: 10px 20px; background: rgba(255,255,255,0.04); border-radius: 999px; font-size: 0.85rem; color: rgba(245,235,224,0.6); cursor: pointer; }
.mood-opt:active { background: rgba(201,168,76,0.1); }
.mood-input-wrap { display: flex; gap: 8px; width: 100%; }
.mood-input { flex: 1; height: 40px; background: transparent; border: 1px solid rgba(255,255,255,0.08); border-radius: 999px; padding: 0 16px; font-size: 0.85rem; color: var(--cream); outline: none; }
.mood-input::placeholder { color: rgba(245,235,224,0.2); }
.mood-send { width: 40px; height: 40px; border-radius: 50%; background: rgba(201,168,76,0.1); display: flex; align-items: center; justify-content: center; font-size: 1rem; color: var(--gold); cursor: pointer; }
.encore-avatar { width: 48px; height: 48px; border-radius: 50%; }
.encore-ask { font-size: 1rem; color: rgba(245,235,224,0.7); }
.encore-ask-sub { font-size: 0.85rem; color: rgba(245,235,224,0.4); }
.encore-opts { display: flex; flex-direction: column; gap: 8px; width: 100%; }
.encore-opt { padding: 16px; text-align: center; background: rgba(255,255,255,0.03); border-radius: 16px; font-size: 0.9rem; color: rgba(245,235,224,0.6); cursor: pointer; }
.encore-opt:active { background: rgba(212,175,55,0.08); }
.encore-loading { display: flex; flex-direction: column; align-items: center; gap: 10px; }
.encore-result { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.encore-wine { font-size: 1.2rem; font-weight: 700; font-family: "Source Han Serif CN", serif; color: rgba(245,235,224,0.85); }
.encore-reason { font-size: 0.82rem; font-style: italic; color: rgba(245,235,224,0.4); text-align: center; }
.encore-confirm { padding: 12px 36px; background: rgba(201,168,76,0.08); border-radius: 999px; font-size: 0.9rem; font-weight: 600; color: rgba(212,175,55,0.7); cursor: pointer; }
.camera-overlay { align-items: flex-end; }
.camera-panel { width: 100%; max-width: 430px; height: 100%; background: #000; display: flex; flex-direction: column; align-items: center; justify-content: space-between; padding: 60px 2rem 80px; position: relative; }
.camera-back { position: absolute; top: 60px; left: 24px; font-size: 1.2rem; color: #fff; cursor: pointer; z-index: 10; }
.camera-hint-text { font-size: 0.9rem; color: rgba(255,255,255,0.6); text-align: center; margin-top: 40px; }
.camera-actions { display: flex; align-items: center; justify-content: space-between; width: 100%; }
.camera-btn { font-size: 0.85rem; color: rgba(255,255,255,0.7); padding: 10px 20px; cursor: pointer; }
.camera-capture { width: 72px; height: 72px; border-radius: 50%; border: 4px solid rgba(255,255,255,0.8); display: flex; align-items: center; justify-content: center; cursor: pointer; }
.capture-ring { width: 56px; height: 56px; border-radius: 50%; background: rgba(255,255,255,0.9); }
.recognize-overlay { align-items: stretch; }
.recognize-panel { width: 100%; max-width: 430px; margin: 0 auto; background: var(--bg); min-height: 100dvh; padding: 60px 1.2rem 100px; position: relative; overflow-y: auto; }
.recognize-body { margin-top: 1rem; }
.recognize-actions { position: fixed; bottom: 0; left: 0; right: 0; padding: 1rem 1.2rem calc(env(safe-area-inset-bottom,12px) + 12px); background: linear-gradient(to bottom, transparent, var(--bg) 40%); max-width: 430px; margin: 0 auto; }
.age-title { font-size: 1.1rem; font-weight: 600; font-family: "Source Han Serif CN", serif; color: var(--cream); }
.age-desc { font-size: 0.82rem; color: rgba(245,235,224,0.4); text-align: center; line-height: 1.7; }
.age-confirm { width: 100%; height: 48px; background: rgba(201,168,76,0.1); border-radius: 999px; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; font-weight: 600; background: linear-gradient(135deg, #f5ebe0, #c9a84c); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; cursor: pointer; }
.age-reject { font-size: 0.82rem; color: rgba(245,235,224,0.25); cursor: pointer; }
.loading-overlay { flex-direction: column; align-items: center; justify-content: center; }
