/*
  MOCKEX 디자인 파일
  가장 쉽게 바꿀 수 있는 부분은 아래 색상 변수입니다.
*/
:root{
  --bg:#090d14;--panel:#111722;--panel2:#161e2c;--border:#283247;
  --text:#edf2fb;--muted:#93a0b5;--accent:#7b8dff;
  --green:#25c887;--red:#ff637d;--yellow:#ffcb62;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-width:320px;background:var(--bg);color:var(--text);font-family:Inter,Pretendard,system-ui,-apple-system,"Segoe UI",sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}img{display:block;max-width:100%}.hidden{display:none!important}

/* 상단 메뉴 */
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:16px;padding:12px 22px;border-bottom:1px solid var(--border);background:rgba(9,13,20,.94);backdrop-filter:blur(14px)}
.brand{border:0;background:transparent;color:var(--text);font-size:22px;font-weight:950}.brand span{color:var(--accent)}
.nav{display:flex;flex:1;gap:4px}.nav-btn{border:0;border-radius:10px;background:transparent;color:var(--muted);padding:9px 11px;font-size:14px;font-weight:700}.nav-btn:hover,.nav-btn.active{background:var(--panel2);color:var(--text)}
.admin-only{display:none}body.admin-mode .admin-only{display:inline-flex}.top-actions{display:flex;align-items:center;gap:9px}.balance-chip,.user-chip{border:1px solid var(--border);background:var(--panel);border-radius:13px}.balance-chip{display:grid;gap:2px;padding:8px 12px}.balance-chip span{font-size:11px;color:var(--muted)}.balance-chip strong{font-size:14px}.user-chip{display:flex;align-items:center;gap:8px;padding:7px 10px;color:var(--text)}.user-chip>span:last-child{display:grid;text-align:left}.user-chip small{color:var(--muted);font-size:10px}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:rgba(123,141,255,.13);color:var(--accent);font-weight:900}

