*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f3f4f6;color:#111827}.app{display:flex;flex-direction:column;height:100dvh;max-width:640px;margin:0 auto;background:#fff}.app.dragover{outline:2px dashed var(--accent, #6b8afd);outline-offset:-8px;background:#6b8afd0a}.demo-banner{background:#b45309;color:#fff;font-weight:700;font-size:13px;text-align:center;padding:6px 10px;letter-spacing:.03em;flex-shrink:0}.header{display:flex;align-items:baseline;gap:8px;padding:10px 16px;border-bottom:1px solid #e5e7eb;flex-shrink:0}.header h1{margin:0;font-size:18px}.subtitle{font-size:13px;color:#6b7280}.messages{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px}.empty-hint{margin:auto;color:#9ca3af;font-size:14px;text-align:center}.msg{max-width:82%;padding:10px 12px;border-radius:14px;white-space:pre-wrap;word-break:break-word;font-size:15px;line-height:1.4}.msg.user{align-self:flex-end;background:#2563eb;color:#fff;border-bottom-right-radius:4px}.msg.assistant{align-self:flex-start;background:#e5e7eb;border-bottom-left-radius:4px}.msg.system{align-self:center;background:#fef2f2;color:#b91c1c;font-size:13px}.typing{align-self:flex-start;color:#6b7280;font-style:italic;font-size:13px;padding:4px 12px}.surgiol-cards{display:flex;flex-direction:column;gap:8px;margin-top:10px}.file-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:#fff;border:1px solid #d1d5db;border-radius:10px}.file-name{font-size:14px;word-break:break-word;color:#111827}.download-btn{flex-shrink:0;min-height:44px;padding:8px 14px;border:none;border-radius:8px;background:#2563eb;color:#fff;font-size:14px;font-weight:600;cursor:pointer}.download-btn:disabled{background:#e5e7eb;color:#6b7280;cursor:default}.composer-wrap{flex-shrink:0;border-top:1px solid #e5e7eb;padding-bottom:max(10px,env(safe-area-inset-bottom))}.chips{display:flex;flex-wrap:wrap;gap:6px;padding:8px 12px 0}.chip{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:6px 8px 6px 10px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;font-size:13px;color:#1e3a8a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip-cmd{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.chip-size{margin-left:6px;opacity:.6;font-size:.85em}.chip-x{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border:none;border-radius:999px;background:transparent;color:inherit;font-size:13px;line-height:1;cursor:pointer}.chip-x:hover{background:#00000014}.composer-hint{margin:8px 12px 0;padding:8px 10px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;color:#92400e;font-size:13px}.composer{display:flex;align-items:center;gap:8px;padding:10px 12px}.icon-btn{flex-shrink:0;width:44px;height:44px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#374151;font-size:20px;line-height:1;cursor:pointer}.icon-btn:hover{background:#f3f4f6}.icon-btn.active{background:#ecfdf5;border-color:#34d399}.menu-anchor{position:relative;flex-shrink:0}.command-menu{position:absolute;bottom:calc(100% + 8px);left:0;min-width:240px;max-width:calc(100vw - 24px);max-height:min(60dvh,calc(100dvh - 120px));overflow-y:auto;background:#fff;border:1px solid #e5e7eb;border-radius:12px;box-shadow:0 8px 24px #00000029;padding:6px;z-index:20}.command-item{display:flex;flex-direction:column;gap:2px;width:100%;min-height:44px;padding:10px 12px;border:none;border-radius:8px;background:transparent;text-align:left;cursor:pointer}.command-item:hover{background:#f3f4f6}.command-item strong{font-size:14px;color:#111827}.command-item span{font-size:12px;color:#6b7280}.composer input{flex:1;min-width:0;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;font-size:16px;outline:none}.composer input:focus{border-color:#2563eb}.composer button[type=submit]{flex-shrink:0;min-height:44px;padding:10px 16px;border:none;border-radius:10px;background:#2563eb;color:#fff;font-size:15px;font-weight:600;cursor:pointer}.composer button[type=submit]:disabled{background:#93c5fd;cursor:default}.logout-btn{margin-left:auto;align-self:center;padding:6px 12px;min-height:36px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#374151;font-size:13px;cursor:pointer}.logout-btn:hover{background:#f3f4f6}.auth-screen{display:flex;align-items:center;justify-content:center;min-height:100dvh;padding:16px;color:#6b7280;font-size:15px}.auth-card{display:flex;flex-direction:column;gap:14px;width:100%;max-width:360px;padding:24px;background:#fff;border:1px solid #e5e7eb;border-radius:16px;box-shadow:0 8px 30px #00000014}.auth-card h1{margin:0;font-size:22px;color:#111827}.auth-sub{margin:-8px 0 4px;font-size:14px;color:#6b7280}.auth-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:#374151}.auth-card input{padding:12px;border:1px solid #d1d5db;border-radius:10px;font-size:16px;outline:none}.auth-card input:focus{border-color:#2563eb}.auth-card button[type=submit]{margin-top:4px;min-height:48px;border:none;border-radius:10px;background:#2563eb;color:#fff;font-size:16px;font-weight:600;cursor:pointer}.auth-card button[type=submit]:disabled{background:#93c5fd;cursor:default}.auth-error{padding:10px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#b91c1c;font-size:14px}.icon-btn:focus-visible,.composer button[type=submit]:focus-visible,.download-btn:focus-visible,.command-item:focus-visible,.chip-x:focus-visible{outline:2px solid #2563eb;outline-offset:2px}.app-shell{display:block}@media(min-width:1280px){.app-shell{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);height:100dvh}.app--with-dashboard{max-width:none;margin:0}.dashboard-aside{height:100dvh;overflow-y:auto;border-left:1px solid #e5e7eb;background:#fafafa}}.dashboard{padding:16px;display:flex;flex-direction:column;gap:18px}.dash-title{margin:0;font-size:17px;font-weight:700}.dash-kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px}.dash-card{background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px}.dash-card-label{font-size:12px;color:#6b7280}.dash-card-value{font-size:16px;font-weight:700;margin-top:4px}.dash-card-sub{font-size:13px;color:#374151;margin-top:2px}.dash-section{display:flex;flex-direction:column;gap:6px}.dash-section-title{margin:0;font-size:14px;font-weight:700;color:#111827}.dash-toggle{background:none;border:none;padding:0;font:inherit;font-weight:700;color:#111827;cursor:pointer}.dash-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.dash-row{display:flex;flex-direction:column;padding:6px 8px;background:#fff;border:1px solid #eef0f2;border-radius:8px}.dash-row-main{font-size:13px}.dash-row-sub{font-size:12px;color:#6b7280}.dash-row-sub a{color:#2563eb;text-decoration:none}.dash-empty{font-size:13px;color:#9ca3af;padding:8px;background:#fff;border:1px dashed #e5e7eb;border-radius:8px}.dash-caption{font-size:12px;color:#9ca3af}.dash-errors{color:#b45309}.dash-skel-line{height:10px;border-radius:4px;background:linear-gradient(90deg,#eef0f2 25%,#e5e7eb 37%,#eef0f2 63%);background-size:400% 100%;animation:dash-shimmer 1.4s ease infinite;margin-top:8px;width:60%}.dash-skel-line--wide{width:90%}@keyframes dash-shimmer{0%{background-position:100% 0}to{background-position:0 0}}.relogin-card{align-self:center;max-width:340px;width:100%;margin:8px 0;padding:14px 16px;border:1px solid #d5dbe6;border-radius:12px;background:#fff;box-shadow:0 1px 4px #0000000f;display:flex;flex-direction:column;gap:10px}.relogin-head{font-weight:600}.relogin-channels{display:flex;gap:8px;flex-wrap:wrap}.relogin-chan{font-size:13px;padding:2px 8px;border-radius:999px;background:#eef1f6}.relogin-chan.st-authorized{background:#e2f5e9;color:#137a3a}.relogin-chan.st-failed{background:#fde7e7;color:#b02a2a}.relogin-msg{font-size:14px}.relogin-msg.err{color:#b02a2a}.relogin-msg.ok{color:#137a3a;font-weight:600}.relogin-qr{display:flex;flex-direction:column;align-items:center;gap:8px}.relogin-qr-img{width:264px;height:264px;image-rendering:pixelated;border-radius:8px}.relogin-2fa-row{display:flex;gap:8px}.relogin-2fa-row input{flex:1;padding:6px 8px}.relogin-actions{display:flex;gap:8px;justify-content:flex-end}
