StudioAmico / src /components /Whiteboard.css
outshine84
feat: add interactive bot component with animations and speech recognition support
e0fe873
.whiteboard {
width: 100%;
max-width: 100%;
min-height: var(--board-min-height);
height: var(--board-max-height);
max-height: var(--board-max-height);
flex: 1;
box-sizing: border-box;
background: #FFFFF0;
border: 4px solid #C8860A;
border-radius: 12px;
padding: 40px 48px;
box-shadow: 0 6px 20px rgba(180, 100, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.9);
display: block;
transform: translate(var(--board-shift-x), var(--board-shift-y)) scale(var(--board-scale));
transform-origin: center top;
margin: 0 auto;
overflow-y: scroll;
overflow-x: hidden;
scrollbar-gutter: stable;
scrollbar-width: auto;
scrollbar-color: #DAA520 #f1f1f1;
}
.whiteboard {
-webkit-overflow-scrolling: touch;
}
.whiteboard-content {
width: 100%;
min-height: 100%;
display: block;
padding-right: 8px;
}
.whiteboard-markdown {
font-size: 22px;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
color: #3A2800;
line-height: 1.65;
text-align: left;
font-style: normal;
margin: 0;
padding: 0;
animation: fadeIn 0.5s ease-in;
}
.whiteboard-markdown > :first-child {
margin-top: 0;
}
.whiteboard-markdown > :last-child {
margin-bottom: 0;
}
.whiteboard-markdown h1,
.whiteboard-markdown h2,
.whiteboard-markdown h3 {
color: #2F2100;
margin: 10px 0 8px;
line-height: 1.3;
}
.whiteboard-markdown h1 {
font-size: 31px;
}
.whiteboard-markdown h2 {
font-size: 27px;
}
.whiteboard-markdown h3 {
font-size: 24px;
}
.whiteboard-markdown p {
margin: 0 0 10px;
}
.whiteboard-markdown ul,
.whiteboard-markdown ol {
margin: 0 0 12px 24px;
}
.whiteboard-markdown li {
margin-bottom: 4px;
}
.whiteboard-markdown strong {
color: #2A1B00;
}
.whiteboard-markdown blockquote {
margin: 10px 0;
padding: 8px 12px;
border-left: 4px solid #D9A52E;
background: #FFF6D9;
border-radius: 6px;
}
.whiteboard-markdown code {
background: rgba(58, 40, 0, 0.08);
padding: 2px 6px;
border-radius: 6px;
font-size: 0.86em;
}
.whiteboard-markdown pre {
background: #FFF4CD;
border: 2px solid #D5AB41;
border-radius: 10px;
padding: 12px;
overflow-x: auto;
}
.whiteboard-markdown pre code {
background: transparent;
padding: 0;
}
.whiteboard-markdown table {
width: 100%;
border-collapse: collapse;
margin: 10px 0 14px;
font-size: 0.85em;
}
.whiteboard-markdown th,
.whiteboard-markdown td {
border: 2px solid #D8BC67;
padding: 6px 8px;
}
.whiteboard-markdown th {
background: #FFE9A7;
}
.whiteboard-previews {
margin-top: 18px;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 12px;
}
.whiteboard-visual-loader {
margin-top: 18px;
display: inline-flex;
align-items: center;
gap: 12px;
padding: 12px 16px;
border-radius: 999px;
border: 2px solid #D9A52E;
background: #FFF6D9;
color: #6A4700;
font-size: 15px;
font-weight: 700;
}
.whiteboard-visual-loader-spinner {
width: 18px;
height: 18px;
border-radius: 50%;
border: 3px solid rgba(179, 119, 8, 0.22);
border-top-color: #B37708;
animation: whiteboardSpinner 0.9s linear infinite;
}
.preview-card {
margin: 0;
border: 2px solid #C8860A;
border-radius: 10px;
overflow: hidden;
background: #fffdf4;
box-shadow: 0 4px 10px rgba(140, 90, 10, 0.15);
aspect-ratio: 1 / 1;
display: flex;
align-items: center;
justify-content: center;
}
.preview-card img {
width: 100%;
height: 100%;
object-fit: contain;
display: block;
background: #fffaf0;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes whiteboardSpinner {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* Scrollbar per testi lunghi */
.whiteboard::-webkit-scrollbar {
width: 8px;
}
.whiteboard::-webkit-scrollbar-track {
background: #f1f1f1;
}
.whiteboard::-webkit-scrollbar-thumb {
background: #DAA520;
border-radius: 4px;
}
.whiteboard::-webkit-scrollbar-thumb:hover {
background: #B8860B;
}
@media (max-width: 768px) {
.whiteboard {
border-width: 3px;
border-radius: 10px;
padding: 22px 18px;
}
.whiteboard-content {
padding-right: 2px;
}
.whiteboard-markdown {
font-size: 18px;
line-height: 1.58;
}
.whiteboard-markdown h1 {
font-size: 25px;
}
.whiteboard-markdown h2 {
font-size: 22px;
}
.whiteboard-markdown h3 {
font-size: 20px;
}
.whiteboard-previews {
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 8px;
}
.whiteboard-visual-loader {
font-size: 13px;
padding: 9px 12px;
}
}
@media (max-width: 480px) {
.whiteboard {
padding: 16px 12px;
}
.whiteboard-markdown {
font-size: 16px;
}
.whiteboard-markdown ul,
.whiteboard-markdown ol {
margin-left: 18px;
}
}