:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#eef2f3;color:#1f2a32}*{box-sizing:border-box}body{margin:0;min-width:320px}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:248px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;background:#102027;color:#f4f7f8;padding:22px 14px}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 22px;border-bottom:1px solid rgba(255,255,255,.12)}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:8px;background:#4fb3bf;color:#0e1d22;font-size:22px;font-weight:800}.brand h1{margin:0;font-size:20px;line-height:1.1}.brand p{margin:3px 0 0;color:#aec2ca;font-size:12px}nav{display:grid;gap:4px;padding-top:18px}nav a{border-radius:6px;color:#d6e0e4;font-size:13px;font-weight:600;padding:10px 11px}nav a.active,nav a:hover{background:#1f3942;color:#fff}.sidebar-footer{border-top:1px solid rgba(255,255,255,.12);display:grid;gap:10px;margin-top:26px;padding:18px 8px 0}.sidebar-footer span{color:#aec2ca;font-size:12px;overflow-wrap:anywhere}.sidebar-footer button{background:transparent;border:1px solid rgba(255,255,255,.2);border-radius:6px;color:#f4f7f8;cursor:pointer;font:inherit;font-size:13px;padding:9px 11px;text-align:left}.sidebar-footer button:hover{background:#1f3942}main{min-width:0;padding:26px}.login-page{align-items:center;background:#eef2f3;display:flex;justify-content:center;min-height:100vh;padding:24px}.login-panel{background:#fff;border:1px solid #d5e0e4;border-radius:8px;box-shadow:0 16px 34px #10202714;max-width:400px;padding:30px;width:100%}.login-brand{align-items:center;display:flex;gap:12px;margin-bottom:28px}.login-brand h1{font-size:24px;letter-spacing:0;margin:0}.login-brand p{color:#61727b;font-size:13px;margin:3px 0 0}.login-form{display:grid;gap:9px}.login-form label{color:#44545d;font-size:13px;font-weight:700;margin-top:8px}.login-form input{border:1px solid #bdccd2;border-radius:6px;color:#1f2a32;font:inherit;height:44px;padding:0 12px}.login-form input:focus{border-color:#278493;outline:2px solid rgba(39,132,147,.16)}.login-error{background:#fff1ef;border:1px solid #efc3be;border-radius:6px;color:#9c3025;font-size:13px;margin:12px 0 0;padding:10px 12px}.login-submit{background:#157886;border:0;border-radius:6px;color:#fff;cursor:pointer;font:inherit;font-weight:700;height:44px;margin-top:18px}.login-submit:disabled{cursor:progress;opacity:.7}.login-link{color:#157886;font-size:13px;font-weight:700;margin-top:10px;text-align:center}.login-link:hover{text-decoration:underline}.login-success{background:#ebf7f1;border:1px solid #b8dfcc;border-radius:6px;color:#116341;font-size:13px;margin:12px 0 0;padding:10px 12px}.user-admin{align-items:start;display:grid;gap:18px;grid-template-columns:minmax(260px,330px) minmax(460px,1fr)}.user-create,.user-table{background:#fff;border:1px solid #d5e0e4;border-radius:8px;padding:18px}.user-create{display:grid;gap:9px}.user-create label{color:#44545d;font-size:13px;font-weight:700;margin-top:9px}.user-create input,.user-create select{background:#fff;border:1px solid #bdccd2;border-radius:6px;color:#1f2a32;font:inherit;height:42px;padding:0 11px}.primary-button,.danger-button{border-radius:6px;cursor:pointer;font:inherit;font-size:13px;font-weight:700;height:40px}.primary-button{background:#157886;border:0;color:#fff;margin-top:12px}.primary-button:disabled,.danger-button:disabled{cursor:default;opacity:.55}.section-heading{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.user-table table{border-collapse:collapse;width:100%}.user-table th,.user-table td{border-bottom:1px solid #e5ecef;font-size:13px;padding:11px 8px;text-align:left}.user-table th{color:#61727b;font-size:12px;text-transform:uppercase}.table-action{text-align:right!important}.danger-button{background:#fff;border:1px solid #ddc2be;color:#9c3025;padding:0 11px}.empty-state{color:#61727b;font-size:13px;margin:14px 0 0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:20px}.eyebrow{margin:0 0 5px;color:#61727b;font-size:12px;font-weight:700;text-transform:uppercase}h2,h3{margin:0;letter-spacing:0}h2{font-size:28px;line-height:1.15}h3{font-size:16px}.question-strip{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;max-width:650px}.question-strip span,.record-count,.button-link{border:1px solid #cad4d8;border-radius:6px;background:#fff;color:#39505b;font-size:12px;font-weight:700;padding:8px 10px;white-space:nowrap}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:16px}.performance-block{background:#f7fafb;border:1px solid #d8e0e3;margin-bottom:22px;padding:18px}.performance-metrics{display:grid;gap:12px;grid-template-columns:repeat(5,minmax(0,1fr));margin-bottom:14px}.performance-charts{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.performance-charts .chart-host{min-height:270px}.performance-observed{color:#667780;font-size:12px;margin:12px 0 0;text-align:right}.operational-metrics{margin-top:4px}.content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.panel,.metric-card,.chart-host,.run-card{border:1px solid #d8e0e3;border-radius:8px;background:#fff}.panel{padding:16px;overflow:hidden}.panel-heading{margin-bottom:12px}.panel-heading p{margin:4px 0 0;color:#667780;font-size:13px}.metric-card{min-height:104px;padding:15px}.metric-label{color:#64757e;font-size:12px;font-weight:700;text-transform:uppercase}.metric-value{margin-top:8px;color:#15262e;font-size:26px;font-weight:800;line-height:1.1;overflow-wrap:anywhere}.metric-detail{margin-top:7px;color:#6e7f87;font-size:12px}.table-shell{overflow-x:auto}table{width:100%;border-collapse:collapse;min-width:720px}th,td{border-bottom:1px solid #e4eaed;padding:10px 9px;text-align:left;vertical-align:top;font-size:12px}th{color:#53656e;font-weight:800;text-transform:uppercase}td{color:#24343c;max-width:360px;overflow-wrap:anywhere}.status-pill{display:inline-flex;align-items:center;min-height:24px;border-radius:999px;padding:3px 9px;background:#edf2f4;font-weight:800}.status-good{background:#e3f5ec;color:#17663f}.status-bad{background:#ffe8e5;color:#982b20}.status-watch{background:#fff4d6;color:#765300}.empty,.alert{border-radius:6px;padding:14px;color:#5f7078;background:#f5f8f9;font-size:13px}.alert{margin-bottom:12px;background:#fff1ee;color:#8a271d}.run-list{display:grid;gap:10px}.run-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,1.2fr);gap:16px;padding:14px}.run-card:hover{border-color:#7fb8c2}.run-card p{margin:4px 0 0;color:#61727b;font-size:13px}dl{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0}dt{color:#6a7b83;font-size:11px;font-weight:800;text-transform:uppercase}dd{margin:3px 0 0;color:#24343c;font-size:12px;overflow-wrap:anywhere}.chart-host{height:320px;padding:10px}@media(max-width:980px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}nav{grid-template-columns:repeat(2,minmax(0,1fr))}main{padding:18px}.page-header,.content-grid,.run-card{grid-template-columns:1fr}.page-header{display:grid}.question-strip{justify-content:flex-start}.metrics-grid{grid-template-columns:1fr}}@media(max-width:560px){nav{grid-template-columns:1fr}h2{font-size:24px}dl{grid-template-columns:1fr}}@media(max-width:980px){.symbol-toolbar{align-items:stretch;grid-template-columns:1fr}.symbol-search input{max-width:none}}.table-shell{width:100%;overflow-x:auto;border:1px solid #e5eaee;border-radius:14px;background:#fff}.table-shell table{width:100%;min-width:760px;border-collapse:separate;border-spacing:0}.table-shell--compact table{min-width:640px}.table-shell thead th{position:sticky;top:0;z-index:2;background:#f7fafc;border-bottom:1px solid #dbe4ea;color:#51606b;font-size:.72rem;font-weight:700;letter-spacing:.035em;line-height:1.15;padding:.75rem .7rem;text-align:left;text-transform:uppercase;white-space:nowrap}.table-shell tbody td{border-bottom:1px solid #eef2f5;color:#26343d;font-size:.86rem;line-height:1.25;padding:.72rem .7rem;vertical-align:middle;white-space:nowrap}.table-shell tbody tr:last-child td{border-bottom:0}.table-shell tbody tr:hover td{background:#f8fbfd}.table-shell--sticky-first th:first-child,.table-shell--sticky-first td:first-child{position:sticky;left:0;z-index:3;background:#fff;box-shadow:1px 0 #e5eaee}.table-shell--sticky-first thead th:first-child{z-index:4;background:#f7fafc}.col--number,.col--money,.col--percent{text-align:right!important;font-variant-numeric:tabular-nums}.col--date{min-width:8.5rem;font-variant-numeric:tabular-nums}.col--id{max-width:9rem}.col--reason{min-width:8.75rem}.col--symbol{font-weight:700}.cell-value{display:inline-flex;align-items:center;max-width:18rem;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}.cell-value--muted{color:#9aa6af}.status-pill,.reason-pill{border-radius:999px;font-size:.75rem;font-weight:700;line-height:1;padding:.34rem .55rem;text-transform:capitalize}.status-good,.reason-good{background:#ecfdf3;color:#027a48}.status-bad,.reason-bad{background:#fef3f2;color:#b42318}.status-watch,.reason-watch{background:#fffaeb;color:#b54708}.reason-muted{background:#f2f4f7;color:#667085}.panel{overflow:hidden}.panel-heading{margin-bottom:1rem}.panel-heading h3{margin:0}.panel-heading p{margin:.25rem 0 0;color:#697781}.metrics-grid{align-items:stretch}.chart-host{min-height:320px}.reason-pill{max-width:7.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.table-shell tbody td{padding:.62rem .6rem}.table-shell thead th{padding:.65rem .6rem}.col--reason{min-width:7.25rem}.col--symbol{min-width:5.5rem}.metric-card{border:1px solid #e5eaee;border-radius:16px;background:#fff;padding:1rem;box-shadow:0 8px 24px #0f172a0a}.metric-label{color:#697781;font-size:.75rem;font-weight:700;letter-spacing:.035em;text-transform:uppercase}.metric-value{margin-top:.45rem;color:#1f2933;font-size:1.45rem;font-weight:800;line-height:1.15}.metric-detail{margin-top:.35rem;color:#697781;font-size:.82rem}.metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:1rem}.col--money,.col--percent,.col--number{min-width:5.75rem}.asset-performance-list{display:grid;gap:.75rem}.asset-performance-row{display:grid;grid-template-columns:minmax(7rem,.7fr) minmax(12rem,1fr) minmax(18rem,1.1fr);gap:.9rem;align-items:center;border:1px solid #e5eaee;border-radius:8px;padding:.72rem;background:#fbfdfe}.asset-performance-row__label{display:grid;gap:.18rem}.asset-performance-row__label span,.asset-performance-row__metrics{color:#667780;font-size:.78rem}.asset-performance-row__bars{display:grid;gap:.4rem}.asset-performance-row__bar-track{height:.55rem;overflow:hidden;border-radius:999px;background:#edf2f4}.asset-performance-row__bar{display:block;height:100%;border-radius:inherit}.asset-performance-row__bar--pnl{background:#1f7a8c}.asset-performance-row__bar--alpha{background:#6f8f2f}.asset-performance-row__bar--negative{background:#b42318}.asset-performance-row__metrics{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.45rem;align-items:center}.asset-performance-chart{display:grid;gap:.85rem}.asset-performance-legend{display:flex;flex-wrap:wrap;gap:.85rem;color:#51606b;font-size:.78rem;font-weight:800}.asset-performance-legend span{display:inline-flex;align-items:center;gap:.35rem}.legend-swatch{display:inline-block;width:.8rem;height:.8rem;border-radius:2px}.legend-swatch--pnl{background:#1f7a8c}.legend-swatch--alpha{background:#6f8f2f}.legend-swatch--win{background:#8a3ffc}.legend-swatch--negative{background:#b42318}.asset-performance-chart__scroller{overflow-x:auto;border:1px solid #e5eaee;border-radius:8px;background:linear-gradient(#fbfdfe,#fff);padding:.85rem .85rem .35rem}.asset-performance-chart__plot{display:flex;align-items:end;gap:.42rem;min-width:max-content;height:18rem}.asset-performance-chart__group{display:grid;grid-template-rows:minmax(0,1fr) 3.5rem;width:2.1rem;height:100%}.asset-performance-chart__bars{display:flex;align-items:end;gap:.18rem;height:100%;border-bottom:1px solid #cad4d8}.asset-performance-chart__bar{display:block;width:.48rem;min-height:.2rem;border-radius:3px 3px 0 0}.asset-performance-chart__bar--pnl{background:#1f7a8c}.asset-performance-chart__bar--alpha{background:#6f8f2f}.asset-performance-chart__bar--win{background:#8a3ffc}.asset-performance-chart__bar--negative{background:#b42318}.asset-performance-chart__label{align-self:start;color:#51606b;font-size:.66rem;font-weight:800;line-height:1;overflow:hidden;padding-top:.35rem;text-align:right;text-overflow:ellipsis;transform:rotate(-62deg);transform-origin:top right;white-space:nowrap}.trade-controls{display:grid;grid-template-columns:minmax(11rem,1fr) repeat(3,minmax(9rem,max-content)) max-content max-content max-content;gap:.6rem;align-items:center;margin-bottom:.7rem}.trade-controls input[type=search],.trade-controls select{min-height:2.35rem;border:1px solid #cad4d8;border-radius:6px;background:#fff;color:#24343c;font:inherit;font-size:.86rem;padding:0 .65rem}.trade-toggle{display:inline-flex;align-items:center;gap:.38rem;color:#40535d;font-size:.84rem;font-weight:700;white-space:nowrap}.segmented-control{display:inline-flex;overflow:hidden;border:1px solid #cad4d8;border-radius:6px;background:#fff}.segmented-control button{min-height:2.25rem;border:0;border-right:1px solid #cad4d8;background:transparent;color:#40535d;cursor:pointer;font:inherit;font-size:.82rem;font-weight:800;padding:0 .75rem}.segmented-control button:last-child{border-right:0}.segmented-control button.active{background:#1f3942;color:#fff}.symbol-overview{background:#fff;border:1px solid #d8e0e3;border-radius:8px;overflow:hidden}.symbol-toolbar{align-items:end;background:#f7fafc;border-bottom:1px solid #dbe4ea;display:grid;gap:.75rem;grid-template-columns:minmax(12rem,1fr) auto auto;padding:.9rem}.symbol-search{color:#51606b;display:grid;font-size:.72rem;font-weight:700;gap:.32rem;text-transform:uppercase}.symbol-search input{background:#fff;border:1px solid #cad4d8;border-radius:6px;color:#24343c;font:inherit;font-size:.86rem;height:2.35rem;max-width:18rem;padding:0 .65rem;text-transform:uppercase}.symbol-search input:focus{border-color:#278493;outline:2px solid rgba(39,132,147,.16)}.symbol-table{max-height:calc(100vh - 220px);overflow:auto}.symbol-table table{min-width:1080px}.symbol-table thead{background:#fff;position:sticky;top:0;z-index:2}.symbol-table td{vertical-align:top}.symbol-table td strong{display:block}.symbol-table td small{color:#697781;display:block;font-size:.74rem;margin-top:.2rem}.symbol-name{color:#15262e;font-size:.9rem;font-weight:800}.strategy-view{min-width:20rem}.strategy-line{align-items:center;display:grid;gap:.35rem;grid-template-columns:minmax(7.5rem,auto) 3rem auto;margin-bottom:.36rem}.strategy-line:last-child{margin-bottom:0}.strategy-line small{grid-column:1 / -1;margin:0}.strategy-name{color:#40535d;font-size:.78rem;font-weight:700}.signal-pill{background:#e3f5ec;border-radius:999px;color:#17663f;font-size:.7rem;font-weight:800;padding:.25rem .45rem}.trade-audit-button{min-height:2.35rem;cursor:pointer;font:inherit}.trade-result-count{margin-bottom:.8rem;color:#697781;font-size:.82rem;font-weight:700}.trade-card-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(34rem,1fr));gap:1rem}.trade-card{border:1px solid #d8e0e3;border-radius:8px;background:#fff;padding:.95rem}.trade-card--warning{border-color:#e8b55b;box-shadow:inset 3px 0 #e8a321}.trade-card__header{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.trade-card__title-row,.trade-card__headline-metrics{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center}.audit-pill{border-radius:4px;padding:.18rem .42rem;font-size:.7rem;font-weight:800;background:#e8f5ef;color:#027a48}.audit-pill.grade-c{background:#fff4d6;color:#8a5700}.audit-pill.grade-d,.audit-pill.grade-f,.audit-pill--critical{background:#fee4e2;color:#b42318}.audit-pill--warning{background:#fff4d6;color:#8a5700}.trade-card__title-row span,.trade-card__subline,.trade-card__hint{color:#697781;font-size:.78rem}.trade-card__symbol{color:#15262e;font-size:1.05rem}.trade-card__headline-metrics{justify-content:flex-end;color:#334650;font-size:.85rem;font-variant-numeric:tabular-nums}.pnl-positive{color:#027a48}.pnl-negative{color:#b42318}.reason-trailing{background:#fff4d6;color:#b54708}.reason-signal{background:#f2eafd;color:#6b2fb8}.trade-card__chart{margin-top:.75rem;border:1px solid #edf2f4;border-radius:8px;background:#fbfdfe;padding:.45rem}.trade-card__chart svg{display:block;width:100%;min-height:13rem}.trade-chart__axis{stroke:#d8e0e3;stroke-width:1}.trade-chart__grid{stroke:#edf2f4;stroke-width:1}.trade-chart__price-label{fill:#697781;font-size:.62rem;font-weight:700}.trade-chart__target-zone{fill:#027a4817;stroke:#027a4840}.trade-chart__stop-zone{fill:#b4231814;stroke:#b4231838}.trade-chart__wick{stroke-width:1.2}.trade-chart__wick--up{stroke:#1f9d72}.trade-chart__wick--down{stroke:#d04f45}.trade-chart__candle{stroke-width:1}.trade-chart__candle--up{fill:#b9ead6;stroke:#1f9d72}.trade-chart__candle--down{fill:#ffd2cc;stroke:#d04f45}.trade-chart__level{stroke-width:1.4;stroke-dasharray:5 4;opacity:.82}.trade-chart__label{font-size:.68rem;font-weight:800}.trade-card__hint{margin:.35rem 0 0}.trade-card__kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;margin-top:.75rem}.trade-card__kpi-grid div,.trade-card__warnings,.trade-card__details{border:1px solid #edf2f4;border-radius:8px;background:#fbfdfe}.trade-card__kpi-grid div{display:grid;gap:.2rem;padding:.55rem}.trade-card__kpi-grid span,.trade-card__details dt{color:#697781;font-size:.68rem;font-weight:800;text-transform:uppercase}.trade-card__kpi-grid strong,.trade-card__details dd{color:#24343c;font-size:.82rem;overflow-wrap:anywhere}.trade-card__warnings{margin-top:.75rem;padding:.65rem;background:#fffaf0;color:#765300}.trade-card__warnings ul{margin:.35rem 0 0;padding-left:1.1rem}.trade-card__warnings li{margin-top:.18rem;font-size:.82rem}.trade-card__details{margin-top:.75rem;padding:.65rem}.trade-card__details summary{cursor:pointer;color:#40535d;font-size:.84rem;font-weight:800}.trade-card__detail-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:.7rem}.trade-card__detail-grid h4{margin:0 0 .5rem;color:#24343c;font-size:.82rem}.trade-card__details dl{grid-template-columns:100%;gap:.45rem .7rem}.trade-card__details dl dd{margin-top:-5px}@media(max-width:900px){.user-admin,.performance-metrics,.performance-charts{grid-template-columns:1fr}.table-shell table{min-width:980px}.chart-host{min-height:260px}.asset-performance-row,.trade-controls,.trade-card__header,.trade-card__detail-grid{grid-template-columns:1fr}.trade-card__header{display:grid}.trade-card-list{grid-template-columns:1fr}.trade-card__headline-metrics,.asset-performance-row__metrics{justify-content:flex-start}.trade-card__kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media print{.sidebar{display:none}.metrics-grid{display:flex}.metrics-grid>*{flex:1 1 auto}}
