.asst {
position: fixed;
right: 20px;
bottom: 20px;
z-index: 45;
font-family: var(--font);
}
.has-cookiebar .asst { bottom: 96px; }
.asst-fab {
display: flex;
align-items: center;
gap: 9px;
margin-left: auto;
padding: 13px 19px;
border-radius: 999px;
border: 1px solid var(--accent-border);
background: rgba(13, 17, 22, 0.82);
color: var(--text);
font: inherit;
font-size: 0.95rem;
font-weight: 600;
cursor: pointer;
-webkit-backdrop-filter: blur(18px) saturate(160%);
backdrop-filter: blur(18px) saturate(160%);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.07), 0 12px 32px rgba(0, 0, 0, 0.45);
transition: border-color 0.15s ease, transform 0.15s ease;
}
.asst-fab:hover { border-color: var(--accent); transform: translateY(-1px); }
.asst-fab:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.asst-fab .ico { color: var(--accent); }
.asst .ico {
width: 20px;
height: 20px;
flex: none;
fill: none;
stroke: currentColor;
stroke-width: 1.7;
stroke-linecap: round;
stroke-linejoin: round;
}
.asst-panel {
position: absolute;
right: 0;
bottom: calc(100% + 12px);
width: min(400px, calc(100vw - 32px));
height: min(560px, calc(100vh - 140px));
display: flex;
flex-direction: column;
border-radius: var(--r-lg);
border: 1px solid var(--border-strong);
background: rgba(13, 17, 22, 0.72);
-webkit-backdrop-filter: blur(18px) saturate(160%);
backdrop-filter: blur(18px) saturate(160%);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.07), 0 24px 64px rgba(0, 0, 0, 0.55);
overflow: hidden;
}
@supports not (backdrop-filter: blur(1px)) {
.asst-panel { background: var(--surface); }
.asst-fab { background: var(--surface); }
}
.asst-head {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 16px 16px 12px;
border-bottom: 1px solid var(--border);
}
.asst-head-txt {
flex: 1 1 auto;
min-width: 0;
}
.asst-head h2 {
margin: 0;
font-size: 1rem;
font-weight: 650;
color: var(--text);
line-height: 1.3;
}
.asst-lead {
margin: 4px 0 0;
font-size: 0.8rem;
line-height: 1.45;
color: var(--text-muted);
}
.asst-empezada .asst-lead { display: none; }
.asst-close {
flex: none;
padding: 6px;
border: 0;
border-radius: var(--r-sm);
background: none;
color: var(--text-faint);
cursor: pointer;
}
.asst-close:hover { color: var(--text); }
.asst-close:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.asst-log {
flex: 1 1 0;
min-height: 0;
overflow-y: auto;
overscroll-behavior: contain;
padding: 14px 16px;
display: flex;
flex-direction: column;
gap: 10px;
}
.asst-head,
.asst-chips,
.asst-status,
.asst-offline,
.asst-form {
flex: none;
}
.asst-log:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
.asst-msg {
max-width: 88%;
padding: 9px 12px;
border-radius: var(--r);
font-size: 0.875rem;
line-height: 1.55;
white-space: normal;
}
.asst-msg p { margin: 0 0 0.6em; }
.asst-msg p:last-child { margin-bottom: 0; }
.asst-msg ul,
.asst-msg ol { margin: 0 0 0.6em; padding-left: 1.2em; }
.asst-msg li { margin: 0.15em 0; }
.asst-msg code {
font-family: var(--font-mono);
font-size: 0.9em;
padding: 0.1em 0.35em;
border-radius: 4px;
background: rgba(255, 255, 255, 0.07);
}
.asst-me {
align-self: flex-end;
background: var(--accent-soft);
border: 1px solid var(--accent-border);
color: var(--text);
}
.asst-bot {
align-self: flex-start;
background: rgba(6, 8, 11, 0.55);
border: 1px solid var(--border);
color: var(--text);
}
.asst-links {
align-self: flex-start;
display: flex;
flex-wrap: wrap;
gap: 6px;
max-width: 88%;
}
.asst-link {
padding: 5px 10px;
border-radius: 999px;
border: 1px solid var(--accent-border);
background: var(--accent-soft);
color: var(--accent);
font-size: 0.78rem;
text-decoration: none;
}
.asst-link:hover { border-color: var(--accent); color: var(--accent-hover); }
.asst-chips {
display: flex;
flex-wrap: wrap;
gap: 6px;
padding: 0 16px 12px;
}
.asst-chip {
padding: 6px 11px;
border-radius: 999px;
border: 1px solid var(--border-strong);
background: transparent;
color: var(--text-muted);
font: inherit;
font-size: 0.78rem;
cursor: pointer;
text-align: left;
}
.asst-chip:hover { border-color: var(--accent-border); color: var(--text); }
.asst-chip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.asst-status {
margin: 0;
padding: 0 16px 10px;
font-size: 0.8rem;
color: var(--text-muted);
min-height: 0;
}
.asst-status[data-tone='err'] { color: var(--program); }
.asst-status[data-tone='warn'] { color: var(--cued); }
.asst-retry {
margin-left: 8px;
padding: 3px 9px;
border-radius: var(--r-sm);
border: 1px solid var(--border-strong);
background: transparent;
color: var(--text);
font: inherit;
font-size: 0.78rem;
cursor: pointer;
}
.asst-retry:hover { border-color: var(--accent-border); }
.asst-dots span {
display: inline-block;
animation: asst-blink 1.2s infinite both;
}
.asst-dots span:nth-child(2) { animation-delay: 0.18s; }
.asst-dots span:nth-child(3) { animation-delay: 0.36s; }
@keyframes asst-blink {
0%, 70%, 100% { opacity: 0.25; }
35% { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
.asst-dots span { animation: none; opacity: 0.7; }
.asst-fab { transition: none; }
}
.asst-offline {
margin: 0 16px 12px;
padding: 12px 14px;
border-radius: var(--r);
border: 1px solid var(--border-strong);
background: rgba(6, 8, 11, 0.55);
}
.asst-offline p {
margin: 0 0 10px;
font-size: 0.85rem;
line-height: 1.5;
color: var(--text-muted);
}
.asst-offline-cta {
display: inline-block;
padding: 7px 14px;
border-radius: var(--r-sm);
border: 1px solid var(--accent-border);
color: var(--accent);
font-size: 0.82rem;
font-weight: 600;
text-decoration: none;
}
.asst-offline-cta:hover { border-color: var(--accent); }
.asst-form {
display: flex;
align-items: stretch;
gap: 8px;
padding: 12px 16px;
border-top: 1px solid var(--border);
}
.asst-lbl {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.asst-form textarea {
flex: 1 1 auto;
min-width: 0;
max-height: 120px;
padding: 9px 11px;
border-radius: var(--r);
border: 1px solid var(--border-strong);
background: rgba(6, 8, 11, 0.6);
color: var(--text);
font: inherit;
font-size: 0.875rem;
line-height: 1.45;
resize: none;
}
.asst-form textarea::placeholder { color: var(--text-faint); }
.asst-form textarea:focus-visible {
outline: none;
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-soft);
}
.asst-send {
flex: none;
aspect-ratio: 1;
display: grid;
place-items: center;
padding: 0;
border-radius: var(--r);
border: 1px solid transparent;
background: var(--accent);
color: #05201a;
font: inherit;
cursor: pointer;
}
.asst-send:hover { background: var(--accent-hover); }
.asst-send:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.asst-send[disabled] { opacity: 0.55; cursor: default; }
.asst-send .ico { width: 20px; height: 20px; stroke-width: 2; }
.asst-trap {
position: absolute;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
.asst-clear {
flex: none;
margin-top: 2px;
padding: 4px 8px;
border: 1px solid var(--border-strong);
border-radius: 999px;
background: none;
color: var(--text-faint);
font: inherit;
font-size: 0.7rem;
line-height: 1.4;
cursor: pointer;
white-space: nowrap;
}
.asst-clear:hover { border-color: var(--accent-border); color: var(--text); }
.asst-clear:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
@media (max-width: 640px) {
.asst { right: 14px; bottom: 14px; }
.asst-fab { padding: 14px; }
.asst-fab-txt { display: none; }
.asst-panel {
position: fixed;
inset: 10px;
width: auto;
height: auto;
}
}
@media (max-width: 640px) {
body.asst-open { overflow: hidden; }
}
