#tv_chart_container {
    touch-action: manipulation; /* or auto */
}
/* ===================================================
   RESPONSIVE
=================================================== */
@media(max-width:900px) {
    .app {grid-template-columns: 1fr 50px 260px;}
    .app.panel-closed {grid-template-columns: 1fr 50px 0;}
}

/* ===================================================
   RESET
=================================================== */
* {margin: 0;padding: 0;box-sizing: border-box;scrollbar-width: auto; /* auto | thin | none */scrollbar-color: #000 #f1f1f1;}
html,body{width:100%;height:100%;overflow:hidden;font-family:Segoe UI,Arial,sans-serif;background:#ffffff;}
table th { font-weight: 600;}
.table thead th, .table tfoot th {background-color: unset; color: unset; }
.fa-heart.active {color: red !important;}

/* ===================================================
   APP
=================================================== */
.app{height:100vh;display:grid;grid-template-columns: 1fr 46px 320px;transition:grid-template-columns .25s ease;}
.app.panel-closed{grid-template-columns:1fr 46px 0;}

/* ===================================================
   CHART
=================================================== */
.chart-container{background:#fff;position:relative;overflow:hidden;}
#tv_chart{width:100%;height:100%;}

/* ===================================================
   RIGHT TOOLBAR
=================================================== */
.right-toolbar{background:#fff;border-left:1px solid #e5e7eb;display:flex;flex-direction:column;align-items:center;padding:10px 0;gap:8px;z-index:10;}
.tool{width:42px;height:42px;border:none;background:none;border-radius:8px;cursor:pointer;color:#666;transition:.2s;}
.tool i{font-size:18px;}
.tool:hover{background:#f4f6f8;color:#0d6efd;}
.tool.active{background:#0d6efd;color:#fff;}

/* ===================================================
   SIDE PANEL
=================================================== */
.side-panel{background:#fff;border-left:1px solid #e5e7eb;display:flex;flex-direction:column;overflow:hidden;transition:.25s;}
.app.panel-closed .side-panel{width:0;border:none;}

/* ===================================================
   PANEL HEADER
=================================================== */
.panel-header{height:52px;border-bottom:1px solid #ececec;display:flex;justify-content:space-between;align-items:center;padding:0 15px;flex-shrink:0;}
#panelTitle{font-size:16px;font-weight:600;}
#closePanel{width:34px;height:34px;border:none;border-radius:6px;cursor:pointer;background:none;}
#closePanel:hover{background:#f2f2f2;}

/* ===================================================
   PANEL BODY
=================================================== */
.panel-body{flex:1;overflow:auto;}

/* ===================================================
   WATCHLIST
=================================================== */
.watch-item {display: flex;justify-content: space-between;align-items: center;padding: 5px 15px;border-bottom: 1px solid #f0f0f0;cursor: pointer;transition: .2s;font-size: 14px;}
.watch-item:hover{background:#f8f9fb;}
.watch-item span{font-size:13px;color:#444444;font-weight:600;}

/* ===================================================
   ALERTS
=================================================== */
.alert-item{padding:14px;border-bottom:1px solid #eee;}

/* ===================================================
   NEWS
=================================================== */
.news-item{padding:14px;border-bottom:1px solid #eee;line-height:1.5;}

/* ===================================================
   SETTINGS
=================================================== */
.setting{display:flex;justify-content:space-between;padding:15px;border-bottom:1px solid #eee;}

/* ===================================================
   SCROLLBAR
=================================================== */
.panel-body::-webkit-scrollbar{width:8px;}
.panel-body::-webkit-scrollbar-thumb{background:#d8d8d8;border-radius:10px;}
.panel-body::-webkit-scrollbar-track{background:#fafafa;}


/* ===================================================
   SELECT LIST or DROPDOWNLIST
=================================================== */
.select2-container--default .select2-selection--single{height:38px;border-radius:4px;border:1px solid #ddd;}
.select2-container--default .select2-selection--single .select2-selection__rendered{line-height:36px;padding-left:12px;font-size:16px;}
.select2-container--default .select2-selection--single .select2-selection__arrow{height:36px;}
.select2-dropdown{border:1px solid #ddd;}
.select2-results__options{max-height:70vh !important;}
.select2-results__option{padding:5px 14px;font-size:14px;border-bottom: 1px solid #c3c3c3;}
*/
/* ===================================================
   ALL STOCK
=================================================== */
.watchlist-card{background:#fff;border:1px solid #dcdcdc;border-radius:6px;overflow:hidden;font-size:13px;}
.watchlist-filter{padding:10px;border-bottom:1px solid #ddd;}
.watchlist-table{width:100%;border-collapse:collapse;}
.watchlist-table thead{background:#f1f3f6;}
.watchlist-table th{padding:8px;text-align:left;font-weight:600;position:sticky;top:0;}
.watchlist-table td{padding:5px;border-bottom:1px solid #eee;}
.watchlist-table tbody tr{cursor:pointer;transition:.2s;}
.watchlist-table tbody tr:hover{background:#f7f9fc;}
.text-end{text-align:right;}
.symbol{color:#d32f2f;font-weight:600;}
.up{color:#28a745;font-weight:600;}
.down{color:#e53935;font-weight:600;}
.favorite{color:#d9534f;cursor:pointer;}
.favorite:hover{color:#ff0000;}

/* ===================================================
   HOTLIST
=================================================== */
.hotlist{border:1px solid #d9d9d9;background:#fff;font-size:13px;}
.hot-header {background-color: #f1f3f6;padding: 0.3125rem 0.625rem;font-weight:700;font-size: 0.75rem;color: #433;margin-top: 0.1875rem;}
.refresh-hotlist{cursor:pointer;color:#666;}
.accordion-button{background:#eaf4fb;font-weight:600;padding:8px 12px;}
.accordion-button:not(.collapsed){background:#dff0ff;color:#000;}
.hot-table{width:100%;border-collapse:collapse;}
.hot-table th{padding:6px;font-weight:500;color:#666;border-bottom:1px solid #ddd;}
.hot-table td{padding:6px;border-bottom:1px solid #efefef;}
.hot-table tbody tr:hover{background:#f7fbff;}
.symbol{color:#008000;font-weight:500;}
.gain{color:#008000;font-weight:600;}
.loss{color:#d32f2f;font-weight:600;}
.watch{color:#b7b7b7;cursor:pointer;font-size:14px;}
.watch:hover{color:#d32f2f;}
.text-end{text-align:right;}
table.table-sm th, table.table-sm td {padding-top: 5px;padding-bottom: 5px;line-height: inherit;}

/* ===================================================
   NEWS or ANNOUNCEMENT
=================================================== */
.toolbarnews-item{background:#fff;border:1px solid #e6e6e6;border-radius:6px;margin-bottom:10px;transition:.2s;overflow:hidden;}
.toolbarnews-item:hover{box-shadow:0 2px 8px rgba(0,0,0,.08);border-color:#cfd8dc;}
.toolbarnews-item-header{display:flex;align-items:flex-start;padding:10px;border-bottom:1px solid #f1f1f1;}
.toolbarnews-icon{width:100%;height:34px;color:#fff;display:flex;align-items:center;justify-content:center;margin-right:10px;flex-shrink:0;cursor:pointer;}
.toolbarnews-info{flex:1;}
.toolbarnews-title{font-size:14px;font-weight:600;color:#222;line-height:1.3;}
.toolbarnews-date{font-size:11px;color:#888;margin-top:3px;}
.toolbarnews-date i{margin-right:4px;}
.toolbarnews-body{padding:10px;font-size:13px;color:#555;line-height:1.6;/*max-height:90px;*/overflow:hidden;}
.toolbarnews-item:hover .toolbarnews-body{max-height:500px;}