.stock-list[data-v-4a3cca6d] {
	display: flex;
	height: 100%;
}
.menu-section[data-v-4a3cca6d] {
	width: 200px;
	border-right: 1px solid #e6e6e6;
	background-color: #fff;
	height: 100%;
	overflow-y: auto;
	display: flex;
	flex-direction: column;
}
.create-group-btn[data-v-4a3cca6d] {
	padding: 10px;
	text-align: center;
	border-top: 1px solid #e6e6e6;
	margin-top: auto;
}
.stock-menu[data-v-4a3cca6d] {
	height: 100%;
	border-right: none;
}
.content-section[data-v-4a3cca6d] {
	flex: 1;
	display: flex;
	flex-direction: column;
}
.search-bar[data-v-4a3cca6d] {
	padding: 16px;
	border-bottom: 1px solid #e4e7ed;
}
.search-bar input[data-v-4a3cca6d] {
	width: 100%;
	padding: 8px 12px;
	border: 1px solid #dcdfe6;
	border-radius: 4px;
	font-size: 14px;
}
.list-container[data-v-4a3cca6d] {
	flex: 1;
	overflow-y: auto;
	padding: 8px 0;
}
.stock-info[data-v-4a3cca6d] {
	display: flex;
	flex-direction: column;
}
.stock-item[data-v-4a3cca6d] {
	padding: 12px 16px;
	cursor: pointer;
	transition: all 0.3s;
}
.stock-item[data-v-4a3cca6d]:hover {
	background-color: #f5f7fa;
}
.stock-item.active[data-v-4a3cca6d] {
	background-color: #ecf5ff;
	color: #409eff;
}
.stock-name[data-v-4a3cca6d] {
	font-weight: bold;
	font-size: 14px;
}
.stock-code[data-v-4a3cca6d] {
	font-size: 12px;
	color: #606266;
}
.up[data-v-4a3cca6d] {
	color: #f56c6c;
}
.down[data-v-4a3cca6d] {
	color: #67c23a;
}
[data-v-4a3cca6d] .el-table {
	background-color: transparent;
}
[data-v-4a3cca6d] .el-table__row {
	cursor: pointer;
}
[data-v-4a3cca6d] .el-table__row.current-row {
	background-color: #ecf5ff;
}

/* 右键菜单样式 */
.context-menu[data-v-4a3cca6d] {
	position: fixed;
	background: #fff;
	border: 1px solid #e4e7ed;
	border-radius: 4px;
	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
	padding: 5px 0;
	z-index: 9999;
	min-width: 150px;
}
.context-menu-title[data-v-4a3cca6d] {
	padding: 8px 16px;
	font-size: 14px;
	color: #0a7cf6;
	font-weight: bold;
	border-bottom: 1px solid #ebeef5;
}
.context-menu-item[data-v-4a3cca6d] {
	padding: 8px 16px;
	font-size: 14px;
	color: #606266;
	cursor: pointer;
}
.context-menu-item[data-v-4a3cca6d]:hover {
	background-color: #f5f7fa;
}
.context-menu-divider[data-v-4a3cca6d] {
	height: 1px;
	background-color: #ebeef5;
	margin: 5px 0;
}
.delete-item[data-v-4a3cca6d] {
	color: #f56c6c;
}
.delete-item[data-v-4a3cca6d]:hover {
	background-color: #fef0f0;
}

.trading-vue-ux-wrapper {
        position: absolute;
        display: flex;
}
.tvjs-ux-wrapper-pin {
        position: absolute;
        width: 9px;
        height: 9px;
        z-index: 100;
        background-color: #23a776;
        border-radius: 10px;
        margin-left: -6px;
        margin-top: -6px;
        pointer-events: none;
}
.tvjs-ux-wrapper-head {
        position: absolute;
        height: 23px;
        width: 100%;
}
.tvjs-ux-wrapper-close {
        position: absolute;
        width: 11px;
        height: 11px;
        font-size: 1.5em;
        line-height: 0.5em;
        padding: 1px 1px 1px 1px;
        border-radius: 10px;
        right: 5px;
        top: 5px;
        user-select: none;
        text-align: center;
        z-index: 100;
}
.tvjs-ux-wrapper-close-hb {
}
.tvjs-ux-wrapper-close:hover {
        background-color: #FF605C !important;
        color: #692324 !important;
}
.tvjs-ux-wrapper-full {
}

.t-vue-lbtn {
    z-index: 100;
    pointer-events: all;
    cursor: pointer;
}

.t-vue-lbtn-grp {
    margin-left: 0.5em;
}

