@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,560..700&family=IBM+Plex+Sans:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--font-display: "Fraunces", "Songti SC", serif;--font-body: "IBM Plex Sans", "PingFang SC", sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--ink: #1a242d;--muted: #5d6b75;--accent: #1f6f57;--accent-strong: #155541;--up: #c23b2a;--down: #1f6f57;--line: rgb(255 255 255 / .55);--bg: #e8eef3;--glass: rgb(255 255 255 / .38);--glass-strong: rgb(255 255 255 / .52);--glass-soft: rgb(255 255 255 / .26);--glass-accent: rgb(31 111 87 / .28);--glass-danger: rgb(194 59 42 / .18);--glass-ink: rgb(26 36 45 / .12);--glass-blur: 18px;--glass-blur-inner: 12px;--glass-saturate: 1.45;--glass-shadow: inset 0 1px 0 rgb(255 255 255 / .62), 0 10px 30px rgb(26 36 45 / .06);color:var(--ink);background:var(--bg);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px}button,input,textarea{font:inherit}.page{position:relative;isolation:isolate;min-height:100vh;padding:0 0 2rem;overflow-x:clip}.atmosphere{position:absolute;inset:0;z-index:-1;background:radial-gradient(90% 55% at 0% 0%,#d5e4f2 0%,transparent 55%),radial-gradient(70% 45% at 100% 5%,#d9ebe3 0%,transparent 50%),linear-gradient(165deg,#eef2f6,#e8eef2,#e6ebe8)}.orb{position:absolute;border-radius:50%;filter:blur(8px);opacity:.45;animation:drift 18s ease-in-out infinite alternate}.orb-a{width:min(42vw,26rem);height:min(42vw,26rem);top:-10%;left:-8%;background:radial-gradient(circle at 40% 40%,#fff,#9db9d8 70%)}.orb-b{width:min(34vw,22rem);height:min(34vw,22rem);top:8%;right:-6%;background:radial-gradient(circle at 40% 40%,#f3fff8,#9fcbb8 72%);animation-delay:-6s}.glass{background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.panel{width:min(52rem,calc(100% - 2.4rem));margin:1rem auto 0;padding:1.1rem 1.15rem 1.2rem;border:1px solid var(--line);border-radius:18px;background:var(--glass);backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow);animation:rise .2s ease both}.quote-panel{animation-delay:0s}.quote-panel.switching{opacity:.62;transition:opacity .12s ease}.signal-panel,.history-panel{animation-delay:0s}.quote-head,.signal-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.7rem 1rem;align-items:center}.signal-head h2{white-space:nowrap}.quote-head>div:first-child{min-width:0;flex:1 1 12rem}.label{margin:0;color:var(--muted);font-size:.85rem}.quote-name{margin:.2rem 0 0;font-family:var(--font-display);font-size:1.35rem;font-weight:600;word-break:keep-all;overflow-wrap:break-word}.quote-name span{color:var(--muted);font-family:var(--font-mono);font-size:.95rem;font-weight:500}.badges{display:flex;flex-wrap:wrap;gap:.4rem;justify-content:flex-end}.session{padding:.35rem .7rem;border-radius:999px;font-size:.82rem;font-weight:600}.engine{margin:.45rem 0 0;font-weight:700}.engine.ai{color:var(--accent)}.engine.rule{color:var(--down)}.session.open{background:var(--glass-accent);color:var(--accent-strong);border:1px solid rgb(255 255 255 / .45);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.session.closed{background:var(--glass-ink);color:var(--muted);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.quote-main{display:flex;flex-wrap:wrap;align-items:baseline;gap:.75rem 1rem;margin-top:.85rem}.price{margin:0;font-family:var(--font-mono);font-size:clamp(2.2rem,6vw,3rem);font-weight:600;letter-spacing:-.03em}.change{margin:0;font-family:var(--font-mono);font-weight:600}.up{color:var(--up)}.down{color:var(--down)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.65rem;margin-top:1rem}.metrics div{display:grid;gap:.2rem;padding:.65rem .7rem;border-radius:14px;background:var(--glass-soft);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.metrics span{color:var(--muted);font-size:.8rem}.metrics strong{font-family:var(--font-mono);font-weight:600}.kline-wrap{margin-top:1rem}.kline-toolbar{display:flex;justify-content:space-between;align-items:center;gap:.75rem;flex-wrap:wrap;margin-bottom:.55rem}.period-tabs{display:inline-flex;gap:.3rem;padding:.2rem;border:1px solid var(--line);border-radius:999px;background:var(--glass);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.period-tab{appearance:none;border:0;cursor:pointer;min-height:1.9rem;padding:.25rem .75rem;border-radius:999px;background:transparent;color:var(--muted);font-weight:600;font-size:.86rem}.period-tab.active{background:var(--glass-accent);color:var(--accent-strong);box-shadow:var(--glass-shadow);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate))}.ma-legend{display:flex;flex-wrap:wrap;gap:.45rem;font-size:.78rem;font-weight:700}.ma-legend span,.ma-legend.muted{display:inline-flex;align-items:center;gap:.35rem;padding:.28rem .55rem;border-radius:999px;background:var(--glass-soft);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.ma-legend.muted{font-weight:500;color:var(--muted)}.kline-meta{display:flex;justify-content:space-between;gap:.75rem;margin-bottom:.45rem;color:var(--muted);font-size:.8rem}.kline-chart{width:100%;min-height:360px;height:360px;border:1px solid var(--line);border-radius:14px;background:var(--glass-soft);overflow:hidden;position:relative;backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.kline-chart-slot{position:relative}.chart-empty-overlay{position:absolute;inset:0;margin:0;display:flex;align-items:center;justify-content:center;color:var(--muted);pointer-events:none;background:var(--glass-strong);border-radius:14px;backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate))}.chart-empty{margin:1rem 0 0;color:var(--muted)}h2{margin:0;font-family:var(--font-display);font-size:1.2rem;font-weight:600}.actions{display:flex;flex-wrap:wrap;gap:.5rem}.primary,.ghost{appearance:none;border:0;cursor:pointer;min-height:2.4rem;padding:.45rem .95rem;border-radius:999px;font-weight:600}.primary{background:var(--glass-accent);color:var(--accent-strong);border:1px solid rgb(255 255 255 / .5);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.primary:hover:not(:disabled){background:#1f6f5766}.ghost{border:1px solid var(--line);background:var(--glass);color:var(--ink);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.primary:disabled,.ghost:disabled{opacity:.55;cursor:not-allowed}.banner{margin:.85rem 0 0;padding:.7rem .85rem;border-radius:12px;font-size:.92rem;border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.banner.error{background:var(--glass-danger);color:var(--down)}.banner.info{background:var(--glass-accent);color:var(--accent)}.signal-card{margin-top:.9rem;padding:1rem 1.05rem 1.1rem;border-radius:16px;background:var(--glass-soft);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.action{margin:0;font-family:var(--font-display);font-size:2rem;font-weight:700;letter-spacing:-.03em}.summary{margin:.35rem 0 0;font-size:1.05rem;font-weight:600}.meta,.risk,.levels,.body{margin:.55rem 0 0;color:var(--muted);line-height:1.55}.body{color:var(--ink)}.empty{margin:.9rem 0 0;padding:.7rem .85rem;color:var(--muted);border:1px solid var(--line);border-radius:14px;background:var(--glass-soft);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.history li.empty{margin:0}.history{list-style:none;margin:.85rem 0 0;padding:0;display:grid;gap:.55rem}.history li{display:grid;grid-template-columns:auto 1fr auto;gap:.65rem;align-items:center;padding:.7rem .85rem;border:1px solid var(--line);border-radius:14px;background:var(--glass-soft);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.pill{display:inline-flex;min-width:3rem;justify-content:center;padding:.2rem .55rem;border-radius:999px;font-size:.82rem;font-weight:700;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate))}.action-买入,.action-加仓{color:var(--up)}.action-卖出,.action-减仓{color:var(--down)}.action-持有,.action-观望{color:var(--accent)}.hist-summary{font-weight:600}.levels-box{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.65rem;margin-top:.95rem;padding:.85rem .9rem;border:1px solid var(--line);border-radius:14px;background:var(--glass);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.levels-box div{display:grid;gap:.2rem}.levels-box span{color:var(--muted);font-size:.8rem}.levels-box strong{font-family:var(--font-mono);font-size:1.05rem}.metrics.compact{margin-top:.85rem}.framework{margin-top:1rem;padding-top:.95rem;border-top:1px solid var(--line)}.framework-head{display:flex;justify-content:space-between;gap:1rem;align-items:start}.framework-head h3{margin:0;font-family:var(--font-display);font-size:1.05rem;font-weight:600}.framework-ref{margin:.35rem 0 0;color:var(--muted);font-size:.82rem;line-height:1.45;max-width:34rem}.framework-bias{margin:0;font-family:var(--font-display);font-size:1.35rem;font-weight:700;letter-spacing:-.02em;white-space:nowrap}.symbol-bar{width:min(52rem,calc(100% - 2.4rem));margin:clamp(.9rem,2.5vh,1.4rem) auto 0;animation:rise .2s ease both;display:grid;grid-template-columns:repeat(auto-fit,minmax(12.5rem,1fr));gap:.55rem}.symbol-card{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:.1rem .6rem;padding:.7rem .75rem;border:1px solid var(--line);border-radius:14px;background:var(--glass);text-align:left;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow);transition:border-color .12s ease,background .12s ease}.symbol-card:hover{border-color:#1f6f5773}.symbol-card.active{border-color:var(--accent);border-width:2px;padding:calc(.7rem - 1px) calc(.75rem - 1px);background:var(--glass-strong)}.symbol-name{font-weight:700;font-size:.9rem;color:var(--ink);white-space:nowrap}.symbol-code{grid-column:1;font-family:var(--font-mono);font-size:.75rem;color:var(--muted)}.symbol-price{grid-column:2;grid-row:2;font-family:var(--font-mono);font-size:.88rem;font-weight:700;justify-self:end;white-space:nowrap}.symbol-price.up{color:var(--up)}.symbol-price.down{color:var(--down)}.symbol-regime{grid-column:2;grid-row:1;justify-self:end;font-size:.76rem;font-weight:700;white-space:nowrap}.regime-多头{color:var(--up)}.regime-空头{color:var(--down)}.regime-震荡{color:var(--accent)}.regime-note{margin:.7rem 0 0;color:var(--ink);font-size:.88rem;line-height:1.6}.event-box{margin-top:1rem;padding:.85rem .95rem;border:1px solid var(--line);border-radius:14px;background:var(--glass);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.event-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.4rem .75rem}.event-head h3{margin:0;font-size:1rem}.event-regime{font-size:.78rem;font-weight:700}.event-box .regime-note{margin-top:.45rem;color:var(--muted)}.bias-偏多{color:var(--up)}.bias-偏空{color:var(--down)}.bias-中性{color:var(--accent)}.framework-score{display:flex;align-items:baseline;gap:.55rem;margin-top:.75rem}.framework-score span{color:var(--muted);font-size:.85rem}.framework-score strong{font-family:var(--font-mono);font-size:1.8rem;font-weight:600;letter-spacing:-.03em}.factors{margin-top:.7rem}.checklist{list-style:none;margin:.9rem 0 0;padding:0;display:grid;gap:.3rem}.checklist li{display:grid;grid-template-columns:auto 1fr;gap:.55rem;align-items:baseline;padding:.55rem .7rem;border:1px solid var(--line);border-radius:12px;background:var(--glass-soft);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate))}.checklist li:first-child{border-top:1px solid var(--line)}.check-status{display:inline-flex;min-width:2.6rem;justify-content:center;padding:.18rem .45rem;border-radius:8px;font-size:.78rem;font-weight:700;border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.status-通过{background:var(--glass-accent);color:var(--accent)}.status-观察{background:var(--glass);color:var(--muted)}.status-警惕{background:var(--glass-danger);color:var(--down)}.checklist strong{display:block;font-size:.88rem}.checklist p{margin:.1rem 0 0;color:var(--muted);font-size:.82rem;line-height:1.4}.report{display:grid;gap:.85rem;margin-top:1rem}.report>div{padding:.75rem .85rem;border-radius:14px;background:var(--glass-soft);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur-inner)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}.report h3{margin:0 0 .3rem;font-family:var(--font-display);font-size:.98rem;font-weight:600}.report p{margin:0;color:var(--ink);line-height:1.65;white-space:pre-wrap}.hist-meta{color:var(--muted);font-size:.82rem;font-family:var(--font-mono);white-space:nowrap}.footer{width:min(52rem,calc(100% - 2.4rem));margin:1.2rem auto 0;padding:.7rem .95rem;color:var(--muted);font-size:.85rem;border-radius:999px;background:var(--glass);border:1px solid var(--line);backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));-webkit-backdrop-filter:blur(var(--glass-blur)) saturate(var(--glass-saturate));box-shadow:var(--glass-shadow)}@keyframes rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes drift{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(12px,16px,0) scale(1.05)}}@media(max-width:720px){.atmosphere .orb{opacity:.35}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.history li{grid-template-columns:auto 1fr}.hist-meta{grid-column:2}}@media(prefers-reduced-motion:reduce){.symbol-bar,.panel,.orb{animation:none}}
