:root {
    --bg0: #000;
    --bg1: #0e141f;
    --card: rgba(255, 255, 255, 0.08);
    --card-border: rgba(255, 255, 255, 0.12);
    --muted: #9ea7b3;
    --txt: #e6edf3;
    --brand: #58a6ff;
    --ok: #16c784;
    --bad: #f6465d;
    --warn: #fbbf24;
    --statusbar-h: 25px;
}

* {
    box-sizing: border-box;
}

html, body {
    height: 100%;
}

body {
    font-family: "SF Pro Display","Inter",system-ui,sans-serif;
    background: radial-gradient(circle at 30% 20%, var(--bg1), var(--bg0));
    color: var(--txt);
    margin: 0;
    max-height: 100vh;
    padding: 2rem;
    padding-bottom: 44px;
    display: flex;
    flex-direction: column;
    align-items: center;
}

h1 {
    color: var(--brand);
    margin: 0 0 1rem;
    text-align: center;
    letter-spacing: 0.04em;
}

.sub {
    color: var(--muted);
    margin-bottom: 1rem;
    font-size: 0.95rem;
}

/* ======================
   Layout
====================== */
.container {
    width: 100%;
    max-width: min(1200px, 96vw);
    margin: 0 auto;
    display: grid;
    grid-template-columns: minmax(260px, 320px) minmax(0, 1fr);
    grid-auto-rows: 1fr; /* single row, stretch both cards to same height */
    gap: 1.2rem;
    align-items: stretch;
}

.glass-card {
    background: var(--card);
    backdrop-filter: blur(18px) saturate(180%);
    border-radius: 18px;
    border: 1px solid var(--card-border);
    box-shadow: 0 8px 32px rgba(0,0,0,.4);
    padding: 1.2rem;
    width: 100%;
}
/* ======================
   Symbol Ticker Bar
====================== */
#symbolTickerBar,
.ticker-bar {
    width: 100%;
    max-width: min(1200px, 96vw);
    margin: 0 0 0.9rem 0;
    padding: 0.55rem 1.1rem;
    border-radius: 16px;
    background:
        radial-gradient(circle at 0% 0%, rgba(88,166,255,.14), transparent 55%),
        radial-gradient(circle at 80% 100%, rgba(22,199,132,.10), transparent 55%),
        rgba(6,10,18,.96);
    border: 1px solid rgba(255,255,255,.14);
    box-shadow: 0 10px 30px rgba(0,0,0,.65);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    font-size: 0.88rem;
}

.ticker-left {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 180px;
}

.ticker-symbol-line {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.ticker-symbol {
    font-weight: 700;
    letter-spacing: 0.03em;
    font-size: 1rem;
}

.ticker-contract {
    font-size: 0.78rem;
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,.16);
    background: rgba(0,0,0,.45);
    color: var(--muted);
}

.ticker-price-line {
    display: flex;
    align-items: baseline;
    gap: 0.45rem;
}

.ticker-last {
    font-size: 1.45rem;
    font-weight: 800;
    font-variant-numeric: tabular-nums;
}

.ticker-quote {
    font-size: 0.8rem;
    color: var(--muted);
}

.ticker-change {
    font-size: 0.9rem;
    font-weight: 600;
}

.ticker-right {
    flex: 1;
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.9rem 1.6rem;
}

.ticker-stat {
    display: flex;
    flex-direction: column;
    min-width: 120px;
}

.ticker-stat .label {
    font-size: 0.72rem;
    color: var(--muted);
    margin-bottom: 2px;
}

.ticker-stat .value {
    font-size: 0.88rem;
    font-variant-numeric: tabular-nums;
}

@media (max-width: 900px) {
    #symbolTickerBar,
    .ticker-bar {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.7rem;
    }

    .ticker-right {
        justify-content: flex-start;
    }
}
.markets-card {
    grid-column: 1 / 2;
    overflow-x: hidden;
    align-self: stretch;
}

