:root{--bg:#f6f8f5;--surface:#fff;--border:#d8e2db;--text:#10221a;--muted:#5e7065;--primary:#007247;--primary-dark:#005d3a;--accent:#ef2326;--soft:#eef8f2;--soft-red:#fff1f1;--shadow:0 12px 35px rgba(16,34,26,.08)}
*{box-sizing:border-box}
body{background:linear-gradient(180deg,#f7faf8 0,#f3f7f4 100%);color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.app-nav{background:#07120d;box-shadow:0 8px 30px rgba(7,18,13,.28)}
.navbar-brand,.app-nav .nav-link{color:#fff!important}
.app-nav .nav-link{opacity:.88}
.app-nav .nav-link:hover{opacity:1}
.brand-logo{height:42px;width:auto;display:block}.brand-subtitle{font-size:10px;letter-spacing:.18em;color:#9fe0b9}.logout-link{background:rgba(255,255,255,.08);border-radius:999px;padding-left:14px!important;padding-right:14px!important}
.eyebrow{letter-spacing:.12em;text-transform:uppercase;color:#128855;font-size:12px;font-weight:800}
.hero-panel{background:linear-gradient(135deg,#062016,#007247 60%,#0d8e5a);color:#fff;border-radius:28px;padding:28px;box-shadow:var(--shadow);display:flex;justify-content:space-between;gap:20px;align-items:center;position:relative;overflow:hidden}
.hero-panel:after{content:"";position:absolute;right:-60px;bottom:-60px;width:180px;height:180px;border-radius:50%;background:rgba(239,35,38,.18)}
.hero-panel h1{font-size:34px;margin:4px 0;position:relative;z-index:1}.hero-panel p{max-width:850px;margin:0;color:rgba(255,255,255,.88);position:relative;z-index:1}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;position:relative;z-index:1}
.btn-primary{background:var(--primary);border-color:var(--primary)}.btn-primary:hover{background:var(--primary-dark);border-color:var(--primary-dark)}
.btn-primary-soft{background:#fff;color:var(--primary-dark);border:0}.btn-danger-soft{background:#ffe5e5;color:#b91c1c;border:0}
.btn-outline-primary{color:var(--primary);border-color:var(--primary)}.btn-outline-primary:hover{background:var(--primary);border-color:var(--primary)}
.control-panel,.data-panel,.app-card{background:var(--surface);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow)}.control-panel{padding:20px}
.form-control,.form-select{border-radius:14px;border-color:#c7d5cb}.form-control:focus,.form-select:focus{border-color:#77c39b;box-shadow:0 0 0 .2rem rgba(0,114,71,.12)}
.filter-card{background:#f8fbf9;border:1px solid var(--border);border-radius:18px;padding:12px}.filter-row{align-items:end}.filter-card .f-field{min-width:150px}.filter-card .f-val,.filter-card .f-val2{min-width:180px}
.kpi-grid{display:grid;grid-template-columns:repeat(5,minmax(170px,1fr));gap:16px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:22px;padding:18px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi-card:after{content:"";position:absolute;right:-24px;top:-24px;width:90px;height:90px;border-radius:50%;background:var(--soft)}.kpi-card:nth-child(odd):before{content:"";position:absolute;left:0;top:0;height:100%;width:5px;background:var(--primary)}.kpi-card:nth-child(even):before{content:"";position:absolute;left:0;top:0;height:100%;width:5px;background:var(--accent)}.kpi-card span{display:block;color:var(--muted);font-size:13px;font-weight:700}.kpi-card b{display:block;margin-top:8px;font-size:26px;letter-spacing:-.03em}
.chart-grid{display:grid;grid-template-columns:repeat(2,minmax(300px,1fr));gap:16px}.chart-card{background:var(--surface);border:1px solid var(--border);border-radius:22px;box-shadow:var(--shadow);padding:18px;min-height:320px}.chart-card h6{font-size:15px;font-weight:800;margin-bottom:12px}.chart-box{height:260px}
.data-panel{overflow:hidden}.data-panel-head,.data-panel-foot{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:18px 20px;border-bottom:1px solid var(--border)}.data-panel-foot{border-bottom:0;border-top:1px solid var(--border);justify-content:flex-end}.data-panel-head h5{margin:0;font-weight:800}.data-table-wrap{max-height:65vh}.table thead th{position:sticky;top:0;z-index:2;background:#062016;color:#fff;white-space:nowrap;font-size:12px;letter-spacing:.02em;cursor:pointer}.table td{white-space:nowrap;font-size:13px}.table tbody tr:hover{background:#f7fbf8}.column-picker{padding:14px 18px;border-bottom:1px solid var(--border);display:flex;flex-wrap:wrap;gap:10px}.column-chip{background:#f8fafc;border:1px solid var(--border);border-radius:999px;padding:8px 12px;font-size:13px}
.login-page{min-height:calc(100vh - 86px);display:grid;place-items:center}.login-card{width:min(480px,94vw);background:var(--surface);border:1px solid var(--border);border-radius:28px;padding:34px;box-shadow:var(--shadow);text-align:center}.login-card form{text-align:left}.login-logo{width:min(340px,90%);height:auto;display:block;margin:0 auto 16px}
.page-title-row{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:22px}.page-title-row h2{font-weight:850;margin:4px 0}.permission-toolbar{display:flex;gap:10px;flex-wrap:wrap}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(320px,1fr));gap:16px}.permission-card .card-header{background:#fff;border-bottom:1px solid var(--border);border-radius:22px 22px 0 0}.permission-card code{color:var(--primary-dark);background:#eaf7ef;padding:3px 7px;border-radius:8px}.badge{text-transform:uppercase;letter-spacing:.04em}
.forced-filter-box{border-radius:18px;border:1px solid #c4e6d0;background:#eef8f2;color:#175231}.forced-chip{display:inline-block;margin:4px 6px;padding:6px 10px;border-radius:999px;background:#ddefe4;color:#175231;font-weight:700;font-size:12px}
.chart-builder{overflow:hidden}.chart-builder-head{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:18px}.chart-builder-head h5{margin:0;font-weight:850}.chart-card-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.chart-card-title h6{margin:0}
.permission-grid.wide{grid-template-columns:1fr}.forced-editor{display:grid;grid-template-columns:140px minmax(220px,1.3fr) minmax(220px,1.3fr);gap:8px;min-width:580px}.forced-editor input{min-width:220px}
.default-chart-remove{border:0;background:#fff3f3;color:#b91c1c;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:700}.default-chart-remove:hover{background:#ffe3e3}
@media(max-width:1200px){.kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:900px){.hero-panel{display:block}.hero-actions{margin-top:18px}.chart-grid,.permission-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.chart-builder-head{display:block}.chart-builder-head .btn{margin-top:12px}.forced-editor{grid-template-columns:1fr;min-width:220px}.brand-logo{height:36px}}
@media(max-width:540px){main.container-fluid{padding-left:14px!important;padding-right:14px!important}.hero-panel{border-radius:20px;padding:22px}.hero-panel h1{font-size:26px}.kpi-grid{grid-template-columns:1fr}.data-panel-head{display:block}.column-tools{margin-top:12px}.permission-toolbar .ms-auto{margin-left:0!important;width:100%}}

.custom-kpi-card{position:relative}.custom-kpi-card .remove-card{position:absolute;right:10px;top:10px;border:0;background:#fff3f3;color:#b91c1c;border-radius:999px;font-size:12px;font-weight:800;padding:4px 8px}.builder-note{font-size:12px;color:var(--muted)}

/* TV Dashboard */
.tv-shell{min-height:calc(100vh - 110px);background:#07120d;color:#f3fff7;border-radius:28px;padding:28px;box-shadow:var(--shadow)}
.tv-header{display:flex;justify-content:space-between;gap:24px;align-items:center;background:linear-gradient(135deg,#0b2a1d,#007247 60%,#ef2326);border-radius:24px;padding:24px}
.tv-logo{height:76px;background:#fff;border-radius:16px;padding:8px}.tv-header h1{font-size:42px;font-weight:900;margin:0}.tv-header p{margin:4px 0 0;color:rgba(255,255,255,.86)}.tv-status{text-align:right}.tv-clock{font-size:42px;font-weight:900;line-height:1}.tv-updated{color:#d7f7e3;font-size:14px;margin-top:8px}.tv-filter-strip{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);border-radius:18px;padding:14px}.tv-filter-strip span{display:inline-block;margin:4px 6px;padding:7px 12px;border-radius:999px;background:rgba(255,255,255,.12);font-size:13px}.tv-card-grid{display:grid;grid-template-columns:repeat(4,minmax(180px,1fr));gap:16px}.tv-card{background:#fff;color:#10221a;border-radius:24px;padding:22px;position:relative;overflow:hidden}.tv-card:before{content:"";position:absolute;left:0;top:0;width:7px;height:100%;background:var(--accent)}.tv-card:nth-child(odd):before{background:var(--primary)}.tv-card span{display:block;color:#5e7065;font-weight:800;font-size:15px}.tv-card b{display:block;font-size:34px;line-height:1.08;margin-top:8px;letter-spacing:-.04em}.tv-main-grid{display:grid;grid-template-columns:1.25fr .75fr;gap:16px}.tv-chart-panel,.tv-recent-panel{background:#fff;color:#10221a;border-radius:24px;padding:18px;min-height:420px}.tv-panel-title{font-size:18px;font-weight:900;margin-bottom:14px}.tv-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(240px,1fr));gap:14px}.tv-chart-card{border:1px solid var(--border);border-radius:18px;padding:12px;background:#f8fbf9}.tv-chart-card h6{font-size:14px;font-weight:900}.tv-chart-box{height:230px}.tv-table thead th{background:#062016;color:#fff;position:sticky;top:0}.tv-table td,.tv-table th{font-size:14px;white-space:nowrap}
@media(max-width:1200px){.tv-card-grid{grid-template-columns:repeat(2,1fr)}.tv-main-grid{grid-template-columns:1fr}.tv-header{display:block}.tv-status{text-align:left;margin-top:16px}}

.tv-chart-panel-full{min-height:520px}
.tv-chart-grid-wide{grid-template-columns:repeat(auto-fit,minmax(380px,1fr))}
.tv-empty-widget{background:#f8fbf9;border:1px dashed var(--border);border-radius:18px;padding:34px;text-align:center;color:#5e7065;font-weight:800;grid-column:1/-1}
.tv-widget-picker{display:flex;flex-wrap:wrap;gap:10px}
@media(max-width:900px){.tv-chart-grid-wide{grid-template-columns:1fr}.tv-chart-panel-full{min-height:380px}}

.dashboard-action-bar{display:flex;gap:12px;flex-wrap:wrap;align-items:center;background:#fff;border:1px solid var(--border);border-radius:22px;padding:16px;box-shadow:var(--shadow)}
.date-strip{margin-top:-6px}.modern-modal{border:0;border-radius:28px;box-shadow:0 30px 90px rgba(16,34,26,.22);overflow:hidden}.modern-modal .modal-header{background:linear-gradient(135deg,#f8fbf9,#eef8f2);border-bottom:1px solid var(--border);padding:22px 24px}.modern-modal .modal-body{padding:24px}.modern-modal .modal-footer{border-top:1px solid var(--border);padding:18px 24px;background:#fbfdfb}.builder-launcher{overflow:hidden}.builder-launcher-head{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px}.builder-launcher-head h5{margin:0;font-weight:850}.builder-launcher-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:700px){.dashboard-action-bar .btn,.builder-launcher-actions .btn{width:100%}.builder-launcher-head{display:block}.builder-launcher-actions{margin-top:14px;justify-content:stretch}}