.tvjs-spinner {
    display: inline-block;
    position: relative;
    width: 20px;
    height: 16px;
    margin: -4px 0px -1px 0px;
    opacity: 0.7;
}
.tvjs-spinner div {
    position: absolute;
    top: 8px;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    animation-timing-function: cubic-bezier(1, 1, 1, 1);
}
.tvjs-spinner div:nth-child(1) {
    left: 2px;
    animation: tvjs-spinner1 0.6s infinite;
    opacity: 0.9;
}
.tvjs-spinner div:nth-child(2) {
    left: 2px;
    animation: tvjs-spinner2 0.6s infinite;
}
.tvjs-spinner div:nth-child(3) {
    left: 9px;
    animation: tvjs-spinner2 0.6s infinite;
}
.tvjs-spinner div:nth-child(4) {
    left: 16px;
    animation: tvjs-spinner3 0.6s infinite;
    opacity: 0.9;
}
@keyframes tvjs-spinner1 {
0% {
        transform: scale(0);
}
100% {
        transform: scale(1);
}
}
@keyframes tvjs-spinner3 {
0% {
        transform: scale(1);
}
100% {
        transform: scale(0);
}
}
@keyframes tvjs-spinner2 {
0% {
        transform: translate(0, 0);
}
100% {
        transform: translate(7px, 0);
}
}

.trading-vue-legend {
    position: relative;
    z-index: 100;
    font-size: 1.25em;
    margin-left: 10px;
    pointer-events: none;
    text-align: left;
    user-select: none;
    font-weight: 300;
}
@media (min-resolution: 2x) {
.trading-vue-legend {
        font-weight: 400;
}
}
.trading-vue-ohlcv {
    pointer-events: none;
    margin-bottom: 0.5em;
}
.t-vue-lspan {
    font-variant-numeric: tabular-nums;
    font-size: 0.95em;
    color: #999999; /* TODO: move => params */
    margin-left: 0.1em;
    margin-right: 0.2em;
}
.t-vue-title {
    margin-right: 0.25em;
    font-size: 1.45em;
}
.t-vue-ind {
    margin-left: 0.2em;
    margin-bottom: 0.5em;
    font-size: 1.0em;
    margin-top: 0.3em;
}
.t-vue-ivalue {
    margin-left: 0.5em;
}
.t-vue-unknown {
    color: #999999; /* TODO: move => params */
}
.tvjs-appear-enter-active,
.tvjs-appear-leave-active
{
    transition: all .25s ease;
}
.tvjs-appear-enter, .tvjs-appear-leave-to
{
    opacity: 0;
}

.trading-vue-section {
    height: 0;
    position: absolute;
}

.trading-vue-botbar {
    position: relative !important;
}

.tvjs-item-list {
    position: absolute;
    user-select: none;
    margin-top: -5px;
}
.tvjs-item-list-item {
    display: flex;
    align-items: center;
    padding-right: 20px;
    font-size: 1.15em;
    letter-spacing: 0.05em;
}
.tvjs-item-list-item:hover {
    background-color: #76878319;
}
.tvjs-item-list-item * {
    position: relative !important;
}

.trading-vue-tbitem {
}
.trading-vue-tbitem:hover {
    background-color: #76878319;
}
.trading-vue-tbitem-exp {
    position: absolute;
    right: -3px;
    padding: 18.5px 5px;
    font-stretch: extra-condensed;
    transform: scaleX(0.6);
    font-size: 0.6em;
    opacity: 0.0;
    user-select: none;
    line-height: 0;
}
.trading-vue-tbitem:hover
.trading-vue-tbitem-exp {
    opacity: 0.5;
}
.trading-vue-tbitem-exp:hover {
    background-color: #76878330;
    opacity: 0.9 !important;
}
.trading-vue-tbicon {
    position: absolute;
}
.trading-vue-tbitem.selected-item > .trading-vue-tbicon,
.tvjs-item-list-item.selected-item > .trading-vue-tbicon {
     filter: brightness(1.45) sepia(1) hue-rotate(90deg) saturate(4.5) !important;
}
.tvjs-pixelated {
    -ms-interpolation-mode: nearest-neighbor;
    image-rendering: -webkit-optimize-contrast;
    image-rendering: -webkit-crisp-edges;
    image-rendering: -moz-crisp-edges;
    image-rendering: -o-crisp-edges;
    image-rendering: pixelated;
}


.trading-vue-toolbar {
    position: absolute;
    border-right: 1px solid black;
    z-index: 101;
    padding-top: 3px;
    user-select: none;
}