.order-card {
    grid-column: 2 / 3;
    align-self: stretch;
}


.bottom-card {
    width: 100%;
    max-width: min(1200px, 96vw);
    margin: 1.2rem auto 0 auto;
    display: flex;
    flex-direction: column;
    gap: 0.9rem; /* 두 블럭 사이 기본 간격 */
}

/* 카드 안의 각 섹션 (Open Orders / Positions) */
.bottom-block {
    width: 100%;
}

/* 헤더 정렬 공통화 (인라인 style 제거) */
.bottom-header {
    justify-content: space-between;
    align-items: center;
}

.bottom-title {
    margin: 0;
}

/* Open Orders / Positions 사이 구분선 */
.bottom-separator {
    height: 1px;
    width: 100%;
    background: rgba(255,255,255,.14);
    border-radius: 999px;
}

.bottom-card .row {
    justify-content: space-between;
    align-items: center;
}

.bottom-card .icon-btn {
    background: rgba(255,255,255,.10);
    border: 1px solid rgba(255,255,255,.20);
    color: #e6edf3;
    padding: 0.38rem 0.95rem;
    border-radius: 999px;
    font-size: 0.82rem;
    cursor: pointer;
}

.bottom-card .icon-btn:hover {
    background: rgba(255,255,255,.16);
}

/* ======================
   Flex Row
====================== */
.row {
    display: flex;
    gap: 0.8rem;
    align-items: center;
    flex-wrap: wrap;
}

/* ======================
   Market Tabs
====================== */

/* 스크롤 래퍼 */
.market-group-tabs-scroll,
.market-sub-tabs-scroll {
    width: 100%;
    margin-top: 0.25rem;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}

/* 스크롤바 숨기기 */
.market-group-tabs-scroll::-webkit-scrollbar,
.market-sub-tabs-scroll::-webkit-scrollbar {
    display: none;
}

/* 탭 컨테이너 */
.market-group-tabs,
.market-sub-tabs,
#marketGroupTabs,
#marketSubTabs {
    display: flex;
    flex-wrap: nowrap;
    gap: 0.5rem;
    padding-bottom: 4px;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
}

/* 스크롤바 숨기기 */
.market-group-tabs::-webkit-scrollbar,
.market-sub-tabs::-webkit-scrollbar,
#marketGroupTabs::-webkit-scrollbar,
#marketSubTabs::-webkit-scrollbar {
    display: none;
}

/* 탭 버튼 */
.market-group-tabs button,
.market-sub-tabs button,
#marketGroupTabs button,
#marketSubTabs button {
    background: rgba(255,255,255,.06);
    border: 1px solid transparent;
    color: #ccc;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    cursor: pointer;
    transition: 0.15s;
    font-size: 0.86rem;
    white-space: nowrap;
}

.market-group-tabs button.active,
#marketGroupTabs button.active {
    background: #007aff;
    color: #fff;
}

/* Sub-tabs */
#marketSubTabs button {
    background: rgba(255,255,255,.04);
    font-size: 0.8rem;
}

#marketSubTabs button.active {
    background: rgba(88,166,255,.12);
    border-color: rgba(88,166,255,.72);
    color: var(--brand);
}

/* ======================
   Search
====================== */
.search-box {
    flex: 1;
    min-width: 220px;
}

.search-box input {
    width: 100%;
    padding: 0.55rem 0.75rem;
    border-radius: 10px;
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.1);
    color: #fff;
    font-size: 0.95rem;
}

/* ======================
   Symbol List
====================== */
#symbolList {
    width: 100%;
    margin-top: 0.5rem;
    min-height: 260px;
    max-height: 420px;
    background: rgba(0,0,0,.35);
    border-radius: 12px;
    padding: 0.35rem 0.25rem;
}

#symbolList option {
    padding: 0.22rem 0.45rem;
}

/* ======================
   Order Header
====================== */
.order-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 1rem;
    margin-top: 0.6rem;
}

.mode-select {
    display: flex;
    gap: 0.5rem;
}

