.lcbp-happy-wrap, .lcbp-happy-wrap * { box-sizing: border-box; } .dc-answer-card:has(#lcbp-happy-wrap) {
padding: 0 !important;
overflow: hidden;
border-radius: var(--dc-radius, 18px);
border: none !important;
}
.lcbp-happy-wrap {
position: relative;
max-width: 100%;
width: 100%;
margin: 0;
padding: 20px 10px 24px;
border-radius: var(--dc-radius, 18px);
overflow: hidden;
font-family: 'Sarabun', -apple-system, sans-serif;
color: #6b3f37; background:
radial-gradient( 120% 90% at 15% -10%, rgba(255,255,255,.75) 0%, rgba(255,255,255,0) 55% ),
linear-gradient( 175deg, rgba(255,203,214,.9) 0%, rgba(255,220,208,.9) 24%, rgba(252,231,230,.9) 48%, rgba(203,228,238,.9) 74%, rgba(174,220,242,.9) 100% );
isolation: isolate;
} .lcbp-happy-sky { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.lcbp-happy-cloud {
position: absolute;
width: 160px; height: 60px;
background: rgba(255,255,255,.65);
border-radius: 50px;
filter: blur(2px);
animation: lcbpHappyDrift linear infinite;
}
.lcbp-happy-cloud::before, .lcbp-happy-cloud::after {
content: '';
position: absolute;
background: inherit;
border-radius: 50%;
}
.lcbp-happy-cloud::before { width: 70px; height: 70px; top: -34px; left: 18px; }
.lcbp-happy-cloud::after  { width: 90px; height: 90px; top: -46px; right: 10px; }
.lcbp-happy-cloud-1 { top: 6%;  left: -20%; width: 200px; height: 66px; animation-duration: 70s; opacity: .9; }
.lcbp-happy-cloud-2 { top: 22%; left: -30%; width: 140px; height: 52px; animation-duration: 95s; animation-delay: -20s; opacity: .7; }
.lcbp-happy-cloud-3 { top: 3%;  left: -25%; width: 110px; height: 44px; animation-duration: 55s; animation-delay: -8s;  opacity: .8; }
@keyframes lcbpHappyDrift {
from { transform: translateX(0); }
to   { transform: translateX(140vw); }
}
.lcbp-happy-spark {
position: absolute;
width: 7px; height: 7px;
background: #ffd479;
border-radius: 50%;
box-shadow: 0 0 9px 3px rgba(255,212,121,.7);
animation: lcbpHappyTwinkle 3.4s ease-in-out infinite;
}
.lcbp-happy-spark-1 { top: 10%; left: 8%;  animation-delay: 0s; }
.lcbp-happy-spark-2 { top: 16%; left: 82%; animation-delay: .8s; background: #ff9fb0; box-shadow: 0 0 9px 3px rgba(255,159,176,.7); }
.lcbp-happy-spark-3 { top: 32%; left: 92%; animation-delay: 1.6s; }
.lcbp-happy-spark-4 { top: 6%;  left: 46%; animation-delay: 2.2s; background: #ff9fb0; box-shadow: 0 0 9px 3px rgba(255,159,176,.7); }
@keyframes lcbpHappyTwinkle {
0%, 100% { opacity: .3; transform: scale(.8); }
50%      { opacity: 1;  transform: scale(1.3); }
} .lcbp-happy-header { position: relative; z-index: 1; text-align: center; margin-bottom: 18px; }
.lcbp-happy-title {
margin: 0 0 6px;
font-size: clamp(22px, 4vw, 30px);
font-weight: 800;
color: #a1493f;
}
.lcbp-happy-subtitle { margin: 0; font-size: 15px; color: #b3695c; text-align: center; } .lcbp-happy-compose { position: relative; z-index: 2; max-width: 620px; margin: 0 auto 22px; }
.lcbp-happy-note {
background: #fffdf9;
border-radius: 18px;
padding: 16px 18px 12px;
box-shadow: 0 14px 30px rgba(178,90,70,.16), 0 2px 0 rgba(0,0,0,.02);
transform: rotate(-.4deg);
transition: transform .25s ease;
}
.lcbp-happy-note:focus-within { transform: rotate(0deg); }
.lcbp-happy-note.lcbp-happy-shake { animation: lcbpHappyShake .4s ease; }
@keyframes lcbpHappyShake {
10%, 90% { transform: translateX(-2px) rotate(-.4deg); }
20%, 80% { transform: translateX(4px) rotate(-.4deg); }
30%, 50%, 70% { transform: translateX(-8px) rotate(-.4deg); }
40%, 60% { transform: translateX(8px) rotate(-.4deg); }
}
.lcbp-happy-textarea {
width: 100%;
resize: vertical;
min-height: 76px;
border: none;
outline: none;
background: transparent;
font-family: inherit;
font-size: 15.5px;
line-height: 1.55;
color: #6b3f37;
}
.lcbp-happy-textarea::placeholder { color: #d1a89e; }
.lcbp-happy-note-foot {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 8px 14px;
margin-top: 10px;
padding-top: 10px;
border-top: 1px dashed rgba(180,100,80,.22);
}
.lcbp-happy-save-btn {
display: inline-flex;
align-items: center;
gap: 8px;
border: none;
cursor: pointer;
padding: 10px 20px;
border-radius: 999px;
font-family: inherit;
font-size: 15px;
font-weight: 700;
color: #fff;
background: linear-gradient(135deg, #ffab91 0%, #ff7e94 100%);
box-shadow: 0 8px 18px rgba(255,126,148,.4);
transition: transform .15s ease, box-shadow .15s ease, opacity .15s ease;
flex: 0 0 auto;
margin-left: auto;
}
.lcbp-happy-save-btn:hover  { transform: translateY(-2px); box-shadow: 0 12px 22px rgba(255,126,148,.5); }
.lcbp-happy-save-btn:active { transform: translateY(0) scale(.97); }
.lcbp-happy-save-btn:disabled { opacity: .6; cursor: default; transform: none; }
.lcbp-happy-save-icon { font-size: 16px; } .lcbp-happy-moods {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 6px 8px;
margin: 0;
flex: 1 1 auto;
}
.lcbp-happy-mood {
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
background: none;
border: none;
padding: 4px 3px;
cursor: pointer;
font-family: inherit;
-webkit-tap-highlight-color: transparent;
}
.lcbp-happy-mood.is-hot { z-index: 5; } .lcbp-mood-emoji-wrap {
display: inline-block;
transform-origin: 50% 50%;
position: relative;
will-change: transform;
}
.lcbp-happy-mood:focus-visible .lcbp-mood-emoji-wrap {
transform: scale(2.2);
transition: transform .3s ease;
}
.lcbp-happy-mood.is-selected .lcbp-mood-emoji {
filter: drop-shadow(0 0 6px rgba(255,126,148,.85));
} .lcbp-mood-emoji {
display: inline-block;
font-size: 70px;
line-height: 1;
transform-origin: 50% 100%;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
}
.lcbp-mood-emoji img {
width: 1em;
height: 1em;
display: block;
pointer-events: none;
-webkit-user-drag: none;
} .lcbp-happy-moods.is-active .lcbp-mood-emoji,
.lcbp-happy-mood:focus-visible .lcbp-mood-emoji {
animation: none;
transform: none;
}
.lcbp-anim-pulse     { animation-name: lcbpMoodPulse; }
.lcbp-anim-heartbeat { animation-name: lcbpMoodHeartbeat; }
.lcbp-anim-nod       { animation-name: lcbpMoodNod; }
.lcbp-anim-twinkle   { animation-name: lcbpMoodTwinkle; }
.lcbp-anim-tilt      { animation-name: lcbpMoodTilt; }
.lcbp-anim-tremble   { animation-name: lcbpMoodTremble; }
.lcbp-anim-droop     { animation-name: lcbpMoodDroop; }
@keyframes lcbpMoodPulse {
0%, 78%   { transform: scale(1); }
89%       { transform: scale(2.5); }
100%      { transform: scale(1); }
}
@keyframes lcbpMoodHeartbeat {
0%, 68%   { transform: scale(1); }
73%       { transform: scale(1.28); }
77%       { transform: scale(1); }
81%       { transform: scale(1.28); }
85%       { transform: scale(1); }
100%      { transform: scale(1); }
}
@keyframes lcbpMoodNod {
0%, 80%   { transform: rotate(0deg); }
86%       { transform: rotate(-9deg); }
92%       { transform: rotate(7deg); }
100%      { transform: rotate(0deg); }
}
@keyframes lcbpMoodTwinkle {
0%, 82%   { transform: scale(1) rotate(0deg); }
88%       { transform: scale(1.4) rotate(12deg); }
94%       { transform: scale(1) rotate(-5deg); }
100%      { transform: scale(1) rotate(0deg); }
}
@keyframes lcbpMoodTilt {
0%, 74%   { transform: rotate(0deg); }
80%       { transform: rotate(-13deg); }
86%       { transform: rotate(0deg); }
91%       { transform: rotate(13deg); }
96%       { transform: rotate(0deg); }
100%      { transform: rotate(0deg); }
}
@keyframes lcbpMoodTremble {
0%, 78%   { transform: translateX(0) rotate(0deg); }
80.5%     { transform: translateX(-3px) rotate(-3deg); }
83%       { transform: translateX(3px) rotate(3deg); }
85.5%     { transform: translateX(-3px) rotate(-3deg); }
88%       { transform: translateX(3px) rotate(3deg); }
90.5%     { transform: translateX(-2px) rotate(-1.5deg); }
93%       { transform: translateX(0) rotate(0deg); }
100%      { transform: translateX(0) rotate(0deg); }
}
@keyframes lcbpMoodDroop {
0%, 70%   { transform: translateY(0) rotate(0deg); }
84%       { transform: translateY(5px) rotate(-4deg); }
93%       { transform: translateY(1px) rotate(2deg); }
100%      { transform: translateY(0) rotate(0deg); }
}
.lcbp-happy-mood::after {
content: attr(data-label);
position: absolute;
bottom: 120%;
left: 50%;
transform: translateX(-50%) translateY(4px);
background: #7a4238;
color: #fff;
font-size: 11px;
font-weight: 600;
padding: 4px 9px;
border-radius: 8px;
white-space: nowrap;
opacity: 0;
pointer-events: none;
transition: opacity .15s ease, transform .15s ease;
z-index: 20;
}
.lcbp-happy-mood.is-hot::after,
.lcbp-happy-mood:focus-visible::after {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
.lcbp-happy-affirm {
min-height: 30px;
margin: 12px 0 0;
text-align: center;
font-size: 20px;
font-weight: 700;
color: #d97b3f;
opacity: 0;
transform: translateY(4px) scale(.9);
transition: opacity .35s ease, transform .35s ease;
}
.lcbp-happy-affirm.is-visible { opacity: 1; transform: translateY(0) scale(1); }
.lcbp-happy-affirm.is-care { color: #b5651d; } .lcbp-happy-stage {
position: relative;
z-index: 1;
height: 480px;
max-height: 60vh;
border-radius: 20px;
overflow: hidden;
background: linear-gradient(180deg, rgba(255,255,255,.2) 0%, rgba(255,255,255,0) 40%);
} .lcbp-happy-stage::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 460px;
height: 460px;
transform: translate(-50%, -50%);
background: radial-gradient(circle, rgba(255,255,255,.8) 0%, rgba(255,255,255,.45) 30%, rgba(255,255,255,.15) 55%, rgba(255,255,255,0) 75%);
border-radius: 50%;
pointer-events: none;
z-index: 0;
} .lcbp-happy-doodles { position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; }
.lcbp-happy-doodle {
position: absolute;
top: 0; left: 0;
fill: none;
stroke: #b3695c;
stroke-width: 1;
stroke-linecap: round;
stroke-linejoin: round;
will-change: transform;
animation-name: lcbpHappyDoodleFloat;
animation-timing-function: ease-in-out;
animation-iteration-count: infinite;
} .lcbp-happy-doodle path,
.lcbp-happy-doodle circle,
.lcbp-happy-doodle rect {
vector-effect: non-scaling-stroke;
}
@keyframes lcbpHappyDoodleFloat {
0%, 100% { transform: translate(-50%, -50%) translateY(0) rotate(-4deg); }
50%      { transform: translate(-50%, -50%) translateY(-12px) rotate(4deg); }
} .lcbp-happy-doodle-pencil   { top: 9%;  left: 7%;  width: 92px;  opacity: .55; animation-duration: 7s;   animation-delay: 0s; }
.lcbp-happy-doodle-bird     { top: 7%;  left: 68%; width: 78px;  opacity: .35; animation-duration: 6s;   animation-delay: 1s; }
.lcbp-happy-doodle-heart    { top: 15%; left: 32%; width: 64px;  opacity: .8;  animation-duration: 8s;   animation-delay: .5s; }
.lcbp-happy-doodle-pen      { top: 16%; left: 89%; width: 100px; opacity: .45; animation-duration: 7.5s; animation-delay: 2s; }
.lcbp-happy-doodle-coffee   { top: 43%; left: 15%; width: 86px;  opacity: .6;  animation-duration: 9s;   animation-delay: 1.5s; }
.lcbp-happy-doodle-cat      { top: 45%; left: 85%; width: 118px; opacity: .5;  animation-duration: 8.5s; animation-delay: 3s; }
.lcbp-happy-doodle-notebook { top: 75%; left: 6%;  width: 70px;  opacity: .4;  animation-duration: 7s;   animation-delay: 2.5s; }
.lcbp-happy-doodle-book     { top: 73%; left: 93%; width: 108px; opacity: .65; animation-duration: 8s;   animation-delay: 1s; }
.lcbp-happy-balloons { position: absolute; inset: 0; z-index: 1; }
.lcbp-happy-balloon {
position: absolute;
top: 0; left: 0;
max-width: 168px;
padding: 10px 14px;
border-radius: 20px;
font-size: 13px;
line-height: 1.4;
font-weight: 500;
color: #6b3f37;
cursor: grab;
touch-action: none; user-select: none;
box-shadow: 0 8px 16px rgba(178,90,70,.14);
will-change: transform;
transition: box-shadow .2s ease;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
opacity: 0;
animation: lcbpHappyPop .5s cubic-bezier(.34,1.56,.64,1) forwards;
}
@keyframes lcbpHappyPop {
from { opacity: 0; transform: scale(.4); }
to   { opacity: 1; }
}
.lcbp-happy-balloon[data-c="1"] { background: #fff0e0; }
.lcbp-happy-balloon[data-c="2"] { background: #ffe4ec; }
.lcbp-happy-balloon[data-c="3"] { background: #fff6d9; }
.lcbp-happy-balloon[data-c="4"] { background: #ffe9f5; }
.lcbp-happy-balloon[data-c="5"] { background: #ffeadd; }
.lcbp-happy-balloon[data-c="6"] { background: #fdf2e9; }
.lcbp-happy-balloon.is-near   { box-shadow: 0 10px 22px rgba(178,90,70,.22); }
.lcbp-happy-balloon.is-hover {
-webkit-line-clamp: unset;
max-width: 240px;
z-index: 5;
box-shadow: 0 16px 30px rgba(178,90,70,.3);
}
.lcbp-happy-balloon.is-fading { opacity: 0 !important; transition: opacity .8s ease; } .lcbp-happy-balloon.is-dragging {
cursor: grabbing;
z-index: 30;
transition: none;
box-shadow: 0 20px 34px rgba(178,90,70,.4);
} .lcbp-happy-diary-wrap {
position: absolute;
left: 50%;
bottom: 10px;
transform: translateX(-50%);
display: flex;
flex-direction: column;
align-items: center;
gap: 6px;
z-index: 10;
pointer-events: none;
}
.lcbp-happy-diary { width: 104px; height: 113px; filter: drop-shadow(0 10px 14px rgba(178,90,70,.25)); animation: lcbpHappyBreathe 3.6s ease-in-out infinite; }
@keyframes lcbpHappyBreathe {
0%, 100% { transform: translateY(0) scale(1); }
50%      { transform: translateY(-3px) scale(1.015); }
}
.lcbp-happy-diary-pages     { fill: #fffaf3; }
.lcbp-happy-diary-pageline  { stroke: #ffd9c6; stroke-width: 1.5; stroke-linecap: round; }
.lcbp-happy-diary-cover     { fill: #fff1e4; stroke: #ffcbb5; stroke-width: 1.5; }
.lcbp-happy-diary-spine     { fill: #ffb199; }
.lcbp-happy-diary-ribbon    { fill: #ff8fa3; }
.lcbp-happy-diary-heart     { fill: #ffb4a8; }
.lcbp-happy-diary-clasp     { transform-origin: 54px 92.5px; transition: transform .18s ease; }
.lcbp-happy-diary-strap     { fill: #ffab91; }
.lcbp-happy-diary-buckle    { fill: #fff6ee; stroke: #ffab91; stroke-width: 2; }
.lcbp-happy-diary-buckle-heart { fill: #ff7e94; }
.lcbp-happy-diary.is-catching .lcbp-happy-diary-clasp { animation: lcbpHappyClaspFlip .55s ease; }
.lcbp-happy-diary.is-catching .lcbp-happy-diary-cover { animation: lcbpHappySquish .5s ease; }
@keyframes lcbpHappyClaspFlip {
0%   { transform: rotate(0deg); }
35%  { transform: rotate(-30deg) translateY(-3px); }
65%  { transform: rotate(-8deg); }
100% { transform: rotate(0deg); }
}
@keyframes lcbpHappySquish {
0%, 100% { transform: scaleY(1); }
45%      { transform: scaleY(.9) scaleX(1.04); }
70%      { transform: scaleY(1.03) scaleX(.98); }
}
.lcbp-happy-count {
font-size: 12.5px;
font-weight: 700;
color: #a1493f;
background: rgba(255,255,255,.75);
padding: 3px 12px;
border-radius: 999px;
} .lcbp-happy-flying {
position: fixed;
z-index: 99999;
padding: 10px 14px;
border-radius: 18px;
background: #fffdf9;
font-family: 'Sarabun', sans-serif;
font-size: 13.5px;
font-weight: 500;
color: #6b3f37;
box-shadow: 0 10px 24px rgba(178,90,70,.3);
pointer-events: none;
max-width: 220px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
will-change: transform, opacity;
} .lcbp-happy-particle {
position: fixed;
z-index: 99998;
width: 8px; height: 8px;
border-radius: 50%;
pointer-events: none;
will-change: transform, opacity;
} .lcbp-happy-hint { position: relative; z-index: 1; text-align: center; margin: 14px 0 0; font-size: 12.5px; color: #ffffff; } @media (max-width: 640px) {
.lcbp-happy-wrap { padding: 12px 6px 16px; }
.lcbp-happy-stage { height: 380px; }
.lcbp-happy-balloon { max-width: 128px; font-size: 12px; padding: 8px 11px; }
.lcbp-happy-note { padding: 13px 14px 10px; }
.lcbp-happy-affirm { font-size: 17px; }
.lcbp-mood-emoji { font-size: clamp(28px, 14vw - 12px, 46px); } .lcbp-happy-moods { flex: 1 0 100%; justify-content: space-between; flex-wrap: nowrap; gap: 3px; }
.lcbp-happy-mood { padding: 2px 1px; }
.lcbp-happy-save-btn { flex: 1 0 100%; justify-content: center; margin-left: 0; } .lcbp-happy-doodle-pencil   { width: 36px !important; }
.lcbp-happy-doodle-bird     { width: 30px !important; }
.lcbp-happy-doodle-heart    { width: 26px !important; }
.lcbp-happy-doodle-pen      { width: 40px !important; }
.lcbp-happy-doodle-coffee   { width: 34px !important; }
.lcbp-happy-doodle-cat      { width: 46px !important; }
.lcbp-happy-doodle-notebook { width: 28px !important; }
.lcbp-happy-doodle-book     { width: 42px !important; }
.lcbp-happy-stage::before { width: 300px; height: 300px; }
} @media (prefers-reduced-motion: reduce) {
.lcbp-happy-cloud, .lcbp-happy-spark, .lcbp-happy-diary, .lcbp-happy-doodle { animation: none !important; }
.lcbp-mood-emoji { animation: none !important; }
.lcbp-happy-balloon { transition: none !important; }
}