:root{color:#f4f7f7;background:#111315;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none}*{box-sizing:border-box}body{background:#111315;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.app-shell{background:#111315;display:flex;flex-direction:column;gap:0;min-height:100vh;padding:20px}.login-shell{align-items:center;display:flex;min-height:100vh;padding:20px}.login-panel{display:grid;gap:14px;margin:0 auto;max-width:420px;width:100%}.login-panel label{color:#53645e;display:grid;font-size:.82rem;font-weight:700;gap:6px}.topbar,.workspace{display:grid;gap:18px}.topbar{margin-bottom:18px}.topbar{align-items:end;grid-template-columns:1fr auto}.topbar-controls{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:flex-end}.eyebrow{color:#0f6b55;font-size:.75rem;font-weight:700;letter-spacing:0;margin:0 0 6px;text-transform:uppercase}h1,h2,h3,p{margin-top:0}h1{font-size:2rem;line-height:1.1;margin-bottom:0}h2{font-size:1.05rem;margin-bottom:0}h3{font-size:.92rem;margin-bottom:12px}.workspace{align-items:start;grid-template-columns:1fr}.panel,.subpanel{background:#171a1d;border:1px solid #2b3138;border-radius:8px;box-shadow:0 1px 2px #0e221c0f}.panel{padding:16px}.market-board{background:#171a1d;border-color:#171a1d;border-radius:0 0 8px 8px;box-shadow:none}.market-board .panel-header{color:#f4f7f7}.subpanel{padding:14px}.panel-header,.contract-heading{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-bottom:14px}.panel-header span,.contract-heading span,.muted,small{color:#60706a}.market-title{align-items:center;display:flex;flex-wrap:wrap;gap:12px}.contract-filter{display:flex;gap:4px}.contract-filter button{background:#2b3138;border:1px solid #3a424b;border-radius:0;color:#d7dfdf;font-size:.76rem;font-weight:800;height:30px;min-width:34px;padding:0 8px}.contract-filter button.active{background:#0f6b55;border-color:#138a6d;color:#fff}.market-search{align-items:center;display:flex;gap:6px}.market-search span{color:#a6b0b4;font-size:.76rem;font-weight:800;text-transform:uppercase}.market-search input{min-height:30px;width:180px}.kill-all-button{background:#b53136;border:1px solid #e05258;border-radius:0;color:#fff;font-size:.76rem;font-weight:800;min-height:30px;padding:0 12px;text-transform:uppercase}.kill-all-button:disabled{background:#303536;border-color:#4c5557;color:#8b9699}.selector{align-items:center;display:flex;gap:8px}.selector span{color:#53645e;font-size:.78rem;font-weight:700;text-transform:uppercase}select,input{background:#1e2227;border:1px solid #3a424b;border-radius:6px;color:#f4f7f7;min-height:36px;padding:0 10px}input.immutable-input{background:#2b3138;color:#a6b0b4;cursor:not-allowed}.status-dot{border-radius:999px;border:1px solid #cbd5cf;color:#53645e;font-size:.78rem;font-weight:700;padding:7px 10px;text-transform:uppercase}.user-chip{background:#fff;border:1px solid #cbd5cf;border-radius:999px;color:#35443f;font-size:.82rem;font-weight:700;padding:7px 10px}.status-dot.connected{background:#17a34a;border-color:#23c55e;color:#fff}.status-dot.error,.status-dot.disconnected{background:#c92d2d;border-color:#ef4444;color:#fff}.app-tabs{background:#171a1d;border-radius:8px 8px 0 0;display:flex;gap:6px;padding:8px}.app-tabs button{background:#2b3138;border:1px solid #3a424b;border-radius:8px;color:#d7dfdf;font-weight:800;min-height:34px;padding:0 18px}.app-tabs button.active{background:#0f6b55;border-color:#138a6d;color:#fff}.table{background:#171a1d;display:grid;gap:0;max-height:70vh;overflow:auto}.market-status-footer{background:#2b3138;border:0;border-top:1px solid #3a424b;color:#8f9a9d;font-size:.78rem;font-weight:700;min-height:30px;padding:0 10px;text-align:left;width:100%}.market-status-footer.has-message{color:#f4f7f7}.market-status-footer:disabled{cursor:default}.admin-panel{border-radius:0 0 8px 8px}.admin-bulk-shell{display:grid;gap:0}.bulk-panel{border-radius:0 0 8px 8px;display:grid;gap:14px}.download-template{align-items:center;display:inline-flex;text-decoration:none}.template-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.bulk-instructions{background:#1e2227;border:1px solid #2b3138;border-radius:6px;color:#d7dfdf;display:grid;gap:8px;padding:12px}.bulk-instructions code{color:#f4f7f7;font-weight:800}.bulk-instructions p{color:#a6b0b4;margin:0}.template-definitions{display:grid;gap:8px;grid-template-columns:repeat(5,minmax(0,1fr))}.template-definitions a{background:#1e2227;border:1px solid #2b3138;border-radius:6px;display:grid;gap:4px;padding:10px;text-decoration:none}.template-definitions a:hover{border-color:#ff5c61;filter:brightness(1.08)}.template-definitions strong{color:#ff5c61;font-size:.924rem}.template-definitions span{color:#a6b0b4;font-size:.78rem;line-height:1.35}.bulk-file-input{color:#d7dfdf;display:grid;font-size:.86rem;font-weight:800;gap:6px}.bulk-errors{background:#351b1e;border:1px solid #b53136;border-radius:6px;color:#ffb4b4;display:grid;gap:4px;padding:10px}.bulk-errors p{margin:0}.bulk-preview{display:grid;gap:0}.bulk-preview-head,.bulk-preview-row{align-items:center;display:grid;gap:1px;grid-template-columns:58px minmax(140px,1fr) 92px 92px 92px 120px}.bulk-preview-head{background:#2b3138;border:1px solid #3a424b;color:#f4f7f7;font-size:.8rem;font-weight:800;min-height:30px}.bulk-preview-row{background:#1e2227;border-bottom:1px solid #171a1d;color:#f8fbfb;min-height:34px}.bulk-preview-row:nth-child(odd){background:#232830}.bulk-preview-head span,.bulk-preview-row span{padding:0 8px}.crossing-warning{color:#ffce73;font-weight:900}.admin-create-user{display:grid;gap:8px;grid-template-columns:repeat(7,minmax(0,1fr));margin-bottom:14px}.admin-users-table{display:grid;gap:0}.admin-users-head,.admin-user-row{align-items:center;display:grid;gap:1px;grid-template-columns:minmax(220px,1fr) 170px 120px minmax(260px,360px)}.admin-users-head{background:#2b3138;border:1px solid #3a424b;color:#f4f7f7;font-size:.8rem;font-weight:800;min-height:30px}.admin-users-head span,.admin-user-row>span,.admin-active-toggle{padding:0 8px}.admin-user-row{background:#1e2227;border-bottom:1px solid #171a1d;min-height:44px}.admin-user-row:nth-child(odd){background:#232830}.admin-active-toggle{align-items:center;color:#d7dfdf;display:flex;gap:8px;font-size:.86rem;font-weight:800}.password-reset{align-items:center;display:grid;gap:8px;grid-template-columns:minmax(0,1fr) auto}.thead,.row-button{display:grid;gap:1px;grid-template-columns:54px minmax(260px,1fr) 32px 58px 72px 92px 92px 92px 72px 58px 82px 64px 128px}.thead{background:#2b3138;border:1px solid #3a424b;color:#f4f7f7;font-size:.8rem;font-weight:700;padding:0;position:sticky;top:0;text-transform:none;z-index:5}.thead span{align-items:center;border-left:1px solid #3a424b;display:flex;justify-content:center;min-height:28px;padding:0 8px}.thead span:first-child{border-left:0}.row-button{align-items:center;background:transparent;border:0;border-bottom:1px solid #171a1d;border-radius:0;color:#f8fbfb;min-height:36px;padding:0;text-align:left;width:100%}.contract-select{align-items:center;background:transparent;border:0;border-radius:0;color:#f8fbfb;display:block;min-height:36px;padding:2px 8px;text-align:left;width:100%}.row-button:nth-child(odd){background:#1e2227}.row-button:nth-child(2n){background:#232830}.contract-code,.next-match-cell,.qty-cell,.last-cell,.change-cell,.theo-cell{align-items:center;display:flex;font-variant-numeric:tabular-nums;font-weight:700;min-height:34px;padding:0 8px}.contract-code{color:#f3f000}.next-match-cell{color:#d7dfdf;font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qty-cell,.last-cell,.change-cell,.theo-cell{justify-content:flex-end}.row-button:hover,.row-button.selected{background:#2b3138;outline:1px solid #7fa8b0;outline-offset:-1px}.action-cell,.book-action,.empty-book-action,.icon-button{border:1px solid #cbd5cf;border-radius:0;font-weight:700;min-height:28px}.price-cell{background:transparent;border:0;border-radius:0;color:#f8fbfb;font-size:1.05rem;font-weight:700;min-height:34px;width:100%}.quote-cell{align-items:center;display:grid;grid-template-columns:minmax(0,1fr) 18px;min-height:34px}.depth-price-cell{align-items:center;display:flex;font-size:1.05rem;font-variant-numeric:tabular-nums;font-weight:700;justify-content:flex-end;min-height:34px;padding:0 8px}.kill-order-button{background:#1e2227;border:1px solid #b53136;border-radius:0;color:#ff5c61;font-size:.68rem;font-weight:900;height:18px;line-height:1;margin-right:2px;padding:0;width:16px}.kill-order-button:hover{background:#b53136;color:#fff}.depth-cell{background:transparent;border:0;border-radius:0;color:#f8fbfb;font-size:1.05rem;font-weight:700;min-height:34px;width:100%}.depth-contract-spacer,.depth-next-match-spacer,.depth-action-spacer{min-height:34px}.depth-row .qty-cell,.depth-row .depth-price-cell{color:#d7dfdf}.depth-cell:disabled{color:transparent;cursor:default}.price-cell:disabled{background:transparent;color:#606b6d}.bid-cell,.offer-cell{color:#f8fbfb}.action-cell{min-height:34px;width:100%}.market-closed .contract-select,.market-closed .next-match-cell,.market-closed .contract-select small,.market-closed .contract-select strong{color:#ffb4b4}.action-cell:disabled{background:#303536;border-color:#4c5557;cursor:not-allowed;filter:none}.sell-action-cell{background:#b53136;border-color:#e05258}.buy-action-cell{background:#38c43d;border-color:#4ee957}.theo-cell{color:#f8fbfb;font-size:1.05rem}.change-cell.positive{color:#42dd4b}.change-cell.negative{color:#ff4b3f}.action-cell:hover,.book-action:hover,.empty-book-action:hover{border-color:#fff;filter:brightness(1.12)}.price-cell:hover,.depth-cell:hover:not(:disabled){filter:brightness(1.18)}.price-cell.quote-flash{animation:quote-flash .4s ease-in-out 5}@keyframes quote-flash{0%{background:transparent;color:#f8fbfb}50%{background:#f3f000;color:#111315}to{background:transparent;color:#f8fbfb}}.row-button strong,.portfolio-row strong,.ledger-row strong{display:block;font-size:.82rem}.market-board .row-button strong,.market-board .row-button small{color:#d7dfdf}.team-label{align-items:center;display:flex;gap:8px;min-width:0}.team-label img,.heading-flag{border:1px solid #3a424b;border-radius:2px;flex:0 0 auto;object-fit:cover}.team-label img{height:16px;width:24px}.heading-flag{height:22px;margin-right:8px;vertical-align:-3px;width:33px}.team-meta{color:#60706a;font-size:.86rem;margin:6px 0 0}.row-button small,.portfolio-row small,.ledger-row small{display:block;font-size:.75rem;margin-top:2px}.book-grid{display:grid;gap:14px;grid-template-columns:1fr 1fr}.mini-head,.mini-row{display:grid;gap:10px;grid-template-columns:1fr 1fr 64px}.mini-head{color:#60706a;font-size:.74rem;font-weight:700;margin-bottom:6px;text-transform:uppercase}.mini-row,.portfolio-row,.ledger-row{border-top:1px solid #171a1d;min-height:34px;padding:7px 0}.book-action{background:#f7faf8;color:#35443f}.empty-book-action{background:#f7faf8;color:#53645e;width:100%}.segmented{background:#171a1d;border:1px solid #2b3138;border-radius:6px;display:grid;grid-template-columns:1fr 1fr;padding:3px}.segmented button{border:0;border-radius:5px;min-height:34px}.segmented button{background:transparent;color:#8f9a9d;font-weight:800}.segmented button.active{background:#0f6b55;color:#fff;font-weight:700}.ticket-modal,.book-modal{display:grid;gap:12px;left:50%;position:fixed;top:50%;transform:translate(-50%,-50%);width:calc(100vw - 32px);z-index:20}.ticket-modal{max-width:420px}.book-modal{max-width:680px}.ticket-modal label{color:#53645e;display:grid;font-size:.82rem;font-weight:700;gap:5px}.match-countdown{background:#1e2227;border:1px solid #2b3138;border-radius:6px;color:#d7dfdf;font-size:.86rem;font-variant-numeric:tabular-nums;font-weight:800;margin:-2px 0 0;padding:8px 10px}.ticket-heading{align-items:start;display:flex;gap:12px;justify-content:space-between}.icon-button{background:#2b3138;color:#d7dfdf;font-size:1.2rem;line-height:1;width:34px}.modal-backdrop{background:#0c181457;top:0;right:0;bottom:0;left:0;position:fixed;z-index:19}.primary{background:#0f6b55;border:0;border-radius:6px;color:#fff;font-weight:700;min-height:38px}.secondary{background:#2b3138;border:1px solid #3a424b;border-radius:6px;color:#f4f7f7;font-weight:700;min-height:36px;padding:0 12px}.primary:disabled{background:#9cadad}.pill{background:#2b3138;border-radius:999px;color:#d7dfdf;font-size:.78rem;font-weight:700;padding:6px 10px;text-transform:uppercase}.balance-strip{display:grid;gap:10px;grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:16px}.metric{background:#1e2227;border:1px solid #2b3138;border-radius:6px;padding:10px}.metric span{color:#a6b0b4;display:block;font-size:.76rem;font-weight:700;text-transform:uppercase}.metric strong{display:block;font-size:1.2rem;margin-top:4px}.portfolio-grid{display:grid;gap:18px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.portfolio-table{border:1px solid #2b3138;border-radius:6px;overflow:hidden}.portfolio-table-head,.portfolio-row{align-items:center;display:grid;gap:10px;padding:8px 10px}.portfolio-table-head{background:#2b3138;color:#d7dfdf;font-size:.76rem;font-weight:800;text-transform:uppercase}.portfolio-row{background:#1e2227;border-top:1px solid #171a1d;min-height:40px}.portfolio-row:nth-child(odd){background:#232830}.portfolio-holdings-table .portfolio-table-head,.portfolio-holdings-table .portfolio-row{grid-template-columns:minmax(180px,1fr) 72px 72px 90px}.portfolio-orders-table .portfolio-table-head,.portfolio-orders-table .portfolio-row{grid-template-columns:minmax(180px,1fr) 72px 72px 72px}.ledger-row{align-items:center;display:grid;gap:10px;grid-template-columns:minmax(160px,1fr) 90px}.error{color:#9a3d1f;font-size:.85rem;margin-bottom:0}.empty{color:#60706a}@media (max-width: 1020px){.workspace,.portfolio-grid{grid-template-columns:1fr}}@media (max-width: 700px){.app-shell{padding:12px}.topbar{align-items:start;grid-template-columns:1fr}.topbar-controls,.selector{align-items:stretch;width:100%}.selector select{min-width:0;width:100%}.market-search,.market-search input{width:100%}.thead,.row-button{grid-template-columns:46px minmax(190px,1fr) 30px 50px 58px 74px 74px 74px 58px 50px 66px 56px 112px;min-width:962px}.market-table{overflow-x:auto}.book-grid,.balance-strip,.template-definitions{grid-template-columns:1fr}}