.mode-btn {
    background: rgba(255,255,255,.1);
    border: none;
    color: var(--txt);
    padding: 0.45rem 0.9rem;
    border-radius: 10px;
    cursor: pointer;
    font-weight: 700;
}

.mode-btn.active {
    background: linear-gradient(145deg,#58a6ff,#007aff);
}

.leverage {
    display: flex;
    align-items: center;
    gap: 0.55rem;
}

.leverage .chip {
    font-variant-numeric: tabular-nums;
    padding: 0.25rem 0.5rem;
    border-radius: 8px;
    background: rgba(255,255,255,.08);
    border: 1px solid rgba(255,255,255,.12);
}

#levSelect {
    background: rgba(0,0,0,.3);
    border: 1px solid rgba(255,255,255,.12);
    color: #fff;
    border-radius: 10px;
    padding: 0.45rem 0.6rem;
}

/* ======================================
   Fix Customize button (Lev Customize)
   ====================================== */
   #btnLevCustomize {
    background: rgba(255,255,255,.08) !important;
    border: 1px solid rgba(255,255,255,.15) !important;
    color: #ccc !important;
    border-radius: 8px !important;
    padding: 0.45rem 0.9rem !important;
    cursor: pointer !important;
    font-size: 0.82rem !important;
}
#btnLevCustomize:hover {
    background: rgba(255,255,255,.14) !important;
}

/* ======================================
   Remove blue outline on all inputs
   ====================================== */
input:focus,
select:focus,
button:focus,
textarea:focus,
input:focus-visible,
select:focus-visible,
button:focus-visible,
textarea:focus-visible {
    outline: none !important;
    box-shadow: none !important;
}


/* ======================
   Inputs & Forms
====================== */
label {
    display: block;
    margin-top: 0.7rem;
    color: var(--muted);
    font-size: 0.9rem;
}

input,
select {
    width: 100%;
    padding: 0.55rem 0.65rem;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,.12);
    background: rgba(0,0,0,.3);
    color: var(--txt);
}

.inline {
    display: flex;
    gap: 0.8rem;
}

.inline > div {
    flex: 1;
}

/* ======================
   Action Buttons
====================== */
.action-buttons {
    display: flex;
    gap: 0.8rem;
    margin-top: 1rem;
}

.btn {
    flex: 1;
    padding: 0.85rem;
    border-radius: 12px;
    border: none;
    color: #fff;
    font-weight: 800;
    font-size: 1rem;
    cursor: pointer;
    position: relative;
}

.btn-long {
    background: linear-gradient(135deg,var(--ok),#00b37a);
}

.btn-short {
    background: linear-gradient(135deg,var(--bad),#d93645);
}

.btn[disabled] {
    opacity: 0.6;
    cursor: not-allowed;
}

.spinner {
    position: absolute;
    right: 0.75rem;
    top: 50%;
    transform: translateY(-50%);
    display: none;
}

.btn.loading .spinner {
    display: inline-block;
}

/* ======================
   Table
====================== */
.table-wrap {
    max-height: 420px;
    overflow: auto;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,.08);
}

table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.86rem;
}

td, th {
    padding: 0.45rem 0.55rem;
    text-align: center;
}

thead th {
    position: sticky;
    top: 0;
    background: rgba(14,20,31,.9);
    backdrop-filter: blur(8px);
    color: var(--brand);
    z-index: 1;
}

td {
    border-top: 1px solid rgba(255,255,255,.05);
}

td:first-child,
th:first-child {
    text-align: left;
}

.green {
    color: var(--ok);
}

.red {
    color: var(--bad);
}

/* ======================
   Modal / Toast / Status Bar
====================== */

.modal-root {
    position: fixed;
    inset: 0;
    display: none;
    justify-content: center;
    align-items: center;
    z-index: 1000;
}

.modal-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,.6);
    backdrop-filter: blur(8px);
}

