:root{--bg:#f4f6f9;--card:#fff;--ink:#1b1f24;--sub:#5b6570;--line:#e3e6ea;--head:#eef1f5;
--buy:#d6282f;--sell:#1d5fd1;--up:#d6282f;--down:#1d5fd1;--hl:#fff8d6;--acc:#1f4e78;--accink:#fff;
--errbg:#fdecec;--errink:#a40e16;--errline:#f5c2c5}
@media (prefers-color-scheme:dark){:root{--bg:#111316;--card:#1b1e22;--ink:#e7e9ec;--sub:#9aa3ad;--line:#2c3137;
--head:#23272c;--buy:#ff6b6b;--sell:#6aa5ff;--up:#ff6b6b;--down:#6aa5ff;--hl:#35311f;--acc:#3d7bc4;--accink:#fff;
--errbg:#3a1d20;--errink:#ffb3b8;--errline:#5c2a2f}}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:14px/1.45 "Malgun Gothic","Apple SD Gothic Neo",system-ui,sans-serif;
-webkit-text-size-adjust:100%}
.num{font-variant-numeric:tabular-nums}
.up{color:var(--up)}.down{color:var(--down)}

/* ── 상단바 ── */
.top{position:sticky;top:0;z-index:10;background:var(--card);border-bottom:1px solid var(--line)}
.top-in{max-width:1280px;margin:0 auto;padding:0 16px;display:flex;align-items:center;gap:16px;height:56px}
.brand{font-weight:700;font-size:16px;white-space:nowrap;display:flex;align-items:center;gap:8px}
.brand .logo{color:var(--acc)}
.brand.big{font-size:20px;justify-content:center;margin-bottom:22px}
nav.menu{display:flex;gap:4px;overflow-x:auto;flex:1;scrollbar-width:none}
nav.menu::-webkit-scrollbar{display:none}
nav.menu a{padding:8px 12px;border-radius:8px;color:var(--sub);text-decoration:none;white-space:nowrap;font-weight:600}
nav.menu a:hover{background:var(--head);color:var(--ink)}
nav.menu a.on{background:var(--acc);color:var(--accink)}
.who{color:var(--sub);font-size:12px;white-space:nowrap}
.linkbtn{background:none;border:0;color:var(--sub);cursor:pointer;font:inherit;padding:6px 8px;border-radius:6px}
.linkbtn:hover{background:var(--head);color:var(--ink)}

/* ── 본문 ── */
.wrap{max-width:1280px;margin:0 auto;padding:20px 16px 48px}
h1{font-size:20px;margin:0 0 4px}
.meta{color:var(--sub);font-size:13px;margin-bottom:16px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:16px;
display:flex;flex-wrap:wrap;gap:10px 12px;align-items:center}
.panel label{color:var(--sub);font-size:13px}
input[type=date],input[type=text],input[type=password],input:not([type]){padding:8px 10px;border:1px solid var(--line);
border-radius:8px;background:var(--card);color:var(--ink);font:inherit;min-width:0}
.btn{padding:8px 14px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);cursor:pointer;font:inherit;white-space:nowrap}
.btn:hover{border-color:var(--sub)}
.btn.pri{background:var(--acc);border-color:var(--acc);color:var(--accink);font-weight:600}
.btn:disabled{opacity:.5;cursor:default}
.btn.wide{width:100%;margin-top:14px;padding:11px}
.quick{display:flex;flex-wrap:wrap;gap:6px}.quick .btn{padding:6px 10px;font-size:13px}
.sp{flex:1}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:14px;display:none}
.msg.err{display:block;background:var(--errbg);color:var(--errink);border:1px solid var(--errline)}
.empty{padding:40px 16px;text-align:center;color:var(--sub)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:16px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}
.card h2{font-size:13px;margin:0 0 8px;font-weight:600;color:var(--sub)}
.card.buy h2{color:var(--buy)}.card.sell h2{color:var(--sell)}
.kv{display:flex;justify-content:space-between;gap:12px;font-variant-numeric:tabular-nums;padding:2px 0}
.kv > span:first-child{color:var(--sub)}
.kv.big > span:last-child{font-weight:700;font-size:17px}
.stat{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums;margin:2px 0}
.stat-sub{font-variant-numeric:tabular-nums;font-size:13px}
.bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}
.seg{display:inline-flex}
.seg button{padding:7px 12px;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;font:inherit;margin-left:-1px}
.seg button:first-child{border-radius:8px 0 0 8px;margin-left:0}.seg button:last-child{border-radius:0 8px 8px 0}
.seg button.on{background:var(--ink);color:var(--card);border-color:var(--ink)}

/* ── 표 ── */
.tbl{overflow-x:auto;background:var(--card);border:1px solid var(--line);border-radius:10px;-webkit-overflow-scrolling:touch}
table{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
th,td{padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;text-align:right}
th{background:var(--head);font-size:12px;color:var(--sub);position:sticky;top:0;cursor:pointer;user-select:none}
th.l,td.l{text-align:left}
th.sorted::after{content:" ▾"}th.sorted.asc::after{content:" ▴"}
td.first,th.first{position:sticky;left:0;background:var(--card);z-index:1}
th.first{background:var(--head);z-index:2}
tr.buy td.side{color:var(--buy);font-weight:600}tr.sell td.side{color:var(--sell);font-weight:600}
tr.newday td{border-top:2px solid var(--line)}
tbody tr:hover td{background:var(--hl)}
.code{color:var(--sub);font-size:12px;margin-left:6px}
tfoot td{font-weight:700;background:var(--head)}
.note{color:var(--sub);font-size:12px;margin-top:10px}
.wbar{display:inline-block;height:6px;border-radius:3px;background:var(--acc);vertical-align:middle;margin-left:6px;opacity:.7}

/* ── 로그인 ── */
.login-body{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login-card{width:100%;max-width:360px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:28px 24px}
.login-card label{display:block;color:var(--sub);font-size:13px;margin:12px 0 6px}
.login-card input{width:100%;padding:11px 12px;font-size:16px}
.login-card .msg{margin:14px 0 0}

/* ── 스마트폰 ── */
@media (max-width:720px){
  .top-in{height:auto;flex-wrap:wrap;padding:8px 12px;gap:6px 10px}
  .brand{font-size:15px}
  nav.menu{order:3;flex-basis:100%}
  .who{display:none}
  #logout{margin-left:auto}
  .wrap{padding:14px 12px 40px}
  h1{font-size:18px}
  .panel{padding:10px}
  .panel input[type=date]{flex:1 1 40%;min-width:0;font-size:15px}
  .stat{font-size:21px}
  th,td{padding:7px 8px}
}
