.login-container{display:flex;align-items:center;justify-content:center;min-height:100%;height:var(--app-height, 100dvh);width:100%;padding:1.25rem;background:radial-gradient(900px 420px at 50% -10%,rgba(0,124,144,.16),transparent 60%),var(--bg)}.login-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:12px;padding:1.75rem 1.6rem 1.5rem;width:100%;max-width:400px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1.25rem}.login-header{text-align:center;display:flex;flex-direction:column;align-items:center;gap:.4rem}.login-logo{height:40px;margin-bottom:.35rem}.login-header h2{margin:0;font-size:1.25rem;font-weight:650;letter-spacing:-.01em;color:var(--text)}.login-header p{margin:0;font-size:.86rem;color:var(--muted);line-height:1.4;max-width:28ch}.login-form{display:flex;flex-direction:column;gap:.95rem}.form-group{display:flex;flex-direction:column;gap:.35rem}.form-group label{font-size:.78rem;font-weight:550;color:var(--muted)}.form-group input{background:var(--bg-input);border:1px solid var(--border);color:var(--text);padding:.65rem .75rem;border-radius:6px;font-size:.9rem;outline:none;transition:border-color .15s,box-shadow .15s}.form-group input:focus{border-color:var(--accent);box-shadow:0 0 0 2px #007c902e}.login-button{background:var(--accent);color:#fff;border:1px solid var(--accent);padding:.7rem .85rem;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;margin-top:.2rem;transition:filter .15s ease}.login-button:hover{filter:brightness(1.06)}.login-button:disabled{opacity:.5;cursor:not-allowed;filter:none}.login-error,.login-info{padding:.65rem .75rem;border-radius:8px;font-size:.82rem;text-align:left;line-height:1.4}.login-error{background:#f236451a;color:var(--red);border:1px solid rgba(242,54,69,.25)}.login-info{background:#0899811a;color:var(--green);border:1px solid rgba(8,153,129,.25)}.login-footer{text-align:center;font-size:.84rem;color:var(--muted);padding-top:.85rem;border-top:1px solid var(--border)}.login-footer p{margin:0}.register-link{background:none;border:none;padding:0;cursor:pointer;font:inherit;color:var(--accent);font-weight:600}.register-link:hover{text-decoration:underline}:root,[data-theme=dark]{--bg: #131722;--bg-panel: #131722;--bg-elevated: #1e222d;--bg-input: #0f131a;--border: #2a2e39;--border-strong: #363a45;--text: #d1d4dc;--muted: #787b86;--hover: #2a2e39;--hover-text: #ffffff;--accent: #007c90;--accent-soft: color-mix(in srgb, var(--accent) 16%, transparent);--green: #089981;--red: #f23645;--font: "Trebuchet MS", "Segoe UI", sans-serif;--mono: "Trebuchet MS", monospace;--tv-blue: #007c90;--shadow: 0 12px 32px rgba(0, 0, 0, .5);--shadow-sm: 0 1px 0 rgba(255, 255, 255, .03), 0 8px 18px rgba(0, 0, 0, .28);--play-bg: #003e48;--play-border: #007c90;--card-bg: #1e222d;--page-canvas: #131722}[data-theme=light]{--bg: #ffffff;--bg-panel: #ffffff;--bg-elevated: #f0f3fa;--bg-input: #ffffff;--border: #e0e3eb;--border-strong: #d1d4dc;--text: #131722;--muted: #787b86;--hover: #e0e3eb;--hover-text: #131722;--accent: #007c90;--accent-soft: color-mix(in srgb, var(--accent) 12%, transparent);--green: #089981;--red: #f23645;--tv-blue: #007c90;--shadow: 0 12px 32px rgba(19, 23, 34, .12);--shadow-sm: 0 1px 2px rgba(19, 23, 34, .04), 0 8px 20px rgba(19, 23, 34, .06);--play-bg: #e0f2f5;--play-border: #007c90;--card-bg: #ffffff;--page-canvas: #f0f3fa}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;height:var(--app-height, 100dvh);max-width:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font);-webkit-text-size-adjust:100%;overscroll-behavior:none;touch-action:manipulation}button,input,select{font:inherit}.app{display:grid;grid-template-rows:auto 1fr;height:100%;height:var(--app-height, 100dvh);min-height:0;max-width:100%;overflow:hidden}.brand-link{display:flex;align-items:center;text-decoration:none}.strategy-badge{display:inline-flex;align-items:center;gap:.35rem;margin-top:.15rem;font-size:.7rem;font-weight:500;color:var(--muted);max-width:200px}.strategy-badge strong{color:var(--text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.strategy-badge .save-dot{width:6px;height:6px;border-radius:50%;background:var(--muted);flex-shrink:0}.strategy-badge .save-dot.saving{background:#f0b90b}.strategy-badge .save-dot.saved{background:var(--green)}.strategy-badge .save-dot.error{background:var(--red)}.theme-toggle.active{border-color:var(--accent);color:var(--accent);background:#007c9024}.fh-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;border:1px solid var(--border);background:var(--bg-elevated);color:var(--text);border-radius:6px;padding:.42rem .75rem;font-size:.8rem;font-weight:550;line-height:1.2;cursor:pointer;text-decoration:none;white-space:nowrap;transition:border-color .15s ease,background .15s ease,color .15s ease}.fh-btn:hover{border-color:var(--border-strong);color:var(--hover-text)}.fh-btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.fh-btn.primary:hover{filter:brightness(1.06)}.fh-btn.subtle{background:transparent;color:var(--muted)}.fh-btn.subtle:hover{color:var(--text);background:var(--hover)}.fh-btn.danger-ghost{background:transparent;border-color:transparent;color:var(--muted)}.fh-btn.danger-ghost:hover{color:var(--red);background:#f2364514}.fh-btn.danger{background:var(--red);border-color:var(--red);color:#fff}.fh-btn.danger:hover{filter:brightness(1.06)}.fh-btn:disabled{opacity:.5;cursor:not-allowed;filter:none}.fh-chip{display:inline-flex;align-items:center;border:1px solid var(--border);background:var(--bg);border-radius:999px;padding:.15rem .5rem;font-size:.72rem;color:var(--text)}.fh-chip.mono{font-family:var(--mono)}.fh-alert{border-radius:8px;padding:.7rem .85rem;font-size:.85rem;margin-bottom:.85rem}.fh-alert.error{background:#f236451a;border:1px solid rgba(242,54,69,.25);color:var(--red)}.fh-alert.info{background:#0899811a;border:1px solid rgba(8,153,129,.25);color:var(--green)}.fh-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000094;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:300;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.fh-modal{width:min(440px,100%);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:12px;box-shadow:var(--shadow);padding:1rem 1.1rem 1.1rem}.fh-modal-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.9rem}.fh-modal-head h2{margin:0;font-size:1.05rem;font-weight:650}.fh-form{display:flex;flex-direction:column;gap:.8rem}.fh-form label{display:flex;flex-direction:column;gap:.35rem;font-size:.78rem;color:var(--muted)}.fh-form label span{font-weight:550}.fh-form input,.fh-form select{background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text);padding:.55rem .7rem;font-size:.88rem;outline:none}.fh-form input:focus,.fh-form select:focus{border-color:var(--accent);box-shadow:0 0 0 2px #007c902e}.fh-form-row{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}.fh-modal-actions{display:flex;justify-content:flex-end;gap:.45rem;margin-top:.25rem}.fh-modal-copy{margin:0 0 1rem;font-size:.88rem;line-height:1.5;color:var(--muted)}.fh-modal-copy strong{color:var(--text);font-weight:650}.auth-boot{min-height:100%;height:var(--app-height, 100dvh);display:flex;align-items:center;justify-content:center;padding:2rem;color:var(--muted);text-align:center}.auth-boot code{color:var(--text)}@media(max-width:560px){.fh-form-row{grid-template-columns:1fr}}.topbar{position:relative;z-index:100;display:flex;align-items:center;justify-content:space-between;gap:.75rem 1rem;padding:.55rem 1rem;padding-left:max(1rem,env(safe-area-inset-left));padding-right:max(1rem,env(safe-area-inset-right));border-bottom:1px solid var(--border);background:var(--bg);overflow:visible;flex-shrink:0}.topbar-actions{display:flex;align-items:center;gap:.45rem;flex-shrink:0}.brand{display:flex;align-items:center;gap:.6rem;min-width:0;flex-shrink:0}.brand-text{display:flex;flex-direction:column;gap:.1rem}.brand-logo{height:32px;width:auto;object-fit:contain}.brand-text strong{font-size:1.05rem;letter-spacing:.02em;color:var(--text);font-weight:700}.pair-menu{position:relative;display:inline-block}.pair-menu-btn{display:inline-flex;align-items:center;gap:4px;background:var(--bg-elevated);color:var(--text);border:1px solid var(--border);font-size:.75rem;font-family:var(--mono);font-weight:600;padding:2px 6px;cursor:pointer;border-radius:4px}.pair-menu-btn:hover{border-color:var(--border-strong)}.pair-menu-btn.active{color:var(--tv-blue);background:#007c9033;border-color:var(--tv-blue)}.pair-dropdown{position:absolute;top:100%;left:0;margin-top:4px;background:var(--bg-elevated);border:1px solid var(--border-strong);border-radius:6px;box-shadow:var(--shadow);z-index:200;min-width:100px;display:flex;flex-direction:column;padding:4px}.pair-option{background:transparent;border:none;color:var(--text);padding:6px 8px;text-align:left;font-size:.8rem;font-family:var(--mono);cursor:pointer;border-radius:4px}.pair-option:hover{background:var(--hover);color:var(--hover-text)}.pair-option.on{background:#007c901f;color:var(--accent);font-weight:600}.topbar-center{display:flex;align-items:center;justify-content:center;gap:.55rem;flex:1;min-width:0}.tf-row{display:flex;flex-wrap:wrap;gap:.3rem;justify-content:center;min-width:0}.tf-btn{border:1px solid var(--border);background:var(--bg-elevated);color:var(--muted);padding:.35rem .65rem;border-radius:4px;cursor:pointer;font-family:var(--mono);font-size:.78rem}.tf-btn:hover{color:var(--text);border-color:var(--border-strong)}.tf-btn.active{color:#fff;background:var(--tv-blue);border-color:var(--tv-blue);font-weight:600}.tf-btn:disabled{opacity:.35;cursor:not-allowed}.topbar-right{display:flex;align-items:center;justify-content:flex-end;gap:.55rem;min-width:0;flex-wrap:wrap}.top-meta{min-width:0;max-width:220px;text-align:right;color:var(--muted);font-family:var(--mono);font-size:.75rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ind-menu-label-short,.replay-play-short{display:none}.top-meta.error{color:var(--red)}.layout.chart-only{position:relative;z-index:1;display:grid;grid-template-columns:72px 1fr;min-height:0;overflow:hidden}.chart-column{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0}.chart-column .chart-stack{flex:1;min-height:0}.chart-loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;background:color-mix(in srgb,var(--bg) 55%,transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);pointer-events:none}.chart-loading-pop{display:flex;flex-direction:column;align-items:center;gap:.55rem;min-width:220px;max-width:min(420px,90%);padding:1.1rem 1.4rem;border:1px solid var(--border);border-radius:10px;background:var(--bg-elevated);box-shadow:0 16px 40px #00000059;text-align:center;pointer-events:none}.chart-loading-pop p{margin:0;color:var(--text);font-size:.92rem;font-weight:600}.chart-loading-pop em{font-style:normal;color:var(--muted);font-size:.72rem;line-height:1.35}.chart-loading-spinner{width:22px;height:22px;border:2px solid var(--border);border-top-color:var(--tv-blue);border-radius:50%;animation:chart-spin .8s linear infinite}@keyframes chart-spin{to{transform:rotate(360deg)}}
