:root{color-scheme:dark;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;color:#e5e7eb;background-color:#020617}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at top left,#0f172a,#020617 60%,#020617)}a{color:inherit}button{font-family:inherit}.app-frame{min-height:100vh;color:#e5e7eb}.app-header{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;padding:1rem 2.5rem;background:linear-gradient(90deg,#0f172af0,#1e40afd9);border-bottom:1px solid rgba(148,163,184,.4);box-shadow:0 14px 40px #0f172ab3}.app-header-brand{display:flex;align-items:center;gap:.6rem}.app-logo-dot{width:12px;height:12px;border-radius:9999px;background:conic-gradient(from 180deg,#22d3ee,#a855f7,#f97316,#22d3ee);box-shadow:0 0 0 4px #38bdf840}.app-title{font-weight:700;letter-spacing:.08em;text-transform:uppercase;font-size:.86rem}.app-header-nav{display:flex;align-items:center;gap:.75rem}.nav-link{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;border-radius:9999px;font-size:.86rem;font-weight:500;color:#cbd5f5;text-decoration:none;border:1px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .1s ease}.nav-link:hover{background:#1e40af8c;border-color:#818cf8b3;transform:translateY(-1px)}.nav-link.active{background:linear-gradient(135deg,#22d3ee,#a855f7);color:#020617;border-color:transparent}.nav-link-key{background:#0f172ad1;border-color:#5eead466}.nav-key-icon{font-size:.85rem}.nav-key-hint{font-size:.7rem;opacity:.8}.app-main{padding:2rem 2.5rem 4rem}.app-main-secmaster{padding-bottom:3rem}.app-shell{width:100%;margin:0 auto}.jobs-form{display:flex;flex-direction:column;gap:1.5rem}.card{background:radial-gradient(circle at top left,#0f172af5,#0f172af5);border-radius:16px;border:1px solid rgba(148,163,184,.5);box-shadow:0 20px 60px #0f172ae6}.card-body{padding:1.75rem;display:grid;gap:1.5rem}.card-header{padding:1.25rem 1.75rem .25rem}.card-header h2{margin:0;font-size:1rem;font-weight:600}.backtest-progress-page .card-body{display:block}.progress-card{display:flex;flex-direction:column;gap:.75rem}.progress-summary-row{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:baseline}.progress-summary-item{min-width:0;display:flex;flex-direction:column;gap:.15rem}.progress-summary-item .label{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:#9ca3af}.progress-summary-item .value{font-size:.9rem;font-weight:500;color:#e5e7eb;word-break:break-all}.progress-bar{position:relative;width:100%;height:8px;border-radius:9999px;background:#1e40af73;overflow:hidden}.progress-bar-inner{height:100%;border-radius:9999px;background:linear-gradient(90deg,#38bdf8,#22c55e);transition:width .28s ease}.status-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.15rem .55rem;border-radius:9999px;font-size:.8rem;font-weight:500;background:#0f172ae6}.status-dot{width:.55rem;height:.55rem;border-radius:9999px}.status-running .status-dot{background:#facc15}.status-queued .status-dot{background:#e5e7eb}.status-done .status-dot{background:#22c55e}.status-error .status-dot{background:#ef4444}.status-running .status-label{color:#fef9c3}.status-queued .status-label{color:#e5e7eb}.status-done .status-label{color:#bbf7d0}.status-error .status-label{color:#fecaca}.jobs-table-wrapper{overflow-x:auto;background:#0f172af2;border-radius:16px;border:1px solid rgba(148,163,184,.6);box-shadow:0 18px 48px #0f172af2}.bulk-update-bar{padding:1rem 1.25rem .5rem;border-bottom:1px solid rgba(30,41,59,.9)}.bulk-update-controls{display:flex;flex-wrap:wrap;gap:.75rem;align-items:flex-end}.jobs-table{width:100%;min-width:960px;border-collapse:collapse}.jobs-table thead th{background:radial-gradient(circle at top left,#020617,#020617);text-align:left;font-size:.78rem;font-weight:700;letter-spacing:.04em;color:#e5e7eb;text-transform:uppercase;border-bottom:1px solid rgba(148,163,184,.6)}.jobs-table thead tr:nth-child(2) th{font-size:.82rem;letter-spacing:.01em;text-transform:none;color:#cbd5f5}.jobs-table th,.jobs-table td{padding:.4rem .55rem;border-bottom:1px solid rgba(30,41,59,.9);vertical-align:middle}.jobs-table tbody tr:last-of-type td{border-bottom:none}.group-heading{font-size:.72rem;text-transform:uppercase;color:#9ca3af}.actions-heading{text-align:center}.job-index-cell{width:52px;font-weight:700;color:#e5e7eb;text-align:center}.job-index-cell .job-index{display:inline-flex;width:32px;height:32px;align-items:center;justify-content:center;border-radius:9999px;background:radial-gradient(circle at top left,#38bdf840,#3b82f60d);color:#38bdf8}.strategy-cell{min-width:180px;display:flex;flex-direction:column;gap:.4rem}.strategy-cell select{width:100%;border-radius:10px;border:1px solid rgba(148,163,184,.7);padding:.55rem .75rem;font-size:.9rem;background:#0f172afa;color:#e5e7eb}.strategy-cell select:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.field-cell{min-width:160px}.col-group-start{border-left:2px solid rgba(148,163,184,.9)}.col-group-identity{background-color:#0f172afa}.col-group-portfolio{background-color:#0f172af2}.col-group-timing{background-color:#0f172aed}.col-group-execution{background-color:#0f172ae8}.col-group-advanced{background-color:#0f172ae6}.col-group-risk{background:linear-gradient(180deg,#7f1d1d3d,#0f172af5)}.col-group-strategy{background-color:#0f172ae6}.field-cell.unavailable{text-align:center;color:#64748b;font-size:.9rem}.field-cell .placeholder{display:inline-block;margin-top:.4rem}.actions-cell{display:flex;flex-direction:row;gap:.4rem;justify-content:center;align-items:center;min-width:130px;text-align:center}.form-footer{display:flex;justify-content:flex-end;gap:.75rem}.section-title{margin:0 0 .75rem;font-size:1rem;font-weight:600;color:#e5e7eb;letter-spacing:.01em;text-transform:uppercase}.field-grid{display:grid;gap:1rem}@media (min-width: 768px){.field-grid.two-column{grid-template-columns:repeat(2,minmax(0,1fr))}}.input-group{display:flex;flex-direction:column;gap:.35rem}.input-group.inline{gap:.3rem}.input-group.inline .helper{font-size:.7rem}.input-group label{font-weight:600;color:#e5e7eb}.input-group input,.input-group select,.input-group textarea{width:100%;border-radius:10px;border:1px solid rgba(148,163,184,.7);padding:.65rem .85rem;font-size:.95rem;transition:border-color .2s ease,box-shadow .2s ease;background-color:#0f172afa;color:#e5e7eb}.input-group input:focus,.input-group select:focus,.input-group textarea:focus{outline:none;border-color:#22c55e;box-shadow:0 0 0 2px #22c55e8c}.input-group .helper{font-size:.78rem;color:#9ca3af}.input-group .error{color:#fca5a5;font-size:.8rem;font-weight:600}.boolean-toggle{display:flex;align-items:center;gap:.5rem}.job-actions{display:flex;gap:.75rem;align-items:center;justify-content:flex-end;margin-top:1rem}button.primary{background:linear-gradient(135deg,#22d3ee,#a855f7);color:#fff;border:none;padding:.75rem 1.5rem;border-radius:9999px;font-weight:600;font-size:1rem;cursor:pointer;box-shadow:0 10px 24px #2563eb47;transition:transform .2s ease,box-shadow .2s ease}button.primary:hover{transform:translateY(-1px);box-shadow:0 16px 40px #3b82f6a6}button.secondary{background:transparent;border:1px solid rgba(148,163,184,.7);color:#e5e7eb;padding:.6rem 1.25rem;border-radius:9999px;font-weight:600;cursor:pointer;transition:background .2s ease}button.secondary:hover{background:#94a3b840}button.secondary[disabled],button.secondary[aria-disabled=true]{opacity:.45;cursor:default}.toggle-pill{border-radius:9999px;padding-inline:1rem}.toggle-pill-active{background:linear-gradient(135deg,#0ea5e9,#6366f1);color:#f9fafb;border-color:transparent;box-shadow:0 0 0 1px #0f172acc,0 10px 25px #2563eb99}button.secondary.subtle{border-color:#94a3b88c;color:#9ca3af}button.secondary.subtle:hover{background:#1e293be6}.alert{border-radius:12px;padding:1rem 1.25rem;border:1px solid transparent;font-size:.95rem}.alert.success{background:#16a34a2e;border-color:#22c55e99;color:#bbf7d0}.alert.error{background:#f8717126;border-color:#f8717199;color:#fecaca}.badge{display:inline-flex;align-items:center;gap:.35rem;background:#22c55e2e;color:#bbf7d0;border-radius:9999px;padding:.3rem .75rem;font-size:.8rem;font-weight:600}.empty-state{padding:3rem 1.5rem;text-align:center;color:#9ca3af}.token-banner{background:linear-gradient(135deg,#082f49e6,#1e40afd9);border:1px solid rgba(56,189,248,.5);color:#e5e7eb;padding:1.25rem 1.5rem;border-radius:12px;display:flex;flex-direction:column;gap:.75rem}.token-banner strong{font-weight:700}.token-banner input{max-width:340px}.run-metadata{display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;margin-top:1.5rem;font-size:.9rem;color:#cbd5f5}.run-metadata span{display:inline-flex;align-items:center;gap:.4rem}.loading-state{display:flex;align-items:center;justify-content:center;padding:4rem 0;color:#e5e7eb;font-weight:600}.glossary-card{margin-top:2.5rem;background:radial-gradient(circle at top left,#0f172af5,#0f172af5);border-radius:16px;border:1px solid rgba(148,163,184,.55);box-shadow:0 20px 60px #0f172ae6;padding:2.25rem;display:grid;gap:1.75rem}.glossary-card h2{margin:0;font-size:1.5rem;color:#e5e7eb}.glossary-intro{margin:0;font-size:.95rem;color:#9ca3af;max-width:720px}.glossary-grid{display:grid;gap:1.75rem}@media (min-width: 900px){.glossary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.glossary-section h3{margin:0 0 .75rem;font-size:1rem;text-transform:uppercase;letter-spacing:.08em;color:#e5e7eb}.glossary-list{margin:0;display:grid;gap:.9rem}.glossary-row{display:grid;gap:.35rem;padding:.9rem 1.1rem;border-radius:12px;background:#0f172af5;border:1px solid rgba(148,163,184,.5)}.glossary-row dt{margin:0;font-weight:700;color:#e5e7eb}.glossary-row dd{margin:0;font-size:.9rem;color:#9ca3af;line-height:1.45}.job-row{background:#0f172ae6;transition:background .15s ease,box-shadow .15s ease,transform .1s ease}.job-row:hover{background:#0f172afa;box-shadow:0 0 0 1px #94a3b8e6;transform:translateY(-1px)}.job-row.strategy-mario{background:radial-gradient(circle at left,#38bdf82e,#0f172af5);box-shadow:0 0 0 1px #38bdf8d9;border-left:3px solid rgba(56,189,248,.9)}.job-row.strategy-pacman{background:radial-gradient(circle at left,#fbbf2438,#0f172af5);box-shadow:0 0 0 1px #fbbf24f2;border-left:3px solid rgba(251,191,36,.95)}.job-row.strategy-bh{box-shadow:0 0 0 1px #818cf8e6}.job-row.strategy-generic{box-shadow:0 0 0 1px #2dd4bfbf}.job-row.strategy-mario td{background:radial-gradient(circle at left,#38bdf829,#0f172af5)}.job-row.strategy-pacman td{background:radial-gradient(circle at left,#fbbf2433,#0f172af5)}.secmaster-candidate-row.selected{background:radial-gradient(circle at left,#38bdf859,#0f172af2)}.secmaster-row{background:#0f172af0}.secmaster-search-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.secmaster-search-actions{display:flex;align-items:flex-end;justify-content:flex-start;gap:.75rem}.secmaster-table-toolbar{display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;margin-bottom:1rem;align-items:flex-end}
