'#ffffff', 'header_bg' => '#111111', 'accent' => '#f59e0b', 'body_text' => '#333333', 'muted' => '#999999', 'table_header_bg' => '#f5f5f5', 'table_row_even' => '#fafafa', 'table_row_odd' => '#ffffff', 'border' => '#e5e5e5', 'total_text' => '#f59e0b', ); $fs = $data['font_sizes'] ?? array( 'body' => 9, 'invoice_title' => 28, 'invoice_number' => 14, 'table_header' => 7, 'total' => 16, 'footer' => 7, ); ?> /* ===== Reset ===== */ * { margin: 0; padding: 0; box-sizing: border-box; } /* ===== Base ===== */ body { font-family: dejavusans; font-size: pt; color: ; background: ; line-height: 1.5; } /* ===== Layout helpers ===== */ .text-right { text-align: right !important; } .text-center { text-align: center !important; } .text-left { text-align: left !important; } /* ===== HEADER ===== */ .header-table { width: 100%; border-collapse: collapse; margin-bottom: 0; } .header-left { width: 55%; background: ; border-left: 4pt solid ; padding: 14pt 16pt; vertical-align: top; } .header-right { width: 45%; background: ; padding: 14pt 16pt; text-align: right; vertical-align: top; } .seller-brand { font-size: 20pt; font-weight: bold; color: ; margin-bottom: 6pt; letter-spacing: 0.5pt; } .seller-detail { font-size: 7.5pt; color: #888888; line-height: 1.8; } .invoice-title { font-size: pt; font-weight: bold; color: #ffffff; letter-spacing: 4pt; text-transform: uppercase; margin-bottom: 8pt; } .header-meta-label { font-size: 7pt; color: #666666; text-transform: uppercase; letter-spacing: 0.5pt; } .header-meta-value { font-size: 9pt; color: #cccccc; } /* ===== Logo ===== */ .logo-img { max-height: 50pt; max-width: 150pt; margin-bottom: 8pt; } /* ===== Invoice number badge ===== */ .badge-table { width: 100%; border-collapse: collapse; margin: 14pt 0 20pt 0; } .badge-cell { background: ; padding: 8pt 0; text-align: center; font-size: pt; font-weight: bold; color: #111111; letter-spacing: 2pt; } /* ===== Section labels ===== */ .section-label { font-size: 6pt; font-weight: bold; text-transform: uppercase; letter-spacing: 1.5pt; color: #aaaaaa; margin-bottom: 5pt; padding-bottom: 3pt; border-bottom: 0.5pt solid ; } /* ===== Address sections ===== */ .address-table { width: 100%; border-collapse: collapse; margin-bottom: 14pt; } .address-table td { vertical-align: top; width: 50%; padding: 0; } .address-name { font-size: 10pt; font-weight: bold; color: ; margin-bottom: 3pt; } .address-detail { font-size: 8pt; color: ; line-height: 1.7; } .address-detail strong { color: ; } .nif-badge { background: #fef3c7; border: 0.5pt solid ; padding: 2pt 8pt; font-size: 8pt; color: #333333; font-weight: bold; margin-top: 5pt; } /* ===== Section divider ===== */ hr.divider { border: none; border-top: 0.5pt solid ; margin: 0 0 14pt 0; } /* ===== Metadata row ===== */ .meta-row-table { width: 100%; border-collapse: collapse; margin-bottom: 16pt; border: 0.5pt solid ; } .meta-row-table td { padding: 7pt 10pt; border-right: 0.5pt solid ; background: ; vertical-align: top; } .meta-row-table td:last-child { border-right: none; } .meta-label { font-size: 6pt; color: #aaaaaa; text-transform: uppercase; letter-spacing: 0.5pt; margin-bottom: 2pt; } .meta-value { font-size: 8.5pt; color: ; } .meta-value-accent { font-size: 8.5pt; color: ; font-weight: bold; } /* ===== Line items table ===== */ table.items-table { width: 100%; border-collapse: collapse; margin-bottom: 16pt; } table.items-table thead th { background: ; color: #aaaaaa; font-size: pt; font-weight: bold; text-transform: uppercase; letter-spacing: 1pt; padding: 7pt 8pt; border-bottom: 1pt solid ; } table.items-table tbody td { padding: 7pt 8pt; font-size: pt; color: ; border-bottom: 0.5pt solid ; vertical-align: top; } tr.row-even td { background: ; } tr.row-odd td { background: ; } .item-description { color: ; } .item-variation { font-size: 7.5pt; color: ; } /* ===== Totals block ===== */ .totals-outer { width: 100%; border-collapse: collapse; margin-bottom: 14pt; } .totals-spacer { width: 50%; } .totals-content { width: 50%; vertical-align: top; } table.totals-table { width: 100%; border-collapse: collapse; } .totals-table .subtotal-row td { padding: 4pt 8pt; font-size: 9pt; color: ; border-bottom: 0.5pt solid ; } .totals-table .iva-row td { padding: 3pt 8pt; font-size: 8pt; color: ; } .grand-total-label-cell { background: ; padding: 8pt 10pt; border-left: 3pt solid ; vertical-align: middle; } .grand-total-amount-cell { background: ; padding: 8pt 10pt; text-align: right; vertical-align: middle; } .grand-total-label { font-size: 8pt; color: #777777; text-transform: uppercase; letter-spacing: 0.5pt; } .grand-total-amount { font-size: pt; font-weight: bold; color: ; } /* ===== Payment method ===== */ .payment-label { font-size: 7pt; color: #aaaaaa; text-transform: uppercase; letter-spacing: 0.5pt; margin-bottom: 3pt; } .payment-box { border: 0.5pt solid ; background: ; padding: 5pt 10pt; font-size: 8pt; color: ; } /* ===== Credit note reference box ===== */ .cn-reference-box { border: 0.5pt solid ; background: ; padding: 8pt 10pt; margin-bottom: 14pt; font-size: 8pt; color: ; } .cn-reference-title { font-weight: bold; font-size: 7pt; letter-spacing: 0.5pt; text-transform: uppercase; color: ; margin-bottom: 4pt; } .cn-annul-header td { background: #fef9c3; color: #92400e; font-style: italic; font-size: 8pt; padding: 5pt 8pt; border-bottom: 0.5pt solid ; } /* ===== Notes ===== */ .notes-section { background: ; border-left: 2pt solid ; padding: 8pt 12pt; margin-bottom: 14pt; font-size: 8pt; color: ; }