:root{color-scheme:light;--bg: oklch(1 0 0);--surface: oklch(.982 .004 270);--surface-strong: oklch(.955 .008 270);--ink: oklch(.19 .02 270);--muted: oklch(.47 .03 270);--line: oklch(.895 .01 270);--line-strong: oklch(.82 .018 270);--primary: oklch(.57 .185 340);--primary-soft: oklch(.95 .035 340);--primary-ink: oklch(1 0 0);--accent: oklch(.56 .13 205);--accent-soft: oklch(.945 .035 205);--success: oklch(.54 .12 155);--success-soft: oklch(.945 .04 155);--warning-soft: oklch(.965 .045 75);--danger: oklch(.57 .18 25);--category-text: oklch(.56 .13 205);--category-text-ink: oklch(.36 .105 205);--category-text-line: oklch(.83 .055 205);--category-text-soft: oklch(.955 .035 205);--category-text-faint: oklch(.985 .015 205);--category-audio-video: oklch(.69 .13 70);--category-audio-video-ink: oklch(.39 .095 70);--category-audio-video-line: oklch(.85 .065 70);--category-audio-video-soft: oklch(.965 .045 75);--category-audio-video-faint: oklch(.988 .02 75);--category-room: oklch(.54 .12 155);--category-room-ink: oklch(.33 .095 155);--category-room-line: oklch(.835 .055 155);--category-room-soft: oklch(.945 .04 155);--category-room-faint: oklch(.982 .018 155);--focus: oklch(.65 .16 205);--radius: 10px;--radius-sm: 7px;--topbar-h: 78px;font-family:Aptos,SF Pro Text,Segoe UI,Noto Sans Arabic,Noto Sans SC,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html{background:var(--bg);color:var(--ink)}body{margin:0;min-width:320px;background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.66}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.app-shell{min-height:100vh;background:var(--bg)}.topbar{position:sticky;top:0;z-index:20;min-height:var(--topbar-h);display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 28px;border-bottom:1px solid var(--line);background:#fffffff5;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.topbar-main{display:flex;align-items:center;gap:14px;min-width:0}.brand-block{display:flex;align-items:center;gap:12px;min-width:260px}.brand-mark{width:40px;height:40px;flex:0 0 40px;display:inline-grid;place-items:center;border-radius:var(--radius);background:var(--primary);color:var(--primary-ink)}.brand-block h1{margin:0;color:var(--ink);font-size:1.18rem;line-height:1.25;letter-spacing:0;text-wrap:balance}.brand-block p{margin:3px 0 0;color:var(--muted);font-size:.88rem;line-height:1.35}.mobile-filter-toggle{display:none}.topbar-actions{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.topbar-filters{display:flex;align-items:end;justify-content:flex-end;gap:12px;flex-wrap:wrap}.dashboard{width:min(1560px,calc(100vw - 40px));margin:0 auto;padding:14px 0 42px}.filter-strip,.status-strip{display:flex;align-items:end;gap:16px;flex-wrap:wrap;padding:10px 0 18px;border-bottom:1px solid var(--line)}.data-info{margin-top:8px;border-bottom:1px solid var(--line);color:var(--muted)}.data-info summary{width:max-content;min-height:34px;display:inline-flex;align-items:center;gap:8px;margin-bottom:10px;padding:0 11px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);color:var(--muted);font-size:.84rem;font-weight:760;list-style:none;cursor:pointer}.data-info summary::-webkit-details-marker{display:none}.data-info summary:after{content:"⌄";color:var(--muted);font-size:.9rem;transform:translateY(-1px);transition:transform .18s ease}.data-info[open] summary:after{transform:rotate(180deg) translateY(1px)}.data-info-body{display:grid;gap:10px;padding:0 0 14px}.control-group{display:grid;gap:7px}.control-label,.select-control span,.date-range-control>span{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.78rem;font-weight:650}.segmented{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.segment{min-height:34px;padding:0 12px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);font-size:.88rem;font-weight:700;letter-spacing:0;transition:background-color .18s ease,color .18s ease}.segment:hover{color:var(--ink);background:#f3f5f9}.segment.is-active{color:var(--primary-ink);background:var(--primary)}.select-control,.date-range-control{display:grid;gap:7px}.date-range-inputs{min-height:42px;display:inline-flex;align-items:center;gap:8px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.date-range-inputs select{min-height:34px;min-width:134px;padding:0 22px 0 6px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink)}.date-range-inputs select:hover{background:#f3f5f9}.date-range-separator{color:var(--muted);font-size:.86rem;font-weight:760;white-space:nowrap}.select-control select{min-height:42px;min-width:182px;padding:0 34px 0 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink)}.primary-button,.secondary-button{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:var(--radius);font-weight:760;letter-spacing:0;white-space:nowrap}.primary-button{padding:0 15px;border:1px solid var(--primary);background:var(--primary);color:var(--primary-ink)}.primary-button:hover{background:#a92e89;border-color:#a92e89}.secondary-button{padding:0 12px;border:1px solid var(--line);background:var(--surface);color:var(--ink)}.secondary-button:hover{border-color:var(--line-strong);background:var(--surface-strong)}.status-row,.meta-strip,.warning-strip{display:flex;align-items:center;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:.84rem}.status-row{margin-inline-start:auto;padding-bottom:1px}.status-row span,.meta-strip span,.warning-strip span,.warning-strip strong{min-height:30px;display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface);padding:0 9px}.meta-strip{padding:14px 0 0}.meta-strip b{max-width:min(780px,70vw);display:inline-block;overflow:hidden;direction:ltr;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.warning-strip{margin-top:10px;color:#4c2e00;color:oklch(.33 .08 70)}.warning-strip span,.warning-strip strong{border-color:#e3c9a6;background:var(--warning-soft)}.panel{padding:20px 0 0;margin-top:18px;border-top:1px solid var(--line)}.section-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin-bottom:14px}.section-head h2{margin:0;color:var(--ink);font-size:1.05rem;line-height:1.3;letter-spacing:0;text-wrap:balance}.section-head p{margin:4px 0 0;max-width:72ch;color:var(--muted);font-size:.88rem;line-height:1.45;text-wrap:pretty}.section-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.metric-grid{display:grid;gap:10px}.metric-grid--overview{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.metric-grid--compact{grid-template-columns:repeat(auto-fit,minmax(185px,1fr))}.metric-grid--income{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.income-card-groups{display:grid;gap:10px}.metric-grid--income-category{max-width:min(100%,calc((100% - 10px)/2));grid-template-columns:repeat(3,minmax(150px,1fr))}.metric-tile{min-height:76px;display:grid;grid-template-columns:30px minmax(0,1fr);gap:9px;align-items:start;padding:11px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.metric-tile--primary{border-color:#e0bdd3;background:var(--primary-soft)}.metric-tile--accent{border-color:#a3d3d8;background:var(--accent-soft)}.metric-tile--success{border-color:#add4ba;background:var(--success-soft)}.metric-tile--category-text{border-color:var(--category-text-line);background:var(--category-text-soft)}.metric-tile--category-audio-video{border-color:var(--category-audio-video-line);background:var(--category-audio-video-soft)}.metric-tile--category-room{border-color:var(--category-room-line);background:var(--category-room-soft)}.metric-tile--category-text .metric-icon{color:var(--category-text);border-color:var(--category-text-line)}.metric-tile--category-audio-video .metric-icon{color:var(--category-audio-video);border-color:var(--category-audio-video-line)}.metric-tile--category-room .metric-icon{color:var(--category-room);border-color:var(--category-room-line)}.metric-tile--category-text .metric-copy span,.metric-tile--category-text .metric-copy em{color:var(--category-text-ink)}.metric-tile--category-audio-video .metric-copy span,.metric-tile--category-audio-video .metric-copy em{color:var(--category-audio-video-ink)}.metric-tile--category-room .metric-copy span,.metric-tile--category-room .metric-copy em{color:var(--category-room-ink)}.metric-icon{width:30px;height:30px;display:inline-grid;place-items:center;border-radius:var(--radius-sm);background:var(--bg);color:var(--primary);border:1px solid var(--line)}.metric-copy{display:grid;min-width:0;gap:6px}.metric-copy span{color:var(--muted);font-size:.79rem;font-weight:700;line-height:1.35}.metric-copy strong{color:var(--ink);font-size:1.24rem;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:0;overflow-wrap:anywhere}.metric-copy small{margin-inline-start:3px;color:var(--muted);font-size:.8rem;font-weight:700}.metric-copy em{margin-top:-1px;color:var(--muted);font-size:.75rem;font-style:normal;font-weight:650;line-height:1.3}.split-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.income-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}.income-charts,.trend-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-content:start}.chart-panel{min-width:0;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.chart-panel h3{margin:0 0 8px;color:var(--ink);font-size:.92rem;line-height:1.25;letter-spacing:0}.recharts-legend-item,.legend-label{cursor:pointer;-webkit-user-select:none;user-select:none}.chart-panel--bars{padding-inline-start:8px}.chart-panel--rtl{padding-inline:12px 8px}.income-bar-label{fill:var(--ink);font-size:.72rem;font-weight:760;font-variant-numeric:tabular-nums;pointer-events:none;paint-order:stroke;stroke:var(--surface);stroke-linejoin:round;stroke-width:3px}.chart-tooltip{display:grid;gap:7px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--ink);font-size:.82rem}.chart-tooltip strong{font-size:.86rem}.chart-tooltip>span,.chart-tooltip-row{display:flex;align-items:center;gap:7px;color:var(--muted);font-variant-numeric:tabular-nums}.chart-tooltip-copy{display:grid;gap:3px}.chart-tooltip-copy em{color:var(--muted);font-size:.76rem;font-style:normal;font-weight:650}.chart-tooltip i{width:9px;height:9px;flex:0 0 9px;border-radius:50%}.search-box{min-height:40px;display:inline-flex;align-items:center;gap:8px;min-width:min(280px,100%);padding:0 11px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted)}.search-box input{width:100%;min-width:0;border:0;outline:0;background:transparent;color:var(--ink)}.search-box input::placeholder{color:#494f61}.table-scroll{width:100%;overflow:auto;border:1px solid var(--line);border-radius:var(--radius)}.data-table-block{display:grid;gap:10px}.pagination-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:.84rem;font-weight:700}.pagination-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.pagination-actions>span{min-width:68px;text-align:center;color:var(--muted);font-variant-numeric:tabular-nums}.data-table{width:100%;min-width:2200px;border-collapse:separate;border-spacing:0;background:var(--bg);font-size:.84rem}.data-table th{position:sticky;top:0;z-index:1;padding:0;border-bottom:1px solid var(--line);background:var(--surface-strong);color:var(--muted);text-align:start;white-space:nowrap}.data-table th:first-child,.data-table td:first-child{position:sticky;inset-inline-start:0;min-width:150px;max-width:240px;z-index:2;background:var(--bg)}.data-table th:first-child{z-index:4;background:var(--surface-strong);box-shadow:1px 0 0 var(--line)}.data-table td:first-child{box-shadow:1px 0 0 var(--line)}.data-table th button{width:100%;min-height:42px;display:inline-flex;align-items:center;justify-content:flex-start;gap:6px;padding:0 10px;border:0;background:transparent;color:inherit;font-weight:760}.data-table th.numeric button{justify-content:flex-end}.data-table td{max-width:260px;padding:10px;border-bottom:1px solid var(--line);color:var(--ink);line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.data-table tbody tr:hover td{background:var(--surface)}.data-table th.metric-category-text{background:var(--category-text-soft);color:var(--category-text-ink)}.data-table th.metric-category-audio-video{background:var(--category-audio-video-soft);color:var(--category-audio-video-ink)}.data-table th.metric-category-room{background:var(--category-room-soft);color:var(--category-room-ink)}.data-table td.metric-category-text{background:var(--category-text-faint);color:var(--category-text-ink);font-weight:650}.data-table td.metric-category-audio-video{background:var(--category-audio-video-faint);color:var(--category-audio-video-ink);font-weight:650}.data-table td.metric-category-room{background:var(--category-room-faint);color:var(--category-room-ink);font-weight:650}.data-table tbody tr:hover td.metric-category-text{background:var(--category-text-soft)}.data-table tbody tr:hover td.metric-category-audio-video{background:var(--category-audio-video-soft)}.data-table tbody tr:hover td.metric-category-room{background:var(--category-room-soft)}.data-table tr:last-child td{border-bottom:0}.numeric{text-align:end;font-variant-numeric:tabular-nums}.code-cell{direction:ltr;font-variant-numeric:tabular-nums}.empty-state,.error-panel,.skeleton-page{min-height:220px;display:grid;place-items:center;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--muted);text-align:center}.error-panel{margin-top:22px;padding:28px;gap:12px}.error-panel h2{margin:0;color:var(--ink);font-size:1.15rem}.error-panel p{margin:0;max-width:70ch;overflow-wrap:anywhere}.skeleton-page{display:grid;gap:16px;place-items:stretch;padding:22px 0;border:0;background:transparent}.skeleton-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.skeleton-line,.skeleton-card,.skeleton-panel{border-radius:var(--radius);background:linear-gradient(90deg,var(--surface),var(--surface-strong),var(--surface));background-size:240% 100%;animation:shimmer 1.5s ease-in-out infinite}.skeleton-line{height:20px}.skeleton-line--wide{width:min(440px,100%)}.skeleton-card{min-height:86px}.skeleton-panel{min-height:320px}.spin{animation:spin .9s linear infinite}[dir=rtl] .primary-button svg,[dir=rtl] .secondary-button svg,[dir=rtl] .search-box svg{transform:scaleX(-1)}[dir=rtl] .data-table th,[dir=rtl] .data-table td{text-align:right}[dir=rtl] .data-table th.numeric,[dir=rtl] .data-table td.numeric{text-align:left}[dir=rtl] .data-table th.numeric button{justify-content:flex-start}[dir=rtl] .data-table th:first-child,[dir=rtl] .data-table td:first-child{box-shadow:-1px 0 0 var(--line)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}@media(max-width:1180px){.topbar{align-items:flex-start;flex-direction:column}.topbar-main,.topbar-actions{width:100%;justify-content:space-between}.topbar-filters{justify-content:flex-start}.split-layout{grid-template-columns:1fr}.metric-grid--income-category{max-width:none;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}@media(max-width:760px){.topbar{gap:8px;padding:10px 14px}.topbar-main{align-items:stretch;flex-direction:column;gap:8px}.brand-block{width:100%;min-width:0;gap:10px}.brand-mark{width:34px;height:34px;flex-basis:34px;border-radius:9px}.brand-block h1{overflow:hidden;font-size:1rem;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.brand-block p{display:none}.mobile-filter-toggle{width:100%;min-height:40px;display:grid;grid-template-columns:20px minmax(0,1fr) 20px;align-items:center;gap:9px;padding:6px 10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-align:start}.mobile-filter-toggle:hover{border-color:var(--line-strong);background:var(--surface-strong)}.mobile-filter-toggle>span{min-width:0;display:grid;gap:1px}.mobile-filter-toggle strong,.mobile-filter-toggle small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mobile-filter-toggle strong{font-size:.82rem;font-weight:780}.mobile-filter-toggle small{color:var(--muted);font-size:.72rem;font-weight:650}.mobile-filter-toggle svg:last-child{justify-self:end;color:var(--muted);transition:transform .18s ease}.mobile-filter-toggle svg:last-child.is-open{transform:rotate(180deg)}.dashboard{width:min(100% - 24px,1560px);padding-top:14px}.filter-strip,.status-strip,.section-head,.topbar-filters{align-items:stretch;flex-direction:column}.topbar-actions{width:100%;display:none;align-items:stretch;flex-direction:column;gap:10px;overflow:hidden;opacity:0;pointer-events:none;transform:translateY(-3px);transition:opacity .18s ease,transform .18s ease}.topbar-actions.is-open{display:flex;max-height:min(72dvh,560px);padding-top:8px;border-top:1px solid var(--line);overflow:auto;opacity:1;pointer-events:auto;transform:translateY(0)}.status-row{margin-inline-start:0}.section-actions{justify-content:stretch}.pagination-bar{align-items:stretch;flex-direction:column}.pagination-actions{justify-content:space-between}.section-actions>*,.primary-button,.secondary-button,.search-box,.date-range-control,.date-range-inputs,.select-control select{width:100%}.pagination-actions .secondary-button{width:auto;flex:1 1 0}.date-range-inputs{flex-wrap:wrap;justify-content:center;padding-block:6px}.date-range-inputs select{flex:1 1 150px}.segmented{width:100%;overflow-x:auto}.segment{flex:1 0 auto}.metric-copy strong{font-size:1.16rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}}
