@agent-link/server 0.1.131 → 0.1.133

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/web/style.css CHANGED
@@ -517,6 +517,15 @@ body {
517
517
  text-overflow: ellipsis;
518
518
  white-space: nowrap;
519
519
  line-height: 1.3;
520
+ display: flex;
521
+ align-items: center;
522
+ gap: 4px;
523
+ }
524
+
525
+ .session-team-icon {
526
+ flex-shrink: 0;
527
+ color: var(--accent);
528
+ opacity: 0.7;
520
529
  }
521
530
 
522
531
  /* Processing indicator: pulsing dot before session title */
@@ -2826,167 +2835,1303 @@ body {
2826
2835
  }
2827
2836
 
2828
2837
  /* ══════════════════════════════════════════
2829
- Mobile responsive — max-width: 768px
2838
+ Team Mode
2830
2839
  ══════════════════════════════════════════ */
2831
- @media (max-width: 768px) {
2832
- /* Prevent page-level horizontal scroll */
2833
- html, body {
2834
- overflow-x: hidden;
2835
- }
2836
2840
 
2837
- .layout, .main-body, .chat-area {
2838
- overflow-x: hidden;
2839
- max-width: 100vw;
2840
- }
2841
+ /* ── Team mode toggle ── */
2842
+ .team-mode-toggle {
2843
+ display: flex;
2844
+ gap: 2px;
2845
+ background: var(--bg-tertiary);
2846
+ border-radius: 6px;
2847
+ padding: 2px;
2848
+ margin-left: 8px;
2849
+ }
2841
2850
 
2842
- /* File panel hidden on mobile — shown inside sidebar instead */
2843
- .file-panel {
2844
- display: none;
2845
- }
2851
+ .team-mode-btn {
2852
+ padding: 4px 14px;
2853
+ border: none;
2854
+ border-radius: 4px;
2855
+ background: none;
2856
+ color: var(--text-secondary);
2857
+ font-size: 0.75rem;
2858
+ font-weight: 500;
2859
+ cursor: pointer;
2860
+ transition: all 0.15s;
2861
+ }
2846
2862
 
2847
- /* Preview panel hidden on mobile — shown inside sidebar instead */
2848
- .preview-panel {
2849
- display: none;
2850
- }
2863
+ .team-mode-btn.active {
2864
+ background: var(--bg-secondary);
2865
+ color: var(--text-primary);
2866
+ box-shadow: 0 1px 2px rgba(0,0,0,0.15);
2867
+ }
2851
2868
 
2852
- /* Sidebar as fixed overlay */
2853
- .sidebar {
2854
- position: fixed;
2855
- top: 0;
2856
- left: 0;
2857
- bottom: 0;
2858
- width: 320px;
2859
- max-width: 90vw;
2860
- z-index: 100;
2861
- box-shadow: 4px 0 24px rgba(0, 0, 0, 0.5);
2862
- }
2869
+ .team-mode-btn:hover:not(.active) {
2870
+ color: var(--text-primary);
2871
+ }
2863
2872
 
2864
- .sidebar-backdrop {
2865
- display: block;
2866
- position: fixed;
2867
- inset: 0;
2868
- background: rgba(0, 0, 0, 0.4);
2869
- z-index: 99;
2870
- }
2873
+ /* ── Team create panel ── */
2874
+ .team-create-panel {
2875
+ flex: 1;
2876
+ display: flex;
2877
+ align-items: flex-start;
2878
+ justify-content: center;
2879
+ padding: 2rem;
2880
+ overflow-y: auto;
2881
+ }
2871
2882
 
2872
- /* Top bar */
2873
- .top-bar {
2874
- padding: 0 0.75rem;
2875
- }
2883
+ .team-create-inner {
2884
+ max-width: 560px;
2885
+ width: 100%;
2886
+ }
2876
2887
 
2877
- .agent-label {
2878
- display: none;
2879
- }
2888
+ .team-create-header {
2889
+ display: flex;
2890
+ align-items: center;
2891
+ gap: 10px;
2892
+ margin-bottom: 8px;
2893
+ color: var(--text-primary);
2894
+ }
2880
2895
 
2881
- /* Message area */
2882
- .message-list {
2883
- padding: 0.75rem 0.75rem 0.5rem;
2884
- }
2896
+ .team-create-header h2 {
2897
+ font-size: 1.25rem;
2898
+ font-weight: 600;
2899
+ }
2885
2900
 
2886
- .message-list-inner {
2887
- max-width: 100%;
2888
- min-width: 0;
2889
- }
2901
+ .team-create-desc {
2902
+ font-size: 0.85rem;
2903
+ color: var(--text-secondary);
2904
+ margin-bottom: 16px;
2905
+ line-height: 1.4;
2906
+ }
2890
2907
 
2891
- /* Constrain message rows and bubbles */
2892
- .message-row {
2893
- min-width: 0;
2894
- max-width: 100%;
2895
- }
2908
+ .team-create-textarea {
2909
+ width: 100%;
2910
+ padding: 12px;
2911
+ border: 1px solid var(--border);
2912
+ border-radius: 8px;
2913
+ background: var(--bg-secondary);
2914
+ color: var(--text-primary);
2915
+ font-size: 0.9rem;
2916
+ font-family: inherit;
2917
+ resize: vertical;
2918
+ min-height: 100px;
2919
+ line-height: 1.4;
2920
+ }
2896
2921
 
2897
- .message-bubble {
2898
- min-width: 0;
2899
- max-width: 100%;
2900
- overflow: hidden;
2901
- overflow-wrap: anywhere;
2902
- word-break: break-word;
2903
- }
2922
+ .team-create-textarea:focus {
2923
+ outline: none;
2924
+ border-color: var(--accent);
2925
+ }
2904
2926
 
2905
- /* Message content: contain all overflow within the bubble */
2906
- .message-content {
2907
- min-width: 0;
2908
- max-width: 100%;
2909
- overflow-wrap: anywhere;
2910
- word-break: break-word;
2911
- }
2927
+ .team-create-actions {
2928
+ display: flex;
2929
+ gap: 8px;
2930
+ margin-top: 12px;
2931
+ }
2912
2932
 
2913
- .message-content pre {
2914
- max-width: 100%;
2915
- overflow-x: auto;
2916
- }
2933
+ .team-create-launch {
2934
+ display: flex;
2935
+ align-items: center;
2936
+ gap: 6px;
2937
+ padding: 8px 18px;
2938
+ border: none;
2939
+ border-radius: 6px;
2940
+ background: var(--accent);
2941
+ color: #fff;
2942
+ font-size: 0.85rem;
2943
+ font-weight: 500;
2944
+ cursor: pointer;
2945
+ transition: background 0.15s;
2946
+ }
2917
2947
 
2918
- /* Code block wrappers */
2919
- .code-block-wrapper {
2920
- max-width: 100%;
2921
- }
2948
+ .team-create-launch:hover:not(:disabled) {
2949
+ background: var(--accent-hover);
2950
+ }
2922
2951
 
2923
- .code-block-wrapper pre {
2924
- max-width: 100%;
2925
- overflow-x: auto;
2926
- }
2952
+ .team-create-launch:disabled {
2953
+ opacity: 0.4;
2954
+ cursor: not-allowed;
2955
+ }
2927
2956
 
2928
- .markdown-body code {
2929
- word-break: break-all;
2930
- }
2957
+ .team-create-cancel {
2958
+ padding: 8px 18px;
2959
+ border: 1px solid var(--border);
2960
+ border-radius: 6px;
2961
+ background: none;
2962
+ color: var(--text-secondary);
2963
+ font-size: 0.85rem;
2964
+ cursor: pointer;
2965
+ transition: all 0.15s;
2966
+ }
2931
2967
 
2932
- .markdown-body pre {
2933
- max-width: 100%;
2934
- }
2968
+ .team-create-cancel:hover {
2969
+ color: var(--text-primary);
2970
+ border-color: var(--text-secondary);
2971
+ }
2935
2972
 
2936
- .markdown-body table {
2937
- display: block;
2938
- max-width: 100%;
2939
- overflow-x: auto;
2940
- }
2973
+ /* ── Example instructions ── */
2974
+ .team-examples-section {
2975
+ margin-top: 20px;
2976
+ }
2941
2977
 
2942
- /* Input area */
2943
- .input-area {
2944
- padding: 0 0.75rem 0.75rem;
2945
- }
2978
+ .team-examples-header {
2979
+ font-size: 0.78rem;
2980
+ font-weight: 600;
2981
+ color: var(--text-secondary);
2982
+ text-transform: uppercase;
2983
+ letter-spacing: 0.04em;
2984
+ margin-bottom: 8px;
2985
+ }
2946
2986
 
2947
- .input-card {
2948
- max-width: 100%;
2949
- }
2987
+ .team-examples-list {
2988
+ display: flex;
2989
+ flex-direction: column;
2990
+ gap: 8px;
2991
+ }
2950
2992
 
2951
- /* Folder picker */
2952
- .folder-picker-dialog {
2953
- width: calc(100vw - 2rem);
2954
- max-width: 440px;
2955
- }
2993
+ .team-example-card {
2994
+ display: flex;
2995
+ align-items: flex-start;
2996
+ gap: 12px;
2997
+ padding: 14px 16px;
2998
+ border: 1px solid var(--border);
2999
+ border-radius: 10px;
3000
+ transition: all 0.15s;
3001
+ background: linear-gradient(135deg, rgba(255,255,255,0.02) 0%, transparent 100%);
3002
+ }
2956
3003
 
2957
- /* Status card */
2958
- .status-card {
2959
- min-width: 0;
2960
- width: 100%;
2961
- max-width: 320px;
2962
- }
3004
+ .team-example-card:hover {
3005
+ border-color: rgba(59,130,246,0.3);
3006
+ background: linear-gradient(135deg, rgba(59,130,246,0.06) 0%, rgba(59,130,246,0.02) 100%);
3007
+ }
2963
3008
 
2964
- /* Tool blocks */
2965
- .tool-expand {
2966
- margin-left: 0;
2967
- min-width: 0;
2968
- max-width: 100%;
2969
- overflow: hidden;
2970
- }
3009
+ .team-example-icon {
3010
+ flex-shrink: 0;
3011
+ width: 36px;
3012
+ height: 36px;
3013
+ display: flex;
3014
+ align-items: center;
3015
+ justify-content: center;
3016
+ border-radius: 8px;
3017
+ background: rgba(59,130,246,0.1);
3018
+ color: var(--accent);
3019
+ margin-top: 1px;
3020
+ }
2971
3021
 
2972
- .tool-block {
2973
- max-width: 100%;
2974
- overflow-x: auto;
2975
- }
3022
+ .team-example-card:nth-child(2) .team-example-icon {
3023
+ background: rgba(16,185,129,0.1);
3024
+ color: #10B981;
3025
+ }
2976
3026
 
2977
- .tool-output-content pre {
2978
- font-size: 0.8rem;
2979
- max-width: 100%;
2980
- }
3027
+ .team-example-card:nth-child(3) .team-example-icon {
3028
+ background: rgba(139,92,246,0.1);
3029
+ color: #8B5CF6;
3030
+ }
2981
3031
 
2982
- .tool-input-formatted {
2983
- max-width: 100%;
2984
- overflow-wrap: anywhere;
2985
- }
3032
+ .team-example-body {
3033
+ flex: 1;
3034
+ min-width: 0;
3035
+ }
2986
3036
 
2987
- /* AskUserQuestion — larger tap targets */
2988
- .ask-question-option {
2989
- min-height: 44px;
3037
+ .team-example-title {
3038
+ font-size: 0.8rem;
3039
+ font-weight: 600;
3040
+ color: var(--text-primary);
3041
+ margin-bottom: 4px;
3042
+ }
3043
+
3044
+ .team-example-text {
3045
+ font-size: 0.74rem;
3046
+ color: var(--text-secondary);
3047
+ line-height: 1.5;
3048
+ }
3049
+
3050
+ .team-example-try {
3051
+ flex-shrink: 0;
3052
+ align-self: center;
3053
+ padding: 6px 16px;
3054
+ font-size: 0.74rem;
3055
+ font-weight: 500;
3056
+ color: var(--accent);
3057
+ background: transparent;
3058
+ border: 1px solid var(--accent);
3059
+ border-radius: 6px;
3060
+ cursor: pointer;
3061
+ transition: all 0.15s;
3062
+ white-space: nowrap;
3063
+ }
3064
+
3065
+ .team-example-try:hover {
3066
+ background: var(--accent);
3067
+ color: #fff;
3068
+ }
3069
+
3070
+ /* ── Historical teams in create panel ── */
3071
+ .team-history-section {
3072
+ margin-top: 20px;
3073
+ border-top: 1px solid var(--border);
3074
+ padding-top: 16px;
3075
+ }
3076
+
3077
+ .team-history-section-header {
3078
+ font-size: 0.8rem;
3079
+ font-weight: 600;
3080
+ text-transform: uppercase;
3081
+ letter-spacing: 0.03em;
3082
+ color: var(--text-secondary);
3083
+ margin-bottom: 8px;
3084
+ }
3085
+
3086
+ .team-history-section .team-history-list {
3087
+ max-height: 200px;
3088
+ overflow-y: auto;
3089
+ border: 1px solid var(--border);
3090
+ border-radius: 6px;
3091
+ background: var(--bg-secondary);
3092
+ }
3093
+
3094
+ /* ── Team dashboard ── */
3095
+ .team-dashboard {
3096
+ flex: 1;
3097
+ display: flex;
3098
+ flex-direction: column;
3099
+ min-height: 0;
3100
+ overflow: hidden;
3101
+ }
3102
+
3103
+ .team-dash-header {
3104
+ display: flex;
3105
+ flex-direction: column;
3106
+ padding: 12px 20px;
3107
+ border-bottom: 1px solid var(--border);
3108
+ flex-shrink: 0;
3109
+ gap: 8px;
3110
+ }
3111
+
3112
+ .team-dash-header-top {
3113
+ display: flex;
3114
+ align-items: center;
3115
+ justify-content: space-between;
3116
+ }
3117
+
3118
+ .team-dash-header-left {
3119
+ display: flex;
3120
+ align-items: center;
3121
+ gap: 10px;
3122
+ }
3123
+
3124
+ .team-dash-instruction {
3125
+ position: relative;
3126
+ }
3127
+
3128
+ .team-dash-instruction-text {
3129
+ font-size: 0.92rem;
3130
+ line-height: 1.5;
3131
+ color: var(--text);
3132
+ white-space: pre-wrap;
3133
+ word-break: break-word;
3134
+ overflow: hidden;
3135
+ display: -webkit-box;
3136
+ -webkit-box-orient: vertical;
3137
+ -webkit-line-clamp: 3;
3138
+ }
3139
+
3140
+ .team-dash-instruction.expanded .team-dash-instruction-text {
3141
+ -webkit-line-clamp: unset;
3142
+ display: block;
3143
+ }
3144
+
3145
+ .team-dash-instruction-toggle {
3146
+ background: none;
3147
+ border: none;
3148
+ color: var(--accent);
3149
+ cursor: pointer;
3150
+ font-size: 0.78rem;
3151
+ padding: 2px 0;
3152
+ margin-top: 2px;
3153
+ }
3154
+
3155
+ .team-dash-instruction-toggle:hover {
3156
+ text-decoration: underline;
3157
+ }
3158
+
3159
+ .team-status-badge {
3160
+ display: inline-block;
3161
+ padding: 2px 8px;
3162
+ border-radius: 10px;
3163
+ font-size: 0.7rem;
3164
+ font-weight: 500;
3165
+ text-transform: uppercase;
3166
+ letter-spacing: 0.03em;
3167
+ }
3168
+
3169
+ .team-status-planning {
3170
+ background: rgba(234,179,8,0.15);
3171
+ color: #eab308;
3172
+ }
3173
+
3174
+ .team-status-running {
3175
+ background: rgba(59,130,246,0.15);
3176
+ color: #3b82f6;
3177
+ }
3178
+
3179
+ .team-status-summarizing {
3180
+ background: rgba(139,92,246,0.15);
3181
+ color: #8b5cf6;
3182
+ }
3183
+
3184
+ .team-status-completed {
3185
+ background: rgba(16,185,129,0.15);
3186
+ color: #10b981;
3187
+ }
3188
+
3189
+ .team-status-failed {
3190
+ background: rgba(239,68,68,0.15);
3191
+ color: #ef4444;
3192
+ }
3193
+
3194
+ .team-dash-header-right {
3195
+ display: flex;
3196
+ gap: 8px;
3197
+ }
3198
+
3199
+ .team-dissolve-btn {
3200
+ padding: 5px 12px;
3201
+ border: 1px solid var(--error);
3202
+ border-radius: 5px;
3203
+ background: none;
3204
+ color: var(--error);
3205
+ font-size: 0.8rem;
3206
+ cursor: pointer;
3207
+ transition: all 0.15s;
3208
+ }
3209
+
3210
+ .team-dissolve-btn:hover {
3211
+ background: rgba(212,84,84,0.1);
3212
+ }
3213
+
3214
+ .team-back-btn {
3215
+ padding: 5px 12px;
3216
+ border: 1px solid var(--border);
3217
+ border-radius: 5px;
3218
+ background: none;
3219
+ color: var(--text-secondary);
3220
+ font-size: 0.8rem;
3221
+ cursor: pointer;
3222
+ transition: all 0.15s;
3223
+ }
3224
+
3225
+ .team-back-btn:hover {
3226
+ color: var(--text-primary);
3227
+ border-color: var(--text-secondary);
3228
+ }
3229
+
3230
+ .team-new-btn {
3231
+ padding: 5px 12px;
3232
+ border: 1px solid var(--accent);
3233
+ border-radius: 5px;
3234
+ background: none;
3235
+ color: var(--accent);
3236
+ font-size: 0.8rem;
3237
+ cursor: pointer;
3238
+ transition: all 0.15s;
3239
+ }
3240
+
3241
+ .team-new-btn:hover {
3242
+ background: rgba(59,130,246,0.1);
3243
+ }
3244
+
3245
+ /* ── Lead status bar ── */
3246
+ .team-lead-bar {
3247
+ display: flex;
3248
+ align-items: center;
3249
+ gap: 8px;
3250
+ padding: 8px 16px;
3251
+ background: var(--bg-secondary);
3252
+ border-bottom: 1px solid var(--border);
3253
+ font-size: 0.8rem;
3254
+ flex-shrink: 0;
3255
+ }
3256
+ .team-lead-bar-clickable {
3257
+ cursor: pointer;
3258
+ transition: background 0.15s;
3259
+ }
3260
+ .team-lead-bar-clickable:hover {
3261
+ background: var(--bg-hover);
3262
+ }
3263
+
3264
+ .team-lead-dot {
3265
+ width: 8px;
3266
+ height: 8px;
3267
+ border-radius: 50%;
3268
+ background: var(--accent);
3269
+ flex-shrink: 0;
3270
+ animation: agent-pulse 1.5s ease-in-out infinite;
3271
+ }
3272
+
3273
+ .team-lead-label {
3274
+ font-weight: 600;
3275
+ color: var(--accent);
3276
+ text-transform: uppercase;
3277
+ font-size: 0.7rem;
3278
+ letter-spacing: 0.03em;
3279
+ }
3280
+
3281
+ .team-lead-text {
3282
+ color: var(--text-primary);
3283
+ overflow: hidden;
3284
+ text-overflow: ellipsis;
3285
+ white-space: nowrap;
3286
+ }
3287
+
3288
+ /* ── Dashboard body ── */
3289
+ .team-dash-body {
3290
+ flex: 1;
3291
+ display: flex;
3292
+ min-height: 0;
3293
+ overflow: hidden;
3294
+ }
3295
+
3296
+ .team-dash-main {
3297
+ flex: 1;
3298
+ overflow-y: auto;
3299
+ padding: 16px 20px;
3300
+ display: flex;
3301
+ flex-direction: column;
3302
+ gap: 20px;
3303
+ }
3304
+
3305
+ /* ── Kanban board ── */
3306
+ .team-kanban-section {
3307
+ border: 1px solid var(--border);
3308
+ border-radius: 8px;
3309
+ background: var(--bg-secondary);
3310
+ flex-shrink: 0;
3311
+ }
3312
+
3313
+ .team-kanban-section-header {
3314
+ display: flex;
3315
+ align-items: center;
3316
+ gap: 6px;
3317
+ padding: 8px 12px;
3318
+ cursor: pointer;
3319
+ user-select: none;
3320
+ font-size: 0.8rem;
3321
+ font-weight: 600;
3322
+ text-transform: uppercase;
3323
+ letter-spacing: 0.03em;
3324
+ color: var(--text-secondary);
3325
+ transition: background 0.15s;
3326
+ }
3327
+ .team-kanban-section-header:hover {
3328
+ background: var(--bg-tertiary);
3329
+ }
3330
+ .team-kanban-section-toggle {
3331
+ font-size: 0.65rem;
3332
+ color: var(--text-secondary);
3333
+ }
3334
+ .team-kanban-section-summary {
3335
+ margin-left: auto;
3336
+ font-size: 0.72rem;
3337
+ font-weight: 400;
3338
+ color: var(--text-secondary);
3339
+ opacity: 0.8;
3340
+ }
3341
+
3342
+ .team-kanban {
3343
+ display: flex;
3344
+ gap: 12px;
3345
+ min-height: 0;
3346
+ flex-shrink: 0;
3347
+ padding: 0 8px 8px;
3348
+ }
3349
+
3350
+ .team-kanban-col {
3351
+ flex: 1;
3352
+ min-width: 0;
3353
+ display: flex;
3354
+ flex-direction: column;
3355
+ background: var(--bg-secondary);
3356
+ border-radius: 8px;
3357
+ border: 1px solid var(--border);
3358
+ }
3359
+
3360
+ .team-kanban-col-header {
3361
+ display: flex;
3362
+ align-items: center;
3363
+ gap: 6px;
3364
+ padding: 10px 12px;
3365
+ font-size: 0.8rem;
3366
+ font-weight: 600;
3367
+ text-transform: uppercase;
3368
+ letter-spacing: 0.03em;
3369
+ color: var(--text-secondary);
3370
+ border-bottom: 1px solid var(--border);
3371
+ }
3372
+
3373
+ .team-kanban-col-dot {
3374
+ width: 8px;
3375
+ height: 8px;
3376
+ border-radius: 50%;
3377
+ flex-shrink: 0;
3378
+ }
3379
+
3380
+ .team-kanban-col-dot.pending { background: var(--text-secondary); }
3381
+ .team-kanban-col-dot.active { background: var(--accent); }
3382
+ .team-kanban-col-dot.done { background: var(--success); }
3383
+ .team-kanban-col-dot.failed { background: var(--error); }
3384
+
3385
+ .team-kanban-col-count {
3386
+ margin-left: auto;
3387
+ background: var(--bg-tertiary);
3388
+ padding: 1px 6px;
3389
+ border-radius: 8px;
3390
+ font-size: 0.7rem;
3391
+ }
3392
+
3393
+ .team-kanban-col-body {
3394
+ padding: 8px;
3395
+ display: flex;
3396
+ flex-direction: column;
3397
+ gap: 6px;
3398
+ overflow-y: auto;
3399
+ max-height: 160px;
3400
+ }
3401
+
3402
+ .team-kanban-empty {
3403
+ padding: 12px;
3404
+ text-align: center;
3405
+ font-size: 0.8rem;
3406
+ color: var(--text-secondary);
3407
+ opacity: 0.6;
3408
+ }
3409
+
3410
+ /* ── Task cards ── */
3411
+ .team-task-card {
3412
+ padding: 10px 12px;
3413
+ border-radius: 6px;
3414
+ background: var(--bg-primary);
3415
+ border: 1px solid var(--border);
3416
+ transition: border-color 0.15s;
3417
+ }
3418
+
3419
+ .team-task-card.active {
3420
+ border-left: 3px solid var(--accent);
3421
+ }
3422
+
3423
+ .team-task-card.done {
3424
+ opacity: 0.8;
3425
+ }
3426
+
3427
+ .team-task-card.failed {
3428
+ border-left: 3px solid var(--error);
3429
+ }
3430
+
3431
+ .team-task-title {
3432
+ font-size: 0.85rem;
3433
+ font-weight: 500;
3434
+ color: var(--text-primary);
3435
+ line-height: 1.3;
3436
+ }
3437
+
3438
+ .team-task-desc {
3439
+ font-size: 0.78rem;
3440
+ color: var(--text-secondary);
3441
+ margin-top: 4px;
3442
+ line-height: 1.3;
3443
+ }
3444
+
3445
+ .team-task-desc-clamp {
3446
+ display: -webkit-box;
3447
+ -webkit-line-clamp: 2;
3448
+ -webkit-box-orient: vertical;
3449
+ overflow: hidden;
3450
+ cursor: pointer;
3451
+ }
3452
+ .team-task-desc-clamp:hover {
3453
+ color: var(--text-primary);
3454
+ }
3455
+ .team-task-desc-expanded {
3456
+ -webkit-line-clamp: unset;
3457
+ overflow: visible;
3458
+ }
3459
+
3460
+ .team-task-assignee {
3461
+ display: flex;
3462
+ align-items: center;
3463
+ gap: 4px;
3464
+ margin-top: 6px;
3465
+ font-size: 0.75rem;
3466
+ color: var(--text-secondary);
3467
+ }
3468
+
3469
+ /* ── Agent dot ── */
3470
+ .team-agent-dot {
3471
+ width: 8px;
3472
+ height: 8px;
3473
+ border-radius: 50%;
3474
+ flex-shrink: 0;
3475
+ display: inline-block;
3476
+ }
3477
+
3478
+ .team-agent-dot.working {
3479
+ animation: agent-pulse 1.5s ease-in-out infinite;
3480
+ }
3481
+
3482
+ @keyframes agent-pulse {
3483
+ 0%, 100% { opacity: 1; transform: scale(1); }
3484
+ 50% { opacity: 0.5; transform: scale(1.3); }
3485
+ }
3486
+
3487
+ /* ── Activity feed ── */
3488
+ .team-feed {
3489
+ border: 1px solid var(--border);
3490
+ border-radius: 8px;
3491
+ background: var(--bg-secondary);
3492
+ }
3493
+
3494
+ .team-feed-header {
3495
+ padding: 10px 12px;
3496
+ font-size: 0.8rem;
3497
+ font-weight: 600;
3498
+ text-transform: uppercase;
3499
+ letter-spacing: 0.03em;
3500
+ color: var(--text-secondary);
3501
+ border-bottom: 1px solid var(--border);
3502
+ }
3503
+
3504
+ .team-feed-list {
3505
+ max-height: 250px;
3506
+ overflow-y: auto;
3507
+ padding: 8px 12px;
3508
+ display: flex;
3509
+ flex-direction: column;
3510
+ gap: 4px;
3511
+ }
3512
+
3513
+ .team-feed-entry {
3514
+ display: flex;
3515
+ align-items: baseline;
3516
+ gap: 6px;
3517
+ font-size: 0.8rem;
3518
+ line-height: 1.4;
3519
+ padding: 2px 0;
3520
+ }
3521
+
3522
+ .team-feed-time {
3523
+ flex-shrink: 0;
3524
+ font-size: 0.7rem;
3525
+ color: var(--text-secondary);
3526
+ opacity: 0.7;
3527
+ font-family: 'SF Mono', 'Fira Code', Consolas, monospace;
3528
+ }
3529
+
3530
+ .team-feed-text {
3531
+ color: var(--text-primary);
3532
+ }
3533
+
3534
+ /* ── Teams sidebar section (history list in sidebar) ── */
3535
+ .sidebar-teams {
3536
+ padding: 0.75rem;
3537
+ }
3538
+
3539
+ .team-history-list {
3540
+ display: flex;
3541
+ flex-direction: column;
3542
+ gap: 2px;
3543
+ }
3544
+
3545
+ .team-history-item {
3546
+ display: flex;
3547
+ align-items: center;
3548
+ gap: 8px;
3549
+ padding: 8px 10px;
3550
+ border-radius: 8px;
3551
+ cursor: pointer;
3552
+ transition: background 0.15s;
3553
+ border-left: 3px solid transparent;
3554
+ }
3555
+
3556
+ .team-history-item:hover {
3557
+ background: var(--bg-tertiary);
3558
+ }
3559
+
3560
+ .team-history-item.active {
3561
+ background: var(--bg-tertiary);
3562
+ border-left-color: var(--accent);
3563
+ }
3564
+
3565
+ .team-history-icon {
3566
+ flex-shrink: 0;
3567
+ color: var(--text-secondary);
3568
+ }
3569
+
3570
+ .team-history-info {
3571
+ min-width: 0;
3572
+ flex: 1;
3573
+ }
3574
+
3575
+ .team-history-title {
3576
+ font-size: 0.82rem;
3577
+ color: var(--text-primary);
3578
+ overflow: hidden;
3579
+ text-overflow: ellipsis;
3580
+ white-space: nowrap;
3581
+ line-height: 1.3;
3582
+ }
3583
+
3584
+ .team-history-meta {
3585
+ display: flex;
3586
+ align-items: center;
3587
+ gap: 6px;
3588
+ margin-top: 2px;
3589
+ font-size: 0.7rem;
3590
+ color: var(--text-secondary);
3591
+ }
3592
+
3593
+ .team-history-tasks {
3594
+ color: var(--text-secondary);
3595
+ }
3596
+
3597
+ .team-status-badge-sm {
3598
+ font-size: 0.6rem;
3599
+ padding: 1px 5px;
3600
+ border-radius: 8px;
3601
+ }
3602
+
3603
+ /* ── Completion stats bar ── */
3604
+ .team-stats-bar {
3605
+ display: flex;
3606
+ gap: 16px;
3607
+ padding: 10px 14px;
3608
+ margin-bottom: 12px;
3609
+ background: var(--bg-secondary);
3610
+ border: 1px solid var(--border);
3611
+ border-radius: 8px;
3612
+ }
3613
+
3614
+ .team-stat {
3615
+ display: flex;
3616
+ flex-direction: column;
3617
+ align-items: center;
3618
+ gap: 2px;
3619
+ }
3620
+
3621
+ .team-stat-label {
3622
+ font-size: 0.65rem;
3623
+ text-transform: uppercase;
3624
+ letter-spacing: 0.04em;
3625
+ color: var(--text-secondary);
3626
+ }
3627
+
3628
+ .team-stat-value {
3629
+ font-size: 0.9rem;
3630
+ font-weight: 600;
3631
+ color: var(--text-primary);
3632
+ }
3633
+
3634
+ /* ── Team summary (completion) ── */
3635
+ .team-summary {
3636
+ border: 1px solid var(--border);
3637
+ border-radius: 8px;
3638
+ background: var(--bg-secondary);
3639
+ }
3640
+
3641
+ .team-summary-header {
3642
+ padding: 10px 12px;
3643
+ font-size: 0.8rem;
3644
+ font-weight: 600;
3645
+ text-transform: uppercase;
3646
+ letter-spacing: 0.03em;
3647
+ color: var(--text-secondary);
3648
+ border-bottom: 1px solid var(--border);
3649
+ }
3650
+
3651
+ .team-summary-body {
3652
+ padding: 12px;
3653
+ }
3654
+
3655
+ /* ── Agent bar (horizontal) ── */
3656
+ .team-agents-bar {
3657
+ border: 1px solid var(--border);
3658
+ border-radius: 8px;
3659
+ background: var(--bg-secondary);
3660
+ flex-shrink: 0;
3661
+ }
3662
+
3663
+ .team-agents-bar-header {
3664
+ padding: 10px 12px;
3665
+ font-size: 0.8rem;
3666
+ font-weight: 600;
3667
+ text-transform: uppercase;
3668
+ letter-spacing: 0.03em;
3669
+ color: var(--text-secondary);
3670
+ border-bottom: 1px solid var(--border);
3671
+ }
3672
+
3673
+ .team-agents-bar-list {
3674
+ display: flex;
3675
+ flex-wrap: wrap;
3676
+ gap: 8px;
3677
+ padding: 10px 12px;
3678
+ }
3679
+
3680
+ .team-agent-card {
3681
+ flex: 1;
3682
+ min-width: 180px;
3683
+ max-width: 300px;
3684
+ padding: 10px 12px;
3685
+ border-radius: 6px;
3686
+ background: var(--bg-primary);
3687
+ border: 1px solid var(--border);
3688
+ cursor: pointer;
3689
+ transition: border-color 0.15s;
3690
+ }
3691
+
3692
+ .team-agent-card:hover {
3693
+ border-color: var(--accent);
3694
+ }
3695
+
3696
+ .team-agent-card-top {
3697
+ display: flex;
3698
+ align-items: center;
3699
+ gap: 6px;
3700
+ }
3701
+
3702
+ .team-agent-card-name {
3703
+ font-size: 0.82rem;
3704
+ font-weight: 500;
3705
+ color: var(--text-primary);
3706
+ white-space: nowrap;
3707
+ overflow: hidden;
3708
+ text-overflow: ellipsis;
3709
+ }
3710
+
3711
+ .team-agent-card-status {
3712
+ margin-left: auto;
3713
+ font-size: 0.65rem;
3714
+ font-weight: 500;
3715
+ text-transform: uppercase;
3716
+ letter-spacing: 0.03em;
3717
+ padding: 1px 6px;
3718
+ border-radius: 8px;
3719
+ flex-shrink: 0;
3720
+ }
3721
+
3722
+ .team-agent-card-status-starting,
3723
+ .team-agent-card-status-working {
3724
+ background: rgba(59,130,246,0.15);
3725
+ color: #3b82f6;
3726
+ }
3727
+
3728
+ .team-agent-card-status-done {
3729
+ background: rgba(16,185,129,0.15);
3730
+ color: #10b981;
3731
+ }
3732
+
3733
+ .team-agent-card-status-error {
3734
+ background: rgba(239,68,68,0.15);
3735
+ color: #ef4444;
3736
+ }
3737
+
3738
+ .team-agent-card-activity {
3739
+ margin-top: 6px;
3740
+ font-size: 0.75rem;
3741
+ color: var(--text-secondary);
3742
+ overflow: hidden;
3743
+ text-overflow: ellipsis;
3744
+ white-space: nowrap;
3745
+ line-height: 1.3;
3746
+ }
3747
+
3748
+ .team-agents-empty {
3749
+ padding: 16px 12px;
3750
+ text-align: center;
3751
+ font-size: 0.8rem;
3752
+ color: var(--text-secondary);
3753
+ opacity: 0.6;
3754
+ }
3755
+
3756
+ /* ── Agent detail view ── */
3757
+ .team-agent-detail {
3758
+ flex: 1;
3759
+ display: flex;
3760
+ flex-direction: column;
3761
+ min-height: 0;
3762
+ overflow: hidden;
3763
+ }
3764
+
3765
+ .team-agent-detail-header {
3766
+ display: flex;
3767
+ align-items: center;
3768
+ gap: 8px;
3769
+ padding: 10px 16px;
3770
+ border-bottom: 1px solid var(--border);
3771
+ flex-shrink: 0;
3772
+ }
3773
+
3774
+ .team-agent-back-btn {
3775
+ display: flex;
3776
+ align-items: center;
3777
+ gap: 4px;
3778
+ padding: 4px 10px;
3779
+ border: 1px solid var(--border);
3780
+ border-radius: 4px;
3781
+ background: none;
3782
+ color: var(--text-secondary);
3783
+ font-size: 0.78rem;
3784
+ cursor: pointer;
3785
+ transition: all 0.15s;
3786
+ margin-right: 4px;
3787
+ }
3788
+
3789
+ .team-agent-back-btn:hover {
3790
+ color: var(--text-primary);
3791
+ border-color: var(--text-secondary);
3792
+ }
3793
+
3794
+ .team-agent-detail-name {
3795
+ font-size: 0.9rem;
3796
+ font-weight: 600;
3797
+ color: var(--text-primary);
3798
+ }
3799
+
3800
+ .team-agent-detail-status {
3801
+ font-size: 0.75rem;
3802
+ color: var(--text-secondary);
3803
+ text-transform: capitalize;
3804
+ }
3805
+
3806
+ .team-agent-messages {
3807
+ flex: 1;
3808
+ overflow-y: auto;
3809
+ padding: 1rem 1.5rem;
3810
+ min-height: 0;
3811
+ }
3812
+
3813
+ .team-agent-messages-inner {
3814
+ max-width: 768px;
3815
+ width: 100%;
3816
+ margin: 0 auto;
3817
+ display: flex;
3818
+ flex-direction: column;
3819
+ gap: 0.25rem;
3820
+ }
3821
+
3822
+ .team-agent-empty-msg {
3823
+ text-align: center;
3824
+ padding: 2rem;
3825
+ color: var(--text-secondary);
3826
+ font-size: 0.85rem;
3827
+ }
3828
+
3829
+ /* ── Agent prompt card ── */
3830
+ .team-agent-prompt {
3831
+ border: 1px solid var(--border);
3832
+ border-radius: 8px;
3833
+ background: var(--bg-secondary);
3834
+ margin-bottom: 0.5rem;
3835
+ }
3836
+
3837
+ .team-agent-prompt-label {
3838
+ padding: 8px 12px;
3839
+ font-size: 0.75rem;
3840
+ font-weight: 600;
3841
+ text-transform: uppercase;
3842
+ letter-spacing: 0.03em;
3843
+ color: var(--text-secondary);
3844
+ border-bottom: 1px solid var(--border);
3845
+ }
3846
+
3847
+ .team-agent-prompt-body {
3848
+ padding: 10px 14px;
3849
+ font-size: 0.85rem;
3850
+ line-height: 1.5;
3851
+ color: var(--text-primary);
3852
+ }
3853
+
3854
+ /* ── Agent detail name tag (above assistant bubbles) ── */
3855
+ .team-agent-detail-name-tag {
3856
+ font-size: 0.72rem;
3857
+ font-weight: 600;
3858
+ margin-bottom: 2px;
3859
+ padding-left: 2px;
3860
+ }
3861
+
3862
+ /* ── New team launcher (after completion) ── */
3863
+ .team-new-launcher {
3864
+ border: 1px solid var(--border);
3865
+ border-radius: 8px;
3866
+ background: var(--bg-secondary);
3867
+ padding: 12px;
3868
+ flex-shrink: 0;
3869
+ }
3870
+ .team-new-launcher-input {
3871
+ width: 100%;
3872
+ box-sizing: border-box;
3873
+ padding: 8px 10px;
3874
+ border: 1px solid var(--border);
3875
+ border-radius: 6px;
3876
+ background: var(--bg-primary);
3877
+ color: var(--text-primary);
3878
+ font-size: 0.85rem;
3879
+ font-family: inherit;
3880
+ resize: vertical;
3881
+ outline: none;
3882
+ }
3883
+ .team-new-launcher-input:focus {
3884
+ border-color: var(--accent);
3885
+ }
3886
+ .team-new-launcher-actions {
3887
+ display: flex;
3888
+ gap: 8px;
3889
+ margin-top: 8px;
3890
+ justify-content: flex-end;
3891
+ }
3892
+
3893
+ /* ── Team Agent tool call styling in main chat ── */
3894
+ .team-agent-tool-wrapper {
3895
+ border-left: 3px solid #8B5CF6;
3896
+ border-radius: 6px;
3897
+ margin-left: 4px;
3898
+ padding-left: 0;
3899
+ }
3900
+ .team-agent-tool-line {
3901
+ background: linear-gradient(90deg, rgba(139, 92, 246, 0.08), transparent);
3902
+ }
3903
+ .team-agent-tool-line:hover {
3904
+ background: linear-gradient(90deg, rgba(139, 92, 246, 0.14), transparent);
3905
+ }
3906
+ .team-agent-tool-icon {
3907
+ display: inline-flex;
3908
+ align-items: center;
3909
+ color: #8B5CF6;
3910
+ }
3911
+ .team-agent-tool-name {
3912
+ font-weight: 700;
3913
+ color: #8B5CF6;
3914
+ font-size: 0.82rem;
3915
+ }
3916
+ .team-agent-tool-desc {
3917
+ flex: 1;
3918
+ overflow: hidden;
3919
+ text-overflow: ellipsis;
3920
+ white-space: nowrap;
3921
+ font-size: 0.8rem;
3922
+ color: var(--text-secondary);
3923
+ }
3924
+ .team-agent-tool-expand {
3925
+ border-top: 1px solid rgba(139, 92, 246, 0.15);
3926
+ }
3927
+ .team-agent-tool-result {
3928
+ margin-top: 6px;
3929
+ padding: 8px 10px;
3930
+ background: rgba(139, 92, 246, 0.06);
3931
+ border-radius: 4px;
3932
+ border: 1px solid rgba(139, 92, 246, 0.12);
3933
+ }
3934
+ .team-agent-tool-result-label {
3935
+ font-size: 0.72rem;
3936
+ font-weight: 600;
3937
+ color: #8B5CF6;
3938
+ margin-bottom: 4px;
3939
+ text-transform: uppercase;
3940
+ letter-spacing: 0.5px;
3941
+ }
3942
+ .team-agent-tool-result-content {
3943
+ font-size: 0.82rem;
3944
+ line-height: 1.5;
3945
+ max-height: 300px;
3946
+ overflow-y: auto;
3947
+ }
3948
+
3949
+ /* ══════════════════════════════════════════
3950
+ Mobile responsive — max-width: 768px
3951
+ ══════════════════════════════════════════ */
3952
+ @media (max-width: 768px) {
3953
+ /* Prevent page-level horizontal scroll */
3954
+ html, body {
3955
+ overflow-x: hidden;
3956
+ }
3957
+
3958
+ .layout, .main-body, .chat-area {
3959
+ overflow-x: hidden;
3960
+ max-width: 100vw;
3961
+ }
3962
+
3963
+ /* File panel hidden on mobile — shown inside sidebar instead */
3964
+ .file-panel {
3965
+ display: none;
3966
+ }
3967
+
3968
+ /* Preview panel hidden on mobile — shown inside sidebar instead */
3969
+ .preview-panel {
3970
+ display: none;
3971
+ }
3972
+
3973
+ /* Sidebar as fixed overlay */
3974
+ .sidebar {
3975
+ position: fixed;
3976
+ top: 0;
3977
+ left: 0;
3978
+ bottom: 0;
3979
+ width: 320px;
3980
+ max-width: 90vw;
3981
+ z-index: 100;
3982
+ box-shadow: 4px 0 24px rgba(0, 0, 0, 0.5);
3983
+ }
3984
+
3985
+ .sidebar-backdrop {
3986
+ display: block;
3987
+ position: fixed;
3988
+ inset: 0;
3989
+ background: rgba(0, 0, 0, 0.4);
3990
+ z-index: 99;
3991
+ }
3992
+
3993
+ /* Top bar */
3994
+ .top-bar {
3995
+ padding: 0 0.75rem;
3996
+ }
3997
+
3998
+ .agent-label {
3999
+ display: none;
4000
+ }
4001
+
4002
+ /* Message area */
4003
+ .message-list {
4004
+ padding: 0.75rem 0.75rem 0.5rem;
4005
+ }
4006
+
4007
+ .message-list-inner {
4008
+ max-width: 100%;
4009
+ min-width: 0;
4010
+ }
4011
+
4012
+ /* Constrain message rows and bubbles */
4013
+ .message-row {
4014
+ min-width: 0;
4015
+ max-width: 100%;
4016
+ }
4017
+
4018
+ .message-bubble {
4019
+ min-width: 0;
4020
+ max-width: 100%;
4021
+ overflow: hidden;
4022
+ overflow-wrap: anywhere;
4023
+ word-break: break-word;
4024
+ }
4025
+
4026
+ /* Message content: contain all overflow within the bubble */
4027
+ .message-content {
4028
+ min-width: 0;
4029
+ max-width: 100%;
4030
+ overflow-wrap: anywhere;
4031
+ word-break: break-word;
4032
+ }
4033
+
4034
+ .message-content pre {
4035
+ max-width: 100%;
4036
+ overflow-x: auto;
4037
+ }
4038
+
4039
+ /* Code block wrappers */
4040
+ .code-block-wrapper {
4041
+ max-width: 100%;
4042
+ }
4043
+
4044
+ .code-block-wrapper pre {
4045
+ max-width: 100%;
4046
+ overflow-x: auto;
4047
+ }
4048
+
4049
+ .markdown-body code {
4050
+ word-break: break-all;
4051
+ }
4052
+
4053
+ .markdown-body pre {
4054
+ max-width: 100%;
4055
+ }
4056
+
4057
+ .markdown-body table {
4058
+ display: block;
4059
+ max-width: 100%;
4060
+ overflow-x: auto;
4061
+ }
4062
+
4063
+ /* Input area */
4064
+ .input-area {
4065
+ padding: 0 0.75rem 0.75rem;
4066
+ }
4067
+
4068
+ .input-card {
4069
+ max-width: 100%;
4070
+ }
4071
+
4072
+ /* Folder picker */
4073
+ .folder-picker-dialog {
4074
+ width: calc(100vw - 2rem);
4075
+ max-width: 440px;
4076
+ }
4077
+
4078
+ /* Status card */
4079
+ .status-card {
4080
+ min-width: 0;
4081
+ width: 100%;
4082
+ max-width: 320px;
4083
+ }
4084
+
4085
+ /* Tool blocks */
4086
+ .tool-expand {
4087
+ margin-left: 0;
4088
+ min-width: 0;
4089
+ max-width: 100%;
4090
+ overflow: hidden;
4091
+ }
4092
+
4093
+ .tool-block {
4094
+ max-width: 100%;
4095
+ overflow-x: auto;
4096
+ }
4097
+
4098
+ .tool-output-content pre {
4099
+ font-size: 0.8rem;
4100
+ max-width: 100%;
4101
+ }
4102
+
4103
+ .tool-input-formatted {
4104
+ max-width: 100%;
4105
+ overflow-wrap: anywhere;
4106
+ }
4107
+
4108
+ /* AskUserQuestion — larger tap targets */
4109
+ .ask-question-option {
4110
+ min-height: 44px;
4111
+ }
4112
+
4113
+ /* Team dashboard — stack kanban columns */
4114
+ .team-kanban {
4115
+ flex-direction: column;
4116
+ }
4117
+
4118
+ .team-dash-body {
4119
+ flex-direction: column;
4120
+ }
4121
+
4122
+ .team-agents-panel {
4123
+ width: 100%;
4124
+ border-left: none;
4125
+ border-top: 1px solid var(--border);
4126
+ max-height: 150px;
4127
+ }
4128
+
4129
+ .team-dash-main {
4130
+ padding: 12px;
4131
+ }
4132
+
4133
+ .team-create-panel {
4134
+ padding: 1rem;
2990
4135
  }
2991
4136
  }
2992
4137