
:root{
  --bg:#f3f5f7;--surface:#ffffff;--surface-2:#eef1f5;--ink:#0f1720;--ink-2:#465061;--ink-3:#7a8394;
  --rule:#d9dee5;--grid:#eceff3;--long:#2a78d6;--short:#eb6834;--long-soft:#e3eefb;--short-soft:#fdeae1;
  --ma1:#1baf7a;--ma2:#eda100;--ma3:#4a3aa7;--ma4:#e87ba4;--vol-up:#a9c8ee;--vol-down:#f2bca6;--good:#1a8a4a;--good-soft:#e2f4ea;--bad:#c63d2f;--bad-soft:#fbe6e3;--focus:#2a78d6;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){color-scheme:dark;
  --bg:#0f1216;--surface:#161a20;--surface-2:#1d222a;--ink:#edf0f4;--ink-2:#b3bac6;--ink-3:#808998;
  --rule:#2a3039;--grid:#20252d;--long:#3987e5;--short:#d95926;--long-soft:#172538;--short-soft:#33201a;
  --ma1:#199e70;--ma2:#c98500;--ma3:#9085e9;--ma4:#d55181;--vol-up:#2b4f7c;--vol-down:#6e3a26;--good:#3fb872;--good-soft:#16291e;--bad:#e26a5d;--bad-soft:#35191a;--focus:#3987e5;}}
:root[data-theme="dark"]{color-scheme:dark;
  --bg:#0f1216;--surface:#161a20;--surface-2:#1d222a;--ink:#edf0f4;--ink-2:#b3bac6;--ink-3:#808998;
  --rule:#2a3039;--grid:#20252d;--long:#3987e5;--short:#d95926;--long-soft:#172538;--short-soft:#33201a;
  --ma1:#199e70;--ma2:#c98500;--ma3:#9085e9;--ma4:#d55181;--vol-up:#2b4f7c;--vol-down:#6e3a26;--good:#3fb872;--good-soft:#16291e;--bad:#e26a5d;--bad-soft:#35191a;--focus:#3987e5;}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:"IBM Plex Sans KR",system-ui,-apple-system,"Malgun Gothic",sans-serif;font-size:14px;line-height:1.55;padding-inline:16px;padding-block:20px 48px}
.app{max-width:1280px;margin:0 auto;display:flex;flex-direction:column;gap:14px}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}
header.top{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}
header.top h1{margin:0;font-size:22px;font-weight:700;letter-spacing:-.01em}
header.top .sub{color:var(--ink-3);font-size:12.5px}
.tabs{display:flex;gap:4px;background:var(--surface-2);padding:4px;border-radius:9px}
.tabs button,.seg button,.tf button{font:inherit;border:0;background:transparent;color:var(--ink-2);padding:6px 14px;border-radius:6px;cursor:pointer}
.tabs button[aria-selected="true"]{background:var(--surface);color:var(--ink);font-weight:500;box-shadow:0 1px 2px rgba(0,0,0,.08)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.layout{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:14px;align-items:start}
@media (max-width:900px){.layout{grid-template-columns:1fr}}
.panel{background:var(--surface);border:1px solid var(--rule);border-radius:10px}
.chartbox{padding:10px 10px 6px;display:flex;flex-direction:column;gap:8px}
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}
.tf{display:flex;gap:2px;background:var(--surface-2);padding:3px;border-radius:7px}
.tf button{padding:4px 10px;font-family:"IBM Plex Mono",monospace;font-size:12px}
.tf button[aria-pressed="true"]{background:var(--surface);color:var(--ink)}
#chart{height:520px;width:100%;position:relative}
@media (max-width:600px){#chart{height:420px}}
.ma{display:flex;gap:4px;flex-wrap:wrap}.ma button{font:inherit;font-family:"IBM Plex Mono",monospace;font-size:12px;border:1px solid var(--rule);background:var(--surface);color:var(--ink-3);padding:3px 8px;border-radius:6px;cursor:pointer;display:flex;align-items:center;gap:5px}
.ma button i{width:12px;height:3px;border-radius:2px;display:inline-block;opacity:.35}.ma button[aria-pressed="true"]{color:var(--ink);border-color:var(--ink-3)}.ma button[aria-pressed="true"] i{opacity:1}
.legend{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--ink-2);display:flex;flex-wrap:wrap;gap:4px 14px;min-height:38px}
.legend b{color:var(--ink);font-weight:500}
.legend .l{color:var(--long)}.legend .s{color:var(--short)}
.keys{display:flex;gap:14px;font-size:12px;color:var(--ink-3);flex-wrap:wrap}
.keys i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.side{padding:16px;display:flex;flex-direction:column;gap:14px}
.side h2{margin:0;font-size:15px;font-weight:700}
.label{font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-family:"IBM Plex Mono",monospace}
.kv{display:grid;grid-template-columns:auto 1fr;gap:5px 12px;font-size:13px}
.kv dt{color:var(--ink-3)}.kv dd{margin:0;text-align:right;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.seg{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.seg button{border:1px solid var(--rule);padding:9px 0;font-weight:500;background:var(--surface)}
.seg button[data-v="1"][aria-pressed="true"]{background:var(--long);border-color:var(--long);color:#fff}
.seg button[data-v="-1"][aria-pressed="true"]{background:var(--short);border-color:var(--short);color:#fff}
.seg button[data-v="0"][aria-pressed="true"]{background:var(--ink-2);border-color:var(--ink-2);color:var(--surface)}
.row{display:flex;align-items:center;gap:10px}
input[type=range]{flex:1;accent-color:var(--long)}
textarea,select,input[type=datetime-local]{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--rule);border-radius:7px;padding:7px 9px;width:100%}
textarea{resize:vertical;min-height:54px}
.btn{font:inherit;font-weight:500;border:0;border-radius:8px;padding:10px 14px;cursor:pointer;background:var(--ink);color:var(--surface)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.btn.ghost{background:var(--surface-2);color:var(--ink)}
.btns{display:flex;gap:8px;flex-wrap:wrap}.btns .btn{flex:1}
.pill{display:inline-block;font-size:12px;font-weight:500;padding:2px 9px;border-radius:999px}
.pill.long{background:var(--long-soft);color:var(--long)}.pill.short{background:var(--short-soft);color:var(--short)}.pill.flat{background:var(--surface-2);color:var(--ink-2)}
.verdict{border-radius:9px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.verdict.ok{background:var(--good-soft)}.verdict.no{background:var(--bad-soft)}
.verdict strong{font-size:15px}
.verdict.ok strong{color:var(--good)}.verdict.no strong{color:var(--bad)}
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.cmp div{background:var(--surface-2);border-radius:8px;padding:9px 10px;display:flex;flex-direction:column;gap:2px}
.cmp .v{font-family:"IBM Plex Mono",monospace;font-size:17px;font-weight:500}
.pos{color:var(--good)}.neg{color:var(--bad)}
.muted{color:var(--ink-3);font-size:12.5px}
.filters{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hr{height:1px;background:var(--rule)}
.records{padding:16px;display:flex;flex-direction:column;gap:14px}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:9px;overflow:hidden}
.stats div{background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.stats .v{font-family:"IBM Plex Mono",monospace;font-size:20px;font-weight:500}
@media (max-width:600px){.stats{grid-template-columns:repeat(2,1fr)}}
.tbl{overflow-x:auto}
table{border-collapse:collapse;width:100%;min-width:720px;font-size:13px}
th,td{padding:8px 10px;border-bottom:1px solid var(--grid);text-align:left;white-space:nowrap}
th{color:var(--ink-3);font-weight:500;font-size:12px}
td.num{font-family:"IBM Plex Mono",monospace;text-align:right}
td.memo{white-space:normal;min-width:200px;color:var(--ink-2)}
tr.click{cursor:pointer}tr.click:hover td{background:var(--surface-2)}
.note{font-size:12px;color:var(--ink-3)}
.banner{background:var(--surface-2);border-radius:8px;padding:8px 12px;font-size:12.5px;color:var(--ink-2)}
select.sm{width:auto;padding:3px 6px;font-size:12px}
.check{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}
.ctl{display:flex;align-items:center;gap:6px;white-space:nowrap}
.pill.ok{background:var(--good-soft);color:var(--good)}.pill.no{background:var(--bad-soft);color:var(--bad)}
.sw{display:inline-block;width:10px;height:3px;border-radius:2px;vertical-align:3px;margin-right:4px}
.keys i.dot{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.hold{display:flex;flex-direction:column;gap:8px}
.hcard{border:1px solid var(--rule);border-radius:8px;padding:9px 11px;display:flex;flex-direction:column;gap:3px;font-size:12.5px;background:var(--surface)}
.hcard.link{cursor:pointer}.hcard.link:hover{background:var(--surface-2)}
.hcard .top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hcard .nm{font-weight:500;color:var(--ink)}.hcard .sub{color:var(--ink-3);font-size:11.5px}
.hcard .mono{font-size:12px;color:var(--ink-2)}
.trades{display:flex;flex-direction:column;gap:2px;font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink-2);max-height:220px;overflow:auto}
.trades .l{color:var(--long)}.trades .s{color:var(--short)}
/* ---- layout v2: fixed-size regions so nothing shifts while playing ---- */
body{padding-block:14px 32px}
.app{max-width:1440px;gap:12px}
.layout{grid-template-columns:minmax(0,1fr) 360px;gap:12px}
.leftcol{display:flex;flex-direction:column;gap:12px;min-width:0}
.toolbar{justify-content:flex-start;gap:8px}
.toolbar .keys{margin-left:auto;display:inline-flex;gap:10px;align-items:center}.toolbar .keys>span{display:inline-flex;align-items:center;white-space:nowrap}
.chartbox{padding:10px 10px 6px;gap:6px}
#chart{height:clamp(300px,calc(100vh - 410px),620px)}
.legend{display:block;height:36px;min-height:0;overflow:hidden}
.legend>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:18px}
.legend span+span{margin-left:12px}
.feed{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);overflow:hidden;height:140px}
.feedcol{background:var(--surface);display:flex;flex-direction:column;min-width:0}
.feedhead{display:flex;justify-content:space-between;padding:7px 12px 5px;font-size:12.5px;font-weight:500;border-bottom:1px solid var(--grid)}
.feedcol.buy .feedhead span:first-child{color:var(--long)}.feedcol.sell .feedhead span:first-child{color:var(--short)}
.feedlist{flex:1;overflow-y:auto;padding:4px 0;font-family:"IBM Plex Mono",monospace;font-size:12px}
.fi{display:grid;grid-template-columns:92px 1fr auto;gap:8px;padding:2px 12px;color:var(--ink-2)}
.fi .q{color:var(--ink)}.fi .x{color:var(--ink-3)}
.fi.big .q{font-weight:500}
.feedcol.buy .fi.big{background:var(--long-soft)}.feedcol.sell .fi.big{background:var(--short-soft)}
.fi.new{animation:flash .9s ease-out}
@keyframes flash{from{background:var(--surface-2)}}
@media (prefers-reduced-motion:reduce){.fi.new{animation:none}}
.side{position:sticky;top:env(safe-area-inset-top,0px);max-height:calc(100vh - 28px);overflow-y:auto;padding:12px 14px;gap:10px}
@media (max-width:900px){.side{position:static;max-height:none}}
details.sec{border-bottom:1px solid var(--rule);padding-bottom:10px;display:flex;flex-direction:column;gap:8px}
details.sec:last-child{border-bottom:0}
details.sec>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:8px;font-weight:700;font-size:13.5px;padding:2px 0}
details.sec>summary::-webkit-details-marker{display:none}
details.sec>summary::before{content:"";width:7px;height:7px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(-45deg);margin-right:2px;transition:transform .15s}
details.sec[open]>summary::before{transform:rotate(45deg)}
details.sec>summary>span:first-of-type{margin-right:auto}
details.sec[open]>*:not(summary){margin-top:8px}
.stack{display:flex;flex-direction:column;gap:10px}
.btn.sm{padding:6px 10px;font-size:12.5px}
.btns.four{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}
.kv{font-size:12.5px;gap:4px 10px}
.hold{max-height:260px;overflow-y:auto}
#soundBtn[aria-pressed="false"]{color:var(--ink-3)}
.ins{display:flex;flex-direction:column;gap:12px}
.ins-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);border-radius:10px;overflow:hidden}
.ins-kpis>div{background:var(--surface);padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.ins-kpis .v{font-family:"IBM Plex Mono",monospace;font-size:20px;font-weight:500}.ins-kpis .l{font-size:12px;color:var(--ink-3)}
@media (max-width:900px){.ins-kpis{grid-template-columns:repeat(3,1fr)}}
.ins-thesis{background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:14px 18px;display:flex;flex-direction:column;gap:6px}
.ins-thesis p{margin:0;font-size:15px;color:var(--ink);max-width:none}
.ins-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:start}
@media (max-width:900px){.ins-grid{grid-template-columns:minmax(0,1fr)}}
.icard{min-width:0}
.icard{background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:12px 16px;display:flex;flex-direction:column;gap:8px}
.icard>summary{cursor:pointer;font-weight:700;font-size:14px;list-style:none;display:flex;align-items:center;gap:8px}
.icard>summary::-webkit-details-marker{display:none}
.icard>summary::before{content:"";width:7px;height:7px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(-45deg);transition:transform .15s}
.icard[open]>summary::before{transform:rotate(45deg)}
.icard[open]>*:not(summary){margin-top:8px}
table.it{min-width:0;font-size:12.5px}table.it th,table.it td{padding:6px 8px;text-align:right}table.it th:first-child,table.it td:first-child{text-align:left}
table.it td{font-family:"IBM Plex Mono",monospace}table.it tr.warn td{background:var(--bad-soft)}
.ilist,.rlist{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--ink-2)}
.ilist b,.rlist b{color:var(--ink)}
.rlist li span{display:block;font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--ink-3);margin-top:2px}
.bars{display:flex;flex-direction:column;gap:4px;font-size:12px}
.brow{display:grid;grid-template-columns:96px 1fr 1fr;gap:6px;align-items:center}
.brow .lab{font-family:"IBM Plex Mono",monospace;color:var(--ink-2);text-align:right}
.brow .l,.brow .r{height:14px;display:flex;align-items:center}
.brow .l{justify-content:flex-end;border-right:1px solid var(--ink-3)}
.brow .l i,.brow .r i{display:block;height:100%;border-radius:2px}
.brow .l i{background:var(--long)}.brow .r i{background:var(--short)}
.brow .l em,.brow .r em{font-style:normal;font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--ink-3);padding:0 4px}
.jumps{display:flex;flex-direction:column;gap:6px}
.jump{display:grid;grid-template-columns:128px 1fr;gap:10px;text-align:left;font:inherit;font-size:12.5px;background:var(--surface-2);border:1px solid transparent;border-radius:8px;padding:7px 10px;cursor:pointer;color:var(--ink-2)}
.jump:hover{border-color:var(--rule);color:var(--ink)}.jump b{font-family:"IBM Plex Mono",monospace;font-weight:500;color:var(--ink)}