/* 공통 */
.main{width:min(1180px,calc(100% - 28px));margin:0 auto;padding:22px 0 70px}.page{display:none}.page.active{display:block}.notice{display:flex;gap:10px;margin-bottom:18px;padding:12px 14px;border:1px solid rgba(255,203,98,.24);border-radius:14px;background:rgba(255,203,98,.08);color:#e8d18b;font-size:13px}.notice strong{white-space:nowrap}.eyebrow{color:var(--accent);font-size:11px;font-weight:900;letter-spacing:1.2px}.page-title,.section-heading,.panel-title{display:flex;justify-content:space-between;align-items:flex-end;gap:16px}.page-title{margin:6px 0 20px}.page-title h2,.section-heading h2,.panel-title h3{margin:4px 0 0}.page-title h2{font-size:30px}.page-title p,.panel-title p{margin:5px 0 0;color:var(--muted)}.section-heading{margin:28px 0 13px}.section-heading h2{font-size:23px}.text-btn{border:0;background:transparent;color:var(--accent);font-weight:800}.panel{padding:20px;border:1px solid var(--border);border-radius:18px;background:var(--panel)}

/* 홈 */
.hero{display:grid;grid-template-columns:1.35fr .65fr;gap:18px}.hero-copy,.hero-stats{border:1px solid var(--border);border-radius:22px;background:linear-gradient(180deg,var(--panel),#0f1520)}.hero-copy{padding:34px}.hero-copy h1{margin:10px 0 12px;font-size:clamp(34px,5vw,52px);line-height:1.04;letter-spacing:-2px}.hero-copy p{max-width:670px;margin:0;color:var(--muted);line-height:1.7}.hero-actions{display:flex;gap:9px;flex-wrap:wrap;margin-top:22px}.hero-stats{display:grid;grid-template-columns:1fr 1fr;gap:1px;overflow:hidden;background:var(--border)}.stat-card{display:grid;align-content:center;min-height:122px;padding:18px;background:var(--panel)}.stat-card span,.summary-card span{color:var(--muted);font-size:12px}.stat-card strong{margin-top:7px;font-size:26px}

/* 광고 */
.ad-slot{display:grid;place-items:center;gap:4px;min-height:105px;margin:22px 0;border:1px dashed #3a465e;border-radius:16px;color:#74819a;background:rgba(255,255,255,.012);text-align:center}.ad-slot span{font-size:10px;letter-spacing:1.4px}.ad-slot small{font-size:11px}.small-ad{margin-bottom:0}

/* 버튼 */
.btn{border:1px solid var(--border);border-radius:11px;padding:11px 14px;background:var(--panel2);color:var(--text);font-weight:850}.btn.primary{border-color:var(--accent);background:var(--accent);color:#fff}.btn.buy{border-color:rgba(37,200,135,.35);background:rgba(37,200,135,.12);color:#72e3b6}.btn.sell,.btn.danger{border-color:rgba(255,99,125,.35);background:rgba(255,99,125,.12);color:#ff9bae}.btn.full{width:100%}.icon-btn{border:0;background:transparent;color:var(--muted);font-size:26px}

/* 토큰 카드 */
.token-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.token-card{padding:16px;border:1px solid var(--border);border-radius:17px;background:var(--panel)}.token-card:hover{border-color:#3a4762}.token-card-top,.token-title-line{display:flex;align-items:center;gap:10px}.token-card-top{justify-content:space-between}.token-title-line>div{display:grid}.token-title-line span,.symbol{color:var(--muted);font-size:11px}.token-logo{width:38px;height:38px;flex:0 0 auto;border-radius:50%;object-fit:cover;border:1px solid var(--border);background:var(--panel2)}.token-logo.large{width:46px;height:46px}.token-name{font-weight:900}.token-card-price{margin:14px 0 3px;font-size:24px;font-weight:950}.token-card-meta{color:var(--muted);font-size:11px}.price-up{color:var(--green)!important}.price-down{color:var(--red)!important}

/* 거래소 */
.search-box{display:grid;gap:6px;min-width:280px}.search-box span,.field>span{color:var(--muted);font-size:12px;font-weight:700}.search-box input,.field input,.field textarea,.field select{width:100%;border:1px solid var(--border);border-radius:11px;outline:none;background:#0c121c;color:var(--text);padding:11px 12px}.search-box input:focus,.field input:focus,.field textarea:focus{border-color:var(--accent)}.market-layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,.8fr);gap:16px;align-items:start}.market-table-card{overflow:auto;border:1px solid var(--border);border-radius:18px;background:var(--panel)}.market-table{width:100%;min-width:720px;border-collapse:collapse}.market-table th,.market-table td,.data-table th,.data-table td{padding:13px 14px;text-align:left;border-bottom:1px solid var(--border)}.market-table th,.data-table th{color:var(--muted);background:#0f1621;font-size:11px}.market-row{cursor:pointer}.market-row:hover{background:rgba(255,255,255,.02)}.market-detail{position:sticky;top:86px;min-height:430px;padding:18px;border:1px solid var(--border);border-radius:18px;background:var(--panel)}.empty-detail{display:grid;place-items:center;gap:7px;min-height:390px;color:var(--muted);text-align:center}.detail-header{display:flex;justify-content:space-between;gap:12px}.detail-price{margin:18px 0 6px;font-size:30px;font-weight:950}.detail-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:16px 0}.detail-stat{display:grid;gap:4px;padding:11px;border:1px solid var(--border);border-radius:11px;background:#0f1621}.detail-stat span{color:var(--muted);font-size:10px}.chart-wrap{height:160px;margin:15px 0;border:1px solid var(--border);border-radius:14px;overflow:hidden;background:#0c121b}.chart-wrap canvas{width:100%;height:100%}.detail-description{color:var(--muted);font-size:12px;line-height:1.6}

/* 폼 */
.two-column,.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-panel{display:grid;gap:14px}.field{display:grid;gap:7px}.field textarea{min-height:110px;resize:vertical}.field small,.helper{color:var(--muted);font-size:11px;line-height:1.5}.check-row{display:flex;gap:8px;align-items:flex-start;color:var(--muted);font-size:12px}.image-preview-wrap{display:grid;place-items:center;min-height:190px;border:1px dashed #39465f;border-radius:14px;overflow:hidden;background:#0c121b}.image-preview{width:100%;height:230px;object-fit:contain}.image-placeholder{color:var(--muted);font-size:12px}.form-message{min-height:20px;margin:0;color:var(--muted);font-size:12px}.request-list,.admin-request-list,.listed-token-admin-list{display:grid;gap:10px;margin-top:15px}.request-card,.admin-request-card,.admin-token-row{border:1px solid var(--border);border-radius:14px;background:#0f1621}.request-card,.admin-token-row{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px}.request-main,.admin-token-main{display:flex;align-items:center;gap:10px;min-width:0}.request-main p,.admin-token-main p{overflow:hidden;margin:3px 0 0;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.status-badge,.count-badge{border-radius:999px;font-size:10px;font-weight:900}.status-badge{padding:5px 8px}.status-pending{background:rgba(255,203,98,.12);color:var(--yellow)}.status-listed{background:rgba(37,200,135,.12);color:var(--green)}.status-rejected{background:rgba(255,99,125,.12);color:var(--red)}.count-badge{display:grid;place-items:center;min-width:28px;height:28px;background:rgba(123,141,255,.13);color:var(--accent)}

/* 자산 */
.summary-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:16px}.summary-card{display:grid;gap:7px;padding:17px;border:1px solid var(--border);border-radius:15px;background:var(--panel)}.summary-card strong{font-size:20px}.table-scroll{overflow:auto}.data-table{width:100%;min-width:720px;border-collapse:collapse}.trade-history-panel,.listed-panel{margin-top:16px}.history-list{display:grid;gap:8px;margin-top:14px}.history-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}.history-row div{display:grid}.history-row span{color:var(--muted);font-size:11px}.history-row strong{font-size:12px}

/* 랭킹 */
.ranking-list{display:grid;gap:8px}.ranking-row{display:grid;grid-template-columns:62px 1fr auto auto;gap:12px;align-items:center;padding:13px;border:1px solid var(--border);border-radius:13px;background:#0f1621}.rank-number{font-size:18px;font-weight:950}.rank-user{display:grid}.rank-user span{color:var(--muted);font-size:10px}.rank-asset{text-align:right;font-weight:900}.rank-return{min-width:75px;text-align:right;font-size:12px}

/* 관리자 */
.admin-request-card{padding:13px}.admin-request-preview{display:flex;gap:12px}.admin-request-preview img{width:76px;height:76px;flex:0 0 auto;border-radius:13px;object-fit:cover}.admin-request-preview p{margin:4px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.admin-request-actions{display:flex;gap:8px;margin-top:12px}.divider{border:0;border-top:1px solid var(--border);margin:18px 0}

/* 모달 */
.modal{width:min(500px,calc(100% - 26px));padding:0;border:1px solid var(--border);border-radius:18px;background:var(--panel);color:var(--text)}.modal::backdrop{background:rgba(0,0,0,.75)}.modal-header{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:16px 18px;border-bottom:1px solid var(--border)}.modal-header>div:first-child{display:grid}.modal-header span{color:var(--muted);font-size:11px}.modal-body{padding:18px}.trade-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}.trade-summary>div,.trade-total{display:grid;gap:4px;padding:11px;border:1px solid var(--border);border-radius:11px;background:#0f1621}.trade-summary span,.trade-total span{color:var(--muted);font-size:10px}.quick-amounts{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:10px 0}.quick-amounts button{border:1px solid var(--border);border-radius:9px;background:var(--panel2);color:var(--muted);padding:8px;font-size:11px}.trade-total{margin:12px 0}.trade-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px}.approval-preview{display:flex;gap:12px;margin-bottom:16px}.approval-image{width:92px;height:92px;flex:0 0 auto;border-radius:15px;object-fit:cover}.approval-preview>div{display:grid;align-content:start;gap:4px}.approval-preview span{color:var(--muted);font-size:11px}.approval-preview p{margin:5px 0 0;color:var(--muted);font-size:11px;line-height:1.5}.account-choice{display:flex;width:100%;gap:10px;align-items:center;margin-bottom:9px;padding:12px;border:1px solid var(--border);border-radius:13px;background:#0f1621;color:var(--text);text-align:left}.account-choice>span:last-child{display:grid}.account-choice small{color:var(--muted);font-size:10px}.footer{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;padding:24px 14px 34px;border-top:1px solid var(--border);color:#66728a;font-size:11px}

/* 모바일 */
@media(max-width:980px){.hero,.market-layout,.two-column,.admin-grid{grid-template-columns:1fr}.market-detail{position:static}.summary-grid{grid-template-columns:repeat(2,1fr)}.token-grid{grid-template-columns:repeat(2,1fr)}.balance-chip{display:none}}
@media(max-width:720px){.topbar{align-items:stretch;flex-wrap:wrap;padding:11px 12px}.nav{order:3;width:100%;overflow-x:auto}.nav-btn{white-space:nowrap}.top-actions{margin-left:auto}.main{width:min(100% - 20px,1180px)}.hero-copy{padding:24px}.page-title{align-items:stretch;flex-direction:column}.search-box{min-width:0}.token-grid{grid-template-columns:1fr}.ranking-row{grid-template-columns:45px 1fr auto}.rank-return{grid-column:2/4;text-align:left}}
@media(max-width:480px){.hero-stats,.summary-grid{grid-template-columns:1fr 1fr}.stat-card{min-height:96px}.hero-copy h1{font-size:34px}.trade-buttons{grid-template-columns:1fr}.quick-amounts{grid-template-columns:1fr 1fr}}


/* =========================================================
   V2 로그인 / Supabase 연결 UI
   ========================================================= */
.auth-actions{display:flex;align-items:center;gap:8px}.btn.compact{padding:8px 11px;font-size:12px}.setup-banner{display:flex;gap:10px;align-items:flex-start;margin-bottom:14px;padding:12px 14px;border:1px solid rgba(123,141,255,.28);border-radius:14px;background:var(--accent-soft);color:#b9c2ff;font-size:12px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:16px;padding:4px;border:1px solid var(--border);border-radius:12px;background:#0c121c}.auth-tab{border:0;border-radius:8px;padding:9px;background:transparent;color:var(--muted);font-weight:800}.auth-tab.active{background:var(--panel-3);color:var(--text)}.auth-form{display:grid;gap:12px}.auth-modal .helper{display:block;margin-top:3px}.locked-message{display:grid;place-items:center;min-height:180px;text-align:center;color:var(--muted);gap:8px}.locked-message .btn{margin-top:6px}.server-status{font-size:10px;color:var(--muted)}


/* =========================================================
   V2.8 관리자 시장 설정
   ========================================================= */
.market-settings-modal{width:min(720px,calc(100% - 26px))}
.market-settings-form{display:grid;gap:16px}
.market-settings-summary{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.market-settings-summary>div{display:grid;gap:5px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#0f1621}
.market-settings-summary span{color:var(--muted);font-size:10px}
.market-settings-summary strong{font-size:15px}
.market-switch-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.switch-card{display:flex;gap:10px;align-items:flex-start;padding:12px;border:1px solid var(--border);border-radius:12px;background:#0f1621}
.switch-card input{width:18px;height:18px;margin-top:2px;accent-color:var(--accent)}
.switch-card>span{display:grid;gap:3px}
.switch-card small{color:var(--muted);font-size:10px;line-height:1.45}
.danger-switch input{accent-color:var(--red)}
.market-field-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.market-settings-example{display:grid;gap:4px;padding:11px 12px;border:1px solid rgba(123,141,255,.24);border-radius:12px;background:rgba(123,141,255,.07);color:#b9c2ff;font-size:11px;line-height:1.55}
.market-status-line{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.market-pill{display:inline-flex;align-items:center;min-height:22px;padding:3px 7px;border:1px solid var(--border);border-radius:999px;color:var(--muted);background:var(--panel2);font-size:9px;font-weight:800}
.market-pill.on{border-color:rgba(37,200,135,.28);color:var(--green);background:rgba(37,200,135,.08)}
.market-pill.off,.market-pill.paused{border-color:rgba(255,99,125,.28);color:var(--red);background:rgba(255,99,125,.08)}
.market-pill.up{color:var(--green)}
.market-pill.down{color:var(--red)}
.admin-token-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:720px){.market-switch-grid,.market-field-grid,.market-settings-summary{grid-template-columns:1fr}.admin-token-row{align-items:flex-start;flex-direction:column}.admin-token-actions{width:100%}.admin-token-actions .btn{flex:1}}


/* =========================================================
   V3.0 거래소형 UI / 캔들 / 뉴스 / 상장폐지
   ========================================================= */
.exchange-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin:4px 0 14px}
.exchange-page-head h2{margin:4px 0 0;font-size:30px}.exchange-page-head p{margin:5px 0 0;color:var(--muted)}
.exchange-live-dot{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:11px}.exchange-live-dot i{width:8px;height:8px;border-radius:50%;background:var(--green);box-shadow:0 0 0 4px rgba(37,200,135,.08)}
.exchange-shell{display:grid;grid-template-columns:220px minmax(0,1fr) 230px;border:1px solid var(--border);border-radius:7px;overflow:hidden;background:#090d13}
.exchange-market-panel,.exchange-side{min-width:0;background:#0d121a}.exchange-market-panel{border-right:1px solid var(--border)}.exchange-side{border-left:1px solid var(--border)}
.exchange-panel-title{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:45px;padding:0 12px;border-bottom:1px solid var(--border)}
.exchange-panel-title strong{font-size:13px}.exchange-panel-title span{color:var(--muted);font-size:9px}
.exchange-search{display:block;padding:9px}.exchange-search input{width:100%;padding:9px 10px;border:1px solid var(--border);border-radius:5px;outline:none;background:#111823;color:var(--text);font-size:12px}.exchange-search input:focus{border-color:var(--accent)}
.exchange-market-head,.exchange-market-row{display:grid;grid-template-columns:minmax(0,1fr) 75px 55px;gap:6px;align-items:center}.exchange-market-head{padding:7px 10px;color:#6f7c91;font-size:9px;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.exchange-market-head span:not(:first-child),.exchange-market-row>span{text-align:right}.exchange-market-list{max-height:730px;overflow:auto}.exchange-market-row{width:100%;border:0;border-bottom:1px solid rgba(40,50,71,.55);padding:9px 10px;background:transparent;color:var(--text);text-align:left}
.exchange-market-row:hover,.exchange-market-row.active{background:#141b26}.exchange-symbol{display:grid;min-width:0}.exchange-symbol strong{font-size:11px}.exchange-symbol small{overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.exchange-market-row>span{font-size:10px;font-weight:700}
.exchange-main{min-width:0;background:#090d13}.exchange-ticker{min-height:72px;display:flex;align-items:center;padding:10px 15px;border-bottom:1px solid var(--border)}.empty-exchange{color:var(--muted);font-size:12px}
.ticker-content{display:flex;align-items:center;gap:19px;width:100%;min-width:0}.ticker-name{display:flex;align-items:center;gap:9px;min-width:150px}.ticker-name>div{display:grid}.ticker-name span{color:var(--muted);font-size:9px}.ticker-price{display:grid;gap:2px}.ticker-price strong{font-size:24px}.ticker-price span{font-size:10px}.ticker-stat{display:grid;gap:3px}.ticker-stat span{color:var(--muted);font-size:8px}.ticker-stat strong{font-size:11px}
.exchange-chart-card{border-bottom:1px solid var(--border)}.candle-toolbar{min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 10px;border-bottom:1px solid rgba(40,50,71,.65)}.candle-toolbar-left{display:flex;align-items:center;gap:12px}.candle-toolbar-left strong{font-size:11px}.candle-toolbar-left span{color:var(--muted);font-size:9px}.candle-periods{display:flex;gap:3px}.candle-periods button{border:0;border-radius:4px;padding:5px 8px;background:transparent;color:var(--muted);font-size:9px}.candle-periods button.active{background:#1b2431;color:var(--text)}
.candle-canvas-wrap{position:relative;height:410px;background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px),#090d13;background-size:100% 25%,12.5% 100%}#candleChart{width:100%;height:100%;display:block}.chart-watermark{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:rgba(255,255,255,.025);font-size:54px;font-weight:950;pointer-events:none}
.exchange-order-grid{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid rgba(40,50,71,.45)}.order-panel{padding:14px;background:#0d121a}.order-panel:first-child{border-right:1px solid var(--border)}.order-panel-title{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:12px}.order-panel-title strong{font-size:15px}.buy-order-panel .order-panel-title>strong{color:var(--green)}.sell-order-panel .order-panel-title>strong{color:var(--red)}.order-panel-title span{color:var(--muted);font-size:9px}.order-panel-title b{color:var(--text)}
.order-input{display:grid;grid-template-columns:58px minmax(0,1fr) auto;align-items:center;gap:7px;min-height:40px;padding:0 10px;margin-bottom:7px;border:1px solid var(--border);border-radius:4px;background:#111823}.order-input span{color:var(--muted);font-size:9px}.order-input strong{text-align:right;font-size:11px}.order-input input{min-width:0;width:100%;border:0;outline:0;background:transparent;color:var(--text);text-align:right;font-size:12px}.order-input em{color:var(--muted);font-size:9px;font-style:normal}
.order-percent-row{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:8px 0}.order-percent-row button{min-height:30px;border:1px solid var(--border);border-radius:4px;background:#141b26;color:var(--muted);font-size:9px}.order-percent-row button:hover{color:var(--text);border-color:#43506a}.order-estimate{display:flex;justify-content:space-between;gap:10px;margin:10px 0;color:var(--muted);font-size:9px}.order-estimate strong{color:var(--text)}.order-submit{width:100%;min-height:39px;border:0;border-radius:4px;color:white;font-weight:900}.buy-submit{background:#1da96f}.sell-submit{background:#dc5268}.order-message{min-height:17px;margin:7px 0 0;color:var(--muted);font-size:9px}
.exchange-side-card{border-bottom:1px solid var(--border)}.recent-market-trades{min-height:120px;max-height:235px;overflow:auto}.recent-market-row{padding-top:5px;padding-bottom:5px;font-size:9px}.recent-market-row.buy span:first-child{color:var(--green)}.recent-market-row.sell span:first-child{color:var(--red)}.exchange-empty-small{padding:16px 10px;color:var(--muted);font-size:9px}
.news-admin-only{display:none!important}body.admin-mode .news-admin-only{display:grid!important}.news-editor{gap:14px;margin-bottom:17px}.news-preview-wrap{overflow:hidden;max-width:560px;border:1px solid var(--border);border-radius:12px;background:#0c121b}.news-preview-wrap img{width:100%;max-height:340px;object-fit:contain}.news-event-box{padding:14px;border:1px solid rgba(123,141,255,.25);border-radius:14px;background:rgba(123,141,255,.055)}.news-event-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}.news-list{display:grid;gap:14px}.news-card{overflow:hidden;border:1px solid var(--border);border-radius:17px;background:var(--panel)}.news-card-image{width:100%;max-height:440px;object-fit:cover;background:#0b1017;border-bottom:1px solid var(--border)}.news-card-body{padding:18px}.news-card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.news-card h3{margin:4px 0 0;font-size:22px}.news-meta{color:var(--muted);font-size:10px}.news-content{margin-top:14px;color:#c2cada;line-height:1.75;overflow-wrap:anywhere}.news-market-event{display:inline-flex;margin-top:13px;padding:6px 9px;border:1px solid rgba(123,141,255,.28);border-radius:999px;color:#b9c2ff;background:rgba(123,141,255,.07);font-size:9px;font-weight:800}.news-actions{display:flex;justify-content:flex-end;margin-top:12px}.delisted-badge{display:inline-flex;margin-left:6px;padding:3px 7px;border-radius:999px;background:rgba(255,99,125,.1);color:var(--red);font-size:9px;font-weight:900}.admin-token-row.delisted-token{opacity:.75}.admin-token-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}
@media(max-width:1100px){.exchange-shell{grid-template-columns:190px minmax(0,1fr)}.exchange-side{grid-column:1/3;display:grid;grid-template-columns:1fr 1fr;border-left:0;border-top:1px solid var(--border)}}
@media(max-width:760px){.exchange-page-head{align-items:flex-start;flex-direction:column}.exchange-shell{display:block}.exchange-market-panel{border-right:0;border-bottom:1px solid var(--border)}.exchange-market-list{max-height:260px}.exchange-side{display:block}.exchange-order-grid{grid-template-columns:1fr}.order-panel:first-child{border-right:0;border-bottom:1px solid var(--border)}.candle-canvas-wrap{height:340px}.ticker-content{flex-wrap:wrap}.news-event-grid{grid-template-columns:1fr}.news-card-head{flex-direction:column}}


/* =========================================================
   V3.1 - 호가창 제거
   ========================================================= */

.recent-only-side .exchange-side-card{
  min-height:100%;
}

.recent-only-side .recent-market-trades{
  max-height:760px;
  min-height:560px;
}

@media(max-width:1100px){
  .exchange-shell{
    grid-template-columns:190px minmax(0,1fr);
  }

  .exchange-side{
    grid-column:1 / 3;
    display:block;
    border-left:0;
    border-top:1px solid var(--border);
  }

  .recent-only-side .recent-market-trades{
    max-height:280px;
    min-height:180px;
  }
}


/* =========================================================
   V3.2 - 호가창 완전 제거 후 최근 체결 전용 스타일
   ========================================================= */

.recent-trade-head,
.recent-market-row{
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:6px;
  padding-left:10px;
  padding-right:10px;
}

.recent-trade-head{
  padding-top:7px;
  padding-bottom:7px;
  color:#69768b;
  font-size:8px;
}

.recent-trade-head span:not(:first-child),
.recent-market-row span:not(:first-child){
  text-align:right;
}

.recent-market-trades{
  min-height:560px;
  max-height:760px;
  overflow:auto;
}

.recent-market-row{
  padding-top:6px;
  padding-bottom:6px;
  border-bottom:1px solid rgba(40,50,71,.42);
  font-size:9px;
}

.recent-market-row.buy span:first-child{
  color:var(--green);
}

.recent-market-row.sell span:first-child{
  color:var(--red);
}

.recent-only-side .exchange-side-card{
  min-height:100%;
}

@media(max-width:1100px){
  .recent-market-trades{
    min-height:180px;
    max-height:280px;
  }
}


/* =========================================================
   V3.3 - 거래소 오른쪽 광고 영역
   ========================================================= */

.exchange-ad-card{
  display:grid;
  place-items:center;
  align-content:center;
  gap:5px;
  min-height:250px;
  margin:10px;
  border:1px dashed #46516a;
  border-radius:8px;
  background:
    linear-gradient(
      180deg,
      rgba(255,255,255,.012),
      rgba(255,255,255,.004)
    );
  color:#76839a;
  text-align:center;
}

.exchange-ad-card strong{
  color:#8d99ad;
  font-size:13px;
}

.exchange-ad-card small{
  color:#5f6b80;
  font-size:9px;
}

.exchange-ad-label{
  color:#5d6980;
  font-size:8px;
  letter-spacing:1.6px;
}

.recent-trade-card{
  border-top:1px solid var(--border);
}

.recent-only-side .recent-market-trades{
  min-height:340px;
  max-height:500px;
}

/*
  모바일에서는 광고가 주문/차트보다 먼저 보이지 않도록
  오른쪽 영역이 아래로 내려간 뒤 자연스럽게 표시됩니다.
*/
@media(max-width:1100px){
  .exchange-ad-card{
    min-height:180px;
    margin:10px;
  }

  .recent-only-side .recent-market-trades{
    min-height:180px;
    max-height:280px;
  }
}

@media(max-width:760px){
  .exchange-ad-card{
    min-height:120px;
  }
}


/* V3.6 - 로그인한 본인의 매수 평단 표시 */
.my-average-price{
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:9px;
  min-height:40px;
  margin-bottom:7px;
  padding:0 10px;
  border:1px solid var(--border);
  border-radius:4px;
  background:#111823;
}
.my-average-price span{color:var(--muted);font-size:9px}
.my-average-price strong{text-align:right;font-size:11px}
.my-average-price em{
  min-width:62px;
  text-align:right;
  font-size:9px;
  font-style:normal;
  font-weight:800;
}
.my-average-price em.up{color:var(--green)}
.my-average-price em.down{color:var(--red)}


/* =========================================================
   V3.6.1 - 거래소 상단 내 포지션 / 평단 강조
   ========================================================= */

.my-position-bar{
  display:grid;
  grid-template-columns:repeat(3,1fr);
  border-bottom:1px solid var(--border);
  background:#0d121a;
}

.my-position-bar>div{
  display:grid;
  gap:3px;
  min-height:52px;
  padding:9px 14px;
  border-right:1px solid var(--border);
}

.my-position-bar>div:last-child{
  border-right:0;
}

.my-position-bar span{
  color:var(--muted);
  font-size:8px;
}

.my-position-bar strong{
  font-size:12px;
}

.my-position-bar strong.up{
  color:var(--green);
}

.my-position-bar strong.down{
  color:var(--red);
}

.my-position-bar strong.error{
  color:var(--red);
  font-size:9px;
}

@media(max-width:760px){
  .my-position-bar{
    grid-template-columns:1fr 1fr;
  }

  .my-position-bar>div:last-child{
    grid-column:1 / 3;
    border-top:1px solid var(--border);
  }
}

/* V3.8 - 보상형 광고 */
.reward-ad-card{
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:16px 20px;
  align-items:center;
  margin:18px 0 24px;
  padding:18px;
  border:1px solid var(--border);
  border-radius:16px;
  background:linear-gradient(135deg,rgba(123,141,255,.09),rgba(17,23,34,.95) 48%);
}
.reward-ad-main{display:flex;align-items:center;gap:13px}
.reward-ad-icon{
  display:grid;place-items:center;width:48px;height:48px;flex:0 0 auto;
  border-radius:14px;background:var(--accent-soft);color:var(--accent);
  font-size:25px;font-weight:950
}
.reward-ad-main h3{margin:3px 0;font-size:18px}
.reward-ad-main p{margin:0;color:var(--muted);font-size:11px}
.reward-ad-main p strong{color:var(--text)}
.reward-ad-status{display:grid;grid-template-columns:repeat(3,minmax(84px,1fr));gap:7px}
.reward-ad-status>div{
  display:grid;gap:4px;min-width:90px;padding:9px 10px;
  border:1px solid var(--border);border-radius:10px;background:#0d131e
}
.reward-ad-status span{color:var(--muted);font-size:8px}
.reward-ad-status strong{font-size:11px}
.reward-ad-button{justify-self:start;min-width:250px}
.reward-ad-button:disabled{opacity:.48;cursor:not-allowed}
.reward-ad-disclaimer{align-self:center;color:#69758a;font-size:9px}
#rewardAdMessage{grid-column:1 / 3}
@media(max-width:760px){
  .reward-ad-card{grid-template-columns:1fr}
  .reward-ad-status{grid-template-columns:1fr 1fr}
  .reward-ad-status>div:last-child{grid-column:1 / 3}
  .reward-ad-button{width:100%;min-width:0}
  #rewardAdMessage{grid-column:1}
}

/* V3.9 interactive chart */
.candle-tools{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.candle-zoom-controls{display:flex;align-items:center;gap:4px}
.candle-zoom-controls button{min-width:28px;height:26px;padding:0 7px;border:1px solid var(--border);border-radius:4px;background:#141b26;color:var(--muted);font-size:10px}
.candle-zoom-controls button:hover{color:var(--text);border-color:#43506a}
#chartVisibleCount{min-width:40px;text-align:center;color:var(--muted);font-size:8px}
.candle-canvas-wrap{cursor:crosshair;user-select:none;touch-action:pan-y}
.candle-canvas-wrap.dragging{cursor:grabbing}
.chart-help{position:absolute;left:10px;bottom:7px;padding:4px 7px;border-radius:4px;background:rgba(9,13,19,.72);color:rgba(147,160,181,.62);font-size:8px;pointer-events:none}
@media(max-width:760px){
  .candle-toolbar{align-items:flex-start;flex-direction:column;padding:7px 10px}
  .candle-tools{width:100%;justify-content:space-between}
  .candle-periods{overflow-x:auto;max-width:100%}
}

/* V4.0 Lightweight Charts */
.lightweight-chart-wrap{position:relative;width:100%;height:440px;background:#090d13}
.lightweight-chart{width:100%;height:100%}
.chart-library-error{position:absolute;inset:0;display:grid;place-items:center;background:#090d13;color:var(--muted);font-size:12px;padding:20px;text-align:center}
.candle-native-controls{display:flex;align-items:center;gap:7px}
.candle-native-controls span{color:var(--muted);font-size:8px;white-space:nowrap}
.candle-native-controls button{min-width:42px;height:26px;padding:0 8px;border:1px solid var(--border);border-radius:4px;background:#141b26;color:var(--muted);font-size:9px}
.candle-native-controls button:hover{color:var(--text);border-color:#43506a}
.footer a{color:var(--muted)}
@media(max-width:760px){.lightweight-chart-wrap{height:360px}.candle-native-controls span{display:none}}


/* V4.2 - 횡보 상태 */
.market-pill.flat{
  color:#d8b75d;
}


/* =========================================================
   V4.3 - 캔들 Hover 정보창
   ========================================================= */

.candle-hover-tooltip{
  position:absolute;
  z-index:30;
  min-width:178px;
  padding:10px 11px;
  border:1px solid rgba(92,105,128,.65);
  border-radius:8px;
  background:rgba(15,21,31,.96);
  box-shadow:0 8px 24px rgba(0,0,0,.28);
  pointer-events:none;
  backdrop-filter:blur(6px);
}

.candle-hover-title{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding-bottom:8px;
  margin-bottom:8px;
  border-bottom:1px solid rgba(255,255,255,.07);
}

.candle-hover-title span{
  color:var(--muted);
  font-size:9px;
}

.candle-hover-title strong{
  font-size:11px;
}

.candle-hover-title strong.up{
  color:#25c887;
}

.candle-hover-title strong.down{
  color:#ff637d;
}

.candle-hover-title strong.flat{
  color:#b8c0cf;
}

.candle-hover-grid{
  display:grid;
  grid-template-columns:auto auto;
  gap:5px 14px;
  align-items:center;
}

.candle-hover-grid span,
.candle-hover-range span{
  color:var(--muted);
  font-size:9px;
}

.candle-hover-grid strong,
.candle-hover-range strong{
  color:var(--text);
  text-align:right;
  font-size:10px;
}

.candle-hover-range{
  display:flex;
  justify-content:space-between;
  gap:14px;
  margin-top:8px;
  padding-top:8px;
  border-top:1px solid rgba(255,255,255,.07);
}

@media(max-width:760px){
  .candle-hover-tooltip{
    min-width:164px;
    padding:9px 10px;
  }
}


/* =========================================================
   V4.4 - 시장가 / 지정가 / 미체결 주문
   ========================================================= */

.order-type-tabs{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:4px;
  margin:0 0 8px;
  padding:3px;
  border:1px solid var(--border);
  border-radius:5px;
  background:#0a1018;
}

.order-type-tabs button{
  min-height:29px;
  border:0;
  border-radius:3px;
  background:transparent;
  color:var(--muted);
  font-size:9px;
  font-weight:800;
}

.order-type-tabs button.active{
  background:#202a3b;
  color:var(--text);
}

.buy-order-panel .order-type-tabs button.active{
  color:var(--green);
}

.sell-order-panel .order-type-tabs button.active{
  color:var(--red);
}

.limit-price-row{
  border-color:#46526a;
}

.open-orders-panel{
  border-top:1px solid var(--border);
  background:#0c1119;
}

.open-orders-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:11px 14px;
  border-bottom:1px solid rgba(40,50,71,.55);
}

.open-orders-head>div{
  display:flex;
  align-items:center;
  gap:8px;
}

.open-orders-head strong{
  font-size:11px;
}

.open-orders-head span{
  color:var(--muted);
  font-size:9px;
}

.open-orders-head button,
.limit-order-cancel{
  border:1px solid var(--border);
  border-radius:4px;
  background:#141b26;
  color:var(--muted);
  font-size:8px;
}

.open-orders-head button{
  min-height:27px;
  padding:0 9px;
}

.open-orders-list{
  min-height:44px;
}

.limit-order-row{
  display:grid;
  grid-template-columns:70px minmax(80px,1fr) minmax(80px,1fr) minmax(80px,1fr) 70px;
  gap:8px;
  align-items:center;
  padding:9px 14px;
  border-bottom:1px solid rgba(40,50,71,.38);
  font-size:9px;
}

.limit-order-row:last-child{
  border-bottom:0;
}

.limit-order-side{
  font-weight:900;
}

.limit-order-side.buy{
  color:var(--green);
}

.limit-order-side.sell{
  color:var(--red);
}

.limit-order-cell{
  display:grid;
  gap:2px;
}

.limit-order-cell span{
  color:var(--muted);
  font-size:7px;
}

.limit-order-cell strong{
  color:var(--text);
  font-size:9px;
}

.limit-order-cancel{
  min-height:27px;
  color:#ff8a9d;
}

.pending-listing-badge{
  display:inline-flex;
  margin-left:6px;
  padding:2px 5px;
  border-radius:999px;
  background:rgba(216,183,93,.12);
  color:#d8b75d;
  font-size:7px;
  vertical-align:middle;
}

@media(max-width:760px){
  .limit-order-row{
    grid-template-columns:1fr 1fr;
  }

  .limit-order-row .limit-order-cancel{
    grid-column:1 / 3;
  }
}


/* =========================================================
   V4.4.7 - Stop Loss / Chart Order Lines
   ========================================================= */

.sell-order-type-tabs{
  grid-template-columns:repeat(3,1fr);
}

.stop-price-row{
  border-color:rgba(255,159,67,.58);
}

.sell-order-panel
.order-type-tabs
button[data-order-type="stop_loss"].active{
  color:#ff9f43;
}

.limit-order-side.stop_loss{
  color:#ff9f43;
}

.chart-order-legend{
  display:inline-flex;
  align-items:center;
  gap:5px;
  margin-left:7px;
  color:var(--muted);
  font-size:7px;
}
