:root{--bg:#f3f4f6;--card:#fff;--border:#e5e7eb;--text:#1f2937;--muted:#6b7280;--accent:#5d80a1}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:Open Sans,system-ui,-apple-system,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}.dashboard.grid-stack,.dashboard.grid-static{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:60px;grid-gap:10px;gap:10px;padding:12px}.grid-stack-item{min-width:0;min-height:0;display:flex}.grid-static .grid-stack-item-content{width:100%;height:100%}.portlet.light.report-item{height:100%;display:flex;flex-direction:column;margin-bottom:0}.portlet.light.report-item .portlet-body{flex:1 1 auto;min-height:0;overflow:auto}.portlet.light.report-item .ag-theme-alpine,.portlet.light.report-item .chart-report,.portlet.light.report-item .map-report,.portlet.light.report-item .report-container{height:100%;min-height:0}.report-item.portlet{background:var(--card);border:1px solid var(--border);border-radius:6px;height:100%;display:flex;flex-direction:column;overflow:hidden}.portlet-title{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);font-weight:600}.portlet-title .caption{flex:1 1}.portlet-title .filter-text{color:var(--muted);font-weight:400;font-size:12px}.portlet-body{flex:1 1;padding:12px;overflow:auto}.report-item__actions{display:flex;gap:4px}.report-item__actions button{font-size:12px;padding:2px 8px;cursor:pointer;border:1px solid var(--border);border-radius:4px;background:#fff}.report-item__actions button[disabled]{opacity:.5;cursor:not-allowed}.dt-table{width:100%;border-collapse:collapse}.dt-table td,.dt-table th{border-bottom:1px solid var(--border);padding:6px 8px;text-align:left}.dt-meta{color:var(--muted);font-size:12px;margin-top:6px}.single-value{text-align:center;padding:16px}.single-value__number{font-size:40px;margin:0;color:var(--accent)}.single-value__label{color:var(--muted)}.chart-report__placeholder,.map-report__placeholder{border:1px dashed var(--border);border-radius:6px;padding:24px;text-align:center;color:var(--muted)}.dashboard-loading,.report-loading{color:var(--muted);padding:12px}.dashboard-error,.report-error{color:#b91c1c;padding:12px}.dashboard-filter-bar{margin:0 0 12px;padding:16px;background:#fff;border:1px solid #e7ecf1;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.05)}.dashboard-filter-bar .dfb-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px 18px;gap:14px 18px;align-items:end}.dashboard-filter-bar .dfb-field{display:flex;flex-direction:column;gap:4px;min-width:0}.dashboard-filter-bar .dfb-field.dfb-range{grid-column:span 1}.dashboard-filter-bar .dfb-label{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:#90a4ae;font-weight:600}.dashboard-filter-bar input[type=date].form-control{height:34px;padding:6px 10px;border:1px solid #c2cad8;border-radius:4px;font-size:13px;color:#333;background:#fff;width:100%}.dashboard-filter-bar input[type=date].form-control:focus{border-color:#26a69a;outline:none;box-shadow:0 0 0 2px rgba(38,166,154,.15)}.dashboard-filter-bar .dfb-range-inputs{display:flex;align-items:center;gap:6px}.dashboard-filter-bar .dfb-range-sep{color:#90a4ae}.dashboard-filter-bar .dfb-actions{display:flex;align-items:flex-end;gap:8px}.dashboard-filter-bar .btn{height:34px;padding:0 16px;border-radius:4px;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.dashboard-filter-bar .btn-success{background:#26a69a;border:1px solid #26a69a;color:#fff}.dashboard-filter-bar .btn-success:hover{background:#1f8b81}.dashboard-filter-bar .btn-default{background:#fff;border:1px solid #c2cad8;color:#555}.dashboard-filter-bar .btn-default:hover{background:#f4f6f9}.dashboard-filter-bar .dfb-select__control{min-height:34px;border-color:#c2cad8}.dashboard-filter-bar .dfb-select__control--is-focused{border-color:#26a69a;box-shadow:0 0 0 2px rgba(38,166,154,.15)}.ldp{position:relative}.ldp-input{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;border:1px solid #c2cad8;border-radius:4px;background:#fff;font-size:13px;color:#333;cursor:pointer}.ldp-input>span{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ldp-input .fa-calendar{color:#26a69a;flex:0 0 auto}.ldp-input__ph{color:#9aa5b1}.ldp-input__field{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;font:inherit;color:inherit}.ldp-input__field::placeholder{color:#9aa5b1}.ldp-input__caret{margin-left:auto;color:#90a4ae;font-size:11px;flex:0 0 auto}.ldrp{z-index:5000;background:#fff;border:1px solid #d5dbe3;border-radius:6px;box-shadow:0 8px 28px rgba(20,30,50,.22);padding:10px;width:max-content;max-width:calc(100vw - 16px)}.ldrp-inputs{display:flex;gap:10px;margin-bottom:10px}.ldrp-inbox{display:flex;align-items:center;gap:8px;flex:1 1;min-width:150px;height:34px;padding:0 10px;border:1px solid #26a69a;border-radius:4px}.ldrp-inbox .fa-calendar{color:#26a69a;flex:0 0 auto}.ldrp-inbox input{flex:1 1 auto;min-width:0;border:none;outline:none;background:transparent;font:inherit;font-size:13px;color:#333}.ldrp-body{display:flex;align-items:stretch;gap:12px}.ldrp-ranges{display:flex;flex-direction:column;list-style:none;margin:0;padding:0 12px 0 0;border-right:1px solid #eef1f4;min-width:118px}.ldrp-ranges>li{display:block}.ldrp-ranges button{display:block;width:100%;text-align:left;padding:6px 10px;border:none;background:transparent;color:#445;font-size:12px;border-radius:4px;cursor:pointer;white-space:nowrap}.ldrp-ranges button:hover{background:#f1f5f9}.ldrp-ranges button.is-active{background:#26a69a;color:#fff}.ldrp-foot{margin-top:auto;padding-top:10px;display:flex;gap:8px}.ldrp-foot .ldp-btn{flex:1 1;padding:0 10px}.ldrp-cals{display:flex;gap:14px}.ldp-cal{width:224px}.ldp-cal__head{display:flex;align-items:center;justify-content:space-between;padding:2px 4px 8px}.ldp-cal__title{font-size:13px;font-weight:700;color:#333}.ldp-cal__nav{width:26px;height:26px;border:none;background:transparent;color:#556;font-size:16px;cursor:pointer;border-radius:4px}.ldp-cal__nav:hover:not(:disabled){background:#f1f5f9}.ldp-cal__nav:disabled{visibility:hidden}.ldp-cal__grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:1px;gap:1px}.ldp-cal__wd{text-align:center;font-size:10px;font-weight:700;color:#90a4ae;padding:2px 0}.ldp-cal__day{border:none;background:transparent;height:28px;font-size:12px;color:#333;cursor:pointer;border-radius:4px}.ldp-cal__day:hover{background:#eef5f0}.ldp-cal__day.is-off{color:#c3cbd4}.ldp-cal__day.is-range{background:#d6efe9;border-radius:0}.ldp-cal__day.is-active{background:#26a69a;color:#fff}.ldp-btn{height:30px;padding:0 14px;border-radius:4px;font-size:12px;cursor:pointer;border:1px solid transparent}.ldp-btn--cancel{background:#fff;border-color:#c2cad8;color:#555}.ldp-btn--apply{background:#26a69a;color:#fff}.ldp-btn--apply:disabled{opacity:.5;cursor:not-allowed}@media (max-width:640px){.ldrp-cals{flex-direction:column}.ldp-cal{width:200px}}.dashboard-header-actions{display:inline-flex;gap:8px}@media (max-width:991px){.dashboard-filter-bar .dfb-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.dashboard-filter-bar .dfb-grid{grid-template-columns:1fr}}.grid-stack-item-content{inset:0;overflow:hidden}.grid-stack-item-content .report-item.portlet{height:100%}.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-box{background:#fff;border-radius:8px;width:min(480px,92vw);box-shadow:0 10px 40px rgba(0,0,0,.2)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border)}.modal-close{border:none;background:none;font-size:22px;line-height:1;cursor:pointer;color:var(--muted)}.modal-body{padding:16px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;font-size:13px}.field input,.field select,.field textarea{padding:6px 8px;border:1px solid var(--border);border-radius:4px;font:inherit}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}.modal-actions button{padding:6px 16px;border-radius:4px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer}.modal-actions button.secondary{background:#fff;color:var(--text);border-color:var(--border)}.modal-actions button[disabled]{opacity:.5;cursor:not-allowed}.modal-msg{font-size:13px;color:var(--muted);margin-bottom:8px}.report-builder{background:var(--card);border:1px solid var(--border);border-radius:6px}.builder-toolbar{display:flex;gap:16px;flex-wrap:wrap;padding:12px;border-bottom:1px solid var(--border)}.field.inline{flex-direction:column;font-size:12px;color:var(--muted)}.field.inline input,.field.inline select{min-width:180px;padding:5px 7px;border:1px solid var(--border);border-radius:4px}.builder-main{display:grid;grid-template-columns:240px 1fr;grid-gap:0;gap:0}.builder-tree{border-right:1px solid var(--border);padding:10px;max-height:420px;overflow:auto}.builder-editor{padding:10px}.editor-actions{display:flex;gap:8px;align-items:center;margin-bottom:8px}.editor-actions button{padding:5px 12px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer}.editor-actions button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.editor-actions button[disabled]{opacity:.5;cursor:not-allowed}.builder-msg{font-size:12px;color:var(--muted)}.builder-preview{margin-top:10px;border:1px solid var(--border);border-radius:4px;padding:10px;font-size:13px}.table-tree{font-size:13px}.tree-node{line-height:1.7}.tree-label{cursor:pointer}.tree-label:hover{color:var(--accent)}.tree-hint{color:var(--muted);font-size:12px}.global-filter-manager{padding:12px}.global-filter-manager ul{list-style:none;padding:0}.global-filter-manager li{display:flex;align-items:center;gap:8px;padding:4px 0}.global-filter-manager button{font-size:12px;padding:2px 8px}.admin-page{padding:16px}.admin-list__head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.btn-primary{background:var(--accent);color:#fff;padding:6px 14px;border-radius:4px;text-decoration:none}.connection-form,.ga-wizard{display:flex;flex-direction:column;gap:10px;background:var(--card);border:1px solid var(--border);border-radius:6px;padding:16px}.connection-form .field,.ga-wizard .field{font-size:13px}.connection-form input,.connection-form select,.ga-wizard select{padding:6px 8px;border:1px solid var(--border);border-radius:4px}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg)}.login-card{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:28px;width:320px;display:flex;flex-direction:column;gap:12px}.login-card h1{margin:0 0 8px;color:var(--accent)}.login-card button{padding:8px;background:var(--accent);color:#fff;border:none;border-radius:4px;cursor:pointer}.login-card button[disabled]{opacity:.6}.fb-root{display:grid;grid-template-columns:200px 1fr 280px;grid-gap:0;gap:0;min-height:480px;background:var(--card);border:1px solid var(--border);border-radius:6px}.fb-config,.fb-palette{padding:12px}.fb-canvas,.fb-palette{border-right:1px solid var(--border)}.fb-canvas{padding:16px;min-height:420px}.fb-config{background:#fafafa}.fb-palette button{display:block;width:100%;text-align:left;margin-bottom:6px;padding:6px 8px;cursor:-webkit-grab;cursor:grab}.fb-field,.fb-palette button{border:1px solid var(--border);border-radius:4px;background:#fff}.fb-field{padding:8px;margin-bottom:8px;cursor:pointer}.fb-field.selected{outline:2px solid var(--accent)}.fb-toolbar{gap:8px;padding:10px 12px}.fb-toolbar,.public-dashboard-header{display:flex;border-bottom:1px solid var(--border);align-items:center}.public-dashboard-header{justify-content:space-between;padding:10px 14px;background:var(--card)}.pdh-title{font-weight:600}.pdh-actions{display:flex;gap:8px}.pdh-actions>button,.pdh-dropdown>button{padding:6px 12px;border:1px solid var(--accent);background:var(--accent);color:#fff;border-radius:4px;cursor:pointer}.pdh-dropdown{position:relative}.pdh-menu{display:none;position:absolute;right:0;top:100%;background:#fff;border:1px solid var(--border);border-radius:4px;z-index:20;min-width:90px}.pdh-dropdown:hover .pdh-menu{display:block}.pdh-menu button{display:block;width:100%;text-align:left;padding:6px 12px;border:none;background:#fff;cursor:pointer}.pdh-menu button:hover{background:var(--bg)}