Actions

Work Header

Rating:
Archive Warning:
Fandoms:
Additional Tags:
Language:
English
Series:
Part 1 of Personal Repository
Stats:
Published:
2025-12-21
Updated:
2026-01-08
Words:
2,182
Chapters:
4/?
Comments:
2
Kudos:
9
Bookmarks:
1
Hits:
326

chat [work skin]

Summary:

1. simple Chat v01
2. colorful chat [Void Themed Chat Skin]
3. Global chat skin [Cute Pink]
4. Global chat skin [starry night]

Chapter 1: simple Chat v01

Summary:

Includes system messages, group chats, typing indicators, quotes, mentions (@user), and floating timestamps aligned to the bubble corners.
Designed for chatfics and message-based narratives.

codepen link.

Inspired by Honkai Star Rail Text Messages (AO3 Work Skin) by Pent

Inspired by iMessage Skin by Azdaema Codes (Azdaema)

Chapter Text

group's name

USER
MESSAGE1
MESSAGE2
USER
MESSAGE
USER
MESSAGE 10:46
USER
MESSAGE1 10:46
MESSAGE2 10:46
USER
USER2 QUOTED MESSAGE TEXT.
REPLYING MESSAGE 10:46
USER
USER2 QUOTED MESSAGE TEXT.
REPLYING MESSAGE 10:46
USER
USER2 QUOTED MESSAGE TEXT.
REPLYING MESSAGE
USER
USER2 QUOTED MESSAGE TEXT.
REPLYING MESSAGE
USER
USER
USER
@USER2OPTIONAL MESSAGE
USER
@USER2OPTIONAL MESSAGE
SYSTEM MESSAGE

SYSTEM MESSAGE


<dl class="message">

<div class="message grouptext">

<h4 class="chat-title">group's name</h4>


<div class="in">
<dt>USER</dt>
<dd>MESSAGE1</dd>
<dd>MESSAGE2</dd>
</div>

<div class="out">
<dt>USER</dt>
<dd>MESSAGE</dd>
</div>

<div class="in">
<dt>USER</dt>
<dd>MESSAGE
<span class="timestamp">10:46</span>
</dd>
</div>

<div class="out">
<dt>USER</dt>
<dd>MESSAGE1
<span class="timestamp">10:46</span>
</dd>
<dd>MESSAGE2
<span class="timestamp">10:46</span>
</dd>
</div>

<div class="in">
<dt>USER</dt>
<dd>
<div class="quote-box">
<span class="quote-author">USER2</span>
<span class="quote-text">QUOTED MESSAGE TEXT.</span>
 </div>
REPLYING MESSAGE
<span class="timestamp">10:46</span>
 </dd>
</div>

<div class="out">
<dt>USER</dt>
<dd>
<div class="quote-box">
<span class="quote-author">USER2</span>
<span class="quote-text">QUOTED MESSAGE TEXT.</span>
 </div>
REPLYING MESSAGE
<span class="timestamp">10:46</span>
 </dd>
</div>

<div class="in">
<dt>USER</dt>
<dd>
<div class="quote-box">
<span class="quote-author">USER2</span>
<span class="quote-text">QUOTED MESSAGE TEXT.</span>
 </div>
REPLYING MESSAGE
 </dd>
</div>

<div class="out">
<dt>USER</dt>
<dd>
<div class="quote-box">
<span class="quote-author">USER2</span>
<span class="quote-text">QUOTED MESSAGE TEXT.</span>
 </div>
REPLYING MESSAGE
 </dd>
</div>

<div class="in">
<dt>USER</dt>
<dd class="typing"><div></div><div></div><div></div></dd>
</div>

<div class="out">
<dt>USER</dt>
<dd class="typing"><div></div><div></div><div></div></dd>
</div>

  <div class="out">
<dt>USER</dt>
    <dd>
      <span class="mention">@USER2</span>OPTIONAL MESSAGE
    </dd>
  </div>

 <div class="in">
<dt>USER</dt>
    <dd>
      <span class="mention">@USER2</span>OPTIONAL MESSAGE
    </dd>
  </div>


<div class="system">SYSTEM MESSAGE</div>

<h4 class="system">SYSTEM MESSAGE</h4></div></dl>


#workskin .chat-title {
font-weight: bold;
font-family: system-ui;
font-size: 2em;
border-bottom: 1px solid #555;
padding: 15px 0 25px 0;
text-align: center;
}