.tvjs-widgets {
    position: absolute;
    z-index: 1000;
    pointer-events: none;
}

.tvjs-drift-enter-active {
    transition: all .3s ease;
}
.tvjs-drift-leave-active {
    transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.tvjs-drift-enter, .tvjs-drift-leave-to
{
    transform: translateX(10px);
    opacity: 0;
}
.tvjs-the-tip {
    position: absolute;
    width: 200px;
    text-align: center;
    z-index: 10001;
    color: #ffffff;
    font-size: 1.5em;
    line-height: 1.15em;
    padding: 10px;
    border-radius: 3px;
    right: 70px;
    top: 10px;
    text-shadow: 1px 1px black;
}

/* Anit-boostrap tactix */
.trading-vue *, ::after, ::before {
    box-sizing: content-box;
}
.trading-vue img {
    vertical-align: initial;
}

.stock-detail[data-v-ea1d1c82] {
	height: 100%;
	width: 100%; 
	background-color: #fff;
	border-radius: 4px;
	box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
	overflow: hidden;
	display: flex;
	flex-direction: column;
}
.detail-content[data-v-ea1d1c82] {
	height: 100%;
	width: 100%;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	position: relative;
	min-height: 300px; /* 确保最小高度 */
	flex: 1 1 auto; /* 允许容器伸缩 */
}

/* 控制区域样式 */
.chart-controls[data-v-ea1d1c82] {
	height: 60px;
	width: 100%;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 0 20px;
	background-color: #f5f7fa;
	border-bottom: 1px solid #e4e7ed;
	z-index: 10;
}

/* trading-vue-js 容器样式 */
.detail-content[data-v-ea1d1c82] .trading-vue {
	width: 100% !important;
	height: calc(100%) !important; /* 减去控制区域高度 */
	position: absolute !important;
	top: 0px; /* 控制区域高度 */
	left: 0;
	right: 0;
	bottom: 0;
	z-index: 5; /* 增加z-index确保图表在最上层 */
}

/* 确保图表内容完全显示 */
.detail-content[data-v-ea1d1c82] .trading-vue :deep(.tv-chart) {
	height: 100% !important;
	overflow: visible !important;
}
.stock-header[data-v-ea1d1c82] {
	padding: 16px 20px;
	border-bottom: 1px solid #e4e7ed;
}
.stock-header h2[data-v-ea1d1c82] {
	margin: 0;
	font-size: 18px;
	color: #303133;
}
.detail-body[data-v-ea1d1c82] {
	flex: 1;
	padding: 20px;
	overflow: auto;
}
.no-selection[data-v-ea1d1c82] {
	height: 100%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: #909399;
	font-size: 14px;
}

/* 控制区域样式 */
.chart-controls[data-v-ea1d1c82] {
	display: flex;
	justify-content: flex-end;
	align-items: center;
	padding: 10px 20px;
	background-color: #f5f7fa;
	border-bottom: 1px solid #e4e7ed;
	height: 60px;
	box-sizing: border-box;
	position: relative;
	z-index: 10; /* 确保在图表上方 */
}
.date-picker-container[data-v-ea1d1c82] {
	display: flex;
	align-items: center;
	margin-right: 20px;
}
.date-separator[data-v-ea1d1c82] {
	margin: 0 10px;
}
.frequency-selector[data-v-ea1d1c82] {
	display: flex;
	align-items: center;
}
.frequency-item[data-v-ea1d1c82] {
	padding: 6px 12px;
	margin: 0 4px;
	border-radius: 4px;
	cursor: pointer;
	font-size: 14px;
	transition: all 0.3s;
	border: 1px solid #dcdfe6;
}
.frequency-item[data-v-ea1d1c82]:hover {
	background-color: #f5f7fa;
}
.frequency-item.active[data-v-ea1d1c82] {
    background-color: #409EFF;
    color: white;
    border-color: #409EFF;
}
.policy-controls[data-v-ea1d1c82] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-right: auto;
}
.strategy-selectors[data-v-ea1d1c82] {
    display: flex;
    align-items: center;
    gap: 12px;
}
.selector-block[data-v-ea1d1c82] {
    display: flex;
    align-items: center;
    gap: 6px;
}
.group-select[data-v-ea1d1c82],
.strategy-select[data-v-ea1d1c82] {
    width: 140px;
}
.strategy-tags-container[data-v-ea1d1c82] {
    width: 240px;
    min-height: 40px;
    border: 1px solid #DCDFE6;
    border-radius: 4px;
    padding: 4px;
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    background-color: #fff;
    max-height: 100px;
    overflow-y: auto;
}
.strategy-tags-container[data-v-ea1d1c82]:hover {
    border-color: #C0C4CC;
}
.strategy-tag[data-v-ea1d1c82] {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    display: flex;
    align-items: center;
}

