/* FlowDesk Sales custom UI */ :root { --fd-bg: #edf4f6; --fd-bg-deep: #0f172a; --fd-surface: rgba(255, 255, 255, 0.84); --fd-surface-strong: #ffffff; --fd-text: #102133; --fd-muted: #5f7187; --fd-border: rgba(15, 23, 42, 0.08); --fd-primary: #0f766e; --fd-secondary: #14b8a6; --fd-accent: #f97316; --fd-accent-soft: rgba(249, 115, 22, 0.16); --fd-warning: #f59e0b; --fd-success: #10b981; --fd-danger: #ef4444; --fd-shadow: 0 30px 60px rgba(15, 23, 42, 0.12); --fd-radius-xl: 28px; --fd-radius-lg: 22px; --fd-radius-md: 16px; --fd-radius-sm: 12px; } * { box-sizing: border-box; } html, body { height: 100%; } body { margin: 0; font-family: 'Inter', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; color: var(--fd-text); background: radial-gradient(circle at top left, rgba(20, 184, 166, 0.22), transparent 24%), radial-gradient(circle at top right, rgba(249, 115, 22, 0.12), transparent 20%), linear-gradient(160deg, #f8fbfc 0%, #edf4f6 45%, #e8eef4 100%); overflow: hidden; } a { color: inherit; text-decoration: none; } h1, h2, h3, h4, .brand-mark__core { font-family: 'Manrope', 'Inter', sans-serif; letter-spacing: -0.03em; } .app-shell { min-height: 100vh; display: grid; grid-template-columns: 88px minmax(0, 1fr); } .app-sidebar { position: relative; padding: 24px 18px; background: rgba(10, 15, 25, 0.95); display: flex; flex-direction: column; align-items: center; gap: 28px; border-right: 1px solid rgba(255, 255, 255, 0.06); } .brand-mark { width: 52px; height: 52px; border-radius: 18px; display: grid; place-items: center; color: white; background: linear-gradient(135deg, var(--fd-secondary), var(--fd-primary)); box-shadow: 0 16px 30px rgba(20, 184, 166, 0.3); } .brand-mark__core { font-size: 1.35rem; font-weight: 800; } .sidebar-nav { display: flex; flex-direction: column; gap: 10px; width: 100%; align-items: center; } .sidebar-link { width: 52px; height: 52px; border-radius: 16px; display: grid; place-items: center; color: rgba(255, 255, 255, 0.76); font-size: 1.1rem; position: relative; transition: transform 0.2s ease, background 0.2s ease, color 0.2s ease; } .sidebar-link:hover, .sidebar-link:focus-visible, .sidebar-link.is-active { color: #fff; background: rgba(255, 255, 255, 0.1); transform: translateY(-1px); outline: none; } .sidebar-link::after { content: attr(data-label); position: absolute; left: 62px; padding: 8px 12px; border-radius: 999px; background: rgba(10, 15, 25, 0.94); color: #fff; font-size: 0.83rem; line-height: 1; opacity: 0; transform: translateX(-6px); pointer-events: none; transition: 0.2s ease; white-space: nowrap; } .sidebar-link:hover::after, .sidebar-link:focus-visible::after { opacity: 1; transform: translateX(0); } .app-main { padding: 24px 28px 28px; overflow: auto; display: grid; gap: 20px; align-content: start; } .hero-panel, .surface-card, .search-card, .stat-card, .detail-topbar { border: 1px solid var(--fd-border); box-shadow: var(--fd-shadow); } .hero-panel { position: relative; overflow: hidden; display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(280px, 0.9fr); gap: 16px; padding: 32px; border-radius: var(--fd-radius-xl); background: linear-gradient(135deg, rgba(15, 118, 110, 0.96), rgba(10, 15, 25, 0.98)); color: white; } .hero-panel::before { content: ''; position: absolute; inset: auto auto -60px -60px; width: 220px; height: 220px; border-radius: 50%; background: radial-gradient(circle, rgba(255, 255, 255, 0.22), transparent 64%); } .hero-copy { position: relative; z-index: 1; } .eyebrow { display: inline-flex; align-items: center; gap: 8px; font-size: 0.78rem; letter-spacing: 0.14em; text-transform: uppercase; color: var(--fd-secondary); font-weight: 700; } .hero-panel .eyebrow { color: rgba(255, 255, 255, 0.72); } .hero-copy h1, .detail-topbar h1 { margin: 10px 0 12px; font-size: clamp(2rem, 3vw, 3.5rem); line-height: 1.02; } .hero-copy h1 span { color: #a7f3d0; } .hero-copy p, .detail-topbar p, .stat-card p, .template-tile p, .empty-state p, .form-actions p, .workspace-row__meta, .agenda-item p, .activity-row p { color: rgba(255, 255, 255, 0.8); } .hero-copy p { max-width: 720px; font-size: 1rem; margin-bottom: 0; } .hero-actions { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 24px; } .hero-visual { position: relative; min-height: 220px; } .shape { position: absolute; border-radius: 28px; backdrop-filter: blur(18px); } .shape-sphere { width: 142px; height: 142px; top: 6px; right: 40px; border-radius: 50%; background: radial-gradient(circle at 32% 32%, rgba(255, 255, 255, 0.95), rgba(20, 184, 166, 0.18) 45%, rgba(255, 255, 255, 0.08) 72%); box-shadow: inset -20px -20px 42px rgba(255, 255, 255, 0.06); } .shape-card { width: 240px; height: 170px; right: 20px; bottom: 14px; padding: 18px; background: rgba(255, 255, 255, 0.12); border: 1px solid rgba(255, 255, 255, 0.18); } .mini-bar { height: 14px; width: 110px; border-radius: 999px; margin-bottom: 20px; background: linear-gradient(90deg, rgba(255,255,255,0.9), rgba(255,255,255,0.35)); } .mini-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; } .mini-grid span { display: block; height: 46px; border-radius: 14px; background: rgba(255, 255, 255, 0.14); } .shape-cylinder { width: 84px; height: 150px; left: 20px; bottom: 4px; border-radius: 999px; background: linear-gradient(180deg, rgba(249, 115, 22, 0.95), rgba(249, 115, 22, 0.16)); } .top-toolbar, .detail-toolbar { display: flex; gap: 14px; align-items: center; justify-content: space-between; } .search-card { display: flex; gap: 14px; align-items: center; border-radius: var(--fd-radius-lg); background: rgba(255, 255, 255, 0.72); padding: 12px; flex: 1; } .search-card--static { padding: 10px 12px; } .search-field-wrap { flex: 1; display: flex; align-items: center; gap: 12px; padding: 0 10px; border-radius: 14px; background: rgba(15, 23, 42, 0.04); } .search-field-wrap i { color: var(--fd-muted); } .search-field { width: 100%; border: 0; padding: 12px 0; background: transparent; color: var(--fd-text); font-size: 0.98rem; } .search-field:focus { outline: none; } .admin-pill, .section-chip, .stage-pill { display: inline-flex; align-items: center; justify-content: center; gap: 8px; border-radius: 999px; padding: 10px 14px; font-size: 0.82rem; font-weight: 700; } .admin-pill { background: rgba(15, 23, 42, 0.94); color: #fff; } .stats-grid, .content-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 18px; } .stat-card { grid-column: span 3; padding: 22px; border-radius: 24px; background: rgba(255, 255, 255, 0.72); } .stat-card strong { display: block; margin: 10px 0 8px; font-size: 2rem; font-family: 'Manrope', sans-serif; } .stat-label { color: var(--fd-muted); font-size: 0.82rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; } .stat-card p, .template-tile p, .empty-state p, .form-actions p, .workspace-row__meta, .agenda-item p, .activity-row p, .detail-topbar p, .info-row span, .summary-box { color: var(--fd-muted); } .stat-card--accent { background: linear-gradient(135deg, rgba(249, 115, 22, 0.96), rgba(255, 149, 60, 0.94)); color: white; } .stat-card--accent .stat-label, .stat-card--accent p { color: rgba(255, 255, 255, 0.85); } .surface-card { padding: 24px; border-radius: var(--fd-radius-xl); background: var(--fd-surface); backdrop-filter: blur(22px); } .template-card-list { grid-column: span 4; } .create-card { grid-column: span 8; } .list-card { grid-column: span 7; } .agenda-card { grid-column: span 5; } .section-heading, .panel-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; margin-bottom: 18px; } .section-heading h2, .panel-head h2 { margin: 6px 0 0; font-size: 1.5rem; } .section-chip { background: rgba(20, 184, 166, 0.12); color: var(--fd-primary); } .template-list, .agenda-list, .activity-feed { display: grid; gap: 12px; } .template-tile, .agenda-item, .activity-row, .workspace-row { display: flex; gap: 14px; align-items: center; justify-content: space-between; border-radius: 18px; padding: 16px; background: rgba(255, 255, 255, 0.88); border: 1px solid rgba(15, 23, 42, 0.06); } .template-icon, .agenda-icon { width: 44px; height: 44px; border-radius: 14px; display: grid; place-items: center; background: rgba(20, 184, 166, 0.12); color: var(--fd-primary); flex-shrink: 0; } .workspace-form, .compact-form { display: grid; gap: 18px; } .form-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 14px; } .form-grid--quote .form-field { grid-column: span 3; } .form-field { grid-column: span 4; display: grid; gap: 8px; } .form-field--wide { grid-column: span 6; } .form-field--full { grid-column: 1 / -1; } .form-field label, .compact-form__field label { font-size: 0.84rem; font-weight: 700; color: var(--fd-text); } .workspace-input { border: 1px solid rgba(15, 23, 42, 0.1); border-radius: 14px; padding: 0.76rem 0.95rem; background: rgba(255, 255, 255, 0.96); color: var(--fd-text); } .workspace-input:focus { border-color: rgba(20, 184, 166, 0.8); box-shadow: 0 0 0 0.24rem rgba(20, 184, 166, 0.14); } .field-error { color: var(--fd-danger); font-size: 0.82rem; } .form-actions { display: flex; justify-content: space-between; gap: 16px; align-items: center; flex-wrap: wrap; } .form-actions--inline { justify-content: flex-start; } .btn { border-radius: 14px; border: none; padding: 0.85rem 1.2rem; font-weight: 700; transition: transform 0.2s ease, box-shadow 0.2s ease, background 0.2s ease; } .btn:hover, .btn:focus-visible { transform: translateY(-1px); } .btn-accent { color: white; background: linear-gradient(135deg, var(--fd-accent), #fb923c); box-shadow: 0 16px 24px rgba(249, 115, 22, 0.24); } .btn-ghost { color: white; background: rgba(255, 255, 255, 0.08); border: 1px solid rgba(255, 255, 255, 0.16); } .btn-dark-shell { color: white; background: linear-gradient(135deg, #172033, #0f172a); box-shadow: 0 10px 18px rgba(15, 23, 42, 0.18); } .workspace-list { display: grid; gap: 12px; } .workspace-row__title { font-weight: 800; font-size: 1.02rem; } .workspace-row__side { display: grid; justify-items: end; gap: 8px; flex-shrink: 0; } .empty-state { min-height: 220px; display: grid; place-items: center; text-align: center; gap: 8px; border-radius: 22px; background: rgba(255, 255, 255, 0.58); border: 1px dashed rgba(15, 23, 42, 0.14); padding: 20px; } .empty-state i { font-size: 1.7rem; color: var(--fd-primary); } .empty-state--small { min-height: 120px; } .message-stack { display: grid; gap: 10px; } .custom-alert { margin: 0; border-radius: 16px; border: 0; padding: 14px 16px; } .alert-success { background: rgba(16, 185, 129, 0.14); color: #0d7a55; } .alert-error { background: rgba(239, 68, 68, 0.12); color: #b91c1c; } .detail-topbar { display: flex; justify-content: space-between; gap: 18px; align-items: end; padding: 24px 28px; border-radius: var(--fd-radius-xl); background: rgba(255, 255, 255, 0.72); } .back-link { display: inline-flex; align-items: center; gap: 8px; color: var(--fd-primary); font-weight: 700; } .detail-meta { display: flex; flex-direction: column; gap: 10px; align-items: flex-end; } .detail-value { font-family: 'Manrope', sans-serif; font-size: 2.1rem; font-weight: 800; } .workspace-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 18px; } .panel { min-height: 260px; overflow: hidden; } .panel-opportunity { grid-column: span 4; } .panel-projects { grid-column: span 3; } .panel-quote { grid-column: span 5; } .panel-agenda { grid-column: span 4; } .panel-activities { grid-column: span 8; } .template-quotation_focus .panel-quote { grid-column: span 8; } .template-quotation_focus .panel-projects { grid-column: span 4; } .template-planning .panel-agenda { grid-column: span 5; } .template-planning .panel-activities { grid-column: span 7; } .info-stack { display: grid; gap: 10px; } .info-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 12px 14px; border-radius: 16px; background: rgba(255, 255, 255, 0.72); } .info-row strong { text-align: right; } .summary-box { border-radius: 18px; background: rgba(15, 118, 110, 0.08); padding: 16px; } .compact-form--inline { grid-template-columns: 1fr auto; align-items: end; } .compact-form__field { display: grid; gap: 8px; } .panel-action { border: 0; background: rgba(15, 23, 42, 0.04); border-radius: 999px; padding: 8px 12px; color: var(--fd-muted); font-weight: 700; } .quote-table-wrap { overflow: auto; border-radius: 18px; border: 1px solid rgba(15, 23, 42, 0.08); } .quote-table { margin: 0; } .quote-table thead th { background: rgba(15, 23, 42, 0.03); color: var(--fd-muted); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; border-bottom: 0; } .quote-table tbody td { vertical-align: middle; color: var(--fd-text); border-color: rgba(15, 23, 42, 0.06); } .quote-total { display: flex; justify-content: space-between; align-items: center; padding: 16px 4px 0; font-weight: 700; } .activity-row { align-items: flex-start; } .stage-pill { padding: 8px 12px; } .stage-new { background: rgba(20, 184, 166, 0.12); color: var(--fd-primary); } .stage-qualified { background: rgba(14, 165, 233, 0.14); color: #0369a1; } .stage-proposal { background: rgba(245, 158, 11, 0.18); color: #b45309; } .stage-negotiation { background: rgba(249, 115, 22, 0.18); color: #c2410c; } .stage-won { background: rgba(16, 185, 129, 0.14); color: #047857; } .stage-lost { background: rgba(239, 68, 68, 0.12); color: #b91c1c; } @media (max-width: 1199px) { body { overflow: auto; } .stats-grid .stat-card, .template-card-list, .create-card, .list-card, .agenda-card, .panel-opportunity, .panel-projects, .panel-quote, .panel-agenda, .panel-activities { grid-column: span 12; } } @media (max-width: 991px) { .app-shell { grid-template-columns: 1fr; } .app-sidebar { position: sticky; top: 0; z-index: 20; flex-direction: row; justify-content: space-between; padding: 16px 20px; } .sidebar-nav { flex-direction: row; justify-content: center; overflow: auto; } .sidebar-link::after { display: none; } .hero-panel, .detail-topbar { grid-template-columns: 1fr; } .top-toolbar, .detail-toolbar, .search-card, .form-actions, .compact-form--inline, .detail-topbar { flex-direction: column; align-items: stretch; } .form-field, .form-field--wide, .form-field--full, .form-grid--quote .form-field { grid-column: span 12; } .app-main { padding: 18px; } } @media (max-width: 575px) { .hero-panel, .surface-card, .detail-topbar { padding: 20px; border-radius: 22px; } .hero-copy h1, .detail-topbar h1 { font-size: 1.85rem; } .sidebar-link { width: 46px; height: 46px; } }