/* ========================================== KONTO & ABONNEMENT STYLES ========================================== */ /* ========================================== PAGE LAYOUT ========================================== */ swp-page-container { display: block; max-width: 1200px; margin: 0 auto; padding: 24px; } swp-page-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 24px; } swp-page-title { display: flex; flex-direction: column; gap: 4px; } swp-page-title h1 { font-size: 22px; font-weight: 600; color: var(--color-text); margin: 0; } swp-page-title p { font-size: 13px; color: var(--color-text-secondary); margin: 0; } /* ========================================== SECTIONS ========================================== */ swp-section { display: block; margin-bottom: 32px; } swp-section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } swp-section-title { display: flex; align-items: center; gap: 10px; font-size: 16px; font-weight: 600; color: var(--color-text); } swp-section-title i { font-size: 22px; color: var(--color-teal); } /* ========================================== PLAN CARDS ========================================== */ swp-plan-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; } swp-plan-card { display: flex; flex-direction: column; background: var(--color-surface); border: 2px solid var(--color-border); border-radius: 12px; padding: 24px; transition: all 200ms ease; } swp-plan-card.current { border-color: var(--color-teal); box-shadow: 0 0 0 3px color-mix(in srgb, var(--color-teal) 15%, transparent); } swp-plan-card.enterprise { background: linear-gradient(135deg, var(--color-surface) 0%, color-mix(in srgb, var(--color-purple) 5%, var(--color-surface)) 100%); border-color: var(--color-purple); } swp-plan-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; border-radius: 20px; width: fit-content; margin-bottom: 12px; } swp-plan-badge.current { background: color-mix(in srgb, var(--color-teal) 15%, transparent); color: var(--color-teal); } swp-plan-badge.popular { background: color-mix(in srgb, var(--color-amber) 15%, transparent); color: var(--color-amber); } swp-plan-name { font-size: 20px; font-weight: 700; color: var(--color-text); margin-bottom: 4px; } swp-plan-users { font-size: 13px; color: var(--color-text-secondary); margin-bottom: 16px; } swp-plan-price { display: flex; align-items: baseline; gap: 4px; margin-bottom: 20px; } swp-plan-price-amount { font-size: 36px; font-weight: 700; color: var(--color-text); } swp-plan-price-period { font-size: 14px; color: var(--color-text-secondary); } swp-plan-features { display: flex; flex-direction: column; gap: 10px; flex: 1; margin-bottom: 20px; } swp-plan-feature { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--color-text); } swp-plan-feature i { font-size: 18px; color: var(--color-green); } swp-plan-action { margin-top: auto; } swp-plan-action swp-btn { width: 100%; justify-content: center; } swp-plan-card.current swp-btn.secondary { background: var(--color-background-alt); color: var(--color-text-secondary); cursor: default; } /* ========================================== USERS TABLE ========================================== */ swp-users-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } swp-users-count { display: flex; align-items: center; gap: 8px; font-size: 14px; color: var(--color-text-secondary); } swp-users-count strong { color: var(--color-text); font-weight: 600; } swp-users-progress { width: 100px; height: 6px; background: var(--color-border); border-radius: 3px; overflow: hidden; } swp-users-progress-bar { height: 100%; background: var(--color-teal); border-radius: 3px; transition: width 300ms ease; } swp-users-progress-bar.warning { background: var(--color-amber); } swp-users-progress-bar.full { background: var(--color-red); } swp-table-card { display: block; background: var(--color-surface); border-radius: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); overflow: hidden; } swp-table { display: table; width: 100%; border-collapse: collapse; } swp-table-header { display: table-header-group; background: var(--color-background-alt); } swp-table-body { display: table-row-group; } swp-table-row { display: table-row; transition: background 150ms ease; } swp-table-body swp-table-row:hover { background: var(--color-background-hover); } swp-table-cell { display: table-cell; padding: 14px 16px; font-size: 13px; color: var(--color-text); border-bottom: 1px solid var(--color-border); vertical-align: middle; } swp-table-header swp-table-cell { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--color-text-secondary); border-bottom: 1px solid var(--color-border); } swp-table-cell:first-child { padding-left: 20px; } swp-table-cell:last-child { padding-right: 20px; } /* User row specific */ swp-user-info { display: flex; align-items: center; gap: 12px; } swp-user-avatar { width: 36px; height: 36px; border-radius: 50%; background: var(--color-teal); color: white; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 600; flex-shrink: 0; } swp-user-avatar.purple { background: var(--color-purple); } swp-user-avatar.blue { background: var(--color-blue); } swp-user-avatar.amber { background: var(--color-amber); } swp-user-details { display: flex; flex-direction: column; gap: 2px; } swp-user-name { font-weight: 500; color: var(--color-text); } swp-user-email { font-size: 12px; color: var(--color-text-secondary); } swp-role-badge { display: inline-flex; align-items: center; padding: 4px 10px; font-size: 12px; font-weight: 500; border-radius: 4px; background: var(--color-background); color: var(--color-text-secondary); } swp-role-badge.admin { background: color-mix(in srgb, var(--color-purple) 15%, transparent); color: var(--color-purple); } swp-role-badge.owner { background: color-mix(in srgb, var(--color-teal) 15%, transparent); color: var(--color-teal); } swp-status-badge { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; font-size: 12px; font-weight: 500; border-radius: 4px; } swp-status-badge.active { background: color-mix(in srgb, var(--color-green) 15%, transparent); color: var(--color-green); } swp-status-badge.invited { background: color-mix(in srgb, var(--color-amber) 15%, transparent); color: var(--color-amber); } swp-status-badge.inactive { background: var(--color-background); color: var(--color-text-secondary); } swp-status-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; } swp-table-actions { display: flex; align-items: center; gap: 8px; } swp-icon-btn { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; border-radius: 6px; cursor: pointer; color: var(--color-text-secondary); transition: all 150ms ease; } swp-icon-btn:hover { background: var(--color-background-hover); color: var(--color-text); } swp-icon-btn.danger:hover { background: color-mix(in srgb, var(--color-red) 15%, transparent); color: var(--color-red); } swp-icon-btn i { font-size: 18px; } /* ========================================== BILLING GRID ========================================== */ swp-billing-grid { display: grid; grid-template-columns: 380px 1fr; gap: 24px; } /* ========================================== PAYMENT CARD ========================================== */ swp-payment-card { display: flex; flex-direction: column; gap: 20px; background: var(--color-surface); border-radius: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); padding: 24px; } swp-payment-method { display: flex; align-items: center; gap: 16px; padding: 16px; background: var(--color-background-alt); border-radius: 8px; } swp-payment-icon { width: 48px; height: 32px; background: var(--color-surface); border: 1px solid var(--color-border); border-radius: 4px; display: flex; align-items: center; justify-content: center; } swp-payment-icon i { font-size: 24px; color: var(--color-blue); } swp-payment-info { flex: 1; } swp-payment-type { font-size: 14px; font-weight: 600; color: var(--color-text); margin-bottom: 2px; } swp-payment-number { font-size: 13px; color: var(--color-text-secondary); font-family: var(--font-mono); } swp-payment-detail { display: flex; justify-content: space-between; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--color-border); } swp-payment-detail:last-of-type { border-bottom: none; } swp-payment-label { font-size: 13px; color: var(--color-text-secondary); } swp-payment-value { font-size: 14px; font-weight: 500; color: var(--color-text); } swp-payment-value.highlight { color: var(--color-teal); } /* ========================================== INVOICES ========================================== */ swp-invoices-card { display: block; background: var(--color-surface); border-radius: 8px; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); } swp-invoices-header { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--color-border); } swp-invoices-title { font-size: 14px; font-weight: 600; color: var(--color-text); } swp-invoice-status { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; font-size: 12px; font-weight: 500; border-radius: 4px; } swp-invoice-status.paid { background: color-mix(in srgb, var(--color-green) 15%, transparent); color: var(--color-green); } swp-invoice-status.pending { background: color-mix(in srgb, var(--color-amber) 15%, transparent); color: var(--color-amber); } swp-invoice-status.overdue { background: color-mix(in srgb, var(--color-red) 15%, transparent); color: var(--color-red); } swp-download-btn { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; font-size: 12px; font-weight: 500; color: var(--color-teal); background: transparent; border: 1px solid var(--color-teal); border-radius: 4px; cursor: pointer; transition: all 150ms ease; } swp-download-btn:hover { background: color-mix(in srgb, var(--color-teal) 10%, transparent); } swp-download-btn i { font-size: 14px; } /* ========================================== BUTTONS ========================================== */ swp-btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; font-size: 13px; font-weight: 500; font-family: var(--font-family); border-radius: 6px; cursor: pointer; transition: all 150ms ease; border: none; } swp-btn i { font-size: 18px; } swp-btn.primary { background: var(--color-teal); color: white; } swp-btn.primary:hover { background: #00796b; } swp-btn.secondary { background: var(--color-surface); border: 1px solid var(--color-border); color: var(--color-text); } swp-btn.secondary:hover { background: var(--color-background-hover); } swp-btn.outline { background: transparent; border: 1px solid var(--color-teal); color: var(--color-teal); } swp-btn.outline:hover { background: color-mix(in srgb, var(--color-teal) 10%, transparent); } /* ========================================== EMPTY STATE ========================================== */ swp-empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; text-align: center; } swp-empty-state i { font-size: 48px; color: var(--color-text-secondary); margin-bottom: 16px; opacity: 0.5; } swp-empty-state p { font-size: 14px; color: var(--color-text-secondary); } /* ========================================== RESPONSIVE ========================================== */ @media (max-width: 1024px) { swp-plan-grid { grid-template-columns: 1fr; } swp-billing-grid { grid-template-columns: 1fr; } } @media (max-width: 768px) { swp-page-container { padding: 16px; } swp-table-card { overflow-x: auto; } swp-table { min-width: 600px; } }