Files
test_ai_assigment/public/styles.css
T

127 lines
8.0 KiB
CSS

:root {
color-scheme: light;
font-family: Inter, 'Segoe UI', sans-serif;
color: #142921;
background: #f3f5ef;
font-size: 16px;
line-height: 1.5;
--green: #15583e;
--dark-green: #103a2c;
--border: #d9e2d9;
--muted: #4f6257;
}
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; }
.topbar { background: var(--dark-green); color: #fff; }
.topbar-inner { max-width: 1440px; padding: 15px clamp(16px, 4vw, 56px); margin: auto; display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.product { font-weight: 750; letter-spacing: .015em; }
.header-actions, .queue-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: end; gap: 8px; }
.mode { font-size: .82rem; border: 1px solid #7da894; color: #f1fff4; padding: 3px 10px; border-radius: 20px; text-align: center; }
main { max-width: 1440px; padding: clamp(24px, 4vw, 54px) clamp(16px, 4vw, 56px); margin: auto; }
h1, h2, h3, p { margin-top: 0; }
h1 { font-size: clamp(2rem, 4.4vw, 3.25rem); font-weight: 770; letter-spacing: -.045em; line-height: 1.06; margin-bottom: 12px; }
h2 { font-size: 1.2rem; letter-spacing: -.015em; margin-bottom: 16px; }
h3 { font-size: 1.15rem; margin-bottom: 8px; }
.page-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.workspace { display: grid; grid-template-columns: minmax(260px, 320px) minmax(0, 1fr); gap: 20px; align-items: start; }
.panel { background: #fff; border: 1px solid var(--border); border-radius: 14px; padding: clamp(15px, 2vw, 26px); }
label { display: block; font-size: .87rem; font-weight: 650; margin-bottom: 5px; }
select, textarea, button { font: inherit; }
select, textarea { display: block; width: 100%; padding: 8px 11px; border: 1px solid #a7b9ad; border-radius: 7px; background: #fff; color: inherit; margin-bottom: 12px; }
select { min-height: 43px; }
textarea { resize: vertical; min-height: 90px; }
select:disabled, textarea:disabled { color: var(--muted); background: #f6f8f3; }
textarea::placeholder { color: #64796b; }
button, .secondary { border-radius: 7px; padding: 8px 13px; text-decoration: none; cursor: pointer; font-weight: 700; font-size: .88rem; }
button { background: var(--green); color: #fff; border: 1px solid var(--green); }
button:hover:not(:disabled) { background: var(--dark-green); }
button:disabled { cursor: wait; opacity: .64; }
.header-button { color: #fff; background: transparent; border-color: #7da894; }
.header-button:hover:not(:disabled) { background: #265b46; }
button:focus-visible, a:focus-visible, select:focus-visible, textarea:focus-visible, input:focus-visible { outline: 3px solid #45816b; outline-offset: 3px; }
.intake button { width: 100%; }
.secondary { background: #fff; color: var(--green); border: 1px solid #a7b9ad; white-space: nowrap; }
.secondary:hover, button.secondary:hover:not(:disabled) { background: #eef4ec; }
.note, .feedback { color: var(--muted); font-size: .84rem; }
.note { margin-bottom: 12px; }
.feedback { margin: 10px 0 0; }
.feedback:empty { display: none; }
.feedback[data-error="true"] { color: #942c20; }
.queue-header { display: flex; justify-content: space-between; align-items: start; gap: 8px; margin-bottom: 12px; }
.queue-header h2 { margin-bottom: 1px; }
.queue-header p { margin: 0; }
.clear-button { color: #9a3223; border-color: #d6a99f; }
button.clear-button:hover:not(:disabled) { background: #fbeeea; }
.queue-filters { display: flex; gap: 6px; margin-bottom: 12px; }
.queue-filter { background: #fff; color: var(--green); border-color: var(--border); }
.queue-filter:hover:not(:disabled) { background: #eef4ec; }
.queue-filter[aria-pressed="true"], .queue-filter[aria-pressed="true"]:hover:not(:disabled) { background: var(--green); color: #fff; border-color: var(--green); }
.empty { padding: 27px 16px; border: 1px dashed #adbdad; background: #f7faf4; border-radius: 8px; text-align: center; }
.empty p { font-weight: 700; margin: 0 0 3px; }
.empty span { color: var(--muted); font-size: .87rem; }
.table-scroll { overflow: auto; }
table { width: 100%; border-collapse: collapse; min-width: 485px; text-align: left; font-size: .85rem; }
thead { background: #eef4eb; }
th, td { padding: 9px 10px; vertical-align: top; }
tbody tr { border-bottom: 1px solid var(--border); }
tbody tr:has(button[aria-expanded="true"]) { background: #f2f7ef; }
.ticket-button { padding: 0; border: 0; background: transparent; color: var(--green); font-size: .9rem; text-align: left; overflow-wrap: anywhere; }
.ticket-button:hover:not(:disabled) { background: transparent; color: var(--dark-green); text-decoration: underline; }
.ticket-meta { display: block; color: var(--muted); margin-top: 3px; }
.tag { display: inline-block; border-radius: 20px; white-space: nowrap; padding: 2px 7px; font-weight: 650; background: #e9f3e7; color: #20533a; }
.tag[data-category="urgent"] { background: #fce9e2; color: #872f23; }
.tag[data-category="spam"] { background: #edf0ee; color: #45544b; }
.ticket-detail { padding: 16px; margin-top: 14px; border: 1px solid var(--border); background: #fbfdf9; border-radius: 8px; }
.detail-meta { color: var(--muted); font-size: .85rem; }
.source-id { overflow-wrap: anywhere; }
.detail-text { overflow-wrap: anywhere; white-space: pre-wrap; margin-bottom: 12px; }
.review { color: #76471a; background: #fff4d7; padding: 5px 8px; border-radius: 5px; width: fit-content; }
.controls { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.checkbox { display: flex; align-items: center; gap: 7px; margin-bottom: 11px; }
.checkbox input { accent-color: var(--green); }
.site-shell { max-width: 760px; }
.site-shell h1 { margin-bottom: 20px; }
.chat-panel-header, .chat-compose, .reply-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.chat-panel-header { min-height: 39px; margin-bottom: 10px; }
.chat-panel-header p { margin: 0; font-weight: 650; }
.chat-window { min-height: 145px; max-height: 48vh; overflow: auto; overscroll-behavior: contain; background: #f6f8f4; border: 1px solid var(--border); border-radius: 8px; margin-bottom: 15px; }
.chat-empty { color: var(--muted); margin: 0; padding: 25px 15px; }
.chat-log { display: grid; gap: 10px; margin: 0; padding: 12px; list-style: none; }
.chat-log li { justify-self: start; max-width: 88%; min-width: 0; padding: 9px 12px; border: 1px solid var(--border); border-radius: 10px; background: #fff; overflow-wrap: anywhere; }
.chat-log li[data-role="customer"], .chat-log li[data-role="staff"] { justify-self: end; background: #e7f3e9; }
.chat-log li[data-role="moderator"] { background: #fff7e6; border-color: #e8d9b5; }
.chat-log p { margin: 3px 0 0; white-space: pre-wrap; }
.chat-meta { display: flex; align-items: baseline; flex-wrap: wrap; gap: 3px 12px; color: var(--muted); font-size: .8rem; }
.chat-meta strong { color: #234539; }
.chat-compose { align-items: end; }
.chat-compose textarea { margin-bottom: 0; }
.ticket-chat { margin: 15px 0; padding-top: 13px; border-top: 1px solid var(--border); }
.ticket-chat h4 { margin: 0 0 8px; }
.ticket-chat .chat-window { min-height: 0; max-height: 340px; }
.ticket-chat .chat-log li { justify-self: start; }
.ticket-chat .chat-log li[data-role="operator"] { justify-self: end; }
.reply-actions { justify-content: start; flex-wrap: wrap; }
.exit-view { max-width: 520px; }
.exit-view h1 { margin-bottom: 20px; }
@media (max-width: 880px) {
.workspace { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 540px) {
.chat-compose { flex-direction: column; align-items: stretch; }
.chat-log li { max-width: 96%; }
table { min-width: 0; }
thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
tbody { display: block; }
tbody tr { display: grid; grid-template-columns: max-content minmax(0, 1fr) minmax(0, auto); gap: 5px 9px; padding: 10px 8px; }
td { padding: 0; overflow-wrap: anywhere; }
td:first-child { grid-column: 1 / -1; }
td:last-child { text-align: right; }
}
@media (max-width: 400px) {
.queue-header { align-items: stretch; flex-direction: column; }
.queue-actions { justify-content: start; }
}