:root{--ink: #0d0d0d;--ink-2: #3a3a3a;--ink-3: #7a7a7a;--paper: #f5f2ec;--paper-2: #ede9e1;--border: rgba(13,13,13,.1);--gold: #b8860b;--green: #1a6b3a;--red: #8b1a1a;--sidebar-w: 220px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:DM Sans,Segoe UI,sans-serif;background:var(--paper);color:var(--ink)}.layout{display:flex;flex-direction:column;min-height:100vh}.ticker-bar{background:var(--ink);height:34px;overflow:hidden;position:sticky;top:0;z-index:100;display:flex;align-items:center}.ticker-scroll{display:flex;align-items:center;gap:0;animation:ticker-move 40s linear infinite;white-space:nowrap;padding-left:100%}.ticker-scroll:hover{animation-play-state:paused}@keyframes ticker-move{0%{transform:translate(0)}to{transform:translate(-100%)}}.ticker-item{display:inline-flex;align-items:center;gap:6px;padding:0 24px;font-family:JetBrains Mono,monospace;font-size:11px;border-right:1px solid #333}.ticker-sym{color:#aaa}.ticker-price{color:#e8e8e8;font-weight:500}.ticker-chg.up{color:#4ade80}.ticker-chg.dn{color:#f87171}.market-pill{font-size:10px;font-weight:500;padding:3px 10px;border-radius:20px;letter-spacing:1px;text-transform:uppercase;margin:0 16px}.market-pill.open{background:#166534;color:#4ade80}.market-pill.closed{background:#333;color:#aaa}.source-badge{font-family:JetBrains Mono,monospace;font-size:10px;font-weight:600;padding:2px 8px;border:1px solid;border-radius:4px;margin:0 8px;letter-spacing:.5px;cursor:default}.ws-dot{font-family:JetBrains Mono,monospace;font-size:10px;padding:0 12px}.ws-dot.live{color:#4ade80}.ws-dot.off{color:#666}.layout-body{display:flex;flex:1;min-height:0}.sidebar{width:var(--sidebar-w);min-height:calc(100vh - 34px);background:#fff;border-right:1px solid var(--border);display:flex;flex-direction:column;position:sticky;top:34px;height:calc(100vh - 34px);overflow-y:auto;flex-shrink:0}.sidebar-brand{padding:24px 20px 20px;border-bottom:1px solid var(--border);font-size:16px;font-weight:600}.brand-sub{color:var(--gold);font-weight:300;margin-left:2px}.sidebar-nav{flex:1;padding:12px 0;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 20px;color:var(--ink-3);text-decoration:none;font-size:14px;font-weight:400;border-left:3px solid transparent;transition:all .15s}.nav-item:hover{color:var(--ink);background:var(--paper)}.nav-item.active{color:var(--ink);background:var(--paper);border-left-color:var(--ink);font-weight:500}.nav-icon{font-size:15px;width:20px;text-align:center}.sidebar-source{display:flex;align-items:center;gap:8px;padding:10px 20px;border-top:1px solid var(--border);font-size:11px;color:var(--ink-3);cursor:default}.source-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.source-text{font-family:JetBrains Mono,monospace}.sidebar-user{display:flex;align-items:center;gap:10px;padding:16px 20px;border-top:1px solid var(--border)}.user-avatar{width:32px;height:32px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.user-info{flex:1;min-width:0}.user-name{font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-capital{font-size:11px;color:var(--ink-3)}.logout-btn{background:none;border:none;cursor:pointer;color:var(--ink-3);font-size:16px;padding:4px;transition:color .15s}.logout-btn:hover{color:var(--red)}.main-content{flex:1;min-width:0;overflow-y:auto;min-height:calc(100vh - 34px)}.mobile-header{display:none;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);background:#fff;position:sticky;top:0;z-index:50}.hamburger{background:none;border:none;font-size:20px;cursor:pointer;color:var(--ink)}.mobile-brand{font-size:16px;font-weight:600;color:var(--ink)}.sidebar-overlay{display:none;position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;background:#0006}@media (max-width: 768px){.sidebar{position:fixed;top:34px;width:var(--sidebar-w);height:calc(100vh - 34px);z-index:100;transition:transform .25s;transform:translate(calc(-1 * var(--sidebar-w)))}.sidebar.open{transform:translate(0)}.sidebar-overlay{display:block}.mobile-header{display:flex}}.signal-badge{display:inline-flex;align-items:center;gap:4px;border-radius:4px;font-weight:600;font-family:JetBrains Mono,monospace;white-space:nowrap;line-height:1}.signal-badge.sm{padding:3px 7px;font-size:11px}.signal-badge.md{padding:5px 10px;font-size:12px}.signal-badge.lg{padding:7px 14px;font-size:14px}.signal-badge.buy{background:#f0faf4;color:#1a6b3a}.signal-badge.sell{background:#fdf2f2;color:#8b1a1a}.signal-badge.hold{background:#fef9c3;color:#854d0e}.signal-badge.neutral{background:var(--paper);color:var(--ink-3)}.sig-icon{font-size:9px}.sig-conf{opacity:.75;font-size:10px;margin-left:2px}.signals-panel{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px;margin-top:16px}.sp-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px;flex-wrap:wrap;gap:8px}.sp-title-row{display:flex;align-items:center;gap:10px}.sp-title{font-size:15px;font-weight:600}.ml-status{font-size:10px;font-weight:600;letter-spacing:1px;padding:2px 8px;border-radius:20px}.ml-status.online{background:#f0faf4;color:#1a6b3a}.ml-status.offline,.ml-status.unknown{background:var(--paper);color:var(--ink-3)}.sp-meta{display:flex;align-items:center;gap:10px}.sp-model-tag{font-size:10px;color:var(--ink-3);background:var(--paper);padding:2px 8px;border-radius:4px}.sp-last{font-size:11px;color:var(--ink-3)}.sp-refresh{background:none;border:1px solid var(--border);border-radius:4px;padding:3px 8px;font-size:14px;cursor:pointer;color:var(--ink-3)}.sp-refresh:hover:not(:disabled){color:var(--ink);border-color:var(--ink)}.ml-offline-banner{background:#fef9c3;border:1px solid #fde047;padding:10px 14px;border-radius:6px;font-size:12px;color:#854d0e;margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ml-offline-banner code{background:#fff;padding:2px 8px;border-radius:4px;font-size:11px;border:1px solid #fde047}.signals-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:12px}.signal-card{border:1px solid var(--border);border-radius:8px;padding:14px;cursor:pointer;transition:all .15s}.signal-card:hover{border-color:var(--ink);box-shadow:0 2px 8px #0000000f}.signal-card.skeleton{height:120px;background:linear-gradient(90deg,var(--paper) 25%,#e8e4dc 50%,var(--paper) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sc-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.sc-symbol{font-family:JetBrains Mono,monospace;font-size:14px;font-weight:600}.conf-bar-wrap{height:3px;background:var(--paper);border-radius:2px;margin-bottom:10px;overflow:hidden}.conf-bar{height:100%;border-radius:2px;transition:width .6s ease}.sc-indicators{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.ind-row{display:flex;justify-content:space-between;font-size:11px}.ind-label{color:var(--ink-3)}.ind-val{font-family:JetBrains Mono,monospace;font-weight:500}.ind-val.buy{color:#1a6b3a}.ind-val.sell{color:#8b1a1a}.ind-val.neutral{color:var(--ink-3)}.sc-models{display:flex;gap:4px;flex-wrap:wrap}.model-tag{font-size:9px;background:var(--paper);color:var(--ink-3);padding:1px 5px;border-radius:3px;text-transform:capitalize}.sp-empty{grid-column:1/-1;text-align:center;padding:24px;color:var(--ink-3);font-size:13px}.sp-disclaimer{font-size:11px;color:var(--ink-3);text-align:center;line-height:1.5}@media (max-width: 560px){.signals-grid{grid-template-columns:1fr 1fr}}.dashboard{padding:24px;max-width:1400px}.dash-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px;color:var(--ink-3)}.dash-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite}.dash-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:16px}.dash-title{font-size:24px;font-weight:600;letter-spacing:-.4px}.dash-sub{font-size:13px;color:var(--ink-3);margin-top:4px}.data-mode-tag{color:#854d0e;font-weight:500}.dash-capital-card{background:var(--ink);color:#fff;padding:16px 20px;border-radius:8px;text-align:right}.cap-label{font-size:11px;color:#aaa;letter-spacing:1px;text-transform:uppercase}.cap-value{font-size:22px;font-weight:600;font-family:JetBrains Mono,monospace;margin:4px 0}.cap-risk{font-size:11px;color:#b8860b;text-transform:capitalize}.indices-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:24px}.index-card{background:#fff;border:1px solid var(--border);padding:16px 20px;border-radius:8px}.idx-name{font-size:12px;color:var(--ink-3);font-weight:500;letter-spacing:.5px;margin-bottom:6px}.idx-price{font-size:20px;font-weight:600;font-family:JetBrains Mono,monospace}.idx-chg{font-size:12px;font-family:JetBrains Mono,monospace;margin-top:4px}.dash-grid{display:grid;grid-template-columns:1fr 280px;gap:16px}.dash-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.card-title{font-size:15px;font-weight:600}.add-symbol-form{display:flex;gap:6px}.add-symbol-input{border:1px solid var(--border);padding:6px 10px;font-size:12px;border-radius:6px;width:110px;font-family:JetBrains Mono,monospace;text-transform:uppercase;outline:none}.add-symbol-input:focus{border-color:var(--ink)}.add-symbol-btn{background:var(--ink);color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:16px;line-height:1}.add-error{font-size:12px;color:var(--red);margin:-8px 0 12px}.watchlist-table{display:flex;flex-direction:column}.wl-head{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 80px 24px;gap:8px;padding:0 0 8px;font-size:11px;font-weight:500;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.wl-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 80px 24px;gap:8px;padding:10px 0;border-bottom:1px solid var(--border);align-items:center;font-size:13px}.wl-row:last-child{border-bottom:none}.wl-sym{display:flex;flex-direction:column}.sym-code{font-family:JetBrains Mono,monospace;font-weight:500;font-size:13px}.sym-name{font-size:11px;color:var(--ink-3)}.wl-price{font-family:JetBrains Mono,monospace;font-weight:500}.wl-chg{font-family:JetBrains Mono,monospace;font-size:12px}.wl-vol{font-size:12px;color:var(--ink-3)}.wl-remove{background:none;border:none;cursor:pointer;color:var(--ink-3);font-size:16px;padding:0;line-height:1}.wl-remove:hover{color:var(--red)}.wl-empty{padding:24px 0;text-align:center;color:var(--ink-3);font-size:13px}.mover-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border)}.mover-row:last-child{border-bottom:none}.mover-sym{font-family:JetBrains Mono,monospace;font-weight:500;font-size:13px}.mover-name{font-size:11px;color:var(--ink-3)}.mover-right{text-align:right}.mover-price{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500}.mover-chg{font-family:JetBrains Mono,monospace;font-size:12px}.dash-side{display:flex;flex-direction:column}@media (max-width: 900px){.dash-grid{grid-template-columns:1fr}.indices-row{grid-template-columns:1fr 1fr}.dash-side{display:grid;grid-template-columns:1fr 1fr;gap:16px}.dash-side>div{margin-top:0!important}.dashboard{padding:16px}}@media (max-width: 560px){.indices-row{grid-template-columns:1fr}.wl-head,.wl-row{grid-template-columns:2fr 1fr 1fr 24px}.wl-vol,.wl-spark{display:none}}.screener-page{padding:24px;max-width:1400px}.screener-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:20px}.screener-title{font-size:24px;font-weight:600;letter-spacing:-.4px}.screener-sub{font-size:13px;color:var(--ink-3);margin-top:4px}.mock-tag{color:#854d0e}.btn-clear{background:#fff;border:1px solid var(--border);padding:8px 16px;border-radius:6px;font-size:13px;cursor:pointer;font-family:inherit}.btn-clear:hover{border-color:var(--ink)}.preset-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.preset-btn{padding:7px 16px;border:1px solid var(--border);border-radius:20px;background:#fff;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .15s}.preset-btn.active{background:var(--ink);color:#fff;border-color:var(--ink)}.filter-panel{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:16px;background:#fff;border:1px solid var(--border);border-radius:8px;margin-bottom:16px}.filter-search{padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit;outline:none;width:200px}.filter-search:focus{border-color:var(--ink)}.filter-select{padding:8px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:inherit;outline:none;background:#fff;cursor:pointer}.filter-group{display:flex;align-items:center;gap:6px}.filter-label{font-size:11px;font-weight:500;color:var(--ink-3);white-space:nowrap}.filter-num{width:72px;padding:7px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-family:JetBrains Mono,monospace;outline:none}.filter-num:focus{border-color:var(--ink)}.filter-sep{font-size:12px;color:var(--ink-3)}.screener-table-wrap{background:#fff;border:1px solid var(--border);border-radius:8px;overflow:auto}.screener-table{width:100%;border-collapse:collapse;font-size:13px}.screener-table thead{position:sticky;top:0;background:#fff;z-index:1}.screener-table th{padding:12px 14px;text-align:left;font-size:11px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap}.th-sortable{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.th-sortable:hover,.th-sortable.active{color:var(--ink)}.sort-arrow{margin-left:4px}.screener-row{cursor:pointer;transition:background .1s}.screener-row:hover{background:var(--paper)}.screener-row td{padding:11px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.screener-row:last-child td{border-bottom:none}.row-sym{font-family:JetBrains Mono,monospace;font-weight:500;font-size:13px}.row-name{font-size:11px;color:var(--ink-3);margin-top:2px}.td-muted{color:var(--ink-3)}.chg-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:4px;font-size:12px;font-family:JetBrains Mono,monospace}.chg-badge.up{background:#f0faf4;color:#1a6b3a}.chg-badge.dn{background:#fdf2f2;color:#8b1a1a}.sector-tag{font-size:11px;background:var(--paper);color:var(--ink-3);padding:2px 8px;border-radius:4px;white-space:nowrap}.btn-view{background:none;border:1px solid var(--border);padding:4px 10px;border-radius:4px;font-size:12px;cursor:pointer;color:var(--ink-3);font-family:inherit}.btn-view:hover{border-color:var(--ink);color:var(--ink)}.table-loading,.table-empty{text-align:center;padding:40px;color:var(--ink-3);font-size:14px}@media (max-width: 768px){.screener-page{padding:16px}.filter-panel{gap:8px}.filter-search{width:100%}}.stock-page{padding:24px;max-width:1400px}.stock-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px;color:var(--ink-3);font-size:14px}.breadcrumb{display:flex;align-items:center;gap:8px;margin-bottom:20px;font-size:13px;color:var(--ink-3)}.breadcrumb-link{background:none;border:none;cursor:pointer;color:var(--ink-3);font-size:13px;font-family:inherit;padding:0}.breadcrumb-link:hover{color:var(--ink)}.breadcrumb-sep{color:var(--border)}.stock-header{display:flex;align-items:flex-start;gap:24px;margin-bottom:24px;flex-wrap:wrap}.stock-title-block{flex:1}.stock-symbol{font-family:JetBrains Mono,monospace;font-size:28px;font-weight:600}.stock-name{font-size:15px;color:var(--ink-3);margin:4px 0 8px}.sector-tag{font-size:11px;background:var(--paper);color:var(--ink-3);padding:3px 10px;border-radius:4px}.stock-price-block{text-align:right}.stock-ltp{font-family:JetBrains Mono,monospace;font-size:32px;font-weight:600}.stock-change{font-family:JetBrains Mono,monospace;font-size:15px;margin-top:4px}.up{color:#1a6b3a}.dn{color:#8b1a1a}.btn-watchlist{padding:10px 20px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer;font-size:13px;font-family:inherit;white-space:nowrap;align-self:flex-start;transition:all .15s}.btn-watchlist:hover{border-color:var(--ink)}.btn-watchlist.active{background:var(--ink);color:#fff;border-color:var(--ink)}.order-msg{padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:20px}.order-msg.success{background:#f0faf4;color:#166534;border:1px solid #b7dfca}.order-msg.error{background:#fdf2f2;color:#8b1a1a;border:1px solid #f5c6c6}.stock-body{display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:start}.stock-left{display:flex;flex-direction:column;gap:16px}.ohlc-bar{display:flex;gap:0;background:#fff;border:1px solid var(--border);border-radius:8px;overflow:hidden}.ohlc-item{flex:1;padding:12px 16px;border-right:1px solid var(--border);text-align:center}.ohlc-item:last-child{border-right:none}.ohlc-label{display:block;font-size:10px;font-weight:500;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.ohlc-val{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:500}.chart-card{background:#fff;border:1px solid var(--border);border-radius:8px;overflow:hidden}.range-tabs{display:flex;border-bottom:1px solid var(--border)}.range-tab{flex:1;padding:10px 0;background:none;border:none;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;color:var(--ink-3);transition:all .15s;border-right:1px solid var(--border)}.range-tab:last-child{border-right:none}.range-tab:hover,.range-tab.active{background:var(--paper);color:var(--ink)}.chart-area{padding:16px 8px 8px}.chart-loading{height:240px;display:flex;align-items:center;justify-content:center;color:var(--ink-3);font-size:13px}.fundamentals-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px}.fund-title{font-size:14px;font-weight:600;margin-bottom:14px}.fund-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}.fund-item{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px solid var(--border);font-size:13px}.fund-item:nth-last-child(-n+2){border-bottom:none}.fund-label{color:var(--ink-3)}.fund-val{font-family:JetBrains Mono,monospace;font-weight:500}.order-panel{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px;position:sticky;top:52px}.op-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border)}.op-symbol{font-family:JetBrains Mono,monospace;font-size:16px;font-weight:600}.op-ltp{font-family:JetBrains Mono,monospace;font-size:18px;font-weight:600}.side-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:16px}.side-btn{padding:11px;border:2px solid var(--border);border-radius:6px;background:#fff;font-size:14px;font-weight:600;letter-spacing:1px;cursor:pointer;font-family:inherit;transition:all .15s}.side-btn.buy.active{background:#f0faf4;border-color:#1a6b3a;color:#1a6b3a}.side-btn.sell.active{background:#fdf2f2;border-color:#8b1a1a;color:#8b1a1a}.side-btn:not(.active):hover{border-color:var(--ink-3)}.order-type-tabs{display:flex;background:var(--paper);border-radius:6px;padding:3px;margin-bottom:18px}.ot-tab{flex:1;padding:7px 4px;background:none;border:none;font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;color:var(--ink-3);border-radius:4px;transition:all .15s}.ot-tab.active{background:#fff;color:var(--ink);box-shadow:0 1px 3px #00000014}.op-form{display:flex;flex-direction:column;gap:14px}.op-field{display:flex;flex-direction:column;gap:5px}.op-field label{font-size:12px;font-weight:500;color:var(--ink-3)}.op-field input{padding:10px 12px;border:1px solid var(--border);border-radius:6px;font-size:14px;font-family:JetBrains Mono,monospace;outline:none}.op-field input:focus{border-color:var(--ink)}.op-field input.err{border-color:#8b1a1a}.field-err{font-size:11px;color:#8b1a1a}.price-input-wrap{display:flex;align-items:stretch}.price-prefix{display:flex;align-items:center;padding:0 10px;background:var(--paper);border:1px solid var(--border);border-right:none;border-radius:6px 0 0 6px;font-size:13px;color:var(--ink-3)}.price-input-wrap input{border-radius:0 6px 6px 0;flex:1}.market-price-display{font-family:JetBrains Mono,monospace;font-size:15px;font-weight:500;padding:10px 12px;background:var(--paper);border-radius:6px}.market-price-note{font-size:11px;color:var(--ink-3);margin-left:8px;font-family:DM Sans,sans-serif}.op-summary{background:var(--paper);border-radius:6px;padding:12px;display:flex;flex-direction:column;gap:6px}.summary-row{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-3)}.summary-row span:last-child{font-family:JetBrains Mono,monospace}.summary-row.total{padding-top:8px;border-top:1px solid var(--border);font-weight:600;color:var(--ink)}.btn-order{padding:13px;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;font-family:inherit;letter-spacing:.3px;transition:all .15s}.btn-order.buy{background:#1a6b3a;color:#fff}.btn-order.sell{background:#8b1a1a;color:#fff}.btn-order.buy:hover:not(:disabled){background:#145730}.btn-order.sell:hover:not(:disabled){background:#6e1515}.btn-order:disabled{opacity:.55;cursor:not-allowed}.order-disclaimer{font-size:11px;color:var(--ink-3);text-align:center;line-height:1.5}@media (max-width: 960px){.stock-body{grid-template-columns:1fr}.order-panel{position:static}.stock-page{padding:16px}.ohlc-bar{flex-wrap:wrap}.ohlc-item{min-width:33%}.fund-grid{grid-template-columns:1fr}}:root{--ink: #0d0d0d;--ink-2: #3a3a3a;--ink-3: #7a7a7a;--paper: #f5f2ec;--paper-2: #ede9e1;--border: rgba(13,13,13,.1);--green: #1a6b3a;--red: #8b1a1a}.portfolio-page{padding:24px;max-width:1400px}.port-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:16px;color:var(--ink-3)}.dash-spinner{width:28px;height:28px;border:2px solid var(--border);border-top-color:var(--ink);border-radius:50%;animation:spin .7s linear infinite}.port-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.port-title{font-size:24px;font-weight:600;letter-spacing:-.4px}.port-sub{font-size:13px;color:var(--ink-3);margin-top:4px}.btn-add-capital{background:var(--ink);color:#fff;border:none;padding:10px 20px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit}.btn-add-capital:hover{background:#2a2a2a}.cap-msg{background:#f0faf4;color:#166534;border:1px solid #b7dfca;padding:10px 16px;border-radius:6px;font-size:13px;margin-bottom:16px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:200;display:flex;align-items:center;justify-content:center}.modal-card{background:#fff;border-radius:10px;padding:28px;width:320px}.modal-card h3{font-size:18px;font-weight:600;margin-bottom:6px}.modal-card p{font-size:13px;color:var(--ink-3);margin-bottom:20px}.cap-form{display:flex;flex-direction:column;gap:16px}.cap-input-wrap{display:flex;align-items:center;border:1px solid var(--border);border-radius:8px;overflow:hidden}.cap-input-wrap span{padding:10px 12px;background:var(--paper);font-size:14px;color:var(--ink-3);border-right:1px solid var(--border)}.cap-input-wrap input{border:none;outline:none;padding:10px 12px;font-size:15px;font-family:JetBrains Mono,monospace;flex:1}.cap-actions{display:flex;gap:10px}.btn-confirm{flex:1;background:var(--ink);color:#fff;border:none;padding:11px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit}.btn-cancel{flex:1;background:#fff;color:var(--ink-3);border:1px solid var(--border);padding:11px;border-radius:6px;font-size:14px;cursor:pointer;font-family:inherit}.summary-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:12px;margin-bottom:24px}.sum-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:18px 20px}.sum-card.main{background:var(--ink)}.sum-card.main .sum-label{color:#aaa}.sum-card.main .sum-value{color:#fff}.sum-label{font-size:11px;font-weight:500;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}.sum-value{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:600}.sum-sub{font-size:12px;margin-top:4px;font-family:JetBrains Mono,monospace}.sum-sub.up{color:#4ade80}.sum-sub.dn{color:#f87171}.sum-sub.neutral{color:var(--ink-3)}.up{color:var(--green)}.dn{color:var(--red)}.port-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:20px}.port-tab{padding:10px 20px;background:none;border:none;border-bottom:2px solid transparent;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;color:var(--ink-3);transition:all .15s}.port-tab:hover{color:var(--ink)}.port-tab.active{color:var(--ink);border-bottom-color:var(--ink)}.tab-content{animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 24px;text-align:center}.empty-icon{font-size:40px;margin-bottom:16px}.empty-state h3{font-size:18px;font-weight:600;margin-bottom:8px}.empty-state p{font-size:14px;color:var(--ink-3);margin-bottom:20px}.btn-goto{background:var(--ink);color:#fff;border:none;padding:10px 24px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit}.holdings-table-wrap{background:#fff;border:1px solid var(--border);border-radius:8px;overflow:auto}.holdings-table{width:100%;border-collapse:collapse;font-size:13px}.holdings-table th{padding:11px 14px;text-align:left;font-size:11px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap}.holding-row td{padding:12px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.holding-row:last-child td{border-bottom:none}.holding-row:hover{background:var(--paper)}.h-sym{font-family:JetBrains Mono,monospace;font-weight:500}.h-name{font-size:11px;color:var(--ink-3);margin-top:2px}.td-mono{font-family:JetBrains Mono,monospace}.pnl-cell{display:flex;flex-direction:column;gap:2px}.pnl-cell span{font-family:JetBrains Mono,monospace;font-size:13px}.pnl-pct{font-size:11px!important}.btn-trade{background:none;border:1px solid var(--border);padding:4px 10px;border-radius:4px;font-size:12px;cursor:pointer;color:var(--ink-3);font-family:inherit}.btn-trade:hover{border-color:var(--ink);color:var(--ink)}.trades-table-wrap{background:#fff;border:1px solid var(--border);border-radius:8px;overflow:auto}.trades-table{width:100%;border-collapse:collapse;font-size:13px}.trades-table th{padding:11px 14px;text-align:left;font-size:11px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border);white-space:nowrap}.trade-row td{padding:10px 14px;border-bottom:1px solid var(--border);vertical-align:middle}.trade-row:last-child td{border-bottom:none}.trade-row:hover{background:var(--paper)}.td-date{font-size:12px;color:var(--ink-3);white-space:nowrap}.td-type{text-transform:capitalize;color:var(--ink-3);font-size:12px}.td-broker{font-size:11px;color:var(--ink-3);text-transform:capitalize}.sym-link{background:none;border:none;cursor:pointer;font-family:JetBrains Mono,monospace;font-weight:500;font-size:13px;color:var(--ink);padding:0;text-decoration:underline}.side-badge{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:600}.side-badge.buy{background:#f0faf4;color:var(--green)}.side-badge.sell{background:#fdf2f2;color:var(--red)}.perf-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}.perf-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px}.perf-title{font-size:14px;font-weight:600;margin-bottom:16px}.stats-list{display:flex;flex-direction:column;gap:0}.stat-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}.stat-row:last-child{border-bottom:none}.stat-label{color:var(--ink-3)}.stat-val{font-family:JetBrains Mono,monospace;font-weight:500}.alloc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.alloc-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px}.alloc-title{font-size:14px;font-weight:600;margin-bottom:16px}.donut-wrap{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap}.donut-legend{display:flex;flex-direction:column;gap:6px;flex:1;min-width:140px}.legend-item{display:flex;align-items:center;gap:8px;font-size:12px;cursor:pointer;padding:3px 6px;border-radius:4px;transition:background .1s}.legend-item.hov{background:var(--paper)}.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.legend-name{flex:1;font-family:JetBrains Mono,monospace;font-size:11px}.legend-pct{color:var(--ink-3);font-size:11px}.legend-val{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--ink-3)}@media (max-width: 900px){.summary-grid{grid-template-columns:1fr 1fr}.perf-grid,.alloc-grid{grid-template-columns:1fr}.portfolio-page{padding:16px}}@media (max-width: 560px){.summary-grid{grid-template-columns:1fr}.port-tabs{overflow-x:auto}}.ml-page{padding:24px;max-width:860px}.ml-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px;flex-wrap:wrap;gap:12px}.ml-title{font-size:22px;font-weight:600;letter-spacing:-.3px}.ml-sub{font-size:13px;color:var(--ink-3);margin-top:4px}.ml-engine-status{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;padding:8px 14px;border-radius:20px;border:1px solid var(--border)}.ml-engine-status.online{background:#f0faf4;color:#1a6b3a;border-color:#b7dfca}.ml-engine-status.offline{background:#fdf2f2;color:#8b1a1a;border-color:#f5c6c6}.status-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.ml-warning{background:#fef9c3;border:1px solid #fde047;padding:12px 16px;border-radius:8px;font-size:13px;color:#854d0e;margin-bottom:20px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ml-warning code{background:#fff;border:1px solid #fde047;padding:3px 8px;border-radius:4px;font-size:12px;font-family:JetBrains Mono,monospace}.ml-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:20px;margin-bottom:16px}.ml-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.ml-card-header h3,.ml-card-title{font-size:15px;font-weight:600;margin-bottom:12px}.ml-desc{font-size:13px;color:var(--ink-3);line-height:1.6;margin-bottom:14px}.preset-btns{display:flex;gap:6px}.preset-btn{padding:5px 12px;background:var(--paper);border:1px solid var(--border);border-radius:20px;font-size:12px;cursor:pointer;font-family:inherit;transition:all .15s}.preset-btn:hover{border-color:var(--ink)}.symbol-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin-bottom:16px}.sym-toggle{padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:12px;font-family:JetBrains Mono,monospace;font-weight:500;cursor:pointer;transition:all .15s;color:var(--ink-3)}.sym-toggle:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.sym-toggle.selected{background:var(--ink);color:#fff;border-color:var(--ink)}.sym-toggle:disabled{opacity:.5;cursor:not-allowed}.train-footer{display:flex;justify-content:space-between;align-items:center;padding-top:12px;border-top:1px solid var(--border);flex-wrap:wrap;gap:12px}.selected-count{font-size:13px;color:var(--ink-3)}.btn-train{display:flex;align-items:center;gap:8px;background:var(--ink);color:#fff;border:none;padding:11px 24px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .15s}.btn-train:hover:not(:disabled){background:#2a2a2a}.btn-train:disabled{opacity:.6;cursor:not-allowed}.btn-train.running{background:#1a6b3a}.train-spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}.log-terminal{background:#0d0d0d;border-radius:6px;padding:14px 16px;min-height:140px;max-height:280px;overflow-y:auto;font-family:JetBrains Mono,monospace;font-size:12px;line-height:1.8}.log-empty{color:#555;font-style:italic}.log-line{display:flex;gap:12px}.log-ts{color:#555;flex-shrink:0}.log-msg{flex:1}.log-line.info .log-msg{color:#aaa}.log-line.success .log-msg{color:#4ade80}.log-line.warn .log-msg{color:#facc15}.log-line.error .log-msg{color:#f87171}.log-blink{animation:blink 1s ease-in-out infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:.3}}.btn-clear-log{background:none;border:1px solid #333;color:#666;padding:3px 10px;border-radius:4px;font-size:11px;cursor:pointer;font-family:inherit}.btn-clear-log:hover{border-color:#555;color:#aaa}.results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.result-card{border:1px solid var(--border);border-radius:6px;padding:12px}.result-card.success{border-color:#b7dfca;background:#f9fefb}.result-card.error{border-color:#f5c6c6;background:#fdf9f9}.result-sym{font-family:JetBrains Mono,monospace;font-size:13px;font-weight:600;margin-bottom:8px}.result-row{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-3);margin-bottom:4px}.result-acc{font-family:JetBrains Mono,monospace;font-weight:600;color:#1a6b3a}.result-err{font-size:11px;color:#8b1a1a}.result-status{font-size:11px;color:var(--ink-3);margin-top:4px}.backtest-row{display:flex;gap:10px;margin-bottom:14px}.backtest-select{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:6px;font-size:13px;font-family:JetBrains Mono,monospace;background:#fff;outline:none}.backtest-select:focus{border-color:var(--ink)}.btn-backtest{background:#1d4ed8;color:#fff;border:none;padding:9px 20px;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap}.btn-backtest:hover:not(:disabled){background:#1e40af}.btn-backtest:disabled{opacity:.6;cursor:not-allowed}.backtest-results{background:var(--paper);border-radius:6px;padding:14px}.backtest-grid{display:grid;grid-template-columns:1fr 1fr;gap:0}.bt-row{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px}.bt-row:nth-last-child(-n+2){border-bottom:none}.bt-label{color:var(--ink-3)}.bt-val{font-family:JetBrains Mono,monospace;font-weight:500}.backtest-error{color:#8b1a1a;font-size:13px}.cron-block{background:#0d0d0d;border-radius:6px;padding:14px 16px;margin-bottom:10px;overflow-x:auto}.cron-cmd{font-family:JetBrains Mono,monospace;font-size:11px;color:#aaa;white-space:pre;line-height:1.8;display:block}.cron-note{font-size:11px;color:var(--ink-3);line-height:1.5}@media (max-width: 640px){.ml-page{padding:16px}.symbol-grid{grid-template-columns:repeat(3,1fr)}.backtest-grid{grid-template-columns:1fr}.results-grid{grid-template-columns:repeat(2,1fr)}}.settings-page{padding:24px;max-width:860px}.settings-header{margin-bottom:24px}.settings-title{font-size:24px;font-weight:600;letter-spacing:-.4px}.settings-sub{font-size:13px;color:var(--ink-3);margin-top:4px}.settings-msg{padding:12px 16px;border-radius:8px;font-size:13px;margin-bottom:20px}.settings-msg.success{background:#f0faf4;color:#166534;border:1px solid #b7dfca}.settings-msg.error{background:#fdf2f2;color:#8b1a1a;border:1px solid #f5c6c6}.settings-card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:24px;margin-bottom:20px}.settings-section-title{font-size:15px;font-weight:600;margin-bottom:16px;display:flex;align-items:center;gap:10px}.section-badge{font-size:10px;font-weight:500;background:#f0faf4;color:#166534;padding:2px 8px;border-radius:20px;letter-spacing:.5px}.settings-desc{font-size:13px;color:var(--ink-3);margin-bottom:16px;line-height:1.6}.settings-form{display:flex;flex-direction:column;gap:20px}.settings-row{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-field{display:flex;flex-direction:column;gap:6px}.settings-field label{font-size:13px;font-weight:500;color:var(--ink-2)}.settings-field input{padding:10px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px;font-family:inherit;outline:none}.settings-field input:focus{border-color:var(--ink)}.field-hint{font-size:11px;color:var(--ink-3)}.input-prefix-wrap{display:flex;align-items:stretch}.input-prefix{display:flex;align-items:center;padding:0 12px;background:var(--paper);border:1px solid var(--border);border-right:none;border-radius:8px 0 0 8px;font-size:14px;color:var(--ink-3)}.input-prefix-wrap input{border-radius:0 8px 8px 0;flex:1}.risk-options{display:flex;gap:8px}.risk-btn{padding:8px 16px;border:1px solid var(--border);border-radius:6px;background:#fff;cursor:pointer;font-size:13px;text-transform:capitalize;font-family:inherit;transition:all .15s}.risk-btn:hover{border-color:var(--ink)}.risk-btn.active{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-save{background:var(--ink);color:#fff;border:none;padding:11px 24px;border-radius:8px;font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s;align-self:flex-start}.btn-save:hover:not(:disabled){background:#2a2a2a}.btn-save:disabled{opacity:.6;cursor:not-allowed}.btn-delete{background:#fff;color:var(--red);border:1px solid var(--red);padding:11px 24px;border-radius:8px;font-size:14px;font-family:inherit;cursor:pointer;transition:all .15s}.btn-delete:hover{background:#fdf2f2}.broker-status-bar{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--paper);border-radius:8px;margin-bottom:20px;font-size:13px}.broker-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.broker-dot.paper{background:#aaa}.broker-dot.live{background:#22c55e}.broker-dot.warn{background:#eab308}.broker-status-text{color:var(--ink-2)}.broker-keys-badge{font-family:JetBrains Mono,monospace;font-size:11px;background:#fff;border:1px solid var(--border);padding:2px 8px;border-radius:4px;margin-left:auto}.broker-selector{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:24px}.broker-btn{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;text-align:left;transition:all .15s}.broker-btn:hover{border-color:var(--ink)}.broker-btn.active{border-color:var(--ink);background:var(--paper);box-shadow:inset 0 0 0 1px var(--ink)}.broker-label{font-size:14px;font-weight:500}.broker-desc{font-size:11px;color:var(--ink-3)}.paper-info{display:flex;align-items:flex-start;gap:16px;padding:20px;background:var(--paper);border-radius:8px}.paper-icon{font-size:32px}.paper-info p{font-size:13px;color:var(--ink-3);margin-top:4px;line-height:1.6}.api-keys-form{display:flex;flex-direction:column;gap:20px}.api-step{display:flex;gap:16px;align-items:flex-start}.step-num{width:28px;height:28px;border-radius:50%;background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0;margin-top:2px}.api-step strong{font-size:14px}.api-step p{font-size:13px;color:var(--ink-3);margin-top:4px;line-height:1.5}.redirect-uri{display:block;font-family:JetBrains Mono,monospace;font-size:12px;background:var(--paper);padding:8px 12px;border-radius:6px;margin-top:8px;color:var(--ink);word-break:break-all}.api-fields{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:12px}.input-eye-wrap{position:relative}.input-eye-wrap input{width:100%;padding-right:56px}.eye-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:12px;color:var(--ink-3);cursor:pointer}.api-actions{display:flex;gap:12px;align-items:center}.security-note{font-size:12px;color:var(--ink-3);background:var(--paper);padding:10px 14px;border-radius:6px}.account-info{display:flex;flex-direction:column;gap:0}.acct-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);font-size:14px}.acct-row:last-child{border-bottom:none}.acct-row span{color:var(--ink-3)}@media (max-width: 640px){.settings-row,.broker-selector,.api-fields{grid-template-columns:1fr}.settings-page{padding:16px}}.settings-tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:24px}.settings-tab{padding:10px 20px;background:none;border:none;border-bottom:2px solid transparent;font-size:14px;font-weight:500;cursor:pointer;font-family:inherit;color:var(--ink-3);transition:all .15s;display:flex;align-items:center;gap:6px}.settings-tab:hover{color:var(--ink)}.settings-tab.active{color:var(--ink);border-bottom-color:var(--ink)}.tab-badge{font-size:9px;font-weight:700;background:#1d4ed8;color:#fff;padding:1px 5px;border-radius:3px;letter-spacing:.5px}:root{--ink: #0d0d0d;--ink-2: #3a3a3a;--ink-3: #7a7a7a;--paper: #f5f2ec;--paper-2: #ede9e1;--gold: #b8860b;--border: rgba(13,13,13,.12);--red: #c0392b;--green: #1a6b3a;--radius: 8px}.auth-page{min-height:100vh;background:var(--paper);display:flex;align-items:center;justify-content:center;padding:24px 16px;font-family:DM Sans,Segoe UI,sans-serif}.auth-card{width:100%;max-width:440px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:40px 40px 36px}.auth-brand{margin-bottom:28px;font-size:18px;font-weight:600}.brand-name{color:var(--ink)}.brand-sub{color:var(--gold);font-weight:300}.auth-title{font-size:24px;font-weight:600;color:var(--ink);margin:0 0 6px;letter-spacing:-.4px}.auth-sub{font-size:14px;color:var(--ink-3);margin:0 0 24px;line-height:1.5}.auth-error{display:flex;align-items:center;gap:8px;background:#fdf2f2;border:1px solid #f5c6c6;border-radius:var(--radius);padding:10px 14px;font-size:13px;color:var(--red);margin-bottom:20px}.auth-success{background:#f0faf4;border:1px solid #b7dfca;border-radius:var(--radius);padding:10px 14px;font-size:13px;color:var(--green);margin-bottom:20px}.auth-form{display:flex;flex-direction:column;gap:18px}.field{display:flex;flex-direction:column;gap:6px}.field label{font-size:13px;font-weight:500;color:var(--ink-2);display:flex;justify-content:space-between;align-items:center}.field-link{font-weight:400;color:var(--ink-3);text-decoration:none;font-size:12px}.field-link:hover{color:var(--ink)}.field input{width:100%;padding:10px 14px;font-size:14px;font-family:inherit;color:var(--ink);background:#fff;border:1px solid var(--border);border-radius:var(--radius);outline:none;transition:border-color .15s;box-sizing:border-box}.field input:focus{border-color:var(--ink)}.field input::-moz-placeholder{color:#bbb}.field input::placeholder{color:#bbb}.input-wrap{position:relative}.input-wrap input{padding-right:56px}.toggle-pwd{position:absolute;right:12px;top:50%;transform:translateY(-50%);background:none;border:none;font-size:12px;color:var(--ink-3);cursor:pointer;padding:2px 4px}.toggle-pwd:hover{color:var(--ink)}.otp-input{font-family:JetBrains Mono,Courier New,monospace!important;font-size:24px!important;letter-spacing:12px!important;text-align:center;padding:14px 20px!important}.otp-icon{font-size:36px;margin-bottom:12px}.btn-auth{width:100%;padding:12px;background:var(--ink);color:#fff;border:none;border-radius:var(--radius);font-size:14px;font-weight:500;font-family:inherit;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .15s;margin-top:4px}.btn-auth:hover:not(:disabled){background:#2a2a2a}.btn-auth:disabled{opacity:.6;cursor:not-allowed}.spinner{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.auth-hint{font-size:11px;color:var(--ink-3);line-height:1.5;background:var(--paper);padding:10px 12px;border-radius:var(--radius);margin:-4px 0}.auth-footer{margin-top:24px;text-align:center;font-size:13px;color:var(--ink-3)}.auth-footer a{color:var(--ink);font-weight:500;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.link-btn{background:none;border:none;color:var(--ink);font-weight:500;font-size:13px;cursor:pointer;padding:0;font-family:inherit}.link-btn:disabled{color:var(--green);cursor:default}.link-btn:not(:disabled):hover{text-decoration:underline}.auth-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--paper);color:var(--ink-3);font-size:14px}@media (max-width: 480px){.auth-card{padding:28px 20px 24px}}
