/* Fray — Fraywire's assistant panel. Zinc palette to match the dashboard. */
.fray-launch{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px 0 10px;border-radius:8px;border:1px solid #3f3f46;background:#18181b;color:#e4e4e7;font:600 12.5px/1 Inter,system-ui,sans-serif;cursor:pointer;margin-right:4px}
.fray-launch:hover{border-color:#60a5fa;color:#fff}
.fray-launch svg{width:15px;height:15px;color:#60a5fa}
.fray-launch kbd{font:600 10px/1 "JetBrains Mono",ui-monospace,monospace;color:#71717a;border:1px solid #3f3f46;border-radius:4px;padding:2px 4px;margin-left:2px}
@media (max-width:900px){.fray-launch span,.fray-launch kbd{display:none}.fray-launch{padding:0 8px}}

.fray{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);z-index:100000;display:flex;flex-direction:column;background:#0f0f12;border-left:1px solid #27272a;box-shadow:-24px 0 60px rgba(0,0,0,.5);color:#e4e4e7;font:400 14px/1.55 Inter,system-ui,sans-serif;transform:translateX(102%);transition:transform .22s ease;visibility:hidden}
.fray.open{transform:none;visibility:visible}
@media (prefers-reduced-motion:reduce){.fray{transition:none}}
@media (max-width:640px){.fray{width:100vw;border-left:0;height:100dvh;bottom:auto}}
.fray *{box-sizing:border-box}
.fray button{font-family:inherit}

.fray-head{display:flex;align-items:center;gap:8px;padding:12px 12px 10px 16px;border-bottom:1px solid #27272a}
.fray-title{display:flex;align-items:center;gap:8px;font:700 15px/1 Inter,sans-serif;color:#fafafa}
.fray-title svg{width:18px;height:18px;color:#60a5fa}
.fray-head .sp{flex:1}
.fray-ib{width:32px;height:32px;border-radius:8px;border:1px solid transparent;background:none;color:#a1a1aa;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}
.fray-ib:hover{background:#1c1c21;color:#fff;border-color:#27272a}
.fray-ib svg{width:17px;height:17px}

.fray-ctx{display:flex;align-items:center;gap:8px;padding:8px 16px;border-bottom:1px solid #1f1f24;font-size:12.5px;color:#a1a1aa;background:#121216}
.fray-ctx b{color:#e4e4e7;font-weight:600}
.fray-ctx button{margin-left:auto;background:none;border:0;color:#71717a;cursor:pointer;font-size:12px}
.fray-ctx button:hover{color:#fff}

.fray-body{flex:1;overflow-y:auto;padding:16px 16px 8px;scroll-behavior:smooth}
.fray-empty h3{margin:6px 0 6px;font:700 18px/1.3 Inter,sans-serif;color:#fafafa}
.fray-empty p{margin:0 0 14px;color:#a1a1aa;font-size:13.5px}
.fray-sugs{display:flex;flex-direction:column;gap:8px}
.fray-sug{text-align:left;border:1px solid #27272a;background:#141418;color:#e4e4e7;border-radius:10px;padding:10px 12px;cursor:pointer;font-size:13.5px}
.fray-sug:hover{border-color:#3b82f6;background:#16161c}
.fray-sug small{display:block;color:#71717a;font-size:11.5px;margin-top:2px}


.fray-turn{margin-bottom:18px}
.fray-user{display:flex;justify-content:flex-end;margin-bottom:10px}
.fray-user div{max-width:86%;background:#1e3a8a;color:#eff6ff;border-radius:14px 14px 4px 14px;padding:8px 12px;white-space:pre-wrap;word-wrap:break-word}
.fray-steps{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.fray-step{font-size:11.5px;color:#a1a1aa;background:#17171b;border:1px solid #24242a;border-radius:999px;padding:3px 9px}
.fray-step::before{content:"✓ ";color:#22c55e}
.fray-step.fail::before{content:"! ";color:#f59e0b}
.md{color:#e4e4e7;word-wrap:break-word}
.md p{margin:0 0 8px}
.md p:last-child{margin-bottom:0}
.md ul,.md ol{margin:0 0 8px;padding-left:20px}
.md li{margin:2px 0}
.md strong{color:#fff}
.md code{font:12.5px "JetBrains Mono",monospace;background:#1c1c21;padding:1px 5px;border-radius:4px}
.md [data-learn]{border-bottom:1px dotted #60a5fa;cursor:help}
.fray-part{margin:8px 0}
.fray-err{border:1px solid rgba(245,158,11,.35);background:rgba(245,158,11,.08);color:#fcd34d;border-radius:10px;padding:9px 12px;font-size:13px}

.fray-chart{border:1px solid #27272a;border-radius:12px;overflow:hidden;background:#111114}
.fray-chart .fwc{border:0}
.fray-table{border:1px solid #27272a;border-radius:12px;overflow:hidden}
.fray-table .th{display:flex;justify-content:space-between;gap:8px;padding:8px 10px;background:#141418;font-size:12px;font-weight:600;color:#d4d4d8}
.fray-table .th span{color:#71717a;font-weight:500}
.fray-table .sc{overflow-x:auto;max-height:320px;overflow-y:auto}
.fray-table table{width:100%;border-collapse:collapse;font:500 12px/1.3 "JetBrains Mono",ui-monospace,monospace}
.fray-table th{position:sticky;top:0;background:#141418;color:#71717a;font:600 10.5px Inter,sans-serif;text-transform:uppercase;letter-spacing:.04em;text-align:right;padding:6px 8px;border-bottom:1px solid #27272a;white-space:nowrap}
.fray-table td{text-align:right;padding:6px 8px;border-bottom:1px solid #1d1d22;white-space:nowrap;color:#d4d4d8}
.fray-table th:first-child,.fray-table td:first-child{text-align:left;color:#fafafa}
.fray-table .up{color:#4ade80}.fray-table .dn{color:#f87171}
.fray-news{border:1px solid #27272a;border-radius:12px;overflow:hidden}
.fray-news a,.fray-news div.it{display:block;padding:8px 10px;border-bottom:1px solid #1d1d22;text-decoration:none;color:#e4e4e7;font-size:13px}
.fray-news a:last-child,.fray-news div.it:last-child{border-bottom:0}
.fray-news a:hover{background:#141418}
.fray-news small{display:block;color:#71717a;font-size:11.5px;margin-top:2px}
.fray-news .s{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px;vertical-align:middle}

.fray-card{border:1px solid #2f3a52;border-radius:12px;background:#121722;overflow:hidden}
.fray-card .ch{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid #222a3b;font-weight:600;color:#fafafa;font-size:13.5px}
.fray-card .ch .tg{font:700 10px/1 Inter,sans-serif;letter-spacing:.06em;text-transform:uppercase;color:#93c5fd;background:rgba(59,130,246,.14);padding:4px 6px;border-radius:5px}
.fray-card .cb{padding:10px 12px}
.fray-card .cf{display:flex;gap:8px;align-items:center;padding:10px 12px;border-top:1px solid #222a3b;background:#10141d}
.fray-card .cf .msg{font-size:12.5px;color:#a1a1aa;margin-right:auto}
.fray-card .cf .msg.ok{color:#4ade80}
.fray-card .cf .msg.bad{color:#fca5a5}
.fray-btn{border:1px solid #3f3f46;background:#18181b;color:#e4e4e7;border-radius:8px;padding:7px 12px;font:600 12.5px/1 Inter,sans-serif;cursor:pointer}
.fray-btn:hover{border-color:#71717a}
.fray-btn.p{background:#2563eb;border-color:#2563eb;color:#fff}
.fray-btn.p:hover{background:#1d4ed8}
.fray-btn:disabled{opacity:.5;cursor:default}
.fray-trade{display:grid;grid-template-columns:44px 1fr;gap:6px 10px;padding:8px 0;border-bottom:1px dashed #263048}
.fray-trade:last-child{border-bottom:0}
.fray-trade .sd{font:700 10px/1 Inter,sans-serif;padding:5px 0;border-radius:5px;text-align:center;align-self:start;margin-top:2px}
.fray-trade .sd.b{background:rgba(34,197,94,.15);color:#4ade80}.fray-trade .sd.s{background:rgba(239,68,68,.15);color:#f87171}
.fray-trade .sy{display:flex;align-items:center;gap:6px;font-weight:600;color:#fafafa}
.fray-trade .sy small{color:#71717a;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fray-trade .sy .x{margin-left:auto;background:none;border:0;color:#71717a;cursor:pointer;font-size:16px;line-height:1}
.fray-trade .sy .x:hover{color:#f87171}
.fray-trade .fl{grid-column:2;display:grid;grid-template-columns:1fr 1fr 1.25fr .8fr;gap:6px}
.fray-trade label{display:flex;flex-direction:column;font-size:10.5px;color:#71717a;gap:3px}
.fray-trade input{width:100%;min-width:0;background:#0c0f16;border:1px solid #2b3550;border-radius:6px;color:#fff;padding:6px 7px;font:500 12.5px "JetBrains Mono",monospace}
.fray-trade input:focus{outline:none;border-color:#60a5fa}
.fray-trade input:disabled{opacity:.75}
.fray-trade .hint{grid-column:2;font-size:11px;color:#71717a}
.fray-trade.removed{opacity:.35}
.fray-trade.removed .fl{display:none}
.fray-warn{font-size:12px;color:#fcd34d;margin-top:6px}
.fray-kv{font-size:13px;color:#d4d4d8}
.fray-kv b{color:#fff}

.fray-typing{display:flex;align-items:center;gap:8px;color:#a1a1aa;font-size:13px;margin:4px 0 16px}
.fray-typing i{width:6px;height:6px;border-radius:50%;background:#60a5fa;animation:frayb 1s infinite ease-in-out}
.fray-typing i:nth-child(2){animation-delay:.15s}.fray-typing i:nth-child(3){animation-delay:.3s}
@keyframes frayb{0%,80%,100%{opacity:.25}40%{opacity:1}}

.fray-foot{border-top:1px solid #27272a;padding:10px 12px 12px;background:#0f0f12}
.fray-in{display:flex;align-items:flex-end;gap:8px;border:1px solid #3f3f46;border-radius:12px;background:#141418;padding:6px 6px 6px 12px}
.fray-in:focus-within{border-color:#3b82f6}
.fray-in textarea{flex:1;resize:none;border:0;background:none;color:#fafafa;font:400 14px/1.45 Inter,sans-serif;max-height:140px;min-height:22px;padding:5px 0;outline:none}
.fray-send{width:34px;height:34px;border-radius:9px;border:0;background:#2563eb;color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}
.fray-send:disabled{background:#27272a;color:#52525b;cursor:default}
.fray-send svg{width:16px;height:16px}
.fray-meta{display:flex;justify-content:space-between;gap:10px;margin-top:7px;font-size:11px;color:#71717a}

.fray-list{position:absolute;inset:57px 0 0;background:#0f0f12;z-index:2;display:none;flex-direction:column}
.fray-list.on{display:flex}
.fray-list .lh{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid #27272a;font-weight:600}
.fray-list .ls{overflow-y:auto;flex:1}
.fray-list .li{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid #1d1d22;cursor:pointer}
.fray-list .li:hover{background:#141418}
.fray-list .li div{flex:1;min-width:0}
.fray-list .li b{display:block;font-weight:500;color:#e4e4e7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fray-list .li small{color:#71717a;font-size:11.5px}
.fray-list .li button{background:none;border:0;color:#52525b;cursor:pointer;font-size:15px}
.fray-list .li button:hover{color:#f87171}

.fray-gate{padding:28px 20px;text-align:center;color:#a1a1aa}
.fray-gate svg{width:36px;height:36px;color:#60a5fa}
.fray-gate h3{color:#fff;margin:6px 0 8px}
.fray-gate a{display:inline-block;margin-top:12px;background:#2563eb;color:#fff;border-radius:8px;padding:9px 14px;text-decoration:none;font-weight:600}

/* the old Pulse places now point here */
.fray-moved{display:flex;flex-direction:column;align-items:flex-start;gap:10px;padding:18px;border:1px solid #27272a;border-radius:12px;background:#121216;margin:14px;color:#a1a1aa;font-size:13.5px}
.fray-moved b{color:#fff;font-size:15px}
