:root{--background:#f9fafb;--foreground:#111827;--primary:#2563eb;--border:#e5e7eb}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--background);color:var(--foreground)}a{color:inherit;text-decoration:none}main{padding:1.5rem}.dashboard-root{padding:0}.dashboard-layout{display:grid;grid-template-columns:260px 1fr;grid-gap:1.5rem;gap:1.5rem;min-height:calc(100vh - 3rem);background:transparent}.dashboard-layout.layout-collapsed{grid-template-columns:90px 1fr}.dashboard-sidebar{background:linear-gradient(180deg,#0f172a,#1f2937);color:#d1d5db;display:flex;flex-direction:column;padding:1.75rem 1.25rem;gap:1.5rem;border-radius:1.5rem;position:-webkit-sticky;position:sticky;top:1.5rem;height:calc(100vh - 3rem);box-shadow:0 20px 40px rgba(15,23,42,.35);overflow-y:auto;transition:transform .3s ease,width .3s ease;z-index:20}.sidebar-brand{display:flex;align-items:center;justify-content:space-between;font-size:1.35rem;font-weight:700}.brand-text{display:inline-flex;align-items:center;gap:.35rem}.brand-accent{color:#3cc7f0}.sidebar-nav{display:flex;flex-direction:column;gap:.5rem}.sidebar-link{border:none;background:transparent;color:inherit;padding:.85rem 1rem;border-radius:.75rem;display:flex;align-items:center;gap:.75rem;cursor:pointer;text-align:left;font-size:.95rem;transition:background .2s ease,color .2s ease}.sidebar-link svg{color:#8ba3c7}.sidebar-link.active,.sidebar-link:hover{background:hsla(0,0%,100%,.08);color:#fff}.sidebar-link.active svg{color:#3cc7f0}.sidebar-toggle{border:none;background:hsla(0,0%,100%,.1);color:#fff;width:32px;height:32px;border-radius:.5rem;cursor:pointer}.dashboard-sidebar.collapsed{width:86px;transform:translateX(-10px)}.dashboard-layout.layout-collapsed .dashboard-sidebar{width:86px}.dashboard-sidebar.collapsed .brand-text,.dashboard-sidebar.collapsed .sidebar-hint,.dashboard-sidebar.collapsed .sidebar-link span{display:none}.sidebar-hint{font-size:.85rem;color:hsla(0,0%,100%,.6);margin-top:auto}.sidebar-overlay{position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:15}.dashboard-content{padding:2rem;overflow-y:auto}.page-header{display:flex;flex-direction:column;gap:.25rem;margin-bottom:1.5rem}.page-header.compact{flex-direction:row;justify-content:space-between;align-items:center;background:#fff;padding:.85rem 1.25rem;border-radius:1rem;box-shadow:0 10px 30px rgba(15,23,42,.08)}.page-header h1{margin:0;font-size:1.4rem}.page-header p{margin:0}.header-left{display:flex;flex-direction:column;gap:.25rem}.header-actions{display:flex;align-items:center;gap:.75rem}.mobile-menu-button{border:none;background:#3b82f6;color:#fff;padding:.45rem .85rem;border-radius:.6rem;font-weight:600;cursor:pointer}.header-timestamp{margin:0}.muted-text{color:#6b7280;font-size:.9rem}.form-card{max-width:380px;margin:4rem auto;background:#fff;padding:2rem;border-radius:.75rem;box-shadow:0 8px 24px rgba(15,23,42,.08)}.form-card h1{margin-top:0}.form-card label{display:block;font-size:.9rem;margin-bottom:.35rem}.form-card input{width:100%;padding:.75rem;margin-bottom:1rem;border:1px solid var(--border);border-radius:.5rem;font-size:1rem}button.primary{padding:.85rem 1rem;background:var(--primary);color:#fff;border:none;border-radius:.5rem;font-weight:600;cursor:pointer}.form-card button.primary{width:100%}button.secondary{padding:.85rem 1rem;background:transparent;color:var(--foreground);border:1px solid var(--border);border-radius:.5rem;font-weight:600;cursor:pointer}button[disabled]{opacity:.6;cursor:not-allowed}.card,.table-card{background:#fff;border-radius:1rem;padding:1.5rem;box-shadow:0 6px 16px rgba(15,23,42,.06);margin-bottom:1.25rem}.card-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem}.card-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:.75rem;flex-wrap:wrap}.compact-button{padding:.5rem .75rem;font-size:.85rem}.filters-card form input,.filters-card form select{width:100%;padding:.65rem;border:1px solid var(--border);border-radius:.5rem;font-size:1rem;background:#f8fafc}.filters-grid{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.filters-grid.enhanced-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.filters-grid input,.filters-grid select{width:100%;padding:.65rem .8rem;border-radius:.75rem;border:1px solid #e2e8f0;background:#fff;font-size:.95rem}.global-filters{border-top:4px solid #3b82f6}.filters-actions{display:flex;gap:.75rem;justify-content:flex-end;align-items:flex-end}.transaction-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.filter-hint{margin:.35rem 0 0;color:#475569;font-size:.85rem}.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:1rem;gap:1rem;margin:1.5rem 0}.metric-card{display:flex;flex-direction:column;gap:.35rem;background:linear-gradient(135deg,#eef2ff,#e0f2fe)}.metric-value{font-size:1.75rem;font-weight:600}.metric-subtitle{color:#6b7280;font-size:.9rem}.table-wrapper{overflow-x:auto}.transaction-list-scroll{max-height:520px;overflow:auto}.transaction-list-scroll thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1}.table-footer-actions{display:flex;justify-content:flex-end;margin-top:1rem}table{width:100%;border-collapse:collapse;margin-top:1rem}td,th{text-align:left;padding:.75rem;border-bottom:1px solid var(--border);transition:background .2s ease}table thead th{background:#f1f5f9;color:#0f172a;font-weight:600}table tbody tr:nth-child(2n){background:rgba(59,130,246,.06)}table tbody tr:hover{background:rgba(59,130,246,.15);color:#0f172a}.error-text{color:#dc2626;margin-bottom:1rem}.cell-subtitle{display:block;color:#6b7280;font-size:.8rem;margin-top:.25rem}.graph-group-picker{grid-column:1/-1;border:1px dashed var(--border);border-radius:.75rem;padding:.75rem}.graph-groups-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.graph-group-options{display:flex;flex-wrap:wrap;gap:.5rem}.group-chip{display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--border);border-radius:999px;padding:.35rem .75rem;cursor:pointer;font-size:.85rem;transition:background .2s ease,color .2s ease,border-color .2s ease}.group-chip input{position:absolute;opacity:0;pointer-events:none}.group-chip.selected{background:rgba(37,99,235,.12);border-color:rgba(37,99,235,.5);color:#1d4ed8}.link-button{background:none;border:none;color:#3b82f6;font-size:.85rem;cursor:pointer;padding:0}.chart-card{overflow:hidden}.chart-gallery{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:1.25rem;gap:1.25rem}.chart-card-button{border:none;background:transparent;padding:0;width:100%;text-align:left;cursor:pointer;display:flex;flex-direction:column;gap:1rem;color:inherit}.chart-card-body{min-height:200px}.chart-modal{position:fixed;inset:0;background:rgba(15,23,42,.6);display:flex;align-items:center;justify-content:center;padding:2rem;z-index:20}.chart-modal-content{background:#fff;border-radius:1rem;max-width:960px;width:100%;max-height:90vh;overflow-y:auto;padding:1.5rem;box-shadow:0 25px 40px rgba(15,23,42,.25)}.chart-modal-body{margin-top:1rem}.chart-legend{display:flex;gap:1.5rem;margin-bottom:1rem;font-size:.9rem;color:#4b5563}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:999px;margin-right:.4rem}.cash-dot{background:#14b8a6}.card-dot{background:#6366f1}.chart-bars{display:flex;gap:1rem;align-items:flex-end;overflow-x:auto;padding-bottom:.5rem}.chart-bar{display:flex;flex-direction:column;align-items:center;min-width:64px;gap:.5rem}.chart-bar-stack{width:100%;height:260px;border-radius:.75rem;background:#e5e7eb;display:flex;flex-direction:column-reverse;justify-content:flex-start;position:relative;overflow:hidden}.chart-segment{width:100%}.chart-segment.cash{background:#14b8a6}.chart-segment.card{background:#6366f1}.chart-tooltip{position:absolute;top:.5rem;left:50%;transform:translate(-50%,-10px);background:rgba(15,23,42,.9);color:#fff;padding:.5rem .75rem;border-radius:.5rem;font-size:.8rem;text-align:center;opacity:0;pointer-events:none;transition:opacity .2s ease,transform .2s ease;min-width:150px}.chart-bar-stack:hover .chart-tooltip{opacity:1;transform:translate(-50%)}.chart-label{font-size:.85rem;text-align:center;color:#6b7280}.line-chart{width:100%;height:240px;display:flex;flex-direction:column;justify-content:space-between}.line-chart svg{width:100%;height:200px}.line-chart.expanded{height:320px}.line-chart.expanded svg{height:260px}.line-path{fill:none;stroke-width:2.5}.line-path.cash-line{stroke:#14b8a6}.line-path.card-line{stroke:#6366f1}.line-chart-legend{display:flex;justify-content:center;gap:1.5rem;color:#4b5563;font-size:.85rem}.donut-wrapper{flex-direction:column}.donut-chart,.donut-wrapper{display:flex;align-items:center}.donut-chart{width:220px;height:220px;border-radius:50%;margin:0 auto;position:relative;justify-content:center}.donut-chart:after{content:"";position:absolute;width:120px;height:120px;background:#fff;border-radius:50%}.donut-wrapper.expanded .donut-chart{width:280px;height:280px}.donut-wrapper.expanded .donut-chart:after{width:160px;height:160px}.donut-center{position:relative;text-align:center;z-index:1}.donut-center strong{display:block;font-size:1.25rem}.donut-legend{display:flex;justify-content:space-around;margin-top:1rem;color:#4b5563;font-size:.9rem}.group-breakdown{list-style:none;padding:0;margin:1rem 0 0}.group-breakdown li{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px solid rgba(148,163,184,.3);font-size:.9rem}.group-breakdown li:last-child{border-bottom:none}.sparkline-chart{width:100%;display:flex;flex-direction:column;gap:.5rem}.sparkline-chart svg{width:100%;height:100px}.sparkline-chart.expanded svg{height:140px}.sparkline-path{fill:none;stroke:#2563eb;stroke-width:2}.sparkline-point{fill:#fff;stroke:#2563eb;stroke-width:1.25}.sparkline-footer{display:flex;justify-content:space-between;font-size:.8rem;color:#6b7280}.sparkline-summary{font-size:.9rem;color:#374151;margin:0}.machine-groups-panel{padding:2rem}.machine-groups-layout{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:1.5rem;gap:1.5rem}.machine-groups-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem}.machine-groups-list{display:flex;flex-direction:column;gap:1rem}.machine-group-card{border:1px solid var(--border);border-radius:.85rem;padding:1rem;background:#f8fafc}.machine-group-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.machine-group-name{margin:0;font-size:1.05rem;font-weight:600}.machine-group-machines{margin:.75rem 0 0;font-size:.95rem}.machine-group-actions{display:flex;gap:.5rem}.machine-group-actions button{font-size:.85rem;padding:.5rem .75rem}.machine-group-form-container{border:1px solid var(--border);border-radius:1rem;padding:1.25rem;background:#fff;box-shadow:0 10px 30px rgba(15,23,42,.08)}.machine-group-form{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.machine-group-form input,.machine-group-form textarea{width:100%;padding:.75rem;border:1px solid var(--border);border-radius:.5rem;font-size:1rem}.machine-group-form textarea{resize:vertical;min-height:120px}.machine-group-form-actions{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap}button.danger{padding:.5rem .75rem;background:#dc2626;color:#fff;border:none;border-radius:.5rem;cursor:pointer}.success-text{color:#15803d;margin-bottom:.5rem}@media (max-width:960px){.dashboard-layout,.dashboard-layout.layout-collapsed{grid-template-columns:1fr}.dashboard-sidebar{position:fixed;left:1rem;right:1rem;top:1rem;height:calc(100vh - 2rem);z-index:25;width:calc(100% - 2rem);max-width:320px}.dashboard-sidebar.collapsed{transform:translateX(-120%)}.dashboard-content{grid-column:1/-1}.chart-gallery,.filters-grid.enhanced-grid{grid-template-columns:1fr}.page-header.compact{flex-direction:column;align-items:flex-start;gap:.5rem}}@media (max-width:768px){.responsive-table table,.responsive-table tbody,.responsive-table td,.responsive-table th,.responsive-table thead,.responsive-table tr{display:block}.responsive-table thead{display:none}.responsive-table tr{margin-bottom:.85rem;background:#fff;border-radius:.85rem;padding:.5rem;box-shadow:0 6px 15px rgba(15,23,42,.06)}.responsive-table td{border-bottom:none;display:flex;justify-content:space-between;align-items:center;padding:.5rem}.responsive-table td:before{content:attr(data-label);font-weight:600;color:#0f172a;margin-right:.75rem}}.info-card{background:linear-gradient(120deg,#fef3c7,#e0f2fe);border:none;color:#0f172a}.group-filter-card{border-top:4px solid #ec4899}.card,.dashboard-content,.dashboard-layout,.table-card{transition:background .2s ease,color .2s ease}.area-chart{width:100%}.area-chart svg{width:100%;height:200px}.area-chart.expanded svg{height:260px}.area-fill{fill:rgba(37,99,235,.2)}.area-line{fill:none;stroke:#2563eb;stroke-width:2}.machine-bars{display:flex;flex-direction:column;gap:.75rem}.machine-bar-row{display:grid;grid-template-columns:1fr 3fr auto;grid-gap:.75rem;gap:.75rem;align-items:center;font-size:.9rem}.machine-bar-label{font-weight:500}.machine-bar-track{display:flex;gap:.35rem;align-items:center}.machine-bar-segment{height:12px;border-radius:999px}.machine-bar-segment.cash{background:rgba(20,184,166,.8)}.machine-bar-segment.card{background:rgba(99,102,241,.8)}.scatter-chart{width:100%;height:260px}.scatter-chart svg{width:100%;height:220px}.scatter-chart.expanded svg{height:280px}.scatter-chart circle{fill:rgba(236,72,153,.8)}.scatter-axes{display:flex;justify-content:space-between;font-size:.8rem;color:#6b7280;margin-top:.5rem}.location-bars{display:flex;flex-direction:column;gap:.75rem}.location-bar-row{display:grid;grid-template-columns:1.2fr 3fr auto;grid-gap:.75rem;gap:.75rem;align-items:center}.location-bar-label{font-weight:500}.location-bar-track{width:100%;height:10px;background:#e5e7eb;border-radius:999px;overflow:hidden}.location-bar-track span{display:block;height:100%;background:linear-gradient(90deg,#4f46e5,#2563eb)}.heatmap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));grid-gap:.75rem;gap:.75rem}.heatmap-cell{border-radius:.75rem;padding:.75rem;color:#fff;min-height:80px;display:flex;flex-direction:column;justify-content:space-between}.heatmap-cell strong{font-size:.9rem}.heatmap-cell small{font-size:.8rem}.radial-gauge{text-align:center}.radial-ring{width:200px;height:200px;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;position:relative}.radial-ring:after{content:"";position:absolute;width:120px;height:120px;background:#fff;border-radius:50%}.radial-center{position:relative;z-index:1}.radial-gauge.expanded .radial-ring{width:260px;height:260px}.radial-gauge.expanded .radial-ring:after{width:160px;height:160px}.datetime-picker{display:flex;flex-direction:column;gap:.4rem}.datetime-input{width:100%;padding:.65rem .8rem;border-radius:.75rem;border:1px solid #e2e8f0;background:#fff;font-size:.95rem;cursor:pointer}.react-datepicker-wrapper{width:100%}.react-datepicker{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}.react-datepicker__time-container .react-datepicker__time{background:#fff}.react-datepicker__header,.react-datepicker__time-container .react-datepicker__time .react-datepicker__time-box{border-radius:.5rem}.react-datepicker__clear-button{font-size:.85rem}.export-modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.5);display:flex;align-items:center;justify-content:center;padding:1.5rem;z-index:50}.export-modal-content{background:#fff;border-radius:1rem;padding:1.75rem;width:100%;max-width:480px;box-shadow:0 25px 40px rgba(15,23,42,.25)}.export-modal-title{margin:0 0 .4rem;font-size:1.15rem}.export-modal-fields{display:grid;grid-template-columns:1fr 1fr;grid-gap:1rem;gap:1rem;margin-top:1.25rem}.export-modal-fields label{display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;font-weight:500}.export-modal-fields input[type=date]{width:100%;padding:.65rem .8rem;border-radius:.75rem;border:1px solid #e2e8f0;background:#fff;font-size:.95rem}.export-modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1.5rem}.daily-chart-scroll{overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;cursor:-webkit-grab;cursor:grab;border-radius:.5rem}.daily-chart-scroll:active{cursor:-webkit-grabbing;cursor:grabbing}.message-filter-select{padding:.4rem .65rem;border-radius:.6rem;border:1px solid var(--border);background:#f8fafc;font-size:.85rem;cursor:pointer}.weekday-chart-card{grid-column:1/-1}.weekday-legend-hint{margin:.2rem 0 0}.weekday-badge{display:inline-flex;align-items:center;padding:.3rem .7rem;border-radius:999px;font-size:.82rem;font-weight:600}.weekday-badge--week{background:rgba(59,130,246,.12);color:#1d4ed8}.weekday-badge--weekend{background:rgba(245,158,11,.15);color:#b45309}.date-quick-selectors{display:flex;flex-wrap:wrap;gap:.4rem;padding:.6rem 0 .2rem;border-top:1px solid var(--border);margin-top:.4rem}.quick-date-btn{padding:.3rem .75rem;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--foreground);font-size:.82rem;cursor:pointer;transition:background .15s,border-color .15s}.quick-date-btn:hover{background:rgba(37,99,235,.07);border-color:var(--primary);color:var(--primary)}.quick-date-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}