#workskin .message {
width: 100%;
max-width: 320px;
font-family: "FF DIN", "DinText", Helvetica, system-ui;
display: table;
margin: auto;
}

#workskin .message * {
font-family: inherit;
}

#workskin .message dt {
display: none;
}

#workskin .message dd {
position: relative;
padding-bottom: 1.2em;
}

#workskin .message .in dd,
#workskin .message .out dd {
line-height: 1.3em;
margin: 3px 0;
padding: 0.7em 0.9em;
max-width: 70%;
clear: both;
position: relative;
z-index: 1;
}

#workskin .message .in dd:last-child,
#workskin .message .out dd:last-child {
margin-bottom: 1rem;
}

#workskin .message .in dd {
float: left;
background: #ededed;
color: black;
border-radius: 2px 12px 12px 12px;
box-shadow: 1px 2px #222;
}

#workskin .message .out dd {
float: right;
background: #9081b8;
color: black;
border-radius: 12px 2px 12px 12px;
box-shadow: 1px 2px #6a5a91;
}

#workskin .message .in dd.typing div {
height: 0.625rem;
width: 0.625rem;
border-radius: 100%;
background: #8e8e93;
display: inline-block;
margin: 0.125em 0;
}

#workskin .message .in dd.typing div:nth-child(1) {
opacity: 0.4;
margin-right: 0.125em;
}

#workskin .message .in dd.typing div:nth-child(2) {
opacity: 0.7;
margin-right: 0.125em;
}

#workskin .message .in dd.typing div:nth-child(3) {
opacity: 1;
}

#workskin .message .out dd.typing div {
height: 0.625rem;
width: 0.625rem;
border-radius: 100%;
background: #12071d;
display: inline-block;
margin: 0.125em 0;
}

#workskin .message .out dd.typing div:nth-child(1) {
opacity: 1;
margin-right: 0.125em;
}

#workskin .message .out dd.typing div:nth-child(2) {
opacity: 0.7;
margin-right: 0.125em;
}

#workskin .message .out dd.typing div:nth-child(3) {
opacity: 0.4;
}

#workskin .message .system,
#workskin .message.grouptext .in dt,
#workskin .message.grouptext .out dt {
clear: both;
font-weight: normal;
font-size: 0.85rem;
color: #666868;
}

#workskin .message .system {
display: block;
text-align: center;
margin: 0;
padding: 1rem;
font-size: 0.9rem;
color: #858586;
}

#workskin .message .system::before {
content: "";
background-repeat: no-repeat;
background-size: contain;
padding-left: 25px;
vertical-align: middle;
}

#workskin .message.grouptext .in dt {
display: table !important;
}

#workskin .message.grouptext .out dt {
display: table !important;
float: right;
}

#workskin .quote-box {
background: rgba(0, 0, 0, 0.05);
border-left: 3px solid #6b6b6b;
padding: 5px 8px;
margin-bottom: 6px;
border-radius: 4px;
font-size: 0.85em;
line-height: 1.2em;
color: #444;
}

#workskin .quote-author {
font-weight: 600;
color: #1b1b1b;
display: block;
margin-bottom: 2px;
}

#workskin .in .quote-text {
color: #555;
white-space: pre-wrap;
}

#workskin .out .quote-text {
color: #222;
white-space: pre-wrap;
}

#workskin .message .in .quote-box {
border-left-color: #888;
}

#workskin .message .out .quote-box {
border-left-color: #6a5a91;
background: rgba(0, 0, 0, 0.08);
}

#workskin .in .mention {
color: #0b81ff;
font-weight: 600;
background: rgba(11, 129, 255, 0.08);
padding: 2px 5px;
border-radius: 5px;
cursor: pointer;
transition: 0.2s;
}

#workskin .in .mention:hover {
background: rgba(11, 129, 255, 0.15);
}

#workskin .out .mention {
color: #6600CC;
font-weight: 600;
background: rgba(102, 0, 204, 0.10);
padding: 2px 5px;
border-radius: 5px;
cursor: pointer;
transition: 0.2s;
}

#workskin .out .mention:hover {
background: rgba(102, 0, 204, 0.20);
}

#workskin .in .timestamp {
display: inline-block;
font-size: 0.7em;
color: #555;
position: absolute;
bottom: -3px;
right: 8px;
opacity: 0.8;
}

#workskin .out .timestamp {
display: inline-block;
font-size: 0.7em;
color: #0d0d0d;
position: absolute;
bottom: -3px;
right: 8px;
opacity: 0.8;
}