:root{--bg-color-primary: #121212;--bg-color-secondary: #1e1e1e;--text-primary-color: #e0e0e0;--text-secondary-color: #a0a0a0;--border-color: #333;--accent-color: #3b82f6;--color-up: #ef5350;--color-down: #26a69a;--panel-header-bg: #2a2a2a}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background-color:var(--bg-color-primary);color:var(--text-primary-color);font-size:14px}.page{max-width:1440px;margin:0 auto;padding:24px 16px 48px;display:flex;flex-direction:column;gap:16px}.top{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap}h1{font-size:24px;font-weight:600}.subtitle{color:var(--text-secondary-color);margin-top:4px}.actions{display:flex;align-items:center;gap:16px}.link{color:var(--text-secondary-color);text-decoration:none}.link:hover{color:var(--text-primary-color)}.btn{background:var(--accent-color);color:#fff;border:none;border-radius:6px;padding:8px 18px;font-size:14px;cursor:pointer}.btn:disabled{opacity:.6;cursor:default}.progress-label{display:flex;justify-content:space-between;color:var(--text-secondary-color);margin-bottom:6px;font-variant-numeric:tabular-nums}.progress-track,.funnel-track{height:6px;background:var(--panel-header-bg);border-radius:3px;overflow:hidden}.progress-bar,.funnel-bar{height:100%;background:var(--accent-color);border-radius:3px;transition:width .3s ease}.message{padding:12px 16px;border-radius:6px;background:var(--bg-color-secondary);border:1px solid var(--border-color);color:var(--text-secondary-color)}.message.error{color:var(--color-up);border-color:var(--color-up)}.overview{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 900px){.overview{grid-template-columns:1fr}}.card{background:var(--bg-color-secondary);border:1px solid var(--border-color);border-radius:8px;padding:16px;min-width:0}.card-title{font-weight:600;margin-bottom:12px}.count{color:var(--text-secondary-color);font-weight:400;margin-left:4px}.funnel{list-style:none;display:flex;flex-direction:column;gap:10px}.funnel-row{display:flex;justify-content:space-between;gap:12px;margin-bottom:4px;color:var(--text-secondary-color)}.funnel-row b{color:var(--text-primary-color);font-variant-numeric:tabular-nums}.funnel li:last-child .funnel-bar{background:var(--color-up)}.meta{margin-top:14px;font-size:12px;color:var(--text-secondary-color)}.rules{list-style:none;display:flex;flex-direction:column;gap:8px;color:var(--text-secondary-color);line-height:1.6}.rules b{color:var(--text-primary-color);font-weight:500;margin-right:4px}.table-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.table-toolbar .card-title{margin-bottom:0}.search{background:var(--bg-color-primary);border:1px solid var(--border-color);color:var(--text-primary-color);border-radius:6px;padding:6px 10px;width:220px;max-width:100%;font-size:14px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;white-space:nowrap;font-variant-numeric:tabular-nums}th,td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--border-color)}th{position:sticky;top:0;background:var(--panel-header-bg);color:var(--text-secondary-color);font-weight:500;font-size:13px;-webkit-user-select:none;user-select:none}th.sortable{cursor:pointer}th.sortable:hover,th.active{color:var(--text-primary-color)}.num{text-align:right}tbody tr:hover{background:#ffffff08}.stock{color:inherit;text-decoration:none;display:flex;flex-direction:column}.stock:hover .stock-name{color:var(--accent-color)}.stock-code{font-size:12px;color:var(--text-secondary-color)}.up{color:var(--color-up)}.down{color:var(--color-down)}.empty{text-align:center;color:var(--text-secondary-color);padding:32px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border-color)}.tabs button{background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary-color);padding:8px 14px;font-size:14px;cursor:pointer;margin-bottom:-1px}.tabs button:hover{color:var(--text-primary-color)}.tabs button.active{color:var(--text-primary-color);border-bottom-color:var(--accent-color)}.badge{display:inline-block;min-width:22px;padding:1px 6px;border-radius:10px;text-align:center;background:var(--panel-header-bg);font-weight:600}.badge.b4{background:#3b82f640}.badge.b5{background:#ef53504d}.near{color:var(--text-primary-color)}.far{color:var(--text-secondary-color);opacity:.6}.stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}.stat{background:var(--bg-color-primary);border:1px solid var(--border-color);border-radius:6px;padding:10px 12px}.stat-label{font-size:12px;color:var(--text-secondary-color)}.stat-value{font-size:20px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.stat-sub{font-size:12px;color:var(--text-secondary-color);margin-top:2px}.section-note{color:var(--text-secondary-color);font-size:13px;margin:-4px 0 12px;line-height:1.6}.case-ok{color:var(--color-up)}.case-miss{color:var(--text-secondary-color)}.groups{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px}.groups button{background:var(--bg-color-primary);border:1px solid var(--border-color);color:var(--text-secondary-color);border-radius:14px;padding:4px 12px;font-size:13px;cursor:pointer}.groups button.active{color:var(--text-primary-color);border-color:var(--accent-color)}.groups .auto{margin-left:auto;color:var(--text-secondary-color);font-size:13px;display:flex;align-items:center;gap:6px}.grp{font-size:12px;padding:2px 8px;border-radius:10px;background:var(--panel-header-bg)}.grp.touched{background:#ef535040;color:var(--text-primary-color)}.grp.waiting{background:#3b82f640;color:var(--text-primary-color)}.btn.ghost{background:none;border:1px solid var(--border-color);color:var(--text-secondary-color)}.btn.ghost.active{border-color:var(--color-up);color:var(--color-up)}.statusbar{display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center;padding:10px 14px;background:var(--bg-color-secondary);border:1px solid var(--border-color);border-radius:8px;font-variant-numeric:tabular-nums}.pill{color:var(--text-secondary-color)}.pill.on{color:var(--color-up);font-weight:600}.warn{margin-left:6px;color:#f0b429}.muted{color:var(--text-secondary-color)}.small{font-size:12px;font-weight:400;margin-left:8px}.group-block h2{font-size:16px;font-weight:600;margin:4px 0 10px}.live-sections{display:flex;flex-direction:column;gap:20px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.stock-card{background:var(--bg-color-secondary);border:1px solid var(--border-color);border-left:3px solid var(--border-color);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;min-width:0}.stock-card.st-touched{border-left-color:var(--color-up)}.stock-card.st-near{border-left-color:#f0b429}.stock-card.st-gapdown{opacity:.6}.stock-card header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}.tag{font-size:12px;padding:2px 8px;border-radius:10px;background:var(--panel-header-bg);white-space:nowrap}.tag.t-touched{background:#ef535040;color:var(--text-primary-color)}.tag.t-near{background:#f0b42940;color:var(--text-primary-color)}.price-row{display:flex;align-items:baseline;gap:10px;font-variant-numeric:tabular-nums}.price-row b{font-size:22px}.lines{display:flex;flex-direction:column;gap:4px;font-size:13px;font-variant-numeric:tabular-nums}.line{display:grid;grid-template-columns:64px 64px 1fr 1fr;gap:6px;padding:4px 6px;border-radius:4px;background:var(--bg-color-primary)}.line.hit{outline:1px solid var(--color-up)}.stock-card footer{font-size:12px}@media (max-width: 480px){.line{grid-template-columns:56px 56px 1fr}.line .muted{display:none}}.tags{display:flex;flex-wrap:wrap;gap:4px;align-items:center;font-size:11px}.ctag{padding:1px 6px;border-radius:8px;background:var(--bg-color-primary);color:var(--text-secondary-color)}.ctag.hl{background:#3b82f64d;color:var(--text-primary-color)}.concepts-cell{max-width:260px;white-space:normal;color:var(--text-secondary-color);font-size:12px}tr.grow td{background:var(--panel-header-bg);padding-top:10px}.head-right{display:flex;align-items:center;gap:6px}.kbtn{background:none;border:1px solid var(--border-color);color:var(--text-secondary-color);border-radius:6px;font-size:12px;padding:1px 7px;cursor:pointer}.kbtn:hover{color:var(--text-primary-color);border-color:var(--accent-color)}.row-stock{display:flex;align-items:center;gap:10px}.kpop{position:fixed;z-index:50;width:min(1040px,calc(100vw - 16px));max-height:calc(100vh - 16px);overflow:auto;background:var(--bg-color-secondary);border:1px solid #3a3a3a;border-radius:10px;box-shadow:0 12px 32px #00000080;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.kpop.sheet{left:0;right:0;bottom:0;top:auto;width:auto;max-height:88vh;border-radius:12px 12px 0 0;padding-bottom:calc(12px + env(safe-area-inset-bottom))}.kpop-head{display:flex;justify-content:space-between;align-items:center;position:sticky;top:-12px;background:var(--bg-color-secondary);z-index:1;padding-top:2px}.kpop-close{background:none;border:none;color:var(--text-secondary-color);font-size:22px;line-height:1;cursor:pointer;padding:0 4px}.kgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}@media (max-width: 900px){.kgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.kpop.sheet .kgrid{grid-template-columns:1fr}.kcell{background:var(--bg-color-primary);border-radius:8px;padding:8px 8px 4px;min-width:0}.kcell-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:12px;font-variant-numeric:tabular-nums}.kcell-head b{font-size:13px}.kcell-chart{height:210px;width:100%}.kinfo{display:flex;flex-direction:column;gap:12px;padding:12px;font-size:13px}.kinfo-legend{display:flex;flex-wrap:wrap;gap:6px 16px}.kinfo-lines{display:flex;flex-direction:column;gap:6px;font-variant-numeric:tabular-nums}.kinfo-lines div{display:flex;justify-content:space-between}.small-note{font-size:12px;line-height:1.6}.sw{display:inline-block;width:14px;height:2px;vertical-align:middle;margin-right:5px}.sw.dash{height:0;border-top:2px dashed}.sw.dash.ref{border-top:1px dashed #8a8a85}