.modal-box {
    position: relative;
    background: rgba(18,18,18,.94);
    border-radius: 16px;
    padding: 1.3rem 1.6rem;
    width: min(380px,92vw);
    border: 1px solid rgba(255,255,255,.12);
    box-shadow: 0 8px 38px rgba(0,0,0,.55);
    text-align: center;
}

.modal-icon {
    font-size: 2rem;
    margin-bottom: 0.25rem;
    color: #f85149;
}

.btn-ghost {
    background: transparent;
    border: 1px solid rgba(255,255,255,.15);
    color: #ddd;
    padding: 0.5rem 0.9rem;
    border-radius: 9px;
    cursor: pointer;
}

.btn-warn {
    background: linear-gradient(135deg, var(--brand), #007aff);
    color: #fff;
    padding: 0.5rem 0.9rem;
    border-radius: 9px;
    cursor: pointer;
    border: 1px solid rgba(255,255,255,.18);
}

/* Status bar */
#statusBar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    height: var(--statusbar-h);
    line-height: var(--statusbar-h);
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 14px;
    background: rgba(15,22,35,.88);
    border-top: 1px solid rgba(255,255,255,.12);
    backdrop-filter: blur(8px) saturate(160%);
    z-index: 2000;
    font-family: ui-monospace, Menlo, monospace;
    font-size: 12.5px;
    color: var(--txt);
}

.statusBar-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.statusBar-ok { background: var(--ok); }
.statusBar-bad { background: var(--bad); }
.statusBar-warn { background: var(--warn); }

/* ======================
   Toast Notification
====================== */
#toast {
    position: fixed;
    bottom: 90px; /* 상태바 위 */
    right: 24px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    z-index: 3000;
    pointer-events: none; /* 클릭 방지 */
}

.toast {
    padding: 10px 16px;
    border-radius: 10px;
    font-size: 0.9rem;
    color: #fff;
    backdrop-filter: blur(12px) saturate(180%);
    background: rgba(15, 22, 35, .85);
    border: 1px solid rgba(255,255,255,.14);
    box-shadow: 0 4px 22px rgba(0,0,0,.45);
    animation: toast-in 0.25s ease forwards;
    pointer-events: auto;
    min-width: 180px;
}

.toast.ok {
    border-left: 4px solid var(--ok);
}

.toast.err {
    border-left: 4px solid var(--bad);
}

/* Fade in/out */
@keyframes toast-in {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
}


/* Responsive */
@media (max-width: 900px) {
    .container {
        grid-template-columns: 1fr;
        grid-template-rows: auto;
        grid-auto-rows: auto; /* on mobile, let each row size to content */
    }

    .markets-card,
    .order-card {
        grid-column: 1 / -1;
        grid-row: auto;
    }
}

@media (max-width: 640px) {
    :root { --statusbar-h: 64px; }
}

/* ---- Positions: Close / TP-SL buttons ---- */
.pos-btn {
    font-size: 11px;
    padding: 3px 10px;
    border-radius: 999px;
    border: 1px solid transparent;
    cursor: pointer;
    line-height: 1.3;
    white-space: nowrap;
    background: rgba(255,255,255,.04);
    color: #e6edf3;
    transition:
        background 0.15s ease,
        border-color 0.15s ease,
        transform 0.05s ease,
        box-shadow 0.15s ease;
}

.pos-btn-tpsl {
    background: rgba(88,166,255,.10);
    border-color: rgba(88,166,255,.55);
    color: var(--brand);
}

.pos-btn-close {
    background: rgba(246,70,93,.10);
    border-color: rgba(246,70,93,.60);
    color: var(--bad);
}

.pos-btn:hover {
    transform: translateY(-0.5px);
    box-shadow: 0 2px 6px rgba(0,0,0,.35);
}

.pos-btn:active {
    transform: translateY(0.5px) scale(0.99);
    box-shadow: none;
}

/* TP/SL 아래 작은 텍스트 간격 살짝 띄우기 */
.table-wrap td .small {
    margin-top: 2px;
}

