:root{color-scheme:light dark;--tg-bg:#f5f7fa;--tg-text:#17212b;--tg-hint:#72808e;--tg-button:#2aabee;--tg-button-text:#fff;--tg-section:#eef2f6;--tg-card:#fff;--tg-border:#e5ebf0;--safe-bottom:0px;--safe-top:0px;--positive:#14865b;--negative:#d84c53;--app-height:100dvh;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
:root[data-theme="dark"]{--tg-bg:#111822;--tg-text:#edf3f7;--tg-hint:#9ca9b4;--tg-section:#192431;--tg-card:#1d2a38;--tg-border:#314253;--positive:#4fd09a;--negative:#ff7d83}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
*{box-sizing:border-box}html{background:var(--tg-bg);overflow-x:hidden}body{margin:0;min-width:320px;background:var(--tg-bg);color:var(--tg-text);font-size:14px;line-height:1.4;overflow-x:hidden}button,input,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:active{transform:scale(.98)}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--tg-button);outline-offset:2px}.app-shell{max-width:720px;margin:auto;min-height:var(--app-height);padding:calc(12px + var(--safe-top)) 16px calc(90px + var(--safe-bottom));overflow-x:hidden}.app-header{padding:4px 0 18px}.brandline{display:flex;align-items:center;gap:8px;min-height:30px}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:var(--tg-button);color:var(--tg-button-text);font-size:19px}.brand{font-weight:750;letter-spacing:-.02em}.source{margin-left:auto;color:var(--tg-hint);font-size:10px;font-weight:750;letter-spacing:.08em;white-space:nowrap}.heading-row{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.eyebrow{margin:0 0 3px;color:var(--tg-button);font-size:10px;font-weight:800;letter-spacing:.13em}h1,h2,p{margin-top:0}h1{margin-bottom:0;font-size:31px;line-height:1.13;letter-spacing:-.05em}h2{margin-bottom:0;font-size:23px;letter-spacing:-.04em}.icon-button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--tg-border);border-radius:13px;background:var(--tg-card);color:var(--tg-text);font-size:23px}.data-status{margin:11px 0 0;color:var(--tg-hint);font-size:12px}.data-status.warning{color:var(--negative)}.bottom-nav{position:fixed;z-index:10;bottom:0;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,1fr);width:min(100%,720px);padding:7px 12px calc(7px + var(--safe-bottom));background:var(--tg-card);border-top:1px solid var(--tg-border);box-shadow:0 -8px 30px #00000008}.nav-button{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:49px;gap:2px;border:0;border-radius:12px;background:transparent;color:var(--tg-hint);font-size:11px;font-weight:700}.nav-button.active{background:color-mix(in srgb,var(--tg-button) 12%,transparent);color:var(--tg-button)}.nav-icon{font-size:21px;line-height:1}.toolbar{display:flex;gap:8px;align-items:center;margin:0 0 14px}.search{min-width:0;flex:1;height:46px;padding:0 14px;border:1px solid var(--tg-border);border-radius:13px;background:var(--tg-card);color:var(--tg-text)}.search::placeholder{color:var(--tg-hint)}.select{height:46px;max-width:100%;padding:0 9px;border:1px solid var(--tg-border);border-radius:13px;background:var(--tg-card);color:var(--tg-text)}.sort-row{display:flex;gap:8px;align-items:center;margin-bottom:14px}.sort-row label{flex:1;min-width:0}.sort-row label .select{width:100%}.sort-row .direction{width:46px;height:46px;flex:0 0 46px}.filter-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:46px;margin-bottom:12px;padding:0 14px;border:1px solid var(--tg-border);border-radius:13px;background:var(--tg-card);color:var(--tg-text);font-weight:700}.chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:12px}.chip{padding:6px 9px;border-radius:8px;background:var(--tg-section);color:var(--tg-text);font-size:12px}.section-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:13px 0 10px;color:var(--tg-hint);font-size:12px}.section-meta strong{color:var(--tg-text);font-weight:750}.card-list{display:grid;gap:9px}.card{min-width:0;padding:13px 13px 11px;border:1px solid var(--tg-border);border-radius:15px;background:var(--tg-card);box-shadow:0 2px 8px #07142206}.card-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.card-title{display:flex;align-items:center;gap:8px;min-width:0}.symbol-badge{display:grid;place-items:center;flex:0 0 31px;width:31px;height:31px;border-radius:10px;background:color-mix(in srgb,var(--tg-button) 13%,var(--tg-card));color:var(--tg-button);font-weight:800;font-size:12px}.symbol-text{min-width:0;font-size:15px;font-weight:800;letter-spacing:-.02em;overflow-wrap:anywhere}.price-block{text-align:right}.price-label{display:block;color:var(--tg-hint);font-size:10px;line-height:1.2}.price-value{font-size:15px;font-weight:800;white-space:nowrap}.card-actions{display:flex;gap:8px;margin-top:11px}.save-button,.expand-button,.load-more,.primary-button,.quiet-button,.inline-button{min-height:44px;border-radius:11px;font-weight:750}.save-button{flex:1;border:1px solid var(--tg-button);background:var(--tg-button);color:var(--tg-button-text)}.save-button.saved{border-color:var(--tg-border);background:var(--tg-section);color:var(--tg-text)}.save-button:disabled{opacity:.55;cursor:wait}.expand-button{flex:0 0 44px;border:1px solid var(--tg-border);background:var(--tg-card);color:var(--tg-text);font-size:18px}.metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;margin-top:12px;padding:10px 0 0;border-top:1px solid var(--tg-border)}.metric{min-width:0}.metric-label{display:block;color:var(--tg-hint);font-size:10px;white-space:nowrap}.metric-value{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:750;font-variant-numeric:tabular-nums}.positive{color:var(--positive)}.negative{color:var(--negative)}.metric-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px 8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--tg-border)}.detail-note,.card-alert{margin:10px 0 0;color:var(--tg-hint);font-size:11px}.card-alert{color:var(--negative)}.extra-metric{margin-top:10px;padding:7px 9px;border-radius:8px;background:var(--tg-section);font-size:12px}.load-more{display:block;width:100%;margin:16px 0;border:1px solid var(--tg-border);background:var(--tg-card);color:var(--tg-text)}.empty{padding:30px 18px;border:1px dashed var(--tg-border);border-radius:16px;background:var(--tg-card);text-align:center}.empty-icon{margin-bottom:12px;color:var(--tg-button);font-size:25px}.empty h2{margin-bottom:7px;font-size:18px}.empty p{margin-bottom:14px;color:var(--tg-hint)}.inline-button{padding:0 18px;border:0;background:var(--tg-button);color:var(--tg-button-text)}.banner{margin-bottom:13px;padding:11px 12px;border:1px solid var(--tg-border);border-radius:11px;background:var(--tg-section);font-size:12px}.banner.warning{border-color:color-mix(in srgb,var(--negative) 35%,var(--tg-border));color:var(--negative)}.signal-rules{margin-bottom:12px;padding:13px;border-radius:13px;background:var(--tg-card);border:1px solid var(--tg-border)}.signal-rules p{margin-bottom:7px;font-weight:750}.rule-list{display:flex;flex-wrap:wrap;gap:6px}.rule{padding:5px 7px;border-radius:7px;background:var(--tg-section);font-size:11px;font-weight:750}.signal-note{margin:10px 0 0;color:var(--tg-hint);font-size:11px}.skeleton{height:137px;border:1px solid var(--tg-border);border-radius:15px;background:linear-gradient(90deg,var(--tg-card),var(--tg-section),var(--tg-card));background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{to{background-position:-200% 0}}.filter-dialog{position:fixed;inset:auto 0 0;width:min(100%,720px);max-height:min(85dvh,760px);margin:auto;padding:19px 17px calc(18px + var(--safe-bottom));border:1px solid var(--tg-border);border-radius:18px 18px 0 0;background:var(--tg-card);color:var(--tg-text);overflow:auto;box-shadow:0 -8px 40px #0003}.filter-dialog::backdrop{background:#08131c88}.sheet-head{display:flex;justify-content:space-between;align-items:center}.sheet-note{margin:12px 0 18px;color:var(--tg-hint)}.filter-field{display:grid;grid-template-columns:minmax(0,1fr) 96px minmax(0,1fr);gap:6px;align-items:center;margin:13px 0}.filter-field label{font-size:12px;font-weight:750}.filter-field input,.filter-field select{width:100%;height:44px;min-width:0;padding:0 7px;border:1px solid var(--tg-border);border-radius:9px;background:var(--tg-bg);color:var(--tg-text)}.sheet-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:23px}.primary-button{border:0;background:var(--tg-button);color:var(--tg-button-text)}.quiet-button{border:1px solid var(--tg-border);background:var(--tg-section);color:var(--tg-text)}.toast{position:fixed;z-index:30;left:50%;bottom:calc(76px + var(--safe-bottom));transform:translate(-50%,12px);width:max-content;max-width:calc(100% - 24px);padding:10px 14px;border-radius:11px;background:var(--tg-text);color:var(--tg-bg);box-shadow:0 6px 25px #0003;opacity:0;pointer-events:none;transition:opacity .2s,transform .2s}.toast.visible{opacity:1;transform:translate(-50%,0);pointer-events:auto}.toast button{margin-left:12px;padding:6px 2px;border:0;background:transparent;color:inherit;text-decoration:underline;font-weight:800}@media(max-width:360px){.app-shell{padding-left:12px;padding-right:12px}.source{font-size:9px}.card{padding:11px}.metric-value{font-size:12px}.filter-field{grid-template-columns:minmax(0,1fr) 80px minmax(0,1fr)}}