.stock-home[data-v-1bf511d2] {
	display: flex;
	flex: 1;
	height: calc(100vh - 128px);
	background-color: #f5f7fa;
}
.leftList[data-v-1bf511d2] {
	position: relative;
	border-right: 1px solid #e4e7ed;
	background-color: #fff;
	box-shadow: 2px 0 8px rgba(0, 0, 0, 0.05);
	min-width: 380px;
	max-width: 50%;
}
.resizer[data-v-1bf511d2] {
	width: 4px;
	cursor: ew-resize;
	position: absolute;
	top: 0;
	right: -2px;
	bottom: 0;
	background-color: transparent;
	transition: background-color 0.3s;
}
.resizer[data-v-1bf511d2]:hover {
	background-color: #409eff;
}
.rightChart[data-v-1bf511d2] {
	flex-grow: 1;
	overflow: hidden;
	display: flex;
	flex-direction: column;
	height: 100%; /* 确保高度为100% */
	position: relative;
}

.stock-header[data-v-3310c8d0] {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding: 0 2rem;
	height: 60px;
	width: 100%;
	background-color: #fff;
	box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
.left-section[data-v-3310c8d0] {
	display: flex;
	align-items: center;
}
.logo[data-v-3310c8d0] {
	height: 40px;
	margin-right: 1rem;
}
.system-title[data-v-3310c8d0] {
	font-size: 1.5rem;
	color: #333;
	margin: 0;
}
.main-nav[data-v-3310c8d0] {
	margin: 0 2rem;
}
.menu-list[data-v-3310c8d0] {
	display: flex;
	list-style: none;
	margin: 0;
	padding: 0;
	gap: 2rem;
}
.menu-list li a[data-v-3310c8d0] {
	text-decoration: none;
	color: #333;
	font-weight: 500;
}
.menu-list li a[data-v-3310c8d0]:hover {
	color: #1890ff;
}
.dropdown[data-v-3310c8d0] {
	position: relative;
}
.dropdown-btn[data-v-3310c8d0] {
	background: none;
	border: none;
	cursor: pointer;
	font-weight: 500;
	color: #333;
}
.dropdown-content[data-v-3310c8d0] {
	display: none;
	position: absolute;
	background-color: #fff;
	min-width: 160px;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
	z-index: 1;
}
.dropdown:hover .dropdown-content[data-v-3310c8d0] {
	display: block;
}
.dropdown-content li[data-v-3310c8d0] {
	padding: 0.5rem 1rem;
}
.dropdown-content li[data-v-3310c8d0]:hover {
	background-color: #f5f5f5;
}
.right-section[data-v-3310c8d0] {
	display: flex;
	align-items: center;
}
.user-info[data-v-3310c8d0] {
	display: flex;
	align-items: center;
	gap: 12px;
}
.welcome-text[data-v-3310c8d0] {
	color: #333;
	font-size: 14px;
	font-weight: 500;
}

.stock-footer[data-v-d3c79a8c] {
	background-color: #f5f5f5;
	padding: 10px 0;
	margin-top: auto;
	width: 100%;
}
.footer-content[data-v-d3c79a8c] {
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 2px;
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 10px;
}
.footer-section[data-v-d3c79a8c] {
	text-align: center;
}
.copyright[data-v-d3c79a8c] {
	color: #666;
	margin: 0;
	font-size: 13px;
}
.footer-links[data-v-d3c79a8c] {
	list-style: none;
	padding: 0;
	margin: 0;
	display: flex;
	gap: 10px;
}
.footer-links li a[data-v-d3c79a8c] {
	color: #666;
	text-decoration: none;
	font-size: 14px;
}
.footer-links li a[data-v-d3c79a8c]:hover {
	color: #1890ff;
}
@media (max-width: 768px) {
.footer-links[data-v-d3c79a8c] {
		flex-direction: column;
		gap:5px;
}
}

#app {
    display: flex;
    height: 100vh;
}

  /* #app is a flex row but its single child never grew, so the whole
     page (header + page + footer) sized itself to its content: on a
     1600px window it stayed 1222px wide, leaving the right side empty
     and freezing the chart at whatever width it first measured.
     Let the wrapper take all the space, and min-width:0 so it can
     still shrink below the chart's intrinsic width. */
#app > div {
    flex: 1 1 auto;
    min-width: 0;
}


