/* demand-live styles */ /* ─── RESET & BASE ─────────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } /* demand-live body rule removed - handled by .screen container */ /* ─── TOP BAR (global) ─────────────────────────────────────────────── */ /* The 52px global nav sidebar is GONE. The top bar now spans the full viewport width. */ #screen-demand-live .top-bar { height: 52px; min-height: 52px; background: #ffffff; border-bottom: 1px solid #e5e5e5; display: flex; align-items: center; padding: 0 16px 0 12px; gap: 10px; z-index: 100; position: relative; } /* Logo mark — replaces old sidebar T badge */ .top-bar__logo { width: 32px; height: 32px; background: #FFA426; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; color: #1a1a1a; flex-shrink: 0; cursor: pointer; transition: background 150ms; } .top-bar__logo:hover { background: #F89622; } /* Breadcrumb */ .top-bar__breadcrumb { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #999; } .top-bar__breadcrumb a { color: #666; text-decoration: none; transition: color 150ms; } .top-bar__breadcrumb a:hover { color: #FFA426; } .top-bar__breadcrumb .sep { color: #ccc; font-size: 12px; } .top-bar__breadcrumb .current { color: #1a1a1a; font-weight: 600; } .top-bar__breadcrumb .status-chip { background: #f0fdf4; color: #10b981; border-radius: 6px; padding: 2px 8px; font-size: 11px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; margin-left: 4px; } /* Top-bar right icons */ .top-bar__actions { display: flex; align-items: center; gap: 4px; margin-left: auto; } /* ── Top-bar centre view toggle pill ───────────────────────────── */ .tb-center { position: absolute; left: 50%; transform: translateX(-50%); pointer-events: none; /* children re-enable */ } .tb-view-pill { display: flex; align-items: center; background: #f3f4f6; border-radius: 9999px; padding: 3px; gap: 2px; pointer-events: all; } .tbvp-btn { display: inline-flex; align-items: center; gap: 6px; padding: 5px 14px; border-radius: 9999px; border: none; background: transparent; font-family: 'Poppins', sans-serif; font-size: 12px; font-weight: 600; color: #888; cursor: pointer; transition: background 160ms, color 160ms, box-shadow 160ms; white-space: nowrap; line-height: 1; } .tbvp-btn svg { width: 13px; height: 13px; flex-shrink: 0; } .tbvp-btn.active { background: #ffffff; color: #1a1a1a; box-shadow: 0 1px 4px rgba(0,0,0,0.10); } .tbvp-btn:not(.active):hover { background: rgba(255,255,255,0.6); color: #444; } /* Tango active state gets gradient tint */ #tbvpTango.active { background: linear-gradient(135deg, rgba(139,92,246,0.12) 0%, rgba(255,164,38,0.10) 100%); color: #7c3aed; } /* ═══════════════════════════════════════════════════════════════════ NEW ACTION SLIDE-OUT PANEL + BACKDROP ════════════════════════════════════════════════════════════════════ */ /* Backdrop */ .asp-backdrop { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.25); backdrop-filter: blur(2px); z-index: 400; opacity: 0; transition: opacity 260ms ease; pointer-events: none; } .asp-backdrop.visible { opacity: 1; pointer-events: all; } /* Slide-out panel */ .action-slide-out { position: fixed; top: 0; right: 0; bottom: 0; width: 420px; background: #ffffff; box-shadow: -4px 0 32px rgba(0,0,0,0.12); z-index: 500; display: flex; flex-direction: column; transform: translateX(100%); transition: transform 300ms cubic-bezier(0.4, 0, 0.2, 1); } .action-slide-out.open { transform: translateX(0); } /* Panel head */ .asp-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 16px; border-bottom: 1px solid #f0f0f0; flex-shrink: 0; } .asp-head-left { display: flex; align-items: center; gap: 10px; } .asp-icon { width: 34px; height: 34px; border-radius: 9px; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .asp-icon svg { width: 16px; height: 16px; color: #fff; } .asp-title { font-size: 15px; font-weight: 700; color: #111; } .asp-subtitle { font-size: 11px; color: #aaa; margin-top: 1px; } .asp-close { width: 30px; height: 30px; border-radius: 8px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #bbb; transition: background 140ms, color 140ms; flex-shrink: 0; } .asp-close:hover { background: #f5f5f5; color: #444; } .asp-close svg { width: 16px; height: 16px; } /* Scrollable body */ .asp-body { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 16px; } .asp-body::-webkit-scrollbar { width: 4px; } .asp-body::-webkit-scrollbar-thumb { background: #e5e5e5; border-radius: 4px; } /* Field */ .asp-field { display: flex; flex-direction: column; gap: 6px; } .asp-label { font-size: 11px; font-weight: 700; color: #888; text-transform: uppercase; letter-spacing: 0.07em; display: flex; align-items: center; gap: 4px; } .asp-label .req { color: #ef4444; } /* Input / select / textarea shared */ .asp-input, .asp-select, .asp-textarea { font-family: 'Poppins', sans-serif; font-size: 13px; color: #222; background: #fafafa; border: 1.5px solid #e8e8e8; border-radius: 9px; padding: 9px 13px; outline: none; transition: border-color 150ms, background 150ms, box-shadow 150ms; width: 100%; } .asp-input:focus, .asp-select:focus, .asp-textarea:focus { border-color: #c4b5fd; background: #fff; box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.08); } .asp-input::placeholder, .asp-textarea::placeholder { color: #ccc; } .asp-select { appearance: none; cursor: pointer; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23aaa' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px; } .asp-textarea { resize: vertical; min-height: 80px; line-height: 1.6; } /* Context note under demand dropdown */ .asp-context-note { font-size: 11px; color: #aaa; display: flex; align-items: center; gap: 5px; margin-top: -4px; padding: 0 2px; } .asp-context-note svg { width: 11px; height: 11px; flex-shrink: 0; color: #8b5cf6; } /* Side-by-side row */ .asp-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; } /* Footer */ .asp-footer { display: flex; align-items: center; justify-content: flex-end; gap: 10px; padding: 16px 20px; border-top: 1px solid #f0f0f0; flex-shrink: 0; } .asp-btn-cancel { padding: 8px 18px; border-radius: 9999px; border: 1.5px solid #e5e5e5; background: #fff; font-family: 'Poppins', sans-serif; font-size: 12px; font-weight: 600; color: #666; cursor: pointer; transition: border-color 140ms, color 140ms; } .asp-btn-cancel:hover { border-color: #aaa; color: #333; } .asp-btn-create { padding: 8px 20px; border-radius: 9999px; border: none; background: #FFA426; font-family: 'Poppins', sans-serif; font-size: 12px; font-weight: 700; color: #fff; cursor: pointer; display: inline-flex; align-items: center; gap: 6px; box-shadow: 0 2px 8px rgba(255,164,38,0.30); transition: background 140ms, transform 120ms, box-shadow 140ms; } .asp-btn-create:hover { background: #f59a1a; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(255,164,38,0.36); } .asp-btn-create svg { width: 13px; height: 13px; } .tb-icon-btn { width: 36px; height: 36px; border: none; background: transparent; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #666; transition: background 150ms, color 150ms; position: relative; } .tb-icon-btn:hover { background: #f5f5f5; color: #1a1a1a; } .tb-icon-btn svg { width: 18px; height: 18px; } .tb-icon-btn .notif-dot { position: absolute; top: 7px; right: 7px; width: 7px; height: 7px; background: #ef4444; border-radius: 50%; border: 1.5px solid #fff; } /* User avatar in top-bar */ .top-bar__user-avatar { width: 32px; height: 32px; border-radius: 50%; background: #FFA426; color: #1a1a1a; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; cursor: pointer; margin-left: 4px; flex-shrink: 0; } /* ─── APP SHELL ─────────────────────────────────────────────────────── */ /* No global sidebar. Shell is simply: inner-nav | main content | tango panel */ #screen-demand-live .app-shell { display: flex; flex: 1; min-height: 0; overflow: hidden; } /* ─── INNER NAV (collapsed by default) ─────────────────────────────── */ .inner-nav { width: 52px; /* collapsed icon-rail width */ min-width: 52px; background: #ffffff; border-right: 1px solid #e5e5e5; display: flex; flex-direction: column; overflow: hidden; transition: width 250ms cubic-bezier(0, 0, 0.2, 1), min-width 250ms cubic-bezier(0, 0, 0.2, 1); position: relative; z-index: 50; min-height: 0; } /* Expanded state toggled by JS */ .inner-nav.expanded { width: 220px; min-width: 220px; } /* Toggle button at top of inner-nav */ .inner-nav__toggle { height: 48px; min-height: 48px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; cursor: pointer; color: #666; border-bottom: 1px solid #f5f5f5; transition: color 150ms; width: 100%; } .inner-nav__toggle:hover { color: #FFA426; background: #FFF8F0; } .inner-nav__toggle svg { width: 18px; height: 18px; flex-shrink: 0; } /* Nav sections */ .inner-nav__section-label { font-size: 10px; font-weight: 600; color: #ccc; text-transform: uppercase; letter-spacing: 0.08em; padding: 16px 14px 6px; white-space: nowrap; opacity: 0; transition: opacity 200ms 50ms; } .inner-nav.expanded .inner-nav__section-label { opacity: 1; } .inner-nav__item { display: flex; align-items: center; gap: 10px; padding: 9px 14px; cursor: pointer; border-radius: 0; color: #666; font-size: 13px; font-weight: 500; white-space: nowrap; position: relative; transition: background 150ms, color 150ms; text-decoration: none; } .inner-nav__item:hover { background: #f5f5f5; color: #1a1a1a; } .inner-nav__item.active { background: #FFF8F0; color: #FFA426; } .inner-nav__item svg { width: 18px; height: 18px; flex-shrink: 0; } .inner-nav__item .nav-dot { width: 6px; height: 6px; background: #FFA426; border-radius: 50%; flex-shrink: 0; margin-left: auto; } /* Label text fades in on expand */ .inner-nav__item-label { opacity: 0; transition: opacity 200ms 50ms; pointer-events: none; } .inner-nav.expanded .inner-nav__item-label { opacity: 1; } /* Collapsed tooltip on hover */ .inner-nav:not(.expanded) .inner-nav__item:hover::after { content: attr(data-label); position: absolute; left: calc(100% + 8px); top: 50%; transform: translateY(-50%); background: #1a1a1a; color: #fff; font-size: 12px; font-weight: 500; padding: 5px 10px; border-radius: 6px; white-space: nowrap; pointer-events: none; z-index: 200; box-shadow: 0 4px 6px rgba(0,0,0,0.15); } /* ─── MAIN CONTENT ──────────────────────────────────────────────────── */ .main-content { flex: 1; overflow: hidden; display: flex; flex-direction: column; background: #f0f2f5; min-width: 0; min-height: 0; } /* ─── ZONE HEADER ───────────────────────────────────────────────────── */ /* Cleaned up: icon-only Edit + Share buttons, prominent Ask Tango + Submit for Approval, stakeholder avatar cluster on the right. */ .zone-header { background: #ffffff; border-bottom: 1px solid #e8edf2; padding: 14px 24px 12px; display: flex; flex-direction: column; gap: 10px; flex-shrink: 0; } /* Row 1: demand label + live badge */ .zh-eyebrow { display: flex; align-items: center; gap: 8px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: #10b981; } .zh-eyebrow .live-dot { width: 7px; height: 7px; background: #10b981; border-radius: 50%; animation: pulse-green 2s ease-in-out infinite; } @keyframes pulse-green { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(16,185,129,0.4); } 50% { opacity: 0.8; box-shadow: 0 0 0 5px rgba(16,185,129,0); } } .zh-eyebrow .divider { color: #e5e5e5; } .zh-eyebrow .org { color: #999; } /* Row 2: title meta cluster */ .zh-title-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .zh-title { font-size: 20px; font-weight: 700; color: #1a1a1a; line-height: 1.25; margin-right: 4px; } /* Chips */ .zh-chip { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 6px; font-size: 12px; font-weight: 500; white-space: nowrap; border: 1px solid transparent; } .zh-chip.priority { background: #fef2f2; color: #ef4444; border-color: #fecaca; } .zh-chip.category { background: #eff6ff; color: #3b82f6; border-color: #bfdbfe; } .zh-chip.budget { background: #f0fdf4; color: #10b981; border-color: #bbf7d0; } /* Spacer between chips and actions */ .zh-spacer { flex: 1; min-width: 12px; } /* Items that hide when the header is collapsed */ .zh-collapsible { display: contents; /* transparent to flex layout by default */ } .zone-header.is-collapsed .zh-collapsible { display: none; } /* Invite button can force-show the avatar cluster independently */ .zone-header.is-collapsed #zhAvatarWrap.avatars-open { display: contents; } /* Slide-in animation for the avatar cluster */ @keyframes avatars-slide-in { from { opacity: 0; transform: translateX(12px); } to { opacity: 1; transform: translateX(0); } } #zhAvatarWrap.avatars-open .zh-avatars { animation: avatars-slide-in 200ms cubic-bezier(0, 0, 0.2, 1) both; } /* Also hide the eyebrow row and shrink header padding when collapsed */ .zone-header.is-collapsed .zh-eyebrow { display: none; } .zone-header.is-collapsed { padding-bottom: 8px; } /* Stakeholder avatar cluster */ .zh-avatars { display: flex; align-items: center; margin-right: 8px; position: relative; } .zh-avatar { width: 30px; height: 30px; border-radius: 50%; border: 2px solid #fff; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; color: #fff; cursor: pointer; position: relative; transition: transform 150ms, z-index 0ms; margin-left: -8px; } .zh-avatar:first-child { margin-left: 0; } .zh-avatar:hover { transform: translateY(-2px); z-index: 10; } .zh-avatar[data-initials="AM"] { background: #3b82f6; } .zh-avatar[data-initials="PK"] { background: #8b5cf6; } .zh-avatar[data-initials="KB"] { background: #10b981; } .zh-avatar[data-initials="AR"] { background: #FFA426; } .zh-avatar-overflow { width: 30px; height: 30px; border-radius: 50%; border: 2px solid #fff; background: #f5f5f5; color: #666; font-size: 10px; font-weight: 600; display: flex; align-items: center; justify-content: center; cursor: pointer; margin-left: -8px; } .zh-avatar-overflow:hover { background: #ebebeb; } /* Avatar tooltip */ .zh-avatar::after { content: attr(data-name); position: absolute; bottom: calc(100% + 6px); left: 50%; transform: translateX(-50%); background: #1a1a1a; color: #fff; font-size: 11px; font-weight: 500; padding: 4px 8px; border-radius: 6px; white-space: nowrap; pointer-events: none; opacity: 0; transition: opacity 150ms; z-index: 200; box-shadow: 0 2px 8px rgba(0,0,0,0.2); } .zh-avatar:hover::after { opacity: 1; } /* Icon-only action buttons (Edit, Share, More) */ .zh-icon-btn { width: 34px; height: 34px; border-radius: 8px; border: 1px solid #e5e5e5; background: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #666; transition: background 150ms, border-color 150ms, color 150ms; flex-shrink: 0; } .zh-icon-btn:hover { background: #f5f5f5; border-color: #ccc; color: #1a1a1a; } .zh-icon-btn svg { width: 16px; height: 16px; } /* Primary CTA group */ .zh-cta-group { display: flex; align-items: center; gap: 8px; flex-shrink: 0; } /* Ask Tango button — gradient */ .btn-tango { display: inline-flex; align-items: center; gap: 7px; padding: 8px 16px; border-radius: 24px; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); color: #fff; font-size: 13px; font-weight: 600; border: none; cursor: pointer; transition: opacity 150ms, transform 150ms; white-space: nowrap; } .btn-tango:hover { opacity: 0.92; transform: translateY(-1px); } .btn-tango svg { width: 15px; height: 15px; flex-shrink: 0; } /* Submit for Approval button */ .btn-submit { display: inline-flex; align-items: center; gap: 7px; padding: 8px 16px; border-radius: 24px; background: #FFA426; color: #1a1a1a; font-size: 13px; font-weight: 600; border: none; cursor: pointer; transition: background 150ms, transform 150ms; white-space: nowrap; } .btn-submit:hover { background: #F89622; transform: translateY(-1px); } .btn-submit svg { width: 15px; height: 15px; flex-shrink: 0; } /* Expand / collapse toggle button next to Submit */ .btn-expand-details { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 9999px; border: 1.5px solid #e5e5e5; background: #ffffff; color: #666; cursor: pointer; flex-shrink: 0; transition: background 140ms, border-color 140ms, color 140ms; } .btn-expand-details:hover { background: #f5f5f5; border-color: #ccc; color: #333; } .btn-expand-details svg { width: 15px; height: 15px; transition: transform 260ms cubic-bezier(0,0,0.2,1); } .btn-expand-details[aria-expanded="false"] svg { transform: rotate(180deg); } /* Stage-stepper collapsed state */ /* stage-stepper collapse handled in full rule above */ /* ─── TANGO PANEL (right) — stub for structure ──────────────────────── */ .tango-panel { width: 320px; min-width: 320px; background: #fff; border-left: 1px solid #e5e5e5; display: flex; flex-direction: column; overflow: hidden; flex-shrink: 0; } /* ─── STAGE BAR (below zone-header, in main scroll) ────────────────── */ .stage-bar { display: flex; align-items: center; gap: 0; padding: 12px 20px; background: #fff; border-bottom: 1px solid #f0f0f0; overflow-x: auto; flex-shrink: 0; } /* ─── STAGE STEPPER ────────────────────────────────────────────────── */ /* Replaces old .stage-bar stub. Stat row and hero-nudge are GONE. Flight metrics embed directly inside this bar. */ .stage-stepper { display: flex; align-items: center; gap: 0; padding: 0 20px; background: #ffffff; border: 1px solid #e8edf2; border-radius: 12px; height: 56px; flex-shrink: 0; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.06); margin-bottom: 12px; transition: height 280ms cubic-bezier(0,0,0.2,1), opacity 220ms ease, margin 280ms cubic-bezier(0,0,0.2,1); } .stage-stepper.is-collapsed { height: 0 !important; margin: 0 !important; opacity: 0; pointer-events: none; } /* Individual stage step */ .stage-step { display: flex; align-items: center; gap: 0; flex-shrink: 0; } .stage-step__body { display: flex; align-items: center; gap: 8px; padding: 0 2px; cursor: default; } /* State icon circle */ .stage-step__icon { width: 22px; height: 22px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; font-size: 11px; font-weight: 700; } .stage-step__icon.done { background: #10b981; color: #fff; } .stage-step__icon.active { background: #FFA426; color: #fff; box-shadow: 0 0 0 3px rgba(255,164,38,0.18); } .stage-step__icon.pending { background: #f5f5f5; color: #ccc; border: 1.5px solid #e5e5e5; } .stage-step__icon svg { width: 12px; height: 12px; } /* Stage label block */ .stage-step__label { display: flex; flex-direction: column; line-height: 1.2; } .stage-step__name { font-size: 12px; font-weight: 600; color: #1a1a1a; } .stage-step__name.pending { color: #999; } .stage-step__sub { font-size: 10px; color: #999; font-weight: 400; } .stage-step__sub.active-sub { color: #FFA426; font-weight: 500; } /* Connector line between steps */ .stage-connector { height: 2px; flex: 1; min-width: 16px; max-width: 36px; margin: 0 4px; border-radius: 2px; background: #e5e5e5; position: relative; overflow: hidden; } .stage-connector.done { background: #10b981; } .stage-connector.active { background: #e5e5e5; } .stage-connector.active::after { content: ''; position: absolute; left: 0; top: 0; height: 100%; width: 60%; background: linear-gradient(90deg, #FFA426, #FBB03B); border-radius: 2px; animation: connector-pulse 2s ease-in-out infinite; } @keyframes connector-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.6; } } /* ── Embedded flight metrics (far right of stage bar) ──────────────── */ .stage-metrics { margin-left: auto; display: flex; align-items: center; gap: 16px; flex-shrink: 0; padding-left: 20px; border-left: 1px solid #f0f0f0; } /* Micro status pills */ .stage-pill { display: inline-flex; align-items: center; gap: 5px; font-size: 11px; font-weight: 500; padding: 3px 9px; border-radius: 20px; white-space: nowrap; cursor: default; } .stage-pill.blocker { background: #fef2f2; color: #ef4444; } .stage-pill.open-actions { background: #fffbeb; color: #f59e0b; } .stage-pill .pill-dot { width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0; } .stage-pill.blocker .pill-dot { background: #ef4444; } .stage-pill.open-actions .pill-dot { background: #f59e0b; } /* Day counter + mini progress track */ .stage-flight { display: flex; align-items: center; gap: 10px; flex-shrink: 0; } .stage-flight__label { font-size: 11px; font-weight: 500; color: #666; white-space: nowrap; } .stage-flight__label strong { color: #1a1a1a; font-weight: 700; } /* 4px tall progress track */ .stage-flight__track { width: 80px; height: 4px; background: #e5e5e5; border-radius: 4px; overflow: hidden; flex-shrink: 0; } .stage-flight__fill { height: 100%; border-radius: 4px; background: linear-gradient(90deg, #FFA426 0%, #FBB03B 100%); transition: width 600ms cubic-bezier(0, 0, 0.2, 1); } /* Percent label */ .stage-flight__pct { font-size: 11px; font-weight: 600; color: #FFA426; white-space: nowrap; } /* ─── DEMAND WORKSPACE GRID ─────────────────────────────────────────── */ /* Master 3-column horizontal layout. Flow (fixed) | Actions (fluid) | Insights (fixed) Fills all remaining vertical space below stage-stepper. */ .demand-workspace-grid { display: flex; flex-direction: row; flex: 1; min-height: 0; overflow: hidden; background: transparent; position: relative; } /* Needs Attention — fluid right column, must allow kanban to scroll */ .dwg-col--actions { flex: 1; min-width: 0; overflow: hidden; display: flex; flex-direction: column; margin-left: 12px; } /* ── Column base ───────────────────────────────────────────────────── */ .dwg-col { display: flex; flex-direction: column; background: #ffffff; border-radius: 12px; border: 1px solid #e8edf2; box-shadow: 0 1px 3px rgba(0,0,0,0.06); overflow: hidden; } /* Activity Flow — narrow left column (~26%) */ .dwg-col--flow { width: 26%; min-width: 220px; flex-shrink: 0; transition: width 260ms cubic-bezier(0,0,0.2,1), min-width 260ms cubic-bezier(0,0,0.2,1), opacity 200ms ease, margin 260ms cubic-bezier(0,0,0.2,1); } .dwg-col--flow.collapsed { width: 0 !important; min-width: 0 !important; opacity: 0; pointer-events: none; border: none !important; box-shadow: none !important; margin: 0 !important; padding: 0 !important; } /* Ghost rail — shown when Flow is collapsed */ .flow-ghost { display: none; flex-direction: column; align-items: center; justify-content: flex-start; gap: 8px; width: 36px; min-width: 36px; padding-top: 12px; background: #ffffff; border: 1px solid #e8edf2; border-radius: 12px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); flex-shrink: 0; cursor: pointer; transition: background 140ms; } .flow-ghost:hover { background: #f8fafc; } .flow-ghost.visible { display: flex; } .flow-ghost__label { writing-mode: vertical-lr; font-size: 10px; font-weight: 600; color: #ccc; letter-spacing: 0.08em; text-transform: uppercase; user-select: none; margin-top: 4px; } /* ── Column header ───────────────────────────────────────────────── */ .dwg-col-header { height: 48px; min-height: 48px; display: flex; align-items: center; justify-content: space-between; padding: 0 16px 0 14px; border-bottom: 1px solid #f0f4f8; gap: 8px; flex-shrink: 0; border-radius: 12px 12px 0 0; } .dwg-col-header__left { display: flex; align-items: center; gap: 8px; min-width: 0; overflow: hidden; } .dwg-col-header__title { font-size: 12px; font-weight: 700; color: #1a1a1a; letter-spacing: 0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .dwg-col-header__sub { font-size: 11px; color: #999; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .dwg-col-header__right { display: flex; align-items: center; gap: 6px; flex-shrink: 0; } /* ── Header badges ───────────────────────────────────────────────── */ .dwg-badge { display: inline-flex; align-items: center; gap: 4px; font-size: 11px; font-weight: 500; padding: 3px 8px; border-radius: 20px; white-space: nowrap; } .dwg-badge--green { background: #f0fdf4; color: #10b981; } .dwg-badge--red { background: #fef2f2; color: #ef4444; } .dwg-badge--amber { background: #fffbeb; color: #f59e0b; } .dwg-badge__dot { width: 5px; height: 5px; border-radius: 50%; flex-shrink: 0; } .dwg-badge--red .dwg-badge__dot { background: #ef4444; } .dwg-badge--amber .dwg-badge__dot { background: #f59e0b; } /* ── Header icon buttons ─────────────────────────────────────────── */ .dwg-icon-btn, .dwg-collapse-btn, .dwg-expand-btn { width: 28px; height: 28px; border-radius: 6px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #999; transition: background 150ms, color 150ms; flex-shrink: 0; } .dwg-icon-btn:hover, .dwg-collapse-btn:hover, .dwg-expand-btn:hover { background: #f5f5f5; color: #1a1a1a; } .dwg-icon-btn svg, .dwg-collapse-btn svg, .dwg-expand-btn svg { width: 14px; height: 14px; } /* ── Column scrollable body ──────────────────────────────────────── */ .dwg-col-body { flex: 1; overflow-y: auto; overflow-x: hidden; } .dwg-col-body::-webkit-scrollbar { width: 4px; } .dwg-col-body::-webkit-scrollbar-track { background: transparent; } .dwg-col-body::-webkit-scrollbar-thumb { background: #e5e5e5; border-radius: 4px; } /* ── DEMAND FLOW column internals ─────────────────────────────────── */ .flow-section { padding: 12px 14px 8px; } .flow-stage { display: flex; align-items: flex-start; gap: 10px; padding: 7px 0; position: relative; } /* Vertical connector line between stage dots */ .flow-stage:not(:last-child)::after { content: ''; position: absolute; left: 7px; top: 24px; width: 2px; height: calc(100% - 10px); background: #f0f0f0; border-radius: 2px; } .flow-stage--done::after { background: #10b981; opacity: 0.3; } .flow-stage--active::after { background: #FFA426; opacity: 0.3; } .flow-stage__dot { width: 16px; height: 16px; border-radius: 50%; flex-shrink: 0; margin-top: 2px; display: flex; align-items: center; justify-content: center; } .flow-stage__dot--done { background: #10b981; } .flow-stage__dot--active { background: #FFA426; box-shadow: 0 0 0 3px rgba(255,164,38,0.18); animation: pulse-orange 2s ease-in-out infinite; } @keyframes pulse-orange { 0%, 100% { box-shadow: 0 0 0 3px rgba(255,164,38,0.18); } 50% { box-shadow: 0 0 0 6px rgba(255,164,38,0.06); } } .flow-stage__dot--pending { background: #f5f5f5; border: 2px solid #e5e5e5; } .flow-stage__info { display: flex; flex-direction: column; } .flow-stage__name { font-size: 14px; font-weight: 600; color: #1a1a1a; line-height: 1.3; } .flow-stage__name--pending { color: #bbb; } .flow-stage__meta { font-size: 11px; color: #999; } .flow-stage__meta--active { color: #FFA426; font-weight: 500; } .flow-divider { height: 1px; background: #f0f0f0; margin: 4px 14px 0; } .flow-stat-list { padding: 10px 14px 14px; display: flex; flex-direction: column; gap: 8px; } .flow-stat { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .flow-stat__label { font-size: 11px; color: #999; font-weight: 500; flex-shrink: 0; } .flow-stat__value { font-size: 14px; color: #1a1a1a; font-weight: 500; text-align: right; } .flow-stat__value--red { color: #ef4444; } .flow-stat__avatar-row { display: flex; align-items: center; gap: 5px; } /* ── MINI AVATARS (shared) ───────────────────────────────────────── */ .mini-avatar { width: 24px; height: 24px; border-radius: 50%; font-size: 10px; font-weight: 700; display: flex; align-items: center; justify-content: center; color: #fff; flex-shrink: 0; } .mini-avatar--orange { background: #FFA426; color: #1a1a1a; } .mini-avatar--blue { background: #3b82f6; } .mini-avatar--purple { background: #8b5cf6; } .mini-avatar--green { background: #10b981; } /* ══════════════════════════════════════════════════════════════════ */ /* ── ACTION DETAIL OVERLAY — right slide-in panel */ /* ══════════════════════════════════════════════════════════════════ */ .actions-master-detail { display: flex; flex-direction: column; flex: 1; overflow: hidden; min-height: 0; } /* View toggle bar — sits above the kanban/list */ .actions-view-bar { display: flex; align-items: center; justify-content: flex-end; gap: 4px; padding: 4px 14px 0; flex-shrink: 0; } .view-toggle-btn { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 6px; border: 1.5px solid transparent; background: transparent; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 600; color: #94a3b8; cursor: pointer; transition: all 140ms; } .view-toggle-btn svg { width: 13px; height: 13px; } .view-toggle-btn.active { background: #f0f4f8; color: #334155; border-color: #e2e8f0; } .view-toggle-btn:not(.active):hover { color: #64748b; background: #f8fafc; } /* Kanban board */ .actions-list { flex: 1; min-height: 0; display: flex; flex-direction: row; gap: 10px; padding: 10px 14px 14px; overflow-x: auto; overflow-y: hidden; align-items: stretch; background: #f8fafc; } .actions-list::-webkit-scrollbar { height: 5px; } .actions-list::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } .actions-list::-webkit-scrollbar-track { background: transparent; } /* List view — vertical stack */ /* ── List view — flat rows matching screenshot ──────────────────── */ .actions-list.list-view { flex-direction: column; overflow-x: hidden; overflow-y: auto; align-items: stretch; gap: 0; padding: 0; background: #ffffff; } /* Column becomes a flat section, no card */ .actions-list.list-view .action-group { flex: none; width: 100%; min-width: 0; border-radius: 0; border: none; box-shadow: none; background: #ffffff; overflow: visible; min-height: 0; } /* Section label row — plain, sticky */ .actions-list.list-view .action-group__header { border-radius: 0; border: none; border-bottom: none; padding: 16px 20px 6px; position: sticky; top: 0; background: #ffffff; z-index: 2; } /* Each row — full-width flat horizontal row, no card box */ .actions-list.list-view .action-row { flex-direction: row; align-items: center; margin: 0; padding: 14px 20px; border-radius: 0; border: none; border-bottom: 1px solid #f0f4f8; box-shadow: none; background: #ffffff; gap: 12px; width: 100%; } .actions-list.list-view .action-row:hover { background: #fafafa; border-color: #f0f4f8; box-shadow: none; } .actions-list.list-view .action-row.active { background: #FFF8F0; border-left: 3px solid #FFA426; padding-left: 17px; } .actions-list.list-view .action-row--overdue { border-left: 3px solid #fca5a5; padding-left: 17px; } /* Body row: checkbox + title takes all space */ .actions-list.list-view .action-row__body { flex: 1; min-width: 0; } .actions-list.list-view .action-row__title { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } /* Footer becomes a horizontal right-side cluster */ .actions-list.list-view .action-row__footer { width: auto; flex-shrink: 0; gap: 8px; } .actions-list.list-view .action-row__time { min-width: 80px; text-align: right; } /* Each group = a kanban column */ .action-group { flex: 0 0 290px; min-width: 290px; display: flex; flex-direction: column; background: #ffffff; border-radius: 10px; border: 1px solid #e8edf2; box-shadow: 0 1px 3px rgba(0,0,0,0.05); overflow-x: hidden; overflow-y: auto; min-height: 0; } .action-group::-webkit-scrollbar { width: 3px; } .action-group::-webkit-scrollbar-thumb { background: #e2e8f0; border-radius: 4px; } .action-group__header { display: flex; align-items: center; gap: 7px; padding: 12px 14px 10px; background: #ffffff; border-bottom: 1px solid #f0f4f8; position: sticky; top: 0; z-index: 2; border-radius: 10px 10px 0 0; flex-shrink: 0; } .action-group__label { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; } .action-group__label--overdue { color: #dc2626; } .action-group__label--inprogress { color: #2563eb; } .action-group__label--todo { color: #d97706; } .action-group__label--done { color: #059669; } .action-group__count { font-size: 10px; font-weight: 700; color: #fff; border-radius: 20px; padding: 1px 7px; min-width: 20px; text-align: center; } .action-group__label--overdue ~ .action-group__count { background: #dc2626; } .action-group__label--inprogress ~ .action-group__count { background: #2563eb; } .action-group__label--todo ~ .action-group__count { background: #d97706; } .action-group__label--done ~ .action-group__count { background: #059669; } .action-group .action-row { margin: 10px 10px 0; } .action-group .action-row:last-child { margin-bottom: 10px; } /* Tango column */ .action-group--tango { background: #fdfbff; border-color: #e9e1ff; } .action-group--tango .action-group__header { background: #fdfbff; border-bottom-color: #ede9fe; } /* Backdrop */ .detail-backdrop { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.25); backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px); z-index: 500; opacity: 0; pointer-events: none; transition: opacity 240ms ease; } .detail-backdrop.open { opacity: 1; pointer-events: all; } /* Left-nav dims when any detail panel is open */ .left-nav { transition: opacity 240ms ease, filter 240ms ease; } .left-nav.nav-panel-muted { opacity: 0.28; filter: blur(1.5px) grayscale(0.4); pointer-events: none; } /* Slide-in panel — full height, right edge, 420px wide */ .detail-panel { position: fixed; top: 0; right: 0; bottom: 0; width: 720px; max-width: 100vw; background: #ffffff; box-shadow: -8px 0 40px rgba(0,0,0,0.12); border-left: 1px solid #f0f0f0; z-index: 501; display: flex; flex-direction: column; overflow: hidden; transform: translateX(100%); transition: transform 280ms cubic-bezier(0.4, 0, 0.2, 1); } .detail-panel.open { transform: translateX(0); } /* ── dp = Detail Panel component classes ─────────────────────────── */ /* Header row: icon + title/status left, X right */ .dp-header { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 16px; border-bottom: 1px solid #f0f0f0; flex-shrink: 0; gap: 12px; } .dp-header__left { display: flex; align-items: center; gap: 12px; min-width: 0; } .dp-header__icon { width: 36px; height: 36px; border-radius: 10px; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .dp-header__icon svg { width: 16px; height: 16px; stroke: #fff; } .dp-header__title { font-size: 18px; font-weight: 700; color: #111; line-height: 1.3; white-space: normal; overflow: visible; text-overflow: unset; max-width: 300px; } .dp-header__sub { display: flex; align-items: center; gap: 6px; margin-top: 3px; flex-wrap: wrap; } /* Stage chip — sits inline with status */ .dp-stage-chip { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 20px; background: #eff6ff; color: #3b82f6; border: 1px solid #bfdbfe; white-space: nowrap; letter-spacing: 0.02em; } /* Go to Demand — animated arrow link */ .dp-go-demand { display: inline-flex; align-items: center; gap: 4px; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 600; color: #FFA426; background: transparent; border: none; cursor: pointer; padding: 2px 0; margin-left: 2px; transition: color 150ms; white-space: nowrap; } .dp-go-demand svg { width: 12px; height: 12px; transition: transform 200ms cubic-bezier(0.4, 0, 0.2, 1); } .dp-go-demand:hover { color: #F89622; } .dp-go-demand:hover svg { transform: translateX(4px); } /* Comments section */ .dp-comments-section { display: flex; flex-direction: column; padding: 12px 16px; gap: 10px; flex-shrink: 0; } /* Collapsible section toggle — shared by Activity and Comments */ .dp-section-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; border: none; background: transparent; padding: 10px 16px; font-family: 'Poppins', sans-serif; font-size: 10px; font-weight: 700; color: #aaa; text-transform: uppercase; letter-spacing: 0.07em; cursor: pointer; transition: color 140ms, background 140ms; } .dp-section-toggle:hover { color: #666; background: #fafafa; } .dp-section-chevron { width: 13px; height: 13px; color: #ccc; transition: transform 220ms cubic-bezier(0,0,0.2,1), color 140ms; flex-shrink: 0; } .dp-section-toggle[aria-expanded="true"] .dp-section-chevron { transform: rotate(180deg); color: #aaa; } /* Collapsible body */ .dp-section-body { overflow: hidden; max-height: 400px; opacity: 1; transition: max-height 260ms cubic-bezier(0,0,0.2,1), opacity 200ms ease; } .dp-section-body.collapsed { max-height: 0; opacity: 0; } .dp-comments-list { display: flex; flex-direction: column; gap: 10px; } .dp-comment { display: flex; gap: 9px; align-items: flex-start; } .dp-comment-avatar { width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: #fff; margin-top: 1px; } .dp-comment-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; } .dp-comment--tango .dp-comment-body { background: #faf7ff; border: 1px solid #ede9fe; border-radius: 8px; padding: 8px 10px; } .dp-comment-meta { display: flex; align-items: center; gap: 6px; } .dp-comment-author { font-size: 11px; font-weight: 700; color: #333; } .dp-comment-time { font-size: 10px; color: #bbb; } .dp-comment-text { font-size: 12px; color: #555; line-height: 1.5; } /* Comment input row */ .dp-comment-input-row { display: flex; align-items: center; gap: 8px; } .dp-comment-input-wrap { flex: 1; display: flex; align-items: center; background: #f5f5f5; border: 1.5px solid #eee; border-radius: 20px; padding: 0 6px 0 12px; gap: 4px; transition: border-color 150ms, background 150ms; } .dp-comment-input-wrap:focus-within { border-color: #c4b5fd; background: #fff; } .dp-comment-input { flex: 1; border: none; background: transparent; font-family: 'Poppins', sans-serif; font-size: 12px; color: #333; padding: 8px 0; outline: none; } .dp-comment-input::placeholder { color: #bbb; } .dp-comment-send { width: 28px; height: 28px; border-radius: 50%; border: none; background: #8b5cf6; color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; transition: background 150ms, transform 150ms; } .dp-comment-send:hover { background: #7c3aed; transform: scale(1.05); } .dp-comment-send svg { width: 12px; height: 12px; } .dp-status { font-family: 'Poppins', sans-serif; font-size: 12px; font-weight: 600; color: #555; cursor: pointer; appearance: none; outline: none; border: none; background: transparent; padding-right: 18px; /* chevron */ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0px center; } .dp-status-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; display: inline-block; } .dp-status-dot--todo { background: #aaa; } .dp-status-dot--done { background: #10b981; } .dp-status-dot--inprogress { background: #3b82f6; } .dp-status-dot--overdue { background: #ef4444; } /* Close X button */ .dp-close, .dp-expand { width: 28px; height: 28px; border-radius: 7px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #bbb; transition: background 140ms, color 140ms; flex-shrink: 0; } .dp-close:hover, .dp-expand:hover { background: #f2f2f2; color: #444; } .dp-close svg, .dp-expand svg { width: 15px; height: 15px; } /* Quick actions row */ .dp-quick-actions { display: flex; align-items: center; gap: 8px; padding: 12px 16px 14px; flex-shrink: 0; } .dp-qa { display: inline-flex; align-items: center; justify-content: center; gap: 7px; border-radius: 10px; font-family: 'Poppins', sans-serif; font-size: 13px; font-weight: 600; cursor: pointer; transition: background 140ms, border-color 140ms, color 140ms, transform 120ms, box-shadow 140ms; white-space: nowrap; } /* Mark Done — full width, orange filled */ .dp-qa--done { flex: 1; padding: 11px 16px; background: #FFA426; color: #1a1a1a; border: none; box-shadow: 0 2px 8px rgba(255,164,38,0.30); } .dp-qa--done:hover { background: #F89622; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(255,164,38,0.38); } .dp-qa--done svg { width: 15px; height: 15px; } /* Reassign — full width, outline */ .dp-qa--outline { flex: 1; padding: 11px 16px; background: #fff; color: #333; border: 1.5px solid #e0e0e0; } .dp-qa--outline:hover { border-color: #bbb; color: #111; background: #fafafa; } .dp-qa--outline svg { width: 15px; height: 15px; } /* More ··· — small square icon button, no flex growth */ .dp-qa--more { flex-shrink: 0; width: 40px; height: 40px; padding: 0; background: #fff; color: #aaa; border: 1.5px solid #e0e0e0; border-radius: 10px; font-size: 16px; letter-spacing: 0.05em; line-height: 1; } .dp-qa--more:hover { border-color: #bbb; color: #555; } /* Main title */ .dp-title-block { padding: 0 16px 16px; flex-shrink: 0; } .dp-title { font-size: 16px; font-weight: 700; color: #111; line-height: 1.35; } .dp-divider { height: 1px; background: #f0f0f0; flex-shrink: 0; } /* Properties section */ .dp-props { padding: 16px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px 12px; flex-shrink: 0; } .dp-prop { display: flex; flex-direction: column; gap: 4px; } .dp-prop--full { grid-column: 1 / -1; } .dp-prop-label { font-size: 10px; font-weight: 700; color: #aaa; text-transform: uppercase; letter-spacing: 0.08em; } .dp-prop-value { font-size: 13px; color: #222; font-weight: 500; line-height: 1.4; display: flex; align-items: center; gap: 5px; } .dp-prop-value--link { color: #FFA426; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 4px; } .dp-prop-value--link svg { width: 12px; height: 12px; flex-shrink: 0; } .dp-prop-value--red { color: #ef4444; font-weight: 600; } /* Section origin chip */ .dp-section-chip { display: inline-flex; align-items: center; gap: 5px; padding: 3px 9px; border-radius: 6px; background: #FFF8F0; color: #FFA426; font-size: 12px; font-weight: 600; border: 1px solid #FFE4B5; } .dp-section-chip svg { width: 12px; height: 12px; } /* Assignee/creator row */ .dp-person { display: flex; align-items: center; gap: 7px; } .dp-avatar { width: 26px; height: 26px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; color: #fff; flex-shrink: 0; } .dp-avatar--purple { background: #8b5cf6; } .dp-avatar--orange { background: #FFA426; color: #1a1a1a; } .dp-avatar--blue { background: #3b82f6; } .dp-person-name { font-size: 13px; font-weight: 500; color: #222; } /* ── Tango context block ─────────────────────────────────────────── */ .dp-tango-block { margin: 0 16px 0; border-top: 1px solid #f0f0f0; border-radius: 0; border-left: none; border-right: none; border-bottom: none; background: #faf7ff; overflow: hidden; flex-shrink: 0; } /* Collapsible header — full-width clickable button */ .dp-tango-header { display: flex; align-items: center; justify-content: space-between; padding: 11px 14px; gap: 6px; font-size: 13px; font-weight: 700; color: #7c3aed; width: 100%; border: none; background: transparent; cursor: pointer; font-family: 'Poppins', sans-serif; transition: background 120ms; } .dp-tango-header:hover { background: rgba(139,92,246,0.04); } .dp-tango-header__left { display: flex; align-items: center; gap: 6px; } .dp-tango-header svg { width: 14px; height: 14px; color: #8b5cf6; } .dp-tango-chevron { width: 14px; height: 14px; color: #c4b5fd; flex-shrink: 0; transition: transform 220ms cubic-bezier(0,0,0.2,1); } .dp-tango-block.is-open .dp-tango-chevron { transform: rotate(180deg); } /* Collapsible body */ .dp-tango-body { display: flex; flex-direction: column; gap: 10px; padding: 0 14px 14px; overflow: hidden; max-height: 200px; transition: max-height 240ms cubic-bezier(0,0,0.2,1), padding 200ms ease, opacity 200ms ease; opacity: 1; } .dp-tango-body.collapsed { max-height: 0; padding-top: 0; padding-bottom: 0; opacity: 0; } .dp-tango-text { font-size: 12px; color: #555; line-height: 1.55; } .dp-tango-actions { display: flex; align-items: center; gap: 8px; } .dp-tango-cta { display: inline-flex; align-items: center; gap: 5px; padding: 6px 13px; border-radius: 20px; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 600; cursor: pointer; transition: opacity 140ms, transform 120ms; white-space: nowrap; border: none; background: linear-gradient(135deg, #8b5cf6, #FFA426); color: #fff; } .dp-tango-cta:hover { opacity: 0.88; transform: translateY(-1px); } .dp-tango-cta svg { width: 11px; height: 11px; } .dp-tango-cta--ghost { background: transparent; border: 1.5px solid #d8ccf5; color: #7c3aed; } .dp-tango-cta--ghost:hover { background: #f3ecff; opacity: 1; } /* Slim 2-col properties row */ .dp-props-slim { display: flex; gap: 0; padding: 12px 16px; flex-shrink: 0; } .dp-prop-slim { flex: 1; display: flex; flex-direction: column; gap: 5px; } .dp-prop-slim:not(:last-child) { border-right: 1px solid #f0f0f0; margin-right: 16px; padding-right: 16px; } /* Activity section */ .dp-activity-section { display: flex; flex-direction: column; padding: 12px 16px; gap: 10px; flex-shrink: 0; } .dp-act-list { display: flex; flex-direction: column; gap: 0; position: relative; } .dp-act-item { display: flex; align-items: flex-start; gap: 10px; padding: 6px 0; position: relative; } /* Vertical connector line */ .dp-act-item:not(:last-child)::after { content: ''; position: absolute; left: 6px; top: 20px; bottom: -6px; width: 1px; background: #f0f0f0; } .dp-act-dot { width: 13px; height: 13px; border-radius: 50%; flex-shrink: 0; margin-top: 3px; border: 2px solid; } .dp-act-dot--red { background: #fef2f2; border-color: #ef4444; } .dp-act-dot--grey { background: #f5f5f5; border-color: #d1d5db; } .dp-act-dot--purple { background: #f3ecff; border-color: #c4b5fd; } .dp-act-dot--orange { background: #fff8f0; border-color: #FFA426; } .dp-act-body { display: flex; flex-direction: column; gap: 1px; flex: 1; min-width: 0; } .dp-act-title { font-size: 14px; font-weight: 600; color: #1a1a1a; line-height: 1.3; } .dp-act-meta { font-size: 11px; color: #aaa; line-height: 1.3; } /* ── Activity timeline ───────────────────────────────────────────── */ .dp-section-title { padding: 6px 16px 8px; font-size: 10px; font-weight: 700; color: #aaa; text-transform: uppercase; letter-spacing: 0.08em; flex-shrink: 0; } .dp-activity { padding: 0 16px 4px; display: flex; flex-direction: column; gap: 0; flex-shrink: 0; } .dp-act-item { display: flex; align-items: flex-start; gap: 11px; padding: 8px 0; position: relative; } /* Vertical connector line */ .dp-act-item:not(:last-child)::after { content: ''; position: absolute; left: 11px; top: 28px; bottom: -4px; width: 1.5px; background: #f0f0f0; } .dp-act-dot { width: 23px; height: 23px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; margin-top: 1px; } .dp-act-dot--red { background: #fef2f2; border: 1.5px solid #ef4444; } .dp-act-dot--grey { background: #f5f5f5; border: 1.5px solid #ddd; } .dp-act-dot--purple { background: #f3ecff; border: 1.5px solid #c4b5fd; } .dp-act-dot--orange { background: #fff8f0; border: 1.5px solid #FFA426; } .dp-act-dot svg { width: 11px; height: 11px; } .dp-act-dot--red svg { color: #ef4444; } .dp-act-dot--grey svg { color: #999; } .dp-act-dot--purple svg { color: #8b5cf6; } .dp-act-dot--orange svg { color: #FFA426; } .dp-act-body { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; } .dp-act-title { font-size: 14px; font-weight: 600; color: #1a1a1a; line-height: 1.3; } .dp-act-meta { font-size: 11px; color: #aaa; line-height: 1.3; } /* ── Comments thread ─────────────────────────────────────────────── */ .dp-comments { padding: 4px 16px 16px; display: flex; flex-direction: column; gap: 12px; flex-shrink: 0; } .dp-comment { display: flex; align-items: flex-start; gap: 9px; } .dp-comment-avatar { width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; color: #fff; flex-shrink: 0; margin-top: 1px; } .dp-comment-avatar--purple { background: #8b5cf6; } .dp-comment-avatar--tango { background: linear-gradient(135deg,#8b5cf6,#FFA426); } .dp-comment-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; } .dp-comment-meta { display: flex; align-items: baseline; gap: 6px; } .dp-comment-author { font-size: 13px; font-weight: 700; color: #1a1a1a; } .dp-comment-author--tango { color: #8b5cf6; } .dp-comment-time { font-size: 11px; color: #bbb; } .dp-comment-text { font-size: 14px; color: #444; line-height: 1.55; } /* Add comment input */ .dp-comment-input-row { display: flex; align-items: center; gap: 8px; padding: 10px 16px 16px; flex-shrink: 0; border-top: 1px solid #f5f5f5; } .dp-comment-input { flex: 1; font-family: 'Poppins', sans-serif; font-size: 12px; color: #333; border: 1.5px solid #ebebeb; border-radius: 20px; padding: 7px 14px; outline: none; background: #fafafa; transition: border-color 150ms, background 150ms; } .dp-comment-input::placeholder { color: #bbb; } .dp-comment-input:focus { border-color: #c4b5fd; background: #fff; } /* ── Action group ──────────────────────────────────────────────── */ /* ── Action group ───────────────────────────────────────────────── */ /* ── Action row — vertical card ─────────────────────────────────── */ .action-row { display: flex; flex-direction: column; align-items: flex-start; padding: 14px; gap: 10px; border-radius: 8px; border: 1.5px solid #e8edf2; background: #fff; cursor: pointer; box-shadow: 0 1px 2px rgba(0,0,0,0.04); transition: border-color 140ms, box-shadow 140ms; box-sizing: border-box; } .action-row:hover { border-color: #b0bec5; box-shadow: 0 2px 8px rgba(0,0,0,0.08); } .action-row.active { background: #FFF8F0; border-color: #FFA426; } .action-row--tango { background: #fdfcff; border-color: #e4dcfd; } .action-row--tango:hover { border-color: #c4b5fd; } .action-row--overdue { border-color: #fca5a5; background: #fffafa; } .action-row--overdue:hover { border-color: #f87171; } .action-row--completed { opacity: 0.5; } .action-row--completed:hover { opacity: 0.72; } /* Top row: checkbox + title */ .action-row__body { display: flex; flex-direction: row; align-items: flex-start; gap: 8px; width: 100%; } .action-row__title { font-size: 14px; font-weight: 500; color: #1a1a1a; line-height: 1.45; flex: 1; min-width: 0; white-space: normal; word-break: break-word; } .action-row__title--done { text-decoration: line-through; color: #94a3b8; } /* Bottom footer: time left, chevron right */ .action-row__footer { display: flex; flex-direction: row; align-items: center; justify-content: space-between; width: 100%; } .action-row__tango-suffix { font-size: 11px; font-weight: 700; color: #8b5cf6; flex-shrink: 0; } .action-row__time { font-size: 11px; font-weight: 600; color: #64748b; white-space: nowrap; } .action-row__time--overdue { color: #dc2626; } .action-row__time--done { color: #059669; } .action-row__time--tango { color: #7c3aed; } .action-row__chevron { color: #cbd5e1; flex-shrink: 0; display: flex; align-items: center; transition: color 150ms; } .action-row:hover .action-row__chevron { color: #94a3b8; } .action-row.active .action-row__chevron { color: #FFA426; } .action-row__chevron svg { width: 13px; height: 13px; } /* Checkbox */ .action-row__checkbox { position: relative; width: 16px; height: 16px; flex-shrink: 0; cursor: pointer; margin-top: 2px; } .action-row__checkbox input { position: absolute; opacity: 0; width: 0; height: 0; } .action-row__checkmark { position: absolute; inset: 0; border: 2px solid #94a3b8; border-radius: 4px; background: #fff; transition: border-color 150ms, background 150ms; } .action-row__checkbox:hover .action-row__checkmark { border-color: #FFA426; } .action-row__checkbox input:checked + .action-row__checkmark { background: #059669; border-color: #059669; } .action-row__checkbox input:checked + .action-row__checkmark::after { content: ''; position: absolute; left: 4px; top: 1px; width: 5px; height: 9px; border: 2px solid #fff; border-top: none; border-left: none; transform: rotate(45deg); } /* ─── DEMO PLACEHOLDER CONTENT ──────────────────────────────────────── */ /* ═══════════════════════════════════════════════════════════════════ STEP 4 — Activity Feed, Insights Cards, Tango Chat Panel ════════════════════════════════════════════════════════════════════ */ /* ── Activity Feed ───────────────────────────────────────────────── */ .feed-wrap { padding: 10px 0 16px; } /* Date header */ .feed-date-header { display: flex; align-items: center; gap: 8px; padding: 8px 14px 6px; position: sticky; top: 0; background: #fff; z-index: 2; } .feed-date-header__label { font-size: 10px; font-weight: 700; color: #ccc; text-transform: uppercase; letter-spacing: 0.08em; white-space: nowrap; } .feed-date-header__line { flex: 1; height: 1px; background: #f0f0f0; } /* Human activity item */ .feed-item { display: flex; align-items: flex-start; gap: 10px; padding: 9px 14px; transition: background 120ms; } .feed-item:hover { background: #fafafa; } /* Human avatar */ .feed-avatar { width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; color: #fff; margin-top: 1px; } .feed-avatar--blue { background: #3b82f6; } .feed-avatar--purple { background: #8b5cf6; } .feed-avatar--green { background: #10b981; } .feed-avatar--orange { background: #FFA426; color: #1a1a1a; } .feed-avatar--red { background: #ef4444; } /* Timeline icon (replaces avatar in Activity Flow) */ .tl-icon { width: 28px; height: 28px; border-radius: 8px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; margin-top: 1px; } .tl-icon svg { width: 13px; height: 13px; } .tl-icon--check { background: #f0fdf4; color: #10b981; } .tl-icon--check svg { stroke: #10b981; } .tl-icon--alert { background: #fffbeb; color: #f59e0b; } .tl-icon--alert svg { stroke: #f59e0b; } .tl-icon--doc { background: #eff6ff; color: #3b82f6; } .tl-icon--doc svg { stroke: #3b82f6; } .tl-icon--stage { background: #fff8f0; color: #FFA426; } .tl-icon--stage svg { stroke: #FFA426; } /* Feed item body */ .feed-item__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; } .feed-item__text { font-size: 12px; color: #333; line-height: 1.45; } .feed-item__text strong { font-weight: 600; color: #1a1a1a; } /* Highlighted object — orange underline treatment */ .feed-item__text .feed-highlight { font-weight: 600; color: #1a1a1a; border-bottom: 1.5px solid #FFA426; cursor: pointer; transition: color 120ms; } .feed-item__text .feed-highlight:hover { color: #FFA426; } /* Meta row: clock + time + role */ .feed-item__meta { display: flex; align-items: center; gap: 5px; font-size: 10px; color: #999; line-height: 1; } .feed-item__meta svg { width: 10px; height: 10px; flex-shrink: 0; color: #ccc; } /* Action-required badge */ .feed-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 20px; font-size: 10px; font-weight: 600; margin-top: 2px; align-self: flex-start; } .feed-badge--action { background: #fffbeb; color: #f59e0b; border: 1px solid #fde68a; } .feed-badge--action::before { content: '⚠'; font-size: 9px; } /* ── Tango AI feed item — distinct card wrapper ──────────────────── */ .feed-item--tango { background: #faf5ff; border-radius: 10px; margin: 4px 10px; padding: 10px 12px; gap: 10px; } .feed-item--tango:hover { background: #f5eeff; } /* Tango avatar: rounded square with sparkle */ .feed-tango-avatar { width: 28px; height: 28px; border-radius: 7px; background: #ede9fe; flex-shrink: 0; display: flex; align-items: center; justify-content: center; margin-top: 1px; } .feed-tango-avatar svg { width: 14px; height: 14px; color: #8b5cf6; } /* Tango tag pills */ .feed-tango-tag { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 20px; font-size: 10px; font-weight: 600; background: #ede9fe; color: #7c3aed; align-self: flex-start; margin-top: 2px; } /* ── DEMAND INSIGHTS CARDS ───────────────────────────────────────── */ .insights-wrap { padding: 12px 12px 16px; display: flex; flex-direction: column; gap: 10px; } /* Section label */ .insights-section-label { font-size: 10px; font-weight: 700; color: #ccc; text-transform: uppercase; letter-spacing: 0.08em; padding: 0 2px 4px; } /* Insight card */ .insight-card { background: #ffffff; border: 1px solid #f0f0f0; border-radius: 10px; padding: 13px 13px 11px; display: flex; flex-direction: column; gap: 9px; transition: box-shadow 150ms, border-color 150ms; cursor: default; } .insight-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.07); border-color: #e0e0e0; } /* Card header: source tag + confidence dot */ .insight-card__header { display: flex; align-items: center; justify-content: space-between; gap: 6px; } .insight-card__source { display: inline-flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 700; color: #8b5cf6; text-transform: uppercase; letter-spacing: 0.06em; } .insight-card__source svg { width: 11px; height: 11px; } .insight-card__confidence { font-size: 10px; font-weight: 600; color: #10b981; background: #f0fdf4; border-radius: 20px; padding: 1px 7px; } /* Card body text */ .insight-card__text { font-size: 12px; color: #333; line-height: 1.55; } .insight-card__text strong { color: #1a1a1a; font-weight: 600; } /* Card actions */ .insight-card__actions { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; } /* Primary: filled orange pill */ .ic-btn-primary { display: inline-flex; align-items: center; gap: 5px; padding: 6px 13px; border-radius: 20px; border: none; background: #FFA426; color: #1a1a1a; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 600; cursor: pointer; transition: background 150ms, transform 150ms; white-space: nowrap; } .ic-btn-primary:hover { background: #F89622; transform: translateY(-1px); } .ic-btn-primary svg { width: 11px; height: 11px; } /* Secondary: outline ghost */ .ic-btn-secondary { display: inline-flex; align-items: center; gap: 5px; padding: 5px 12px; border-radius: 20px; border: 1.5px solid #e5e5e5; background: #fff; color: #666; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 500; cursor: pointer; transition: border-color 150ms, color 150ms; white-space: nowrap; } .ic-btn-secondary:hover { border-color: #999; color: #333; } /* Warning card variant */ .insight-card--warn { border-color: #fde68a; background: linear-gradient(160deg, #fffbeb 0%, #fff 60%); } .insight-card--warn .insight-card__source { color: #f59e0b; } .insight-card--warn .insight-card__source svg { color: #f59e0b; } /* Risk card variant */ .insight-card--risk { border-color: #fecaca; background: linear-gradient(160deg, #fff8f8 0%, #fff 60%); } .insight-card--risk .insight-card__source { color: #ef4444; } /* ── TANGO AGENT CHAT PANEL ──────────────────────────────────────── */ /* Fixed 320px panel. Lives OUTSIDE .demand-workspace-grid, directly inside .app-shell as a 4th sibling. Flex column: header (fixed) | chat history (scroll) | footer (fixed). */ .tango-panel { width: 320px; min-width: 320px; background: #ffffff; border-left: 1px solid #e5e5e5; display: flex; flex-direction: column; overflow: hidden; flex-shrink: 0; } /* Panel header */ .tango-panel__header { height: 52px; min-height: 52px; display: flex; align-items: center; justify-content: space-between; padding: 0 14px; border-bottom: 1px solid #f0f0f0; flex-shrink: 0; background: #fff; } .tango-panel__header-left { display: flex; align-items: center; gap: 9px; } /* Tango gradient avatar square */ .tango-panel__avatar { width: 30px; height: 30px; border-radius: 8px; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .tango-panel__avatar svg { width: 15px; height: 15px; color: #fff; } .tango-panel__title-block { display: flex; flex-direction: column; line-height: 1.2; } .tango-panel__title { font-size: 13px; font-weight: 700; color: #1a1a1a; } .tango-panel__subtitle { font-size: 10px; color: #999; font-weight: 400; } /* Header right: tab row + icons */ .tango-panel__tabs { display: flex; align-items: center; gap: 2px; } .tango-panel__tab { font-size: 11px; font-weight: 500; color: #999; padding: 4px 8px; border-radius: 6px; cursor: pointer; border: none; background: transparent; transition: background 120ms, color 120ms; white-space: nowrap; } .tango-panel__tab:hover { background: #f5f5f5; color: #333; } .tango-panel__tab.active { color: #FFA426; background: #FFF8F0; font-weight: 600; } /* Scrollable chat history */ .tango-panel__history { flex: 1; overflow-y: auto; overflow-x: hidden; padding: 12px 12px 8px; display: flex; flex-direction: column; gap: 12px; } .tango-panel__history::-webkit-scrollbar { width: 4px; } .tango-panel__history::-webkit-scrollbar-thumb { background: #e5e5e5; border-radius: 4px; } /* Date separator inside chat */ .chat-date-sep { display: flex; align-items: center; gap: 8px; margin: 4px 0; } .chat-date-sep__line { flex: 1; height: 1px; background: #f0f0f0; } .chat-date-sep__label { font-size: 10px; color: #ccc; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; white-space: nowrap; } /* Chat activity entry (mirrors feed items but in chat style) */ .chat-entry { display: flex; align-items: flex-start; gap: 9px; } .chat-entry__avatar { width: 26px; height: 26px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 9px; font-weight: 700; color: #fff; margin-top: 1px; } .chat-entry__avatar--blue { background: #3b82f6; } .chat-entry__avatar--purple { background: #8b5cf6; } .chat-entry__avatar--red { background: #ef4444; } .chat-entry__body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; } .chat-entry__text { font-size: 12px; color: #333; line-height: 1.45; } .chat-entry__text strong { font-weight: 600; color: #1a1a1a; } .chat-entry__text .feed-highlight { font-weight: 600; color: #1a1a1a; border-bottom: 1.5px solid #FFA426; } .chat-entry__meta { display: flex; align-items: center; gap: 5px; font-size: 10px; color: #bbb; } .chat-entry__meta svg { width: 9px; height: 9px; color: #ddd; } /* Tango AI chat entry */ .chat-entry--tango { background: #faf5ff; border-radius: 10px; padding: 10px 11px; gap: 9px; } .chat-tango-sq { width: 26px; height: 26px; border-radius: 6px; background: #ede9fe; flex-shrink: 0; display: flex; align-items: center; justify-content: center; margin-top: 1px; } .chat-tango-sq svg { width: 12px; height: 12px; color: #8b5cf6; } /* Action-required badge in chat */ .chat-badge--action { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 20px; font-size: 10px; font-weight: 600; background: #fffbeb; color: #f59e0b; border: 1px solid #fde68a; align-self: flex-start; margin-top: 2px; } .chat-tango-tag { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 20px; font-size: 10px; font-weight: 600; background: #ede9fe; color: #7c3aed; align-self: flex-start; margin-top: 2px; } /* ── Tango panel footer ───────────────────────────────────────────── */ .tango-panel__footer { flex-shrink: 0; border-top: 1px solid #f0f0f0; padding: 8px 12px 12px; display: flex; flex-direction: column; gap: 6px; background: #fff; } /* Context hint line */ .tango-panel__hint { display: flex; align-items: center; gap: 5px; font-size: 10px; color: #bbb; font-weight: 500; padding: 0 2px; } .tango-panel__hint svg { width: 11px; height: 11px; color: #c4b5fd; } /* Chat input row */ .tango-panel__input-row { display: flex; align-items: center; gap: 0; background: #fafafa; border: 1.5px solid #e5e5e5; border-radius: 24px; padding: 0 6px 0 14px; transition: border-color 200ms, box-shadow 200ms; } .tango-panel__input-row:focus-within { border-color: #8b5cf6; box-shadow: 0 0 0 3px rgba(139,92,246,0.1); background: #fff; } .tango-panel__input { flex: 1; border: none; background: transparent; font-family: 'Poppins', sans-serif; font-size: 12px; color: #1a1a1a; outline: none; padding: 10px 0; min-width: 0; } .tango-panel__input::placeholder { color: #bbb; } .tango-panel__send { width: 30px; height: 30px; border-radius: 50%; border: none; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); color: #fff; display: flex; align-items: center; justify-content: center; cursor: pointer; flex-shrink: 0; transition: opacity 150ms, transform 150ms; } .tango-panel__send:hover { opacity: 0.88; transform: scale(1.06); } .tango-panel__send svg { width: 13px; height: 13px; } /* ═══════════════════════════════════════════════════════════════════ STEP 6 — Right global nav + collapsible Tango panel ════════════════════════════════════════════════════════════════════ */ /* ── Right global nav bar ────────────────────────────────────────── */ .right-nav { width: 52px; min-width: 52px; flex-shrink: 0; background: #ffffff; border-left: 1px solid #f0f0f0; display: flex; flex-direction: column; align-items: center; padding: 10px 0 12px; gap: 4px; z-index: 10; } /* Tango trigger — gradient pill button */ .right-nav__tango-btn { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; width: 36px; height: 44px; border-radius: 10px; border: none; background: linear-gradient(160deg, #8b5cf6 0%, #FFA426 100%); color: #fff; cursor: pointer; padding: 0; transition: opacity 150ms, transform 150ms, box-shadow 150ms; box-shadow: 0 2px 8px rgba(139, 92, 246, 0.25); flex-shrink: 0; } .right-nav__tango-btn:hover { opacity: 0.92; transform: translateY(-1px); box-shadow: 0 4px 14px rgba(139, 92, 246, 0.35); } .right-nav__tango-btn.active { box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.2); } .right-nav__tango-btn svg { width: 15px; height: 15px; } .right-nav__tango-label { font-family: 'Poppins', sans-serif; font-size: 9px; font-weight: 700; letter-spacing: 0.04em; line-height: 1; } .right-nav__divider { width: 28px; height: 1px; background: #f0f0f0; margin: 6px 0; flex-shrink: 0; } /* Generic icon buttons in right nav */ .right-nav__icon-btn { width: 34px; height: 34px; border-radius: 8px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #bbb; transition: background 140ms, color 140ms; flex-shrink: 0; } .right-nav__icon-btn:hover { background: #f5f5f5; color: #555; } .right-nav__icon-btn svg { width: 15px; height: 15px; } /* ── Tango panel — collapsible ───────────────────────────────────── */ /* Default (open): width 320px, opacity 1 Collapsed: width 0, opacity 0, pointer-events none, no border Transition is on width + opacity so the panel slides away cleanly. */ .tango-panel { width: 320px; min-width: 320px; background: #ffffff; border-left: 1px solid #e5e5e5; display: flex; flex-direction: column; overflow: hidden; flex-shrink: 0; /* Smooth slide in/out */ transition: width 280ms cubic-bezier(0.4, 0, 0.2, 1), min-width 280ms cubic-bezier(0.4, 0, 0.2, 1), opacity 200ms ease, border-color 280ms ease; opacity: 1; } .tango-panel--collapsed { width: 0 !important; min-width: 0 !important; opacity: 0; pointer-events: none; border-left-color: transparent; } /* Prevent panel contents from wrapping/overflowing during collapse */ .tango-panel__header, .tango-panel__history, .tango-panel__footer { min-width: 320px; /* keeps content from reflowing during slide */ } /* ── Agent chat bubbles ──────────────────────────────────────────── */ .agent-bubble { display: flex; align-items: flex-start; gap: 8px; } /* User message — right-aligned pill */ .agent-bubble--user { flex-direction: row-reverse; } .agent-bubble--user .agent-bubble__body { align-items: flex-end; } .agent-bubble--user .agent-bubble__text { background: #FFF8F0; border: 1px solid #FFE4B5; border-radius: 12px 12px 0 12px; color: #1a1a1a; } /* Tango message */ .agent-bubble__avatar { width: 26px; height: 26px; border-radius: 7px; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); flex-shrink: 0; display: flex; align-items: center; justify-content: center; margin-top: 2px; } .agent-bubble__avatar svg { width: 12px; height: 12px; color: #fff; } .agent-bubble__body { display: flex; flex-direction: column; gap: 6px; flex: 1; min-width: 0; } .agent-bubble__text { font-size: 12px; color: #333; line-height: 1.55; background: #faf5ff; border: 1px solid #ede9fe; border-radius: 12px 12px 12px 0; padding: 10px 12px; } .agent-bubble__text strong { color: #1a1a1a; font-weight: 600; } /* Inline action buttons inside bubble */ .agent-bubble__actions { display: flex; gap: 6px; flex-wrap: wrap; } .agent-bubble__cta { display: inline-flex; align-items: center; gap: 4px; padding: 5px 12px; border-radius: 20px; border: none; background: linear-gradient(135deg, #8b5cf6 0%, #FFA426 100%); color: #fff; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 600; cursor: pointer; transition: opacity 150ms; white-space: nowrap; } .agent-bubble__cta:hover { opacity: 0.88; } .agent-bubble__cta--ghost { background: transparent; border: 1.5px solid #e5e5e5; color: #666; } .agent-bubble__cta--ghost:hover { border-color: #8b5cf6; color: #8b5cf6; opacity: 1; } /* Typing indicator bubble */ .agent-bubble--typing .agent-bubble__text { display: flex; align-items: center; gap: 4px; padding: 12px 16px; width: 60px; } .typing-dot { width: 6px; height: 6px; border-radius: 50%; background: #8b5cf6; animation: typing-bounce 1.2s ease-in-out infinite; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes typing-bounce { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-5px); opacity: 1; } } .agent-bubble__time { font-size: 10px; color: #ccc; padding: 0 4px; } /* ── Canvas view layout ──────────────────────────────────────────── */ #canvasView { flex: 1; overflow: hidden; display: flex; flex-direction: row; } /* Canvas main area */ .dc-main { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 16px; background: #fafafa; } .dc-main::-webkit-scrollbar { width: 4px; } .dc-main::-webkit-scrollbar-thumb { background: #e5e5e5; border-radius: 4px; } /* Canvas grid: 2-col on wider screens */ .dc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; } .dc-grid--full { grid-template-columns: 1fr; } /* Canvas card */ .dc-card { background: #ffffff; border: 1px solid #f0f0f0; border-radius: 12px; padding: 18px 18px 16px; display: flex; flex-direction: column; gap: 12px; transition: box-shadow 150ms; } .dc-card:hover { box-shadow: 0 2px 8px rgba(0,0,0,0.06); } /* Card header */ .dc-card__header { display: flex; align-items: center; justify-content: space-between; gap: 8px; } .dc-card__title { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 700; color: #1a1a1a; } .dc-card__title svg { width: 16px; height: 16px; color: #FFA426; flex-shrink: 0; } .dc-card__edit { width: 26px; height: 26px; border-radius: 6px; border: none; background: transparent; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #ccc; transition: background 150ms, color 150ms; } .dc-card__edit:hover { background: #f5f5f5; color: #666; } .dc-card__edit svg { width: 13px; height: 13px; } /* Add Action button in canvas card headers */ .dc-card__actions { display: flex; align-items: center; gap: 2px; } .dc-card__add { display: inline-flex; align-items: center; gap: 0; padding: 4px 6px; border-radius: 20px; border: 1.5px solid #e2e8f0; background: #fff8f0; color: #FFA426; font-family: 'Poppins', sans-serif; font-size: 11px; font-weight: 600; cursor: pointer; white-space: nowrap; overflow: hidden; transition: background 200ms, border-color 200ms, color 200ms, padding 200ms cubic-bezier(0,0,0.2,1), gap 200ms cubic-bezier(0,0,0.2,1); } .dc-card__add:hover { background: #FFA426; color: #fff; border-color: #FFA426; padding: 4px 10px; gap: 5px; } .dc-card__add svg { width: 13px; height: 13px; flex-shrink: 0; } .dc-card__add__label { max-width: 0; overflow: hidden; opacity: 0; transition: max-width 200ms cubic-bezier(0,0,0.2,1), opacity 160ms ease; pointer-events: none; } .dc-card__add:hover .dc-card__add__label { max-width: 80px; opacity: 1; } /* Card field row */ .dc-field { display: flex; flex-direction: column; gap: 4px; } .dc-field__label { font-size: 10px; font-weight: 600; color: #999; text-transform: uppercase; letter-spacing: 0.06em; } .dc-field__value { font-size: 13px; color: #1a1a1a; line-height: 1.5; } .dc-field__value--muted { color: #999; font-style: italic; } /* OKR item */ .dc-okr { display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; background: #fafafa; border-radius: 8px; border: 1px solid #f0f0f0; } .dc-okr__title { font-size: 12px; font-weight: 600; color: #1a1a1a; } .dc-okr__kr { display: flex; align-items: center; gap: 8px; font-size: 11px; color: #666; } .dc-okr__kr-bar { flex: 1; height: 4px; background: #e5e5e5; border-radius: 4px; overflow: hidden; } .dc-okr__kr-fill { height: 100%; background: #FFA426; border-radius: 4px; } .dc-okr__kr-pct { font-size: 10px; font-weight: 600; color: #FFA426; white-space: nowrap; } /* Constraint chip */ .dc-constraint-list { display: flex; flex-wrap: wrap; gap: 6px; } .dc-constraint { display: inline-flex; align-items: center; gap: 5px; padding: 4px 10px; border-radius: 6px; font-size: 11px; font-weight: 500; background: #fef2f2; color: #dc2626; border: 1px solid #fecaca; } /* Canvas sidebar */ .dc-sidebar { width: 240px; min-width: 240px; background: #fff; border-left: 1px solid #f0f0f0; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 16px; } .dc-sidebar__section-title { font-size: 11px; font-weight: 700; color: #999; text-transform: uppercase; letter-spacing: 0.07em; padding-bottom: 6px; border-bottom: 1px solid #f0f0f0; } .dc-sidebar__prop { display: flex; flex-direction: column; gap: 2px; } .dc-sidebar__prop-label { font-size: 10px; color: #bbb; font-weight: 500; } .dc-sidebar__prop-value { font-size: 12px; color: #1a1a1a; font-weight: 500; } /* ── liveView / canvasView toggle display ────────────────────────── */ #liveView { display: flex; flex-direction: column; flex: 1; overflow: hidden; min-height: 0; background: #f0f2f5; padding: 12px; } #liveView.hidden, #canvasView.hidden { display: none !important; } N 1: HUB ═══ -->
AK
Good afternoon, Arjun
You manage 8 active projects across 3 portfolios — 2 need a status refresh, 1 has a milestone slipping.
Measure
Ideas
Roadmap
Projects
Portfolio
Potential
8  My Projects
2 need refresh
Needs a refresh
!
Meridian Digital Workforce Transformation
At risk
!
Veltrix Data Migration Program
Refresh needed
3
Talvera NRIO Cloud Infrastructure Upgrade
On track
4
Corvin Network Modernisation Program
On track
Mobilize
Actions
Signals
4  Project actions pending
RefreshMeridian Digital WF Transform
Up-level project status — UAT milestone slipping
Needs action2d stale
AK
MilestoneVeltrix Data Migration
Confirm data residency sign-off — blocks next phase
In ProgressDue today
AK
RiskTalvera NRIO Cloud Upgrade
Escalate cloud architect resource gap to portfolio
Not started1d overdue
AK
Magnify
My Demands
Kudos
Inspiration
8  Active projects
6 on track · 2 at risk
Meridian Digital Workforce Transformation
At riskUAT milestone slipping
Talvera NRIO Cloud Infrastructure Upgrade
On track84% complete · Sprint 12
Corvin Network Modernisation Program
On trackSchedule nominal
AK

Projects

Project Manager view
My Projects
8
Active projects
6 on track
2
At risk
Need refresh
3
Milestones due
This week
64%
Avg completion
↑ 4% this week
Needs Your Attention
Meridian Digital Workforce Transformation
UAT milestone slipping · status stale 2d
Veltrix Data Migration Program
Data residency blocker · status stale 3d

Tango insights for you

Stale: Meridian Digital status hasn't been updated in 2 days — UAT milestone is at risk of slipping.
Blocker: Veltrix data residency sign-off is blocking next phase. 3 days without update.
On track: Talvera NRIO at 84% — Sprint 12 closed. No action needed this week.
Up-level stale projects
Tango can generate status updates for all 2 stale projects in one go.
My Projects
Project NameProject ManagerEnd dateTypeHealth CheckProject StageLast UpdatedKey ResultsActions
AK
WORKSPACE VIEWS
UP-LEVEL
Up-level
Tango is generating your up-level…
1
Tango writes
2
Review & edit
3
Commit
Tango · Here's my view
TANGO · STRATEGIC REFRAME
What this update will change Tango is rethinking…
Tap a status to change · tap a number to edit

Update Schedule Status

Tango Assure
Previous comments (2)