:root{--bg-primary: #0d1117;--bg-secondary: #161b22;--bg-tertiary: #21262d;--bg-card: #1c2128;--border-primary: #30363d;--border-secondary: #21262d;--text-primary: #e6edf3;--text-secondary: #8b949e;--text-muted: #6e7681;--accent-red: #f85149;--accent-green: #3fb950;--accent-blue: #58a6ff;--accent-purple: #a371f7;--accent-orange: #e09f3e;--accent-cyan: #39c5cf;--aviation-color: #e09f3e;--forecast-color: #6b7280;--weathergov-color: #6d9dc5;--high-color: #e07850;--low-color: #5b9bd5;--avg-color: #9d8ec9}*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;background:var(--bg-primary);min-height:100vh;color:var(--text-primary);line-height:1.5}.app{max-width:1400px;margin:0 auto;padding:20px}.glass{background:#161b22b3!important;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.1)!important}.top-row{display:flex;gap:16px;margin-bottom:16px;align-items:stretch}.top-row>*{margin-bottom:0!important}@media(max-width:1200px){.top-row{flex-direction:column}}.header{flex:1.5;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;margin-bottom:16px;transition:transform .3s ease}.header:hover{transform:translateY(-2px)}h1{font-size:1.25rem;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px}h1:before{content:"📡";font-size:1.1rem}.current-temp{display:flex;align-items:center;gap:16px}.temp-display{font-size:2rem;font-weight:700;font-family:SF Mono,Consolas,Liberation Mono,monospace;color:var(--text-primary)}.temp-meta{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.source-badge{display:inline-flex;align-items:center;padding:3px 10px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:6px;font-size:.75rem;font-weight:500;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.02em}.timestamp{font-size:.8rem;color:var(--text-muted);font-family:SF Mono,Consolas,monospace}.threshold-control{flex:1;display:flex;align-items:center;padding:12px 20px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;margin-bottom:16px}.threshold-form{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.threshold-form label{font-size:.875rem;font-weight:500;color:var(--text-secondary)}.threshold-input{padding:8px 12px;background:var(--bg-tertiary);border:1px solid var(--border-primary);border-radius:6px;font-size:.9rem;font-family:SF Mono,Consolas,monospace;color:var(--text-primary);width:120px;transition:all .2s cubic-bezier(.4,0,.2,1)}.threshold-input:focus{outline:none;border-color:var(--accent-blue);box-shadow:0 0 0 3px #58a6ff26;transform:scale(1.02)}.threshold-input::placeholder{color:var(--text-muted)}.set-button,.clear-button,.refresh-button,.dismiss-button{padding:8px 16px;border:1px solid transparent;border-radius:6px;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.set-button{background:var(--accent-green);color:#fff}.set-button:hover{background:#2ea043;transform:translateY(-1px);box-shadow:0 4px 12px #3fb95033}.clear-button{background:transparent;border-color:var(--border-primary);color:var(--text-secondary)}.clear-button:hover{background:var(--bg-tertiary);border-color:var(--accent-red);color:var(--accent-red);transform:translateY(-1px)}.threshold-display{margin-left:auto;font-size:.8rem;color:var(--accent-red);font-family:SF Mono,Consolas,monospace}.chart-container{background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;padding:20px;margin-bottom:16px;box-shadow:0 8px 32px #0003}.stats-panel{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;background:var(--bg-tertiary);border-radius:8px;overflow:hidden;margin-bottom:16px;border:1px solid var(--border-primary)}.stats-empty{grid-column:1 / -1;padding:20px;text-align:center;color:var(--text-muted);font-style:italic;background:var(--bg-tertiary)}.stat-item{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:8px;background:var(--bg-tertiary);text-align:center;transition:all .2s ease;min-height:60px}.stat-item:hover{background:var(--bg-secondary)}.market-contract-actionable{box-shadow:inset 0 1px #58a6ff2e}.market-contract-muted{opacity:.72}.market-toggle{grid-column:1 / -1;justify-self:center;padding:7px 10px;border:0;background:transparent;color:var(--accent-blue);cursor:pointer;font-size:.75rem;font-weight:600}.market-toggle:hover{text-decoration:underline}.market-panel{margin-bottom:16px;padding:16px 20px}.market-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.market-heading h2{margin:2px 0 0;font-size:1rem}.market-updated{color:var(--text-muted);font-size:.75rem}.market-quotes{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.market-quote{display:grid;grid-template-columns:1fr auto;gap:5px 10px;padding:10px;border:1px solid var(--border-primary);border-radius:6px;background:var(--bg-tertiary);color:var(--text-secondary);font-size:.75rem}.market-quote strong{grid-column:1 / -1;color:var(--text-primary)}.stat-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:4px;font-weight:600}.stat-value{font-size:1.1rem;font-weight:700;font-family:SF Mono,Consolas,monospace;color:var(--text-primary)}.stat-value.high{color:var(--high-color)}.stat-value.low{color:var(--low-color)}.stat-value.trend{font-weight:600}.stat-time{display:block;font-size:.85rem;font-weight:500;color:var(--text-secondary);margin-top:2px;font-family:SF Mono,Consolas,monospace}.tv-chart-wrapper{position:relative}.tv-chart{width:100%;height:400px;border-radius:8px;overflow:hidden}.chart-tooltip{position:absolute;background:var(--bg-card);border:1px solid var(--border-primary);border-radius:8px;padding:10px 12px;pointer-events:none;z-index:10;min-width:140px;box-shadow:0 4px 12px #0000004d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chart-tooltip .tooltip-time{font-size:.75rem;color:var(--text-muted);margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--border-secondary);font-family:SF Mono,Consolas,monospace}.chart-tooltip .tooltip-row{display:flex;justify-content:space-between;gap:12px;font-size:.8rem;padding:2px 0}.chart-tooltip .tooltip-row span:first-child{color:var(--text-secondary)}.chart-tooltip .tooltip-row span:last-child{font-family:SF Mono,Consolas,monospace;font-weight:600}.chart-tooltip .tooltip-row.cloud span:last-child{color:var(--text-muted)}.chart-tooltip .tooltip-row.wind span:last-child{color:var(--accent-cyan)}.chart-tooltip .tooltip-row.aviation span:last-child{color:var(--aviation-color)}.chart-tooltip .tooltip-row.forecast span:last-child{color:var(--forecast-color)}.chart-tooltip .tooltip-row.weathergov span:last-child{color:var(--weathergov-color)}.chart-legend{display:flex;justify-content:center;gap:24px;padding:12px 0 0;flex-wrap:wrap}.chart-legend.dark{background:transparent;padding:16px 0 0;margin-top:0;border-top:1px solid var(--border-primary)}.legend-item{display:flex;align-items:center;gap:8px;font-size:.8rem;color:var(--text-secondary);transition:color .2s ease;cursor:default}.legend-item:hover{color:var(--text-primary)}.chart-legend.dark .legend-item{color:var(--text-secondary)}.legend-line{width:24px;height:3px;border-radius:2px;display:inline-block}.legend-line.aviation{height:2px;background:repeating-linear-gradient(90deg,var(--aviation-color) 0,var(--aviation-color) 2px,transparent 2px,transparent 5px)}.legend-line.forecast{background:var(--forecast-color);background:repeating-linear-gradient(90deg,var(--forecast-color) 0px,var(--forecast-color) 6px,transparent 6px,transparent 10px)}.legend-line.weathergov{background:var(--weathergov-color)}.backtest-panel,.trading-panel{padding:20px;border-radius:12px;margin-bottom:16px}.trading-heading,.trading-badges,.trading-status-grid>div,.trading-candidate,.trading-position{display:flex;align-items:center}.trading-heading{justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid var(--border-primary)}.trading-heading h2{font-size:1rem}.trading-badges{gap:8px}.trading-badge{padding:4px 8px;border:1px solid var(--border-primary);border-radius:999px;font-family:SF Mono,Consolas,monospace;font-size:.68rem;text-transform:uppercase}.trading-badge.shadow,.trading-badge.provisional{color:var(--accent-orange);border-color:var(--accent-orange)}.trading-badge.paper,.trading-badge.calibrated{color:var(--accent-green);border-color:var(--accent-green)}.trading-metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;margin-top:16px;overflow:hidden;border:1px solid var(--border-primary);border-radius:8px;background:var(--border-primary)}.trading-metrics>div,.trading-status-grid>div{flex-direction:column;align-items:flex-start;gap:4px;padding:12px;background:var(--bg-tertiary)}.trading-metrics span,.trading-status-grid span{color:var(--text-muted);font-size:.67rem;text-transform:uppercase}.trading-metrics strong,.trading-status-grid strong{font-family:SF Mono,Consolas,monospace;font-size:.78rem}.trading-status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:12px;background:var(--border-primary)}.trading-candidates,.trading-positions{margin-top:14px;border-top:1px solid var(--border-primary)}.trading-candidate{display:grid;grid-template-columns:130px 90px 1fr 90px minmax(160px,1fr);gap:12px;padding:9px 0;border-bottom:1px solid var(--border-secondary);color:var(--text-secondary);font-family:SF Mono,Consolas,monospace;font-size:.7rem}.trading-candidate.selected{color:var(--text-primary);box-shadow:inset 3px 0 var(--accent-green);padding-left:10px}.trading-candidate b{color:var(--text-muted);text-align:right}.trading-candidate.selected b{color:var(--accent-green)}.trading-position{justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--border-secondary);font-family:SF Mono,Consolas,monospace;font-size:.72rem}@media(max-width:900px){.trading-metrics{grid-template-columns:repeat(3,1fr)}.trading-candidate{grid-template-columns:1fr 1fr}.trading-candidate b{text-align:left}}@media(max-width:560px){.trading-heading{align-items:flex-start;flex-direction:column}.trading-metrics,.trading-status-grid{grid-template-columns:repeat(2,1fr)}.trading-position{align-items:flex-start;flex-direction:column}}.backtest-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid var(--border-primary)}.backtest-heading h2{font-size:1rem;font-weight:600}.backtest-kicker,.backtest-method,.backtest-coverage{color:var(--text-muted);font-family:SF Mono,Consolas,monospace;font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.backtest-metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;margin-top:16px;overflow:hidden;border:1px solid var(--border-primary);border-radius:8px;background:var(--border-primary)}.backtest-metrics>div{display:flex;flex-direction:column;gap:4px;padding:14px;background:var(--bg-tertiary)}.backtest-metrics span{color:var(--text-muted);font-size:.68rem;text-transform:uppercase;letter-spacing:.05em}.backtest-metrics strong{font-family:SF Mono,Consolas,monospace;font-size:1.1rem}.positive{color:var(--accent-green)!important}.negative{color:var(--accent-red)!important}.backtest-empty{padding:18px 0 2px;color:var(--text-secondary);font-size:.82rem}.backtest-empty code{color:var(--accent-blue)}.open-trades,.trade-diagnostics{margin-top:14px;border:1px solid var(--border-primary);border-radius:8px;overflow:hidden}.open-trade-row{display:grid;grid-template-columns:1fr auto auto 130px;align-items:center;gap:16px;padding:10px 12px;border-top:1px solid var(--border-secondary);color:var(--text-secondary);font-family:SF Mono,Consolas,monospace;font-size:.75rem}.open-trade-row>span:first-child{color:var(--text-primary)}.open-trade-row b{text-align:right}.trade-diagnostics{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));background:var(--bg-tertiary)}.trade-diagnostics>div{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border-right:1px solid var(--border-primary)}.trade-diagnostics span{color:var(--text-muted);font-size:.68rem;text-transform:uppercase}.trade-diagnostics strong{color:var(--text-secondary);font-family:SF Mono,Consolas,monospace;font-size:.72rem}.backtest-trades{margin-top:14px;border-top:1px solid var(--border-primary)}.trade-row{display:grid;grid-template-columns:1fr auto 80px auto;align-items:center;gap:16px;padding:9px 0;border-bottom:1px solid var(--border-secondary);font-family:SF Mono,Consolas,monospace;font-size:.75rem;color:var(--text-secondary)}.trade-row>strong{text-align:right}.backtest-trade-heading{display:flex!important;justify-content:space-between;gap:16px;color:var(--text-secondary)}.backtest-trade-heading span{color:var(--text-muted);font-size:.68rem}.trade-actions{display:flex;gap:6px}.trade-edit-button,.trade-save-button,.trade-restore-button,.trade-cancel-button,.trade-delete-button{padding:5px 8px;border:1px solid var(--border-primary);border-radius:5px;background:var(--bg-tertiary);color:var(--text-secondary);cursor:pointer;font-size:.72rem}.trade-edit-button:hover,.trade-save-button:hover{border-color:var(--accent-blue);color:var(--accent-blue)}.trade-restore-button:hover{border-color:var(--accent-orange);color:var(--accent-orange)}.trade-delete-button:hover{border-color:var(--accent-red);color:var(--accent-red)}.trade-history-toggle{display:block;margin:10px auto 0;padding:6px 10px;border:0;background:transparent;color:var(--accent-blue);cursor:pointer;font-size:.75rem}.trade-history-toggle:hover{text-decoration:underline}.trade-editor{display:flex;align-items:end;gap:10px;flex-wrap:wrap;padding:12px;margin-top:12px;border:1px solid var(--accent-blue);border-radius:8px;background:var(--bg-tertiary);font-size:.75rem}.trade-editor strong{width:100%}.trade-editor label{display:flex;flex-direction:column;gap:4px;color:var(--text-muted)}.trade-editor input,.trade-editor select{min-height:30px;padding:5px 7px;border:1px solid var(--border-primary);border-radius:5px;background:var(--bg-secondary);color:var(--text-primary)}.trade-save-button{background:var(--accent-blue);color:#fff}.backtest-date-heading{display:flex;justify-content:space-between;margin-top:18px;color:var(--text-secondary);font-size:.78rem}.backtest-dates{margin-top:8px;border-top:1px solid var(--border-primary)}.backtest-dates>div{display:grid;grid-template-columns:90px 1.3fr 1.5fr 110px;gap:14px;align-items:center;padding:9px 0;border-bottom:1px solid var(--border-secondary);color:var(--text-secondary);font-family:SF Mono,Consolas,monospace;font-size:.7rem}.backtest-dates>div>strong{color:var(--text-primary)}.backtest-dates>div>b{text-align:right;font-weight:600}.pending{color:var(--accent-orange)!important}.backtest-coverage{margin-top:12px}@media(max-width:900px){.backtest-metrics{grid-template-columns:repeat(3,1fr)}.backtest-heading{align-items:flex-start;flex-direction:column}}@media(max-width:560px){.backtest-metrics{grid-template-columns:repeat(2,1fr)}.trade-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"summary pnl" "meta meta" "actions actions";gap:6px 12px;padding:12px 0}.trade-summary{grid-area:summary}.trade-meta{grid-area:meta;color:var(--text-muted)}.trade-row>strong{grid-area:pnl;text-align:left}.trade-actions{grid-area:actions}.open-trade-row{grid-template-columns:1fr auto;gap:6px 12px}.open-trade-row>span:nth-child(2),.open-trade-row>span:nth-child(3){grid-column:1 / -1}.open-trade-row b{text-align:right}.backtest-trade-heading span{display:block!important}.backtest-dates>div{grid-template-columns:1fr auto}.backtest-dates>div span{grid-column:1 / -1}}.status-bar{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px;flex-wrap:wrap;gap:12px}.status-bar span{font-size:.85rem;color:var(--text-secondary);font-family:SF Mono,Consolas,monospace}.refresh-button{background:var(--accent-blue);color:#fff}.refresh-button:hover{background:#4493e6;transform:translateY(-1px);box-shadow:0 4px 12px #58a6ff33}.alert-overlay{position:fixed;inset:0;background:#0d1117f2;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s cubic-bezier(.4,0,.2,1);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.alert-content{background:var(--bg-secondary);border:2px solid var(--accent-red);padding:40px;border-radius:16px;max-width:420px;text-align:center;animation:slideUp .4s cubic-bezier(.34,1.56,.64,1);box-shadow:0 0 60px #f851494d}@keyframes slideUp{0%{transform:translateY(40px) scale(.9);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}.alert-icon{font-size:3rem;margin-bottom:16px}.alert-title{font-size:1.5rem;font-weight:700;color:var(--accent-red);margin-bottom:16px}.alert-message{font-size:1rem;color:var(--text-secondary);margin-bottom:24px;line-height:1.6}.alert-message strong{color:var(--text-primary);font-weight:600;font-family:SF Mono,Consolas,monospace}.alert-source{margin-top:8px;font-size:.85rem;color:var(--text-muted)}.dismiss-button{background:var(--accent-red);color:#fff;padding:12px 32px;font-size:1rem}.dismiss-button:hover{background:#da3633}.loading-container{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;background:var(--bg-primary);z-index:1000}.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:16px;background:var(--bg-secondary);border:1px solid var(--border-primary);border-radius:12px}.loading-spinner{width:40px;height:40px;border:4px solid var(--border-primary);border-top-color:var(--accent-blue);border-radius:50%;animation:spin 1s cubic-bezier(.5,0,.5,1) infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-container p{color:var(--text-secondary);font-size:.9rem}.error-container h2{color:var(--accent-red);font-size:1.2rem}.error-container p{color:var(--text-secondary)}.error-container button{background:var(--accent-blue);color:#fff;padding:10px 24px;border:none;border-radius:6px;font-size:.9rem;font-weight:500;cursor:pointer}.error-container button:hover{background:#4493e6}.fade-in{animation:fadeIn .5s ease-out forwards}@media(max-width:900px){.stats-panel{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.app{padding:12px}.header{align-items:stretch;flex-direction:column;gap:6px;padding:14px 16px;text-align:left}.header h1{white-space:nowrap}.current-temp{align-items:center;flex-direction:row;gap:8px;justify-content:space-between}.temp-meta{align-items:flex-end;text-align:right}.temp-display{font-size:2rem}h1{font-size:1.1rem}.stat-value{font-size:1rem}.tv-chart-wrapper .tv-chart{height:350px}.chart-legend{gap:16px}.threshold-form{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;width:100%}.threshold-form label,.threshold-display{grid-column:1 / -1}.threshold-input{width:100%}.threshold-display{margin-left:0;margin-top:0;text-align:left}.status-bar{flex-direction:column;text-align:center}}.login{max-width:360px;margin:10vh auto 0;padding:2rem;background:var(--bg-card);border:1px solid var(--border-primary);border-radius:8px;color:var(--text-primary)}.login h1{font-size:1.25rem;margin-bottom:.5rem}.login>p{color:var(--text-secondary);margin-bottom:1.5rem;font-size:.9rem}.login .error{color:var(--accent-red);margin-bottom:1rem;font-size:.9rem}.login label{display:flex;flex-direction:column;gap:.5rem;font-size:.85rem;color:var(--text-secondary)}.login input[type=password]{padding:.6rem .75rem;background:var(--bg-primary);border:1px solid var(--border-primary);border-radius:6px;color:var(--text-primary);font-size:1rem}.login input[type=password]:focus{outline:none;border-color:var(--accent-blue)}.login button{margin-top:1.25rem;width:100%;padding:.6rem 1rem;background:var(--accent-blue);color:#0d1117;border:none;border-radius:6px;font-size:.95rem;font-weight:600;cursor:pointer}.login button:hover{filter:brightness(1.1)}
