:root{--bg: var(--tg-theme-bg-color, #f2f2f7);--card: var(--tg-theme-secondary-bg-color, #ffffff);--text: var(--tg-theme-text-color, #1d1d1f);--hint: var(--tg-theme-hint-color, #6e6e73);--link: var(--tg-theme-link-color, #0a84ff);--accent: #0a84ff;--border: rgba(60, 60, 67, .14);--subtle: rgba(118, 118, 128, .1);--positive: #d70015;--negative: #0a7d32;--warn: #b26a00;--danger: #d70015;--ok: #0a7d32;--radius: 16px}@media(prefers-color-scheme:dark){:root{--bg: var(--tg-theme-bg-color, #000000);--card: var(--tg-theme-secondary-bg-color, #1c1c1e);--text: var(--tg-theme-text-color, #f2f2f7);--hint: var(--tg-theme-hint-color, #8e8e93);--border: rgba(255, 255, 255, .14);--subtle: rgba(118, 118, 128, .24);--positive: #ff6961;--negative: #30d158}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{min-height:100%;margin:0}body{background:var(--bg);color:var(--text);font:15px/1.45 -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei UI,sans-serif;overflow-x:hidden}button{color:inherit;font:inherit}.app{min-height:100dvh;background:var(--bg);padding-bottom:calc(64px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.topbar-main{display:flex;align-items:center;gap:9px;min-width:0}.topbar-main>div{min-width:0}.topbar strong{display:block;font-size:15px;line-height:1.2}.topbar-main span:not(.status-dot){display:block;margin-top:1px;overflow:hidden;color:var(--hint);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.status-dot{flex:0 0 7px;width:7px;height:7px;border-radius:50%;background:var(--hint)}.status-dot.ok{background:var(--ok)}.status-dot.warn{background:var(--warn)}.status-dot.danger{background:var(--danger)}.pull-indicator{display:flex;align-items:center;justify-content:center;gap:6px;overflow:hidden;color:var(--hint);font-size:11px;transition:height .15s ease}.pull-indicator.visible svg{animation:spin 1s linear infinite}.icon-button{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--border);border-radius:50%;background:var(--card)}.icon-button.spinning svg{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.content{width:min(100%,760px);margin:0 auto;padding:14px 14px 24px}.page-stack{display:flex;flex-direction:column;gap:12px}.card{display:block;width:100%;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);box-shadow:0 1px 2px #00000008;text-align:left}.section-note{color:var(--hint);font-size:11px;font-weight:500}button.card{-webkit-appearance:none;-moz-appearance:none;appearance:none}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 10px;color:var(--hint);font-size:13px;font-weight:600}.status-card .section-head,.account-card .section-head,.shortcut-card .section-head{margin:0 0 4px}.status-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.status-title{display:block;font-size:17px;line-height:1.3}.status-foot{display:flex;justify-content:space-between;gap:8px;margin-top:10px;color:var(--hint);font-size:12px}.badge{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border-radius:999px;background:var(--subtle);color:var(--hint);font-size:11px;font-weight:700;white-space:nowrap}.badge.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent)}.badge.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 14%,transparent)}.badge.danger{color:var(--danger);background:color-mix(in srgb,var(--danger) 12%,transparent)}.notice{margin:10px 0 0;color:var(--hint);font-size:12px}.error-text{color:var(--danger)}.account-list{padding:4px 14px}.account-row{display:flex;align-items:center;gap:10px;width:100%;padding:11px 0;border:0;border-bottom:1px solid var(--border);background:transparent;text-align:left}.account-row:last-child{border-bottom:0}.account-row-main{flex:1;min-width:0}.account-row-main strong{display:block;overflow:hidden;font-size:14px;text-overflow:ellipsis;white-space:nowrap}.account-row-main span{display:block;margin-top:2px;overflow:hidden;color:var(--hint);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.account-row-metrics{flex:0 0 auto;text-align:right;font-variant-numeric:tabular-nums}.account-row-metrics strong{display:block;font-size:16px}.account-row-metrics span{display:block;margin-top:1px;font-size:12px;font-weight:600}.account-row>svg{flex:0 0 auto;color:var(--hint)}.account-grid{display:grid;grid-template-columns:1fr;gap:10px}.account-card{padding:14px}.account-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px;font-size:15px;font-weight:700}.account-head svg{color:var(--hint)}.metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px 12px}.metric{min-width:0}.metric-label{display:block;color:var(--hint);font-size:11px}.metric-value{display:block;margin-top:1px;font-size:18px;font-weight:700;line-height:1.25;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.metric-sub{display:block;margin-top:2px;color:var(--hint);font-size:11px;font-variant-numeric:tabular-nums}.positive{color:var(--positive)}.negative{color:var(--negative)}.neutral{color:var(--text)}.signal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.signal-card{min-width:0;padding:10px;border:1px solid var(--border);border-radius:13px;background:var(--card);box-shadow:0 1px 2px #00000008}.signal-card span{display:block;color:var(--hint);font-size:10px}.signal-card strong{display:block;margin-top:3px;overflow:hidden;font-size:15px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap}.signal-card small{display:block;margin-top:4px;color:var(--hint);font-size:10px;line-height:1.3}.shortcut-card{display:flex;align-items:center;justify-content:space-between;gap:12px}.shortcut-card svg{color:var(--hint)}.shortcut-title{display:block;font-size:18px}.shortcut-sub{display:block;margin-top:2px;color:var(--hint);font-size:12px}.select-row{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid var(--border);border-radius:14px;background:var(--card)}.select-row>span{flex:0 0 auto;color:var(--hint);font-size:12px}.select-wrap,.date-select{position:relative;display:flex;align-items:center;flex:1;min-width:0}.select-wrap select,.date-select select{width:100%;height:36px;padding:0 30px 0 10px;border:0;border-radius:9px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--subtle);color:var(--text);font-size:14px;font-weight:600}.select-wrap svg,.date-select svg{position:absolute;right:10px;pointer-events:none;color:var(--hint);transform:rotate(90deg)}.module-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:2px;border-bottom:1px solid var(--border)}.module-tab{min-height:40px;padding:8px 4px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--hint);font-size:13px;font-weight:600}.module-tab.active{color:var(--text);border-bottom-color:var(--accent)}.date-nav{display:grid;grid-template-columns:38px 1fr 38px;gap:8px;align-items:center}.date-arrow{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--border);border-radius:10px;background:var(--card);color:var(--text)}.date-arrow:disabled{opacity:.35}.pattern-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;color:var(--hint);font-size:11px}.detail-title{margin:8px 0 4px;font-size:20px;line-height:1.25}.detail-copy{margin:6px 0 0;color:var(--hint);font-size:13px}.detail-copy.rule{padding-top:10px;border-top:1px solid var(--border)}.step-list,.factor-list,.factor-groups{display:flex;flex-direction:column;gap:12px}.step{display:flex;gap:10px}.step-index{color:var(--hint);font-size:12px;font-variant-numeric:tabular-nums}.step strong{display:block;font-size:14px}.step p{margin:3px 0 0;color:var(--hint);font-size:12px}.fact-list{display:flex;flex-direction:column;gap:0;margin:0}.fact-list>div{display:flex;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--border)}.fact-list>div:last-child{border-bottom:0}.fact-list dt{color:var(--hint);font-size:12px}.fact-list dd{margin:0;text-align:right;font-size:13px;font-weight:600}.factor-row{padding:10px 0;border-bottom:1px solid var(--border)}.factor-row:last-child{border-bottom:0}.factor-name{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:6px}.factor-name strong{font-size:14px}.factor-name span{color:var(--hint);font-size:11px}.factor-group{padding:10px 0;border-bottom:1px solid var(--border)}.factor-group:last-child{border-bottom:0}.factor-group-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.factor-group-head strong{display:block;font-size:14px}.factor-group-head span{display:block;margin-top:2px;color:var(--hint);font-size:11px}.factor-detail{padding:9px 0;border-bottom:1px solid var(--border)}.factor-detail:last-child{border-bottom:0}.factor-detail-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.factor-detail-top strong{font-size:12px;line-height:1.35}.factor-detail-number{flex:0 0 auto;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}.factor-detail-meta{margin-top:2px;color:var(--hint);font-size:10px;line-height:1.4}.factor-detail-meta span{display:block}.table-like{display:flex;flex-direction:column}.table-like.compact .table-row,.table-like.compact .position-row,.table-like.compact .trade-row{padding:8px 0}.table-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}.table-row:last-child{border-bottom:0}.rank{flex:0 0 22px;color:var(--hint);font-size:12px;font-variant-numeric:tabular-nums}.stock{flex:1;min-width:0}.stock strong,.position-row strong,.trade-row strong{display:block;font-size:14px}.stock span,.position-row span,.trade-row span{display:block;color:var(--hint);font-size:11px;overflow-wrap:anywhere}.weight{flex:0 0 auto;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.position-row,.trade-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.position-row:last-child,.trade-row:last-child{border-bottom:0}.position-value,.trade-value{text-align:right;font-variant-numeric:tabular-nums}.nav-chart{display:block;width:100%;height:auto;margin:12px 0 4px;color:var(--accent)}.limitations{margin:10px 0 0;padding-left:18px;color:var(--hint);font-size:11px}.pattern-meta{padding-bottom:10px}.conditions{margin-top:10px;border-top:1px solid var(--border);padding-top:8px}.conditions summary{color:var(--hint);font-size:12px;font-weight:600}.condition-group{margin-top:8px}.condition-group strong{font-size:12px}.condition-group ul{margin:4px 0 0;padding-left:16px;color:var(--hint);font-size:11px}.candidate-stack{display:flex;flex-direction:column;gap:10px}.candidate-card{padding:12px}.candidate-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.candidate-title{display:flex;align-items:center;gap:8px}.rank-badge{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--subtle);color:var(--hint);font-size:11px;font-weight:700}.candidate-title strong{display:block;font-size:15px}.candidate-title span{display:block;color:var(--hint);font-size:11px}.candidate-close{font-size:15px;font-variant-numeric:tabular-nums}.candidate-chart{display:block;width:100%;border-radius:10px;background:var(--subtle)}.chart-placeholder{display:grid;place-items:center;min-height:160px;border-radius:10px;background:var(--subtle);color:var(--hint);font-size:12px}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;background:#000;color:#fff}.viewer-bar{display:flex;align-items:center;gap:8px;width:100%;padding:calc(12px + env(safe-area-inset-top)) 14px 12px;border:0;background:#000000b8;color:#fff;font-size:13px;text-align:left}.viewer-bar span:nth-child(2){flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-close{color:#ffffffb3}.viewer-body{display:grid;place-items:center;flex:1;padding:10px}.viewer-chart{max-width:100%;max-height:100%;object-fit:contain}.empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 16px;border:1px dashed var(--border);border-radius:var(--radius);color:var(--hint);text-align:center}.empty strong{color:var(--text);font-size:14px}.empty span{font-size:12px}.empty.error{border-style:solid}.text-button{margin-top:6px;padding:7px 14px;border:1px solid var(--border);border-radius:999px;background:var(--card);color:var(--link);font-size:13px;font-weight:600}.skeleton-stack{display:flex;flex-direction:column;gap:10px}.skeleton{height:74px;border-radius:var(--radius);background:linear-gradient(90deg,var(--subtle) 25%,transparent 50%,var(--subtle) 75%);background-size:200% 100%;animation:shimmer 1.2s infinite}@keyframes shimmer{to{background-position:-200% 0}}.tabbar{position:fixed;right:0;bottom:0;left:0;z-index:30;padding-bottom:env(safe-area-inset-bottom);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-top:1px solid var(--border)}.tabbar-inner{display:grid;grid-template-columns:repeat(3,1fr);width:min(100%,760px);margin:0 auto}.tab{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;min-height:56px;padding:7px 0 6px;border:0;background:transparent;color:var(--hint);font-size:11px;font-weight:600}.tab.active{color:var(--accent)}.tab.active:before{content:"";position:absolute;top:0;width:18px;height:3px;border-radius:0 0 3px 3px;background:var(--accent)}.gate{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100dvh;padding:28px;background:var(--bg);color:var(--text);text-align:center}.gate-icon{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:var(--card);color:var(--accent);border:1px solid var(--border)}.gate h1{margin:16px 0 8px;font-size:22px}.gate p{max-width:300px;margin:0;color:var(--hint);font-size:13px}@media(min-width:620px){.account-grid{grid-template-columns:1fr 1fr}.content{padding-left:20px;padding-right:20px}}