/* ======================
   Leverage / TP-SL Modals
   (unify with global style)
====================== */
#levModal .modal-box,
#tpslModal .modal-box {
    background: radial-gradient(circle at 20% 0, rgba(88,166,255,.06), transparent 55%),
                radial-gradient(circle at 80% 100%, rgba(246,70,93,.08), transparent 55%),
                rgba(10,14,22,.96);
    border-radius: 20px;
    border: 1px solid rgba(255,255,255,.14);
    box-shadow: 0 14px 40px rgba(0,0,0,.75);
}

#levModal h3,
#tpslModal h3 {
    margin-top: 0;
    margin-bottom: 0.6rem;
    font-size: 1.3rem;
    letter-spacing: 0.03em;
    color: var(--txt);
}

#levModal .small,
#tpslModal .small {
    color: var(--muted);
}

/* TP/SL modal inputs: align with global inputs */
#tpslModal input[type="number"] {
    width: 100%;
    padding: 0.55rem 0.7rem;
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,.16);
    background: rgba(0,0,0,.5);
    color: var(--txt);
    font-size: 0.92rem;
}

#tpslModal input[type="number"]::placeholder {
    color: rgba(255,255,255,.35);
}

/* Leverage slider styling */
#levModal input[type="range"]#levSlider {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    height: 6px;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--brand), rgba(255,255,255,.18));
    outline: none;
}

#levModal input[type="range"]#levSlider::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--brand);
    box-shadow: 0 0 0 3px rgba(88,166,255,.35);
    cursor: pointer;
}

#levModal input[type="range"]#levSlider::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    border: 2px solid var(--brand);
    box-shadow: 0 0 0 3px rgba(88,166,255,.35);
    cursor: pointer;
}

#levModal .lev-modal-flex {
    display: flex;
    align-items: center;
    gap: 0.9rem;
    margin-bottom: 0.4rem;
}

/* ======================
   Wallet Summary (under Order Panel)
====================== */
.wallet-section {
    margin-top: 1.1rem;
    padding-top: 0.7rem;
    border-top: 1px solid rgba(255,255,255,.14);
}

.wallet-header-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.4rem;
    gap: 0.5rem;
}

.wallet-title-left {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.wallet-title {
    margin: 0;
    font-size: 0.9rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--muted);
}

.wallet-chip {
    font-size: 0.7rem;
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,.16);
    background: rgba(0,0,0,.55);
    color: var(--muted);
}

.wallet-meta {
    font-size: 0.75rem;
    color: var(--muted);
    opacity: 0.8;
}

.wallet-metrics {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 0.55rem 0.9rem;
    margin-bottom: 0.6rem;
    margin-top: 0.2rem;
}

.wallet-metric {
    display: flex;
    flex-direction: column;
}

.wallet-metric .label {
    font-size: 0.72rem;
    color: var(--muted);
    margin-bottom: 2px;
}

.wallet-metric .value {
    font-size: 0.9rem;
    font-variant-numeric: tabular-nums;
}

.wallet-coins-wrap {
    border-radius: 10px;
    border: 1px solid rgba(255,255,255,.08);
    background: rgba(0,0,0,.35);
    overflow: hidden;
}

.wallet-coins-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.wallet-coins-table thead th {
    background: rgba(14,20,31,.95);
    color: var(--brand);
    padding: 0.35rem 0.55rem;
    text-align: center;
    font-weight: 500;
}

.wallet-coins-table tbody td {
    padding: 0.35rem 0.55rem;
    border-top: 1px solid rgba(255,255,255,.08);
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.wallet-coins-table tbody tr:nth-child(odd) {
    background: rgba(255,255,255,.01);
}

.wallet-coins-table tbody tr:hover {
    background: rgba(88,166,255,.05);
}

.wallet-coins-table td:first-child,
.wallet-coins-table th:first-child {
    text-align: left;
}

@media (max-width: 640px) {
    .wallet-metrics {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}