/* ============ Doubled Stocks Viewer ============ */
*{
margin:0;padding:0;box-sizing:border-box
}

body{
background:#0d1117;color:#c9d1d9;font-family:\'Microsoft YaHei\',\'Segoe UI\',sans-serif;line-height:1.6
}

.doubled-shell{
max-width:1300px;margin:0 auto;padding:20px
}

.ds-topbar{
display:flex;align-items:center;gap:16px;padding:16px 20px;background:#161b22;border:1px solid #30363d;border-radius:12px;margin-bottom:20px;flex-wrap:wrap
}

.ds-title{
font-size:1.3em;color:#58a6ff;white-space:nowrap;margin:0
}

.ds-stats{
color:#8b949e;font-size:.85em;white-space:nowrap
}

.ds-stats span{
margin-left:10px
}

.ds-search{
display:flex;gap:8px;flex:1;min-width:280px;max-width:600px
}

.ds-search input{
flex:1;padding:8px 14px;border-radius:8px;border:1px solid #30363d;background:#0d1117;color:#e6edf3;font-size:.95em;outline:none
}

.ds-search input:focus{
border-color:#58a6ff;box-shadow:0 0 0 2px rgba(88,166,255,.2)
}

.ds-search button{
padding:8px 18px;border-radius:8px;border:1px solid #58a6ff;background:rgba(88,166,255,.15);color:#58a6ff;font-weight:600;cursor:pointer;transition:.2s
}

.ds-search button:hover{
background:#58a6ff;color:#0d1117
}

.ds-tags{
display:flex;gap:6px;flex-wrap:wrap;margin:0 0 16px;padding:0
}

.tag-btn{
padding:4px 12px;border-radius:16px;border:1px solid #30363d;background:#161b22;color:#8b949e;font-size:.78em;cursor:pointer;transition:.2s
}

.tag-btn:hover{
border-color:#58a6ff;color:#58a6ff
}

.tag-btn.active{
border-color:#58a6ff;background:rgba(88,166,255,.15);color:#58a6ff
}

.ds-tabs{
display:flex;gap:0;border-bottom:2px solid #21262d;margin-bottom:0;padding:0
}

.ds-tab{
padding:10px 24px;color:#8b949e;cursor:pointer;font-size:.92em;border-bottom:2px solid transparent;margin-bottom:-2px;transition:.2s
}

.ds-tab:hover{
color:#c9d1d9
}

.ds-tab.active{
color:#58a6ff;border-bottom-color:#58a6ff
}

#dsChart, #dsList, #dsAnalysis, #dsWatch{
display:none;background:#161b22;border:1px solid #30363d;border-top:none;border-radius:0 0 12px 12px;padding:20px
}

#dsChart.active, #dsList.active, #dsAnalysis.active, #dsWatch.active{
display:block
}

.ds-chart-area{
min-height:500px
}

.ds-chart-area .stock-title{
font-size:1.2em;color:#e6edf3;margin-bottom:4px
}

.ds-chart-area .stock-info{
color:#8b949e;font-size:.88em;margin-bottom:12px
}

.ds-chart-area .stock-info span{
margin-right:16px
}

.ds-hint{
text-align:center;padding:120px 20px;color:#484f58;font-size:1.1em
}

#chartContainer{
width:100%;height:450px;border-radius:8px;overflow:hidden
}

#volContainer{
width:100%;height:100px;margin-top:8px;border-radius:8px;overflow:hidden
}

.ds-legend{
display:flex;gap:20px;margin-top:10px;padding:10px 0;border-top:1px solid #21262d;font-size:.82em
}

.ds-legend span{
display:flex;align-items:center;gap:4px
}

.ds-legend .dot{
width:12px;height:3px;border-radius:2px;display:inline-block
}

.ds-list-header{
padding:14px 20px;border-bottom:1px solid #30363d;display:flex;align-items:center;gap:12px
}

.ds-list-header h3{
font-size:1em;color:#58a6ff;margin:0
}

.ds-list-header .filter-input{
padding:5px 10px;border-radius:6px;border:1px solid #30363d;background:#0d1117;color:#e6edf3;font-size:.85em;width:200px;outline:none
}

.ds-list-header .filter-input:focus{
border-color:#58a6ff
}

.list-wrap{
max-height:500px;overflow-y:auto
}

.list-ds-table{
width:100%;border-collapse:collapse;font-size:.82em
}

.list-ds-table thead th{
background:#21262d;color:#58a6ff;padding:8px 10px;text-align:center;position:sticky;top:0;z-index:1;cursor:pointer;user-select:none
}

.list-ds-table thead th:hover{
color:#79c0ff
}

.list-ds-table td{
padding:6px 10px;text-align:center;border-bottom:1px solid #21262d;cursor:pointer
}

.list-ds-table tr:hover{
background:rgba(88,166,255,.06)
}

.list-ds-table .code{
font-family:Consolas,monospace;color:#79c0ff
}

.list-ds-table .name{
color:#e6edf3;text-align:left
}

.num{
font-variant-numeric:tabular-nums
}

.cross-g{
color:#3fb950
}

.cross-d{
color:#f85149
}

.kpi-row{
display:flex;gap:12px;flex-wrap:wrap;margin-bottom:24px
}

.kpi{
background:#21262d;border:1px solid #30363d;border-radius:10px;padding:16px 20px;text-align:center;flex:1;min-width:120px
}

.kpi-num{
font-size:1.8em;font-weight:700;color:#58a6ff
}

.kpi-label{
font-size:.8em;color:#8b949e;margin-top:4px
}

.sec-title{
color:#58a6ff;font-size:1.05em;margin:24px 0 12px;padding-bottom:8px;border-bottom:1px solid #21262d
}

.rpt-ds-table{
width:100%;border-collapse:collapse;font-size:.88em;margin-bottom:12px
}

.rpt-ds-table thead th{
background:#21262d;color:#58a6ff;padding:8px 12px;text-align:center;border:1px solid #30363d
}

.rpt-ds-table td{
padding:6px 12px;text-align:center;border:1px solid #30363d
}

.rpt-ds-table .total-row{
background:rgba(88,166,255,.08);font-weight:600
}

.rpt-ds-table .total-row td{
color:#58a6ff
}

.ds-table-scroll{
overflow-x:auto;margin-bottom:12px
}

.note{
color:#8b949e;font-size:.88em;margin:8px 0 16px
}

.note.highlight{
color:#f0883e;font-size:.95em
}

.analysis-grid{
display:grid;grid-template-columns:1fr 1fr;gap:20px;margin:12px 0 24px
}

.analysis-grid .full{
grid-column:1/-1
}

.analysis-grid img{
width:100%;border-radius:8px;border:1px solid #30363d
}

.caption{
color:#8b949e;font-size:.85em;text-align:center;margin-top:8px
}

.sig-ds-table{
width:100%;border-collapse:collapse;font-size:.88em;margin-bottom:16px
}

.sig-ds-table th{
background:#21262d;color:#58a6ff;padding:8px 12px;text-align:center;border:1px solid #30363d
}

.sig-ds-table td{
padding:8px 12px;text-align:center;border:1px solid #30363d
}

.sig-buy{
color:#3fb950;font-weight:700
}

.sig-hold{
color:#58a6ff;font-weight:700
}

.sig-reduce{
color:#f0883e;font-weight:700
}

.sig-sell{
color:#f85149;font-weight:700
}

.conclusions{
margin:12px 0 24px
}

.conclusion{
padding:12px 16px;margin:8px 0;background:#21262d;border:1px solid #30363d;border-radius:8px;display:flex;align-items:flex-start;gap:12px;font-size:.92em
}

.conclusion b{
color:#e6edf3
}

.c-num{
display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:#58a6ff;color:#0d1117;font-weight:700;font-size:.85em;flex-shrink:0
}

.footer{
color:#484f58;font-size:.8em;text-align:center;padding:16px 0 0;border-top:1px solid #21262d;margin-top:20px
}

@media(max-width:768px){
.analysis-grid{grid-template-columns:1fr}.topbar{flex-direction:column;align-items:stretch}.search-box{max-width:100%}
}

.watch-top{
display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap
}

.watch-top h3{
font-size:1em;color:#58a6ff;margin:0
}

.watch-add-box{
display:flex;gap:6px;flex:1;max-width:400px
}

.watch-add-box input{
flex:1;padding:7px 12px;border-radius:6px;border:1px solid #30363d;background:#0d1117;color:#e6edf3;font-size:.85em;outline:none
}

.watch-add-box input:focus{
border-color:#58a6ff
}

.watch-add-box button{
padding:7px 14px;border-radius:6px;border:1px solid #58a6ff;background:rgba(88,166,255,.15);color:#58a6ff;font-weight:600;cursor:pointer;font-size:.85em
}

.watch-add-box button:hover{
background:#58a6ff;color:#0d1117
}

.watch-ds-table{
width:100%;border-collapse:collapse;font-size:.82em
}

.watch-ds-table thead th{
background:#21262d;color:#58a6ff;padding:8px;text-align:center;position:sticky;top:0;z-index:1;white-space:nowrap
}

.watch-ds-table td{
padding:7px 8px;text-align:center;border-bottom:1px solid #21262d
}

.watch-ds-table tr:hover{
background:rgba(88,166,255,.04)
}

.watch-ds-table .code{
font-family:Consolas,monospace;color:#79c0ff
}

.watch-cell{
text-align:right;font-variant-numeric:tabular-nums;font-family:Consolas,monospace;font-size:.85em
}

.signal-badge{
display:inline-block;padding:2px 10px;border-radius:10px;font-size:.78em;font-weight:700;color:#0d1117;width:42px;text-align:center
}

.signal-bull{
background:#3fb950
}

.signal-flat{
background:#8b949e
}

.signal-bear{
background:#f85149
}

.btn-remove-wl{
background:none;border:1px solid transparent;color:#8b949e;cursor:pointer;font-size:.9em;padding:2px 6px;border-radius:4px
}

.btn-remove-wl:hover{
border-color:#f85149;color:#f85149
}

.btn-add-wl{
background:none;border:1px solid #3fb950;color:#3fb950;cursor:pointer;font-weight:600;padding:3px 10px;border-radius:5px;font-size:.78em
}

.btn-add-wl:hover{
background:rgba(63,185,80,.15)
}

.btn-add-wl.added{
border-color:#8b949e;color:#8b949e
}

.watch-summary{
display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px
}

.ws-item{
padding:8px 14px;background:#21262d;border-radius:8px;text-align:center;min-width:90px
}

.ws-num{
font-size:1.3em;font-weight:700
}

.ws-lbl{
font-size:.72em;color:#8b949e;margin-top:2px
}

.watch-list{
max-height:460px;overflow-y:auto
}
