*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--sidebar-bg: #0f172a;--sidebar-hover: #1e293b;--sidebar-active: #4f46e5;--accent: #4f46e5;--accent-light: #eef2ff;--bg: #f1f5f9;--surface: #ffffff;--border: #e2e8f0;--text: #0f172a;--text-muted: #64748b;--success: #10b981;--warning: #f59e0b;--danger: #ef4444;--radius: 10px;--shadow: 0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.06);--shadow-lg: 0 10px 25px rgba(0,0,0,.12)}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5}.layout{display:flex;min-height:100vh}.sidebar{width:220px;flex-shrink:0;background:var(--sidebar-bg);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:10}.sidebar-logo{padding:20px 20px 16px;border-bottom:1px solid rgba(255,255,255,.08)}.sidebar-logo h1{color:#fff;font-size:16px;font-weight:700;letter-spacing:-.3px}.sidebar-logo span{color:#94a3b8;font-size:12px}.sidebar-nav{flex:1;padding:12px 8px;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:7px;color:#94a3b8;cursor:pointer;text-decoration:none;transition:all .15s;font-size:13.5px}.nav-item:hover{background:var(--sidebar-hover);color:#e2e8f0}.nav-item.active{background:var(--sidebar-active);color:#fff;font-weight:500}.nav-item .icon{font-size:16px;width:20px;text-align:center;flex-shrink:0}.nav-badge{margin-left:auto;background:#ffffff26;color:#e2e8f0;font-size:11px;padding:1px 7px;border-radius:99px}.nav-item.active .nav-badge{background:#ffffff40}.main{margin-left:220px;flex:1;min-height:100vh;min-width:0}.page{padding:28px 32px;max-width:1100px}.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.page-title{font-size:22px;font-weight:700;letter-spacing:-.4px}.page-sub{color:var(--text-muted);font-size:13px;margin-top:2px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-header{padding:16px 20px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.card-title{font-size:14px;font-weight:600}.card-body{padding:0}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow)}.stat-label{font-size:12px;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.5px}.stat-value{font-size:32px;font-weight:800;margin-top:4px;letter-spacing:-1px}.stat-value.blue{color:var(--accent)}.stat-value.green{color:var(--success)}.stat-value.purple{color:#8b5cf6}.stat-value.orange{color:var(--warning)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{padding:10px 16px;text-align:left;font-size:11.5px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;background:#f8fafc;border-bottom:1px solid var(--border)}td{padding:12px 16px;border-bottom:1px solid var(--border);vertical-align:middle}tr:last-child td{border-bottom:none}tr:hover td{background:#f8fafc}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:7px;font-size:13px;font-weight:500;cursor:pointer;border:none;transition:all .15s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:#4338ca}.btn-secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}.btn-secondary:hover{background:#f8fafc}.btn-danger{background:#fef2f2;color:var(--danger);border:1px solid #fecaca}.btn-danger:hover{background:#fee2e2}.btn-sm{padding:4px 10px;font-size:12px}.btn-ghost{background:transparent;color:var(--text-muted);border:none;padding:4px 8px}.btn-ghost:hover{background:var(--bg);color:var(--text)}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:99px;font-size:11.5px;font-weight:500}.badge-dev{background:#eff6ff;color:#2563eb}.badge-qa{background:#f0fdf4;color:#16a34a}.badge-pm{background:#faf5ff;color:#7c3aed}.badge-designer{background:#fff7ed;color:#c2410c}.badge-default{background:#f1f5f9;color:#475569}.badge-success{background:#f0fdf4;color:#16a34a;border:1px solid #bbf7d0}.badge-warning{background:#fffbeb;color:#b45309;border:1px solid #fde68a}.badge-error{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}.avatar{width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}.person-cell{display:flex;align-items:center;gap:10px}.person-name{font-weight:500}.person-meta{font-size:12px;color:var(--text-muted)}.pill-list{display:flex;flex-wrap:wrap;gap:4px}.pill{background:#f1f5f9;color:#334155;padding:2px 8px;border-radius:5px;font-size:11.5px;font-family:monospace}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;animation:fadeIn .1s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-lg);width:100%;max-width:560px;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .15s}@keyframes slideUp{0%{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}.modal-header{padding:20px 24px 16px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.modal-title{font-size:16px;font-weight:700}.modal-body{padding:20px 24px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:16px}.modal-footer{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-shrink:0}.form-group{display:flex;flex-direction:column;gap:6px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}label{font-size:12.5px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px}input,select,textarea{padding:8px 11px;border:1px solid var(--border);border-radius:7px;font-size:13.5px;font-family:inherit;color:var(--text);background:var(--surface);transition:border .15s,box-shadow .15s;width:100%}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #eef2ff}textarea{resize:vertical;min-height:72px;font-family:monospace;font-size:12.5px}.input-hint{font-size:11.5px;color:var(--text-muted)}.tag-input-wrap{border:1px solid var(--border);border-radius:7px;padding:6px 8px;display:flex;flex-wrap:wrap;gap:4px;cursor:text;min-height:40px;align-items:center}.tag-input-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #eef2ff}.tag-input-wrap input{border:none;box-shadow:none;padding:2px 4px;font-size:13px;flex:1;min-width:120px}.tag-input-wrap input:focus{box-shadow:none}.tag{display:inline-flex;align-items:center;gap:4px;background:#eef2ff;color:#4338ca;padding:2px 8px;border-radius:5px;font-size:12px}.tag-remove{cursor:pointer;color:#818cf8;line-height:1;font-size:14px}.tag-remove:hover{color:var(--danger)}.checkbox-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.checkbox-item{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid var(--border);border-radius:7px;cursor:pointer;transition:background .1s}.checkbox-item:hover{background:var(--bg)}.checkbox-item input[type=checkbox]{width:15px;height:15px;cursor:pointer;accent-color:var(--accent);flex-shrink:0}.checkbox-label{font-size:13px}.checkbox-sub{font-size:11px;color:var(--text-muted)}.dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.dot-success{background:var(--success)}.dot-warning{background:var(--warning)}.dot-error{background:var(--danger)}.dot-idle{background:#cbd5e1}.instance-card{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);gap:12px}.instance-card:last-child{border-bottom:none}.instance-info{flex:1;min-width:0}.instance-name{font-weight:600;font-size:14px}.instance-url{font-size:12px;color:var(--text-muted);font-family:monospace}.instance-status{display:flex;align-items:center;gap:6px;font-size:12.5px}.actions{display:flex;gap:4px}.empty{text-align:center;padding:40px 20px;color:var(--text-muted)}.empty-icon{font-size:36px;margin-bottom:12px}.empty p{font-size:14px}.alert{padding:10px 14px;border-radius:7px;font-size:13px;display:flex;align-items:center;gap:8px}.alert-success{background:#f0fdf4;color:#166534;border:1px solid #bbf7d0}.alert-error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.env-key{font-family:monospace;font-size:12.5px;color:#334155}.env-value{font-family:monospace;font-size:12px;color:var(--text-muted)}.spinner{width:16px;height:16px;border:2px solid #e2e8f0;border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.section-sep{margin:24px 0;border:none;border-top:1px solid var(--border)}.flex{display:flex}.items-center{align-items:center}.gap-2{gap:8px}.gap-3{gap:12px}.ml-auto{margin-left:auto}.text-muted{color:var(--text-muted);font-size:12.5px}.sidebar-nav{overflow-y:auto}.sidebar-section{margin:12px 4px 4px;padding-top:10px;border-top:1px solid rgba(255,255,255,.08);font-size:10px;font-weight:700;letter-spacing:.8px;color:#475569;text-transform:uppercase}.sidebar-foot{padding:12px 16px;border-top:1px solid rgba(255,255,255,.08)}.sidebar-user{display:flex;justify-content:space-between;align-items:center;gap:8px;color:#94a3b8;font-size:12px;margin-top:6px}.sidebar-user a{color:#818cf8;cursor:pointer}.sidebar-user a:hover{color:#c7d2fe}.topbar,.sidebar-backdrop{display:none}.login-wrap{display:flex;align-items:center;justify-content:center;min-height:100vh;min-height:100dvh;background:#0f172a;padding:16px}.login-card{background:#1e293b;padding:36px;border-radius:12px;width:100%;max-width:340px;box-shadow:0 8px 32px #0006;display:flex;flex-direction:column;gap:10px}.login-card h2{color:#f1f5f9;font-size:20px}.login-card p{color:#64748b;font-size:13px;margin-bottom:10px}.login-card input{background:#0f172a;border-color:#334155;color:#f1f5f9;font-size:16px;padding:11px 12px}.login-card button{padding:11px;border-radius:8px;border:none;background:#3b82f6;color:#fff;font-size:15px;font-weight:600;cursor:pointer;margin-top:6px}.login-card button:disabled{opacity:.6;cursor:default}.login-card .login-error{color:#f87171;margin:0}.task-filters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}.task-filters select,.task-filters input{width:auto;flex:1 1 180px}.task-summary{color:var(--text-muted);font-size:12.5px;margin-bottom:16px}.task-group{margin-bottom:22px}.task-group h3{font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:8px}.task-group h3 span{font-weight:500;margin-left:4px}.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:8px}.task-card.done{opacity:.55}.task-card.done .task-title{text-decoration:line-through}.task-row{display:flex;gap:12px;align-items:flex-start;padding:12px 14px}.task-check{width:22px;height:22px;margin-top:1px;flex-shrink:0;accent-color:var(--success);cursor:pointer}.task-main{flex:1;min-width:0;cursor:pointer}.task-title{font-weight:600;line-height:1.35;overflow-wrap:anywhere}.task-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--text-muted);margin-top:4px;align-items:center}.task-tag{background:var(--accent-light);color:#4338ca;padding:1px 8px;border-radius:99px;font-weight:500}.task-todo{font-size:12.5px;color:#475569;margin-top:6px;white-space:pre-line;overflow-wrap:anywhere}.task-body{padding:0 14px 14px 48px;display:flex;flex-direction:column;gap:8px}.task-notes{white-space:pre-wrap;overflow-wrap:anywhere;font-family:inherit;font-size:12.5px;color:#334155;background:#f8fafc;border:1px solid var(--border);border-radius:7px;padding:10px;max-height:320px;overflow-y:auto}.task-body textarea{font-family:inherit;font-size:14px;min-height:60px}.task-actions{display:flex;flex-wrap:wrap;gap:6px}.task-err{color:var(--danger);font-size:12px;padding:0 14px 10px 48px}@media (max-width: 820px){body{font-size:15px}.layout{display:block}.topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:30;height:52px;padding:0 12px;background:var(--sidebar-bg);color:#f1f5f9}.topbar-burger{background:none;border:none;color:#f1f5f9;font-size:22px;width:40px;height:40px;cursor:pointer}.topbar-title{font-weight:600;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar{width:270px;max-width:85vw;transform:translate(-100%);transition:transform .2s;z-index:50}.sidebar.open{transform:none;box-shadow:var(--shadow-lg)}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a80;z-index:40}.nav-item{padding:12px;font-size:15px}.main{margin-left:0;min-height:calc(100vh - 52px)}.page{padding:16px 12px 40px;max-width:100%}.page-header{flex-wrap:wrap;gap:12px;align-items:flex-start}.page-title{font-size:19px}.stats-row{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:12px 14px}.stat-value{font-size:24px}.form-row,.checkbox-grid{grid-template-columns:1fr}.card{overflow-x:auto}.card-header{flex-wrap:wrap;gap:8px;padding:12px 14px}th,td{padding:9px 10px}table{min-width:560px}.instance-card{flex-wrap:wrap;padding:12px 14px}.modal-overlay{padding:0;align-items:flex-end}.modal{max-width:100%;max-height:92vh;border-radius:14px 14px 0 0}.modal-header,.modal-body,.modal-footer{padding-left:16px;padding-right:16px}input,select,textarea{font-size:16px}.main [style*=grid-template-columns]{grid-template-columns:1fr!important}.main .stats-row[style*=grid-template-columns]{grid-template-columns:repeat(2,1fr)!important}.main [style*="justify-content: space-between"]{flex-wrap:wrap;gap:8px}.main [style*="width: 1"],.main [style*="min-width: 3"],.main [style*="min-width: 4"]{max-width:100%}.main pre{white-space:pre-wrap;overflow-wrap:anywhere}.task-body,.task-err{padding-left:14px}.task-filters select,.task-filters input{flex:1 1 100%}}@media (max-width: 820px){.split{flex-direction:column!important;align-items:stretch!important}.split>*{width:100%!important;max-width:100%!important;flex:1 1 auto!important;position:static!important;max-height:none!important}}html{-webkit-text-size-adjust:100%}body{-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}.bottombar{display:none}@media (max-width: 820px){button,a,.nav-item,.task-main,.bottombar{touch-action:manipulation;-webkit-user-select:none;user-select:none}.topbar{height:calc(52px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.sidebar{padding-top:env(safe-area-inset-top);padding-bottom:calc(64px + env(safe-area-inset-bottom))}.main{min-height:calc(100dvh - 52px);padding-bottom:calc(64px + env(safe-area-inset-bottom))}.page{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}.bottombar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fffffff0;backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}.bottombar button{flex:1;min-height:56px;border:none;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:#64748b;font-size:10.5px;font-weight:500;padding:6px 0}.bottombar button .bb-icon{font-size:20px;line-height:1;filter:grayscale(1);opacity:.7;transition:all .15s}.bottombar button.active{color:var(--accent)}.bottombar button.active .bb-icon{filter:none;opacity:1;transform:translateY(-1px)}.bottombar button:active .bb-icon{transform:scale(.88)}.task-card{transition:transform .08s,opacity .2s}.task-card:active{transform:scale(.995)}.task-check{width:26px;height:26px}.modal{padding-bottom:env(safe-area-inset-bottom)}}.standalone body{background:var(--bg)}.dash{max-width:1400px}.dash-filters{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.dash-presets{display:flex;gap:6px;flex-wrap:wrap}.dash-presets button{border:1px solid var(--border);background:var(--surface);padding:6px 12px;border-radius:99px;font-size:13px;cursor:pointer;color:var(--text)}.dash-presets button.on{background:var(--accent);border-color:var(--accent);color:#fff}.dash-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.dash-row select,.dash-row input{width:auto;flex:0 1 180px}.stat-of{font-size:18px;color:var(--text-muted);font-weight:600}.dash-card{margin-bottom:16px}.dash-bars{display:flex;align-items:flex-end;gap:3px;height:220px;padding:14px 14px 6px;overflow-x:auto}.dash-bar{flex:1 0 22px;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:stretch;cursor:pointer;border-radius:6px;padding:0 1px}.dash-bar:hover{background:#f1f5f9}.dash-bar.sel{background:var(--accent-light)}.dash-bar-stack{display:flex;flex-direction:column-reverse;border-radius:4px 4px 0 0;overflow:hidden;min-height:0}.dash-bar-stack>div{min-height:1px}.dash-bar-val{font-size:10px;color:var(--text-muted);text-align:center;height:14px}.dash-bar-lbl{font-size:10.5px;text-align:center;color:var(--text);margin-top:4px;line-height:1.15}.dash-bar-lbl span{color:var(--text-muted);font-size:9.5px}.dash-bar.we .dash-bar-lbl{color:#cbd5e1}.dash-bar.today .dash-bar-lbl{color:var(--accent);font-weight:700}.dash-legend{display:flex;flex-wrap:wrap;gap:10px;padding:4px 16px 14px;font-size:12px;color:var(--text-muted)}.dash-legend i,.heat-name i,.dp-name i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:0}.heat-wrap{overflow-x:auto}.heat{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%}.heat th,.heat td{padding:0;height:30px;min-width:32px;text-align:center;font-size:11.5px;border-bottom:1px solid var(--border);border-right:1px solid #f1f5f9}.heat th{background:#f8fafc;font-weight:600;color:var(--text);text-transform:none;letter-spacing:0;cursor:pointer;line-height:1.1;padding:4px 0}.heat th span{color:var(--text-muted);font-weight:400;font-size:10px}.heat th.we,.heat td.we{background:#f8fafc;color:#cbd5e1}.heat td.gap{color:#d97706;font-weight:700;background:#fffbeb}.heat .heat-name{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;padding:0 12px;min-width:170px;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;cursor:pointer}.heat th.heat-name{background:#f8fafc}.heat .heat-sum{font-weight:700;padding:0 10px;background:#f8fafc;position:sticky;right:0}.heat tr:hover td{filter:brightness(.97)}.dash-grid{display:grid;grid-template-columns:3fr 2fr;gap:16px;align-items:start}.dash-people{display:flex;flex-direction:column}.dash-person{padding:12px 16px;border-bottom:1px solid var(--border);cursor:pointer}.dash-person:hover,.dash-person.open{background:#f8fafc}.dp-top{display:flex;justify-content:space-between;gap:10px}.dp-name{font-weight:600}.dp-hours{font-weight:700;white-space:nowrap}.dp-meta{font-size:12px;color:var(--text-muted);margin-top:2px}.dp-gap{color:#d97706;font-weight:600}.dp-projects{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.dp-projects span{background:#f1f5f9;border-radius:5px;padding:1px 7px;font-size:11.5px;color:#334155}.dp-entries{padding:4px 16px 14px 30px;border-bottom:1px solid var(--border);background:#fcfdff}.dp-gaplist{font-size:12px;color:#b45309;margin:6px 0}.dp-day{margin-top:10px}.dp-day-h{font-size:11.5px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}.dp-entry{display:flex;gap:8px;font-size:12.5px;padding:3px 0;align-items:baseline}.dp-eh{min-width:30px;font-weight:700;color:var(--accent)}.dp-entry a,.dp-entry b{white-space:nowrap;font-weight:600}.dp-et{color:#475569;overflow-wrap:anywhere}.dash-projects{padding:6px 0}.dpr{padding:10px 16px;cursor:pointer}.dpr:hover{background:#f8fafc}.dpr-top{display:flex;justify-content:space-between;gap:10px;font-size:13.5px}.dpr-bar{height:6px;background:#f1f5f9;border-radius:99px;margin:6px 0 4px;overflow:hidden}.dpr-bar div{height:100%;background:var(--accent);border-radius:99px}.dpr-people{font-size:11.5px;color:var(--text-muted)}.chat{display:flex;height:100vh;height:100dvh;background:var(--surface)}.chat-side{width:270px;flex-shrink:0;border-right:1px solid var(--border);display:flex;flex-direction:column;background:#f8fafc}.chat-new{margin:12px;justify-content:center}.chat-list{overflow-y:auto;flex:1}.chat-item{padding:10px 14px;cursor:pointer;border-bottom:1px solid #eef2f7}.chat-item:hover{background:#eef2ff80}.chat-item.active{background:var(--accent-light)}.chat-item-title{font-size:13.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-item-meta{font-size:11px;color:var(--text-muted);display:flex;justify-content:space-between;align-items:center;margin-top:2px}.chat-del{border:none;background:none;cursor:pointer;opacity:.35;font-size:12px}.chat-del:hover{opacity:1}.chat-main{flex:1;display:flex;flex-direction:column;min-width:0}.chat-head{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--border)}.chat-list-btn{display:none}.chat-title{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-model{width:auto;padding:5px 8px}.chat-scroll{flex:1;overflow-y:auto;padding:18px 0}.chat-empty{max-width:640px;margin:40px auto;padding:0 20px;text-align:center;color:var(--text-muted)}.chat-empty-icon{font-size:40px}.chat-empty h3{color:var(--text);margin:8px 0 6px;font-size:20px}.chat-sugg{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:20px}.chat-sugg button{border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:10px 12px;text-align:left;font-size:13px;cursor:pointer;color:var(--text)}.chat-sugg button:hover{border-color:var(--accent)}.msg{max-width:820px;margin:0 auto 14px;padding:0 20px}.msg.user{display:flex;justify-content:flex-end}.msg .bubble{background:var(--accent);color:#fff;border-radius:16px 16px 4px;padding:9px 14px;max-width:85%;white-space:pre-wrap;overflow-wrap:anywhere}.answer{overflow-wrap:anywhere}.chat-tools{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.chat-tool{font-size:12px;color:#475569;background:#f8fafc;border:1px solid var(--border);border-radius:7px;padding:4px 9px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-family:ui-monospace,monospace}.chat-tool.ok span:first-child{color:var(--success)}.chat-tool.err{border-color:#fecaca;background:#fef2f2}.chat-tool a{font-family:inherit;font-weight:600}.md{line-height:1.6;font-size:14.5px}.md p{margin:0 0 10px}.md-h{font-weight:700;margin:14px 0 6px;font-size:15px}.md-list{margin:0 0 10px 20px}.md-list li{margin:2px 0}.md code{background:#f1f5f9;border-radius:4px;padding:1px 5px;font-size:12.5px}.md-code{background:#0f172a;color:#e2e8f0;border-radius:9px;padding:12px 14px;overflow-x:auto;margin:0 0 10px;font-size:12.5px;line-height:1.5}.md-code code{background:none;padding:0;color:inherit}.md-table{overflow-x:auto;margin-bottom:10px}.md-table table{width:auto;min-width:0;font-size:13px}.md-table td,.md-table th{padding:5px 10px;border:1px solid var(--border);text-transform:none;letter-spacing:0;font-size:13px;color:var(--text)}.typing{display:flex;gap:4px;padding:8px 0}.typing span{width:7px;height:7px;background:#cbd5e1;border-radius:50%;animation:blink 1.2s infinite}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,80%,to{opacity:.3}40%{opacity:1}}.chat-input{border-top:1px solid var(--border);padding:10px 16px 14px;background:var(--surface)}.chat-status{font-size:12px;color:var(--text-muted);max-width:820px;margin:0 auto 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-box{display:flex;gap:8px;align-items:flex-end;max-width:820px;margin:0 auto;border:1px solid var(--border);border-radius:14px;padding:6px 6px 6px 12px;background:var(--surface)}.chat-box:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px #eef2ff}.chat-box textarea{border:none;box-shadow:none!important;resize:none;min-height:24px;max-height:200px;padding:6px 0;font-family:inherit;font-size:15px;background:transparent}.chat-send{width:38px;height:38px;border-radius:10px;border:none;background:var(--accent);color:#fff;font-size:18px;cursor:pointer;flex-shrink:0}.chat-send:disabled{opacity:.35;cursor:default}.chat-send.stop{background:#0f172a;font-size:13px}@media (max-width: 820px){.dash-grid{grid-template-columns:1fr}.dash-row select,.dash-row input{flex:1 1 140px}.dash-bars{height:180px;padding:10px 8px 4px}.dash-bar{flex:1 0 18px}.heat .heat-name{min-width:110px;max-width:120px;padding:0 8px;font-size:12px}.main [style*=grid-template-columns].dash-grid{grid-template-columns:1fr!important}.chat{height:calc(100dvh - 116px - env(safe-area-inset-top) - env(safe-area-inset-bottom))}.main:has(.chat){padding-bottom:calc(64px + env(safe-area-inset-bottom));min-height:0}.chat-side{position:fixed;top:calc(52px + env(safe-area-inset-top));bottom:calc(64px + env(safe-area-inset-bottom));left:0;width:85vw;max-width:320px;z-index:35;transform:translate(-100%);transition:transform .2s;box-shadow:var(--shadow-lg)}.chat-side.open{transform:none}.chat-list-btn{display:inline-flex}.chat-head{padding:8px 10px}.msg{padding:0 12px}.msg .bubble{max-width:90%}.chat-sugg{grid-template-columns:1fr}.chat-input{padding:8px 10px 10px}.chat-empty{margin:20px auto}}.heat tr.heat-none td{color:#cbd5e1}.heat tr.heat-none .heat-name{color:var(--text-muted)}