/* ---- site additions ---- */
.app.loading #main,.app.loading #insPanel,.app.loading #recPanel{visibility:hidden}
#loadmsg{display:none;color:var(--ink-3);font-size:13px}
.app.loading #loadmsg{display:block}
header.top h1 .vs{color:var(--ink-3);font-weight:500;margin:0 6px}
header.top h1 .me{color:var(--long)}
.score{display:flex;gap:10px;align-items:center;font-size:12.5px;color:var(--ink-2);background:var(--surface);border:1px solid var(--rule);border-radius:8px;padding:6px 10px;cursor:pointer;flex-wrap:wrap}
.score b{font-family:"IBM Plex Mono",monospace;font-weight:500;color:var(--ink)}.score b.pos{color:var(--good)}.score b.neg{color:var(--bad)}
.ad{min-height:100px;background:var(--surface);border:1px dashed var(--rule);border-radius:10px;padding:6px;overflow:hidden}
.ad::before{content:"광고";display:block;font-size:10px;color:var(--ink-3);letter-spacing:.1em}
.recbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.recbar .btn{padding:6px 10px;font-size:12.5px}
footer.site{border-top:1px solid var(--rule);padding-top:14px;font-size:12px;color:var(--ink-3);display:flex;flex-direction:column;gap:6px}
footer.site nav{display:flex;gap:14px;flex-wrap:wrap}footer.site a{color:var(--ink-2)}
footer.site p{max-width:none;margin:0;color:var(--ink-3)}

html,body{margin:0}
