/** * Buchhaltungs-Widget CSS Styles * Uses Dolibarr CSS variables for theme compatibility */ /* ===== WIDGET CONTAINER STYLES ===== */ /* Chart container in widgets */ .buchaltung-chart-container { padding: 10px; background-color: rgb(var(--colorbacklinepair1, 252,252,252)); border-bottom: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); } .buchaltung-chart-container canvas { max-width: 100%; } /* Section headers */ .buchaltung-section-header { background-color: rgb(var(--colorbacktitle1, 241,241,241)); padding: 8px 10px; border-top: 2px solid var(--inputbordercolor, rgba(0,0,0,.15)); border-bottom: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); color: rgb(var(--colortexttitle, 40,40,60)); } /* Table headers */ .buchaltung-header { background-color: rgb(var(--colorbacktitle1, 241,241,241)) !important; font-weight: bold; padding: 6px 8px; border-bottom: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); font-size: 0.9em; color: rgb(var(--colortexttitle, 40,40,60)); } /* Labels */ .buchaltung-label { padding: 6px 8px; white-space: nowrap; background-color: rgb(var(--colorbacklineimpair1, 255,255,255)); color: rgb(var(--colortext, 0,0,0)); } /* ===== COLOR CODING ===== */ /* Positive values (green) - money you get back or profit */ .buchaltung-positive { color: var(--amountpaymentcomplete, #008855) !important; } /* Negative values (red) - money you have to pay or loss */ .buchaltung-negative { color: var(--amountremaintopaycolor, #880000) !important; } /* Current quarter/period highlight */ .buchaltung-current-quarter { background-color: rgb(var(--tablevalidbgcolor, 252,248,227)) !important; font-weight: bold; } /* Future periods (greyed out) */ .buchaltung-future { color: var(--tableforfieldcolor, #888) !important; font-style: italic; } /* ===== TABLE STYLING ===== */ /* Standard table rows - alternating */ .box_ust_uebersicht table.noborder tr.oddeven td, .box_gewinn_verlust table.noborder tr.oddeven td, .box_rentabilitaet table.noborder tr.oddeven td { background-color: rgb(var(--colorbacklineimpair1, 255,255,255)); } .box_ust_uebersicht table.noborder tr.oddeven:nth-child(even) td, .box_gewinn_verlust table.noborder tr.oddeven:nth-child(even) td, .box_rentabilitaet table.noborder tr.oddeven:nth-child(even) td { background-color: rgb(var(--colorbacklinepair1, 252,252,252)); } /* Total column */ .buchaltung-total { font-weight: bold; background-color: rgb(var(--colorbacktitle1, 241,241,241)) !important; border-left: 2px solid var(--inputbordercolor, rgba(0,0,0,.15)); } /* Last year rows (slightly muted) */ .buchaltung-lastyear { opacity: 0.75; font-size: 0.95em; } /* Separator row */ .buchaltung-separator { height: 8px; border: none; background-color: rgb(var(--colorbackbody, 255,255,255)) !important; } /* Profit/Loss row highlight */ .buchaltung-profit-row { background-color: rgb(var(--colorbacklinepairhover, 240,242,249)) !important; border-top: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); } /* Footnote */ .buchaltung-footnote { padding: 8px 10px; color: var(--tableforfieldcolor, #888); font-size: 0.85em; background-color: rgb(var(--colorbacklinepair1, 252,252,252)); border-top: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); } /* Widget specific table styling */ .box_ust_uebersicht table.noborder, .box_gewinn_verlust table.noborder, .box_rentabilitaet table.noborder { width: 100%; background-color: rgb(var(--colorbacktabcard1, 255,255,255)); } .box_ust_uebersicht table.noborder td, .box_gewinn_verlust table.noborder td, .box_rentabilitaet table.noborder td { padding: 5px 8px; vertical-align: middle; color: rgb(var(--colortext, 0,0,0)); } /* ===== PRODUCTIVITY RATING ===== */ .buchaltung-rating { padding: 12px; background-color: rgb(var(--colorbacktitle1, 241,241,241)); border-top: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); } .buchaltung-rating-box { padding: 15px 20px; border-radius: 8px; text-align: center; box-shadow: 0 2px 4px rgba(38, 60, 92, 0.1); border: 2px solid; position: relative; overflow: hidden; } .buchaltung-rating-box::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, rgba(38, 60, 92, 0.8), rgba(38, 60, 92, 0.4)); } .buchaltung-rating-box .rating-label { font-weight: 700; margin-right: 8px; font-size: 0.95em; text-transform: uppercase; letter-spacing: 0.5px; } .buchaltung-rating-box .rating-value { font-size: 1.5em; font-weight: 800; display: inline-block; padding: 4px 14px; border-radius: 4px; background-color: rgba(255, 255, 255, 0.6); margin: 0 5px; } .buchaltung-rating-box .rating-description { display: block; font-size: 0.9em; font-weight: 500; margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(0, 0, 0, 0.15); font-style: normal; } /* Rating colors - clear, readable colors */ .rating-excellent { background: #d4edda; border-color: #28a745; color: #155724 !important; } .rating-excellent::before { background: linear-gradient(90deg, #28a745, #5cb85c); } .rating-excellent .rating-label, .rating-excellent .rating-description { color: #155724 !important; } .rating-excellent .rating-value { background-color: #c3e6cb; color: #0b3d0b !important; } .rating-good { background: #cce5ff; border-color: #007bff; color: #004085 !important; } .rating-good::before { background: linear-gradient(90deg, #007bff, #5ba4ff); } .rating-good .rating-label, .rating-good .rating-description { color: #004085 !important; } .rating-good .rating-value { background-color: #b8daff; color: #002752 !important; } .rating-average { background: #fff3cd; border-color: #ffc107; color: #664d03 !important; } .rating-average::before { background: linear-gradient(90deg, #ffc107, #ffda6a); } .rating-average .rating-label, .rating-average .rating-description { color: #664d03 !important; } .rating-average .rating-value { background-color: #ffe69c; color: #3d2e02 !important; } .rating-low { background: #ffe5d0; border-color: #fd7e14; color: #663000 !important; } .rating-low::before { background: linear-gradient(90deg, #fd7e14, #ffa64d); } .rating-low .rating-label, .rating-low .rating-description { color: #663000 !important; } .rating-low .rating-value { background-color: #ffd4b3; color: #4d2400 !important; } .rating-critical { background: #f8d7da; border-color: #dc3545; color: #721c24 !important; } .rating-critical::before { background: linear-gradient(90deg, #dc3545, #e4606d); } .rating-critical .rating-label, .rating-critical .rating-description { color: #721c24 !important; } .rating-critical .rating-value { background-color: #f5c6cb; color: #4a1117 !important; } /* ===== DETAIL PAGE STYLES ===== */ .buchaltung-filter-bar { background-color: rgb(var(--colorbacktitle1, 241,241,241)); padding: 15px; margin-bottom: 20px; border-radius: 4px; border: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); } .buchaltung-filter-bar label { font-weight: bold; margin-right: 8px; color: rgb(var(--colortexttitle, 40,40,60)); } .buchaltung-filter-bar select { margin-right: 20px; background-color: var(--inputbackgroundcolor, #FFF); border: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); color: rgb(var(--colortext, 0,0,0)); } .buchaltung-detail-chart { background-color: rgb(var(--colorbacktabcard1, 255,255,255)); padding: 20px; margin-bottom: 20px; border: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); border-radius: 4px; overflow: hidden; box-sizing: border-box; } .buchaltung-detail-chart canvas { max-width: 100%; display: block; } .buchaltung-detail-chart h4 { margin: 0 0 15px 0; padding-bottom: 10px; border-bottom: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); color: rgb(var(--colortexttitle, 40,40,60)); } .buchaltung-legend { text-align: center; padding: 15px; background-color: rgb(var(--colorbacklinepair1, 252,252,252)); margin-top: 15px; border-radius: 4px; color: rgb(var(--colortext, 0,0,0)); } .buchaltung-tax-box { background-color: rgb(var(--tablevalidbgcolor, 252,248,227)); border: 1px solid rgba(188, 149, 38, 0.4); padding: 15px; margin: 20px 0; border-radius: 4px; color: rgb(var(--colortext, 0,0,0)); } .buchaltung-info-box { background-color: rgb(var(--colorbacklinepairhover, 240,242,249)); border: 1px solid var(--inputbordercolor, rgba(0,0,0,.15)); padding: 15px; margin: 20px 0; border-radius: 4px; font-size: 0.95em; color: rgb(var(--colortext, 0,0,0)); } /* Rating detail on detail pages */ .buchaltung-rating-detail { padding: 20px; margin: 20px 0; border-radius: 6px; text-align: center; position: relative; } .buchaltung-rating-detail h3 { margin: 0 0 10px 0; } .buchaltung-rating-detail p { margin: 0 0 15px 0; opacity: 0.9; } .buchaltung-rating-detail .rating-scale { display: flex; justify-content: space-between; background-color: rgba(255,255,255,0.5); padding: 10px; border-radius: 4px; font-size: 0.85em; } .buchaltung-rating-detail .rating-scale span { padding: 5px 10px; border-radius: 3px; } .buchaltung-rating-detail .rating-scale .rating-critical { background-color: rgba(153, 48, 19, 0.2); } .buchaltung-rating-detail .rating-scale .rating-low { background-color: rgba(175, 71, 5, 0.2); } .buchaltung-rating-detail .rating-scale .rating-average { background-color: rgba(188, 149, 38, 0.2); } .buchaltung-rating-detail .rating-scale .rating-good { background-color: rgba(0, 123, 255, 0.2); } .buchaltung-rating-detail .rating-scale .rating-excellent { background-color: rgba(85, 165, 128, 0.2); } .buchaltung-rating-detail .rating-marker { position: absolute; bottom: 55px; width: 0; height: 0; border-left: 8px solid transparent; border-right: 8px solid transparent; border-bottom: 12px solid rgb(var(--colortext, 0,0,0)); transform: translateX(-8px); } /* ===== FIX FOR WIDGET BOX CONTENT ===== */ /* Ensure proper backgrounds in the widget info_box_contents */ .box_ust_uebersicht .box-flex-item-with-icon, .box_gewinn_verlust .box-flex-item-with-icon, .box_rentabilitaet .box-flex-item-with-icon { background-color: rgb(var(--colorbacktabcard1, 255,255,255)); } /* Fix table cells that don't have explicit background */ .box_ust_uebersicht td:not([class*="buchaltung-"]), .box_gewinn_verlust td:not([class*="buchaltung-"]), .box_rentabilitaet td:not([class*="buchaltung-"]) { background-color: rgb(var(--colorbacklineimpair1, 255,255,255)); } /* Ensure right-aligned cells also get proper styling */ .box_ust_uebersicht td.right, .box_gewinn_verlust td.right, .box_rentabilitaet td.right { background-color: inherit; } /* ===== RESPONSIVE ADJUSTMENTS ===== */ @media (max-width: 768px) { .buchaltung-label { font-size: 0.85em; } .buchaltung-header { font-size: 0.8em; padding: 4px 5px; } .box_ust_uebersicht table.noborder td, .box_gewinn_verlust table.noborder td, .box_rentabilitaet table.noborder td { padding: 3px 4px; font-size: 0.9em; } .buchaltung-chart-container { padding: 5px; } .buchaltung-rating-box .rating-description { font-size: 0.8em; } .buchaltung-detail-chart { padding: 10px; } .buchaltung-filter-bar { padding: 10px; } .buchaltung-filter-bar label { display: block; margin-bottom: 5px; } .buchaltung-filter-bar select { width: 100%; margin-bottom: 10px; } } /* ===== PRINT STYLES ===== */ @media print { .buchaltung-chart-container { page-break-inside: avoid; } .buchaltung-positive { color: #008855 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } .buchaltung-negative { color: #880000 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } .buchaltung-current-quarter { background-color: #fcf8e3 !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; } } /* ===== DARK MODE SUPPORT ===== */ /* When dark mode is enabled, these will be overridden by Dolibarr's CSS variables */ @media (prefers-color-scheme: dark) { .buchaltung-positive { color: #4caf50 !important; } .buchaltung-negative { color: #f44336 !important; } }