<div class="panel">
<div class="frame rim"></div>
<div class="frame accent"></div>
<div class="frame accent glow"></div>
<div class="circle">ðŸŒ</div>
<div class="content">
Lorem ipsum dolor sit, amet consectetur adipisicing elit. Magni harum vitae, ex ad aut corrupti corporis molestias velit exercitationem numquam cupiditate fuga, esse maxime officiis beatae molestiae odio in dolore!
</div>
</div>
.panel {
position: relative;
width: 300px;
height: 150px;
padding: 1em;
box-sizing: border-box;
}
.panel .frame,
.panel .frame::before {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
box-sizing: border-box;
}
.panel .content {
position: relative;
z-index: 1;
font-size: smaller;
}
.panel .circle {
position: absolute;
top: 100%;
left: 50%;
width: 45px;
height: 45px;
background-color: #111216;
box-shadow: inset 0 0 0 1px #8bc34a;
border-radius: 50%;
transform: translateX(-50%) translateY(-50%);
display: flex;
align-items: center;
justify-content: center;
}
/* Gray border */
.frame.rim {
border: 1px solid #303030;
box-shadow:
inset 0 0 0 1px #0a0a0a,
0 0 0 1px #0a0a0a;
background-color: #111216;
clip-path: path('\
M0,0 \
L300,0 \
L300,150 \
L180,150 \
A 30 30 0 0 0 120,150 \
L0,150 \
L0,0 \
');
}
/* Green accent edges */
.frame.accent::before {
content: '';
background-image: linear-gradient(
to top,
#8bc34a,
#558b2f99 25%,
transparent 70%
);
clip-path: path('\
M0,0 \
L300,0 \
L300,150 \
L180,150 \
A 30 30 0 0 0 120,150 \
L0,150 \
L0,0 \
L1,1 \
L1,149 \
L119,149 \
A 30 30 0 0 1 181,149 \
L299,149 \
L299,1 \
L1,1 \
');
}
/* Glow is just a copy of the accent frame with a blur filter */
.frame.accent.glow {
filter: blur(4px);
}
body {
background-color: #0b0c0d;
color: silver;
font-family: Segoe UI,Helvetica Neue,Tahoma,Geneva,Verdana,sans-serif;
display: flex;
align-items: center;
justify-content: center;
width: 100vw;
height: 100vh;
overflow: hidden;
margin: 0;
}
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.