:root{--bg: oklch(.968 .005 220);--surface: oklch(1 0 0);--ink: oklch(.21 .02 260);--muted: oklch(.52 .015 260);--hairline: oklch(.895 .008 220);--accent: oklch(.55 .11 165);--accent-ink: oklch(.3 .085 165);--accent-soft: oklch(.95 .028 165);--danger: oklch(.55 .19 25);--danger-soft: oklch(.955 .025 25);--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}input,select,button{font-family:inherit;font-size:14px;color:inherit}input,select{border:1px solid var(--hairline);background:var(--surface);padding:9px 12px;border-radius:var(--radius);outline:none;transition:border-color .15s ease-out,box-shadow .15s ease-out}input:focus,select:focus,input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px #15856129}button{cursor:pointer}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}button:disabled{opacity:.5;cursor:default}.error{color:var(--danger);font-size:13px;margin:0}.icon-btn,.ghost{background:transparent;border:none;color:var(--muted);border-radius:8px;padding:5px 9px;font-size:15px;line-height:1}.icon-btn:hover,.ghost:hover{background:var(--bg);color:var(--ink)}.icon-btn.spin{animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.card{display:flex;flex-direction:column;gap:12px;width:340px;padding:32px 28px;background:var(--surface);border:1px solid var(--hairline);border-radius:14px;box-shadow:0 1px 2px #1616160a,0 12px 32px #1616160f}.card h1{margin:0;font-size:22px;letter-spacing:-.01em;text-align:center}.card h2{margin:0 0 4px;font-size:13px;font-weight:500;color:var(--muted);text-align:center}.card button[type=submit]{margin-top:4px;padding:10px;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-weight:600}button.link{background:none;border:none;color:var(--accent-ink);font-size:13px;text-decoration:underline;padding:0}button.primary{padding:10px;border:none;border-radius:var(--radius);background:var(--accent);color:#fff;font-weight:600}.hint{margin:0;font-size:13px;color:var(--muted);line-height:1.45;text-align:center}.hint.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;word-break:break-all}.recovery-codes{margin:0;padding:14px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.7;background:var(--bg);border:1px solid var(--hairline);border-radius:var(--radius);-webkit-user-select:all;user-select:all}.center.auth{flex-direction:column;gap:0;background:radial-gradient(circle at 10% 20%,rgba(163,255,18,.08) 0%,transparent 45%),radial-gradient(circle at 90% 80%,rgba(0,240,255,.07) 0%,transparent 45%),#05070f}.auth .card{color:#f3f4f6;background:#0d111ebf;border-color:#ffffff17;box-shadow:0 30px 60px -20px #000c,0 0 50px -10px #a3ff121f;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.auth .card h1{font-size:24px}.auth .card h1 em{font-family:Georgia,Times New Roman,serif;font-style:italic;font-weight:500;color:#a3ff12}.auth .card h2{color:#8e9bb4}.auth .card input{background:#05070f99;border-color:#ffffff1a;color:#f3f4f6}.auth .card input::placeholder{color:#8e9bb4}.auth .card input:focus{border-color:#a3ff128c;box-shadow:0 0 0 3px #a3ff1224}.auth .card button:not(.link):not(.primary){margin-top:4px;padding:10px;border:none;border-radius:var(--radius);background:#a3ff12;color:#05070f;font-weight:600}.auth .card button.primary{background:#a3ff12;color:#05070f}.auth .card button.link{color:#00f0ffd9}.auth .error{color:#ff5a5f}.auth .hint{color:#8e9bb4}.auth .recovery-codes{background:#05070f99;border-color:#ffffff1a;color:#f3f4f6}.auth-brand{margin:16px 0 0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;letter-spacing:.02em;color:#8e9bb4;text-align:center;-webkit-user-select:none;user-select:none}.auth-brand b{color:#a3ff12;font-weight:500}.app{display:flex;height:100%}.sidebar{width:340px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--hairline);display:flex;flex-direction:column}.sidebar-head{height:56px;padding:0 14px 0 18px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--hairline)}.sidebar-head strong{font-size:15px;letter-spacing:-.01em}.search{padding:8px 12px;border-bottom:1px solid var(--hairline)}.search input{width:100%;border-radius:999px;padding:7px 14px;font-size:13px;background:var(--bg);border-color:transparent}.search input:focus{background:var(--surface)}.search select{width:100%;margin-top:6px;border-radius:999px;padding:5px 12px;font-size:12px;background:var(--bg);border-color:transparent}.chat-list{list-style:none;margin:0;padding:6px;overflow-y:auto;flex:1}.chat-list li{display:grid;grid-template-columns:40px 1fr auto;align-items:center;gap:12px;padding:10px;border-radius:var(--radius);cursor:pointer;transition:background .12s ease-out}.chat-list li:hover{background:var(--bg)}.chat-list li.active{background:var(--accent-soft)}.chat-list li.closed{opacity:.55}.chat-list li.closed:hover{opacity:.85}.chat-list li.sla-yellow,.bubble.sla-yellow{background:#feefc7d9}.chat-list li.sla-yellow .row-preview,.chat-list li.sla-yellow .row-time,.bubble.sla-yellow{color:#915c08;font-weight:600}.chat-list li.sla-red,.bubble.sla-red{background:#ffeae9e6;background:oklch(.955 .032 20 / .9)}.chat-list li.sla-red .row-preview,.chat-list li.sla-red .row-time,.bubble.sla-red{color:#ac3031;font-weight:600}.chat-list li.unread .row-title{font-weight:800}.chat-list li.unread .row-preview{color:var(--text);font-weight:600}.chat-list li.unread .row-time{color:var(--accent-ink);font-weight:700}.chat-list li.unread .avatar{box-shadow:0 0 0 2px var(--accent)}.avatar{width:40px;height:40px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:hsl(var(--hue) 45% 30%);background:hsl(var(--hue) 70% 90%);flex-shrink:0;-webkit-user-select:none;user-select:none}img.avatar{object-fit:cover}.avatar.lg{width:40px;height:40px}.row-main{min-width:0;display:flex;flex-direction:column;gap:2px}.row-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.assignee{font-size:11px;font-weight:500;font-style:normal;color:var(--muted);background:#e9ebee;border-radius:9px;padding:1px 7px;max-width:110px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0}.line-badge{font-size:11px;font-weight:600;font-style:normal;color:#31509d;background:#dde8ff;background:oklch(.93 .05 265);border-radius:9px;padding:1px 7px;max-width:90px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;flex-shrink:0}.row-preview{font-size:13px;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.row-side{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.row-time{font-size:11px;color:var(--muted);white-space:nowrap}.badge{min-width:20px;height:20px;border-radius:10px;padding:0 6px;background:var(--accent);color:#fff;font-size:11px;font-weight:600;display:inline-flex;align-items:center;justify-content:center}.sidebar-foot{padding:10px 14px;border-top:1px solid var(--hairline);display:flex;align-items:center;gap:10px}.sidebar-foot .avatar{width:30px;height:30px;font-size:11px}.me-name{flex:1;min-width:0;display:flex;flex-direction:column;font-size:13px;font-weight:600;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.me-name small{font-size:11px;font-weight:400;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.sidebar-error{padding:0 14px 8px}.empty{color:var(--muted);font-size:13px;cursor:default;text-align:center;padding:24px 12px}.chat{flex:1;min-width:0;background:var(--surface);display:flex;flex-direction:column}.chat-head{min-height:56px;padding:8px 16px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--hairline)}.head-main{flex:1;min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px}.head-title{font-size:15px;font-weight:600;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%}.pill{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600}.pill:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.pill.open{background:var(--accent-soft);color:var(--accent-ink)}.pill.closed{background:#e6e8eb;color:var(--muted)}.assign-select{max-width:170px;padding:6px 10px;font-size:13px}.notes{padding:8px 16px;border-bottom:1px solid var(--hairline)}.notes textarea{width:100%;resize:none;border:1px solid var(--hairline);border-radius:var(--radius);padding:8px 12px;font-size:13px;font-family:inherit;background:#f9fafc;outline:none;transition:border-color .15s ease-out}.notes textarea:focus{border-color:var(--accent)}.tags{padding:8px 16px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;border-bottom:1px solid var(--hairline)}.chip{display:inline-flex;align-items:center;gap:6px;background:var(--accent-soft);color:var(--accent-ink);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500}.chip button{background:none;border:none;color:inherit;padding:0;font-size:14px;line-height:1}.tags input{flex:1;min-width:130px;border:none;border-bottom:1px solid transparent;border-radius:0;padding:3px 2px;font-size:12.5px;box-shadow:none}.tags input:focus{border-bottom-color:var(--accent)}.messages{flex:1;overflow-y:auto;padding:20px 24px;display:flex;flex-direction:column;gap:6px;background:radial-gradient(1200px 500px at 20% -10%,oklch(.96 .015 165 / .5),transparent 60%),var(--surface)}.msg{position:relative;display:flex;flex-direction:column}.msg .bubble{align-self:flex-start;max-width:68%;padding:8px 12px 6px;border-radius:14px 14px 14px 4px;background:var(--bg);display:flex;flex-direction:column;gap:2px;font-size:14px;line-height:1.45;white-space:pre-wrap;overflow-wrap:break-word;transition:background .12s ease-out}.msg .bubble.mine{align-self:flex-end;background:var(--accent-soft);border-radius:14px 14px 4px}.reply-btn{position:absolute;top:-8px;left:8px;display:none;border:1px solid var(--hairline);background:var(--surface);color:var(--muted);border-radius:50%;width:26px;height:26px;font-size:14px;line-height:1;padding:0;box-shadow:0 1px 3px #1616161f}.msg .bubble.mine+.reply-btn{left:auto;right:8px}.msg:hover .reply-btn{display:inline-flex;align-items:center;justify-content:center}.reply-btn:hover{color:var(--accent-ink)}.bubble a{color:var(--accent-ink);text-decoration:underline}.media-img{max-width:280px;max-height:320px;border-radius:10px;display:block;margin:2px 0 6px;cursor:zoom-in}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:#0f1216f5;display:flex;align-items:center;justify-content:center;cursor:zoom-out}.lightbox img{max-width:92vw;max-height:92vh;border-radius:6px;box-shadow:0 8px 40px #0009}.lightbox-x{position:absolute;top:16px;right:16px;width:40px;height:40px;border:none;border-radius:50%;background:#00000073;color:#fff;font-size:24px;line-height:1;cursor:pointer}.lightbox-x:hover{background:#000000b3}.media-audio{max-width:260px;height:40px;display:block;margin:2px 0 6px}.media-video{max-width:280px;max-height:320px;border-radius:10px;display:block;margin:2px 0 6px}.media-link{display:inline-block;padding:6px 10px;margin:2px 0 6px;border-radius:8px;border:1px solid var(--hairline);background:#f3f5f8b3;font-size:13px}.media-unavailable,.type-label{color:var(--muted);font-size:12.5px;font-style:italic}.quote-snippet{border-left:3px solid var(--accent);background:#f3f5f9cc;border-radius:6px;padding:4px 8px;margin-bottom:4px;font-size:12.5px;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.quote-snippet-from{display:block;font-style:normal;font-weight:600;color:var(--accent-ink);font-size:11.5px;margin-bottom:1px}.bubble.mine .quote-snippet{background:#d9e9e1b3;border-left-color:var(--accent-ink)}.bubble small{font-size:10.5px;color:var(--muted);align-self:flex-end;line-height:1;margin-top:2px}.bubble small .ack{margin-left:4px;font-size:11px}.bubble small .ack.ack-read{color:var(--accent-ink);font-weight:700}.head-sub{font-size:12px;color:var(--muted)}.online{display:inline-flex;align-items:center;gap:5px;color:var(--accent-ink);font-weight:600}.online .dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.react-btn{position:absolute;left:8px;bottom:-12px;display:none;border:1px solid var(--hairline);background:var(--surface);border-radius:50%;width:22px;height:22px;font-size:11px;cursor:pointer;align-items:center;justify-content:center;z-index:2}.msg:hover .react-btn{display:inline-flex}.reaction-picker{position:absolute;bottom:30px;left:8px;z-index:5;display:flex;gap:2px;background:var(--surface);border:1px solid var(--hairline);border-radius:20px;padding:4px 6px;box-shadow:0 4px 16px #00000026}.reaction-picker button{border:none;background:none;font-size:17px;cursor:pointer;padding:2px 3px;border-radius:50%;transition:transform .1s}.reaction-picker button:hover{transform:scale(1.25)}.reaction-chip{position:absolute;bottom:-11px;right:34px;border:2px solid var(--surface);background:var(--surface);border-radius:14px;font-size:14px;line-height:1;padding:1px 4px;cursor:pointer;z-index:2}.reaction-chip.mine{left:34px;right:auto}.composer{position:relative;display:flex;gap:10px;padding:12px 16px;border-top:1px solid var(--hairline)}.emoji-btn{border:none;background:transparent;font-size:20px;line-height:1;padding:0 4px;border-radius:8px}.emoji-btn:hover{background:var(--bg)}.emoji-btn.recording{color:#fff;background:#e5484d;animation:rec-pulse 1.2s infinite}@keyframes rec-pulse{50%{box-shadow:0 0 0 6px #ff808440;box-shadow:0 0 0 6px oklch(.75 .18 20 / .25)}}.emoji-picker{position:absolute;bottom:calc(100% + 10px);left:16px;width:336px;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;padding:8px;background:var(--surface);border:1px solid var(--hairline);border-radius:14px;box-shadow:0 8px 28px #1616161f;z-index:10}.emoji-picker button{border:none;background:transparent;font-size:20px;padding:4px;border-radius:8px}.emoji-picker button:hover{background:var(--bg)}.quote-bar{display:flex;align-items:center;gap:10px;padding:8px 16px;background:#ecf4f0;border-top:1px solid var(--hairline);font-size:13px}.quote-bar .quote-label{font-weight:600;color:var(--accent-ink);white-space:nowrap}.quote-bar .quote-text{flex:1;color:var(--muted);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.quote-bar button{border:none;background:transparent;color:var(--muted);font-size:16px;line-height:1;padding:2px 6px;border-radius:6px}.quote-bar button:hover{background:var(--bg);color:var(--ink)}.composer input{flex:1;border-radius:22px;padding:10px 16px}.composer button{border:none;border-radius:22px;padding:0 22px;background:var(--accent);color:#fff;font-weight:600}.composer button:hover:not(:disabled){filter:brightness(.96)}.placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:var(--muted)}.placeholder p{margin:0;font-size:16px;font-weight:600}.placeholder small{font-size:13px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:safe center;justify-content:safe center;overflow:auto;z-index:60}.modal{background:var(--surface);border-radius:var(--radius);border:1px solid var(--hairline);width:min(420px,92vw);padding:18px;display:flex;flex-direction:column;gap:12px;box-shadow:0 18px 50px #00000059}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.modal-form{display:flex;flex-wrap:wrap;gap:8px}.modal-form>*{flex:1 1 150px;min-width:120px}.modal-form input{flex:1;border-radius:var(--radius);padding:8px 12px;font-size:13px}.qr-box{display:flex;flex-direction:column;align-items:center;gap:8px;padding:12px;border:1px dashed var(--hairline);border-radius:var(--radius)}.qr-box img{width:220px;height:220px;image-rendering:pixelated}.qr-box p{margin:0;font-size:13px;color:var(--muted);text-align:center}.sess-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;max-height:45vh;overflow-y:auto}.sess-list li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px;border-radius:var(--radius);background:var(--bg)}.sess-list .row-main{display:flex;flex-direction:column;min-width:0}.sess-list .row-preview{font-size:12px}.sess-list .pill{flex-shrink:0}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-thumb{background:#cbced2;border-radius:5px;border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:#abaeb3;background-clip:content-box;border:3px solid transparent}@media (prefers-reduced-motion: reduce){.icon-btn.spin{animation:none}*{transition:none!important}}.quick-replies{position:absolute;bottom:100%;left:8px;z-index:30;display:flex;flex-direction:column;gap:4px;padding:6px;min-width:260px;max-width:min(420px,90vw);max-height:calc(100vh - 140px);overflow-y:auto;background:var(--surface, #fff);border:1px solid rgba(128,128,128,.3);border-radius:10px;box-shadow:0 6px 18px #0000002e}.qr-item{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 8px;border:0;border-radius:8px;background:transparent;color:inherit;text-align:left;cursor:pointer}.qr-item:hover{background:#80808026}.qr-item strong{font-size:12px}.qr-item span{font-size:12px;opacity:.8;white-space:normal;max-width:100%}.qr-empty{font-size:12px;opacity:.8;padding:4px 8px}.qr-manage{margin-top:4px;padding:6px 8px;border:0;border-radius:8px;background:#8080801f;color:inherit;font-size:12px;cursor:pointer}.qr-manage:hover{background:#80808033}.search{position:relative}.search-results{position:absolute;top:100%;left:0;right:0;z-index:40;max-height:calc(100vh - 140px);overflow-y:auto;background:var(--surface, #fff);border:1px solid rgba(128,128,128,.3);border-radius:10px;box-shadow:0 6px 18px #0000002e;padding:6px}.search-group>em{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;opacity:.6;padding:4px 8px 2px}.search-group ul{list-style:none;margin:0;padding:0}.search-group li{padding:6px 8px;border-radius:8px;cursor:pointer}.search-group li:hover{background:#80808026}.badge-count{position:absolute;top:-4px;right:-4px;font-size:10px}.sidebar-head .icon-btn{position:relative}.reminder-row{border:0;background:transparent;color:inherit;text-align:left;cursor:pointer;padding:4px 0}.contact-actions{display:flex;gap:8px;padding:8px 0 4px}.contact-field-form{margin-top:4px}textarea{font:inherit;padding:8px 10px;border-radius:8px;border:1px solid rgba(128,128,128,.35);background:var(--surface, #fff);color:inherit}.modal-form textarea{width:100%;box-sizing:border-box}