.metric-value{font-size:14px;overflow-wrap:anywhere;white-space:normal}.toast button{min-width:44px;min-height:44px}

.keyboard-open .bottom-nav{display:none}.keyboard-open .app-shell{padding-bottom:16px}

.metrics{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 8px}@media(min-width:400px){.metrics{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}}

.change-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px;padding-top:12px;border-top:1px solid var(--tg-border)}.change-column{min-width:0}.change-column+.change-column{padding-left:12px;border-left:1px solid var(--tg-border)}.change-column h3{margin:0 0 5px;color:var(--tg-hint);font-size:11px;font-weight:800;letter-spacing:.04em}.change-metric{min-width:0;padding:7px 0}.change-metric+.change-metric{border-top:1px solid var(--tg-border)}.change-metric .metric-value{margin-top:2px}.metric-time{display:block;margin-top:2px;color:var(--tg-hint);font-size:11px;line-height:1.3;overflow-wrap:anywhere}

.signal-history{margin-top:22px;padding:14px;border:1px solid var(--tg-border);border-radius:15px;background:var(--tg-card)}.signal-history h2{margin:0 0 4px;font-size:17px}.signal-history p{margin:0 0 12px;color:var(--tg-hint);font-size:11px}.signal-history-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.signal-history-list li{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:10px 0;border-top:1px solid var(--tg-border)}.signal-history-list strong{min-width:0;overflow-wrap:anywhere}.signal-history-list time{flex:0 0 auto;color:var(--tg-hint);font-size:11px;font-variant-numeric:tabular-nums;text-align:right}.signal-history-empty{padding:10px 0;color:var(--tg-hint);font-size:12px}
.previous-rules{display:block;color:var(--tg-hint);font-size:10px}
.header-actions{display:flex;align-items:center;gap:7px}.share-button{min-height:44px;padding:0 12px;border:1px solid var(--tg-border);border-radius:13px;background:var(--tg-card);color:var(--tg-text);font-size:12px;font-weight:750}
.onboarding-dialog{width:min(calc(100% - 32px),390px);max-height:calc(100dvh - 32px);padding:24px;border:1px solid var(--tg-border);border-radius:20px;background:var(--tg-card);color:var(--tg-text);box-shadow:0 20px 65px #0004;overflow:auto}.onboarding-dialog::backdrop{background:#08131caa}.onboarding-mark{display:grid;place-items:center;width:45px;height:45px;margin-bottom:18px;border-radius:14px;background:var(--tg-button);color:var(--tg-button-text);font-size:29px}.onboarding-dialog h2{margin:0 0 8px;font-size:28px}.onboarding-intro{margin:0;color:var(--tg-hint)}.onboarding-list{display:grid;gap:10px;margin:20px 0 24px;padding-left:20px}.onboarding-list li{padding-left:2px}.onboarding-start{width:100%;padding:0 16px}
