.btn-add-tab{width:22px;height:22px;padding:0;border:1.5px solid rgba(255,255,255,.72);box-shadow:0 0 0 1px var(--tab-ring, rgba(0,0,0,.13));background:var(--tab-inactive-bg, rgba(0,0,0,.06));cursor:pointer;color:var(--tab-ink-muted, rgba(0,0,0,.45));font-size:14px;border-radius:9999px;line-height:1;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:background .15s ease,color .15s ease}.btn-add-tab:hover{background:var(--tab-active-bg, rgba(0,0,0,.14));color:var(--tab-ink, rgba(0,0,0,.78))}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--surface-alt, #f4f6fa);color:var(--text, #1e293b);transition:background-color .3s ease}body.custom-bg{background-color:var(--custom-bg-color)}.navbar{margin-bottom:0!important;padding-top:.5rem!important;padding-bottom:.5rem!important}.page-wrapper{padding-top:0!important;margin-top:0!important}.btn-list{gap:.375rem!important}.btn-list .btn-sm{padding:.25rem .5rem;font-size:.75rem;line-height:1.25}.btn-list .dropdown-menu{font-size:.875rem}.page-body{background-color:transparent}.dashboard-layout{display:grid;grid-template-columns:200px 1fr 250px;gap:.75rem;padding:.75rem;min-height:calc(100vh - 80px);position:relative}.filter-panel{padding:.75rem}.filter-panel-header{display:flex;align-items:center;gap:.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--tblr-border-color);margin-bottom:.75rem;font-weight:600}.filter-panel-header .btn-clear-filters{margin-left:auto;background:none;border:none;cursor:pointer;padding:.25rem;color:var(--tblr-secondary);transition:color .2s}.filter-panel-header .btn-clear-filters:hover{color:var(--tblr-danger)}.filter-panel-body{display:flex;flex-direction:column;gap:.75rem}.filter-item{display:flex;flex-direction:column;gap:.25rem}.filter-item label{font-size:.875rem;font-weight:500;color:var(--tblr-secondary)}.filter-item input,.filter-item select{font-size:.875rem}.sidebar-left{width:200px;overflow-y:auto;overflow-x:hidden;transition:width .25s ease,min-width .25s ease;min-width:200px}.sidebar-left.collapsed{width:0!important;min-width:0!important;overflow:hidden;padding:0}.dashboard-layout:has(.sidebar-left.collapsed){grid-template-columns:0px 1fr 250px}.dashboard-layout:has(.sidebar-left.collapsed):has(.sidebar-right.collapsed){grid-template-columns:0px 1fr 0px}.canvas-area{min-width:0;overflow-y:auto;overflow-x:auto;height:100%}#canvas-body{display:flex!important;justify-content:center}.sidebar-right{width:250px;overflow-y:auto;overflow-x:hidden;transition:width .25s ease,min-width .25s ease;min-width:250px}.sidebar-right.collapsed{width:0!important;min-width:0!important;overflow:hidden;padding:0}.dashboard-layout:has(.sidebar-right.collapsed){grid-template-columns:200px 1fr 0px}@media(max-width:1200px){.dashboard-layout{grid-template-columns:180px 1fr 220px}.sidebar-left{width:180px}.sidebar-right{width:220px}}@media(max-width:768px){.dashboard-layout{grid-template-columns:1fr;grid-template-rows:auto 1fr auto}.sidebar-left,.sidebar-right{width:100%}}.canvas-container{min-height:720px;width:100%;flex-shrink:0;position:relative;background-color:var(--canvas-bg-color, #ffffff);background-image:linear-gradient(rgba(0,0,0,.02) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.02) 1px,transparent 1px);background-size:20px 20px;overflow:visible;transition:background-color .3s ease;box-shadow:0 0 0 1px #0000001f,0 2px 8px #0000000f}.canvas-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:0}.canvas-container:has(.dashboard-component) .canvas-overlay{display:none}.empty{text-align:center;padding:3rem 1rem}.empty-icon{margin-bottom:1rem;color:var(--text-faint, #cbd5e1)}.empty-title{font-size:1.25rem;font-weight:600;color:var(--text, #475569);margin-bottom:.5rem}.empty-subtitle{font-size:.875rem;line-height:1.5}.empty-action{margin-top:1rem}.dashboard-component{-webkit-user-select:none;user-select:none;z-index:1}.dashboard-component.selected{z-index:3}.component-item{-webkit-user-drag:element;transition:all .15s ease}.component-item:active{transform:scale(.98)}.sticky-top{position:sticky;z-index:10}.card-body,.canvas-area,.sidebar-left,.sidebar-right{scrollbar-width:thin;scrollbar-color:var(--text-faint, #cbd5e1) var(--surface-alt, #f1f5f9)}.card-body::-webkit-scrollbar,.canvas-area::-webkit-scrollbar,.sidebar-left::-webkit-scrollbar,.sidebar-right::-webkit-scrollbar{width:8px;height:8px}.card-body::-webkit-scrollbar-track,.canvas-area::-webkit-scrollbar-track,.sidebar-left::-webkit-scrollbar-track,.sidebar-right::-webkit-scrollbar-track{background:var(--surface-alt, #f1f5f9);border-radius:4px}.card-body::-webkit-scrollbar-thumb,.canvas-area::-webkit-scrollbar-thumb,.sidebar-left::-webkit-scrollbar-thumb,.sidebar-right::-webkit-scrollbar-thumb{background:var(--text-faint, #cbd5e1);border-radius:4px}.card-body::-webkit-scrollbar-thumb:hover,.canvas-area::-webkit-scrollbar-thumb:hover,.sidebar-left::-webkit-scrollbar-thumb:hover,.sidebar-right::-webkit-scrollbar-thumb:hover{background:var(--text-muted, #94a3b8)}.btn{transition:all .2s cubic-bezier(.4,0,.2,1)}.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #00000026}.btn:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.page-header{background:var(--surface, #ffffff);border-bottom:1px solid var(--border, #e2e8f0);margin-bottom:.75rem}.page-pretitle{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted, #64748b);margin-bottom:.25rem}.page-title{font-size:1.5rem;font-weight:600;color:var(--text, #1e293b);margin:0}.navbar-brand{font-size:1.125rem;color:var(--text, #1e293b)!important}.navbar-brand svg{color:#3b82f6}.badge{font-weight:500;padding:.25rem .75rem;font-size:.75rem}.card{border:1px solid var(--border, #e2e8f0);box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f;transition:box-shadow .2s ease}.card:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.card-header{background-color:var(--surface-alt, #f8fafc);border-bottom:1px solid var(--border, #e2e8f0);padding:.75rem 1rem}.card-title{font-size:.875rem;font-weight:600;color:var(--text, #334155);margin:0;text-transform:uppercase;letter-spacing:.025em}.container-xl{max-width:1320px}.g-3{gap:1rem}@media(max-width:768px){.d-none.d-sm-inline-block{display:none!important}.page-title{font-size:1.25rem}.card.sticky-top{position:relative!important}}@media print{.navbar,.page-header,.card:not(:has(#canvas)){display:none}.canvas-container{background:#fff}.col-md-6{flex:0 0 100%;max-width:100%}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.loading{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.hidden{display:none!important}.fade-in{animation:fadeIn .3s ease-in}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.btn .icon{width:18px;height:18px;margin-right:.25rem}html{scroll-behavior:smooth}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}.component-item:hover{background-color:var(--surface-hover, #f1f5f9)!important;border-color:#3b82f6!important}body.tv-mode{overflow:hidden}body.tv-mode .navbar,body.tv-mode .top-right-branding{display:none!important}body.tv-mode .dashboard-layout{display:grid;grid-template-columns:1fr;gap:0;padding:0;min-height:100vh;margin:0}body.tv-mode .sidebar-left,body.tv-mode .sidebar-right{display:none!important;width:0!important;min-width:0!important;padding:0!important}body.tv-mode .canvas-area{width:100vw;height:100vh;overflow:hidden;min-width:100vw;min-height:100vh}body.tv-mode #canvas-body{width:100%;height:100%;display:flex!important;justify-content:center;align-items:center}#btn-exit-tv{position:fixed;top:20px;right:20px;z-index:9999;padding:10px 16px;background-color:#114b7ee6;color:#fff;border:none;border-radius:4px;cursor:pointer;font-weight:600;font-size:14px;transition:all .2s ease;opacity:.7}#btn-exit-tv:hover{opacity:1;background-color:#114b7e;transform:translateY(-2px);box-shadow:0 4px 12px #114b7e66}body:not(.tv-mode) #btn-exit-tv{display:none!important}body.tv-mode #btn-tv-mode{display:none!important}
