@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--bg:#0c1214;--panel:#131b1e;--line:#273238;--muted:#86969d;--text:#e6eff0;--accent:#67dfb3;--up:#e88183;--down:#72a8ee;--gold:#e6bd70}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.65 'Noto Sans KR',system-ui,sans-serif}button,input,select{font:inherit}button,a,select,input{ -webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button{cursor:pointer;border:1px solid var(--line);border-radius:7px;background:#1b262b;color:var(--text);padding:8px 12px;transition:background .15s,border-color .15s}button:hover{background:#29373c;border-color:#536269}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:4px}[hidden]{display:none!important}.topbar{height:80px;border-bottom:1px solid var(--line);display:flex;gap:42px;align-items:center;padding:0 max(28px,calc((100vw - 1450px)/2));background:#10181b}.brand{display:flex;gap:11px;align-items:center;font-weight:800;font-size:19px;line-height:1.3;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:34px;height:36px;border:2px solid var(--accent);color:var(--accent);border-radius:11px 3px 11px 3px;font:700 22px system-ui}.brand-sub{display:block;font:600 9px/1.6 system-ui;letter-spacing:2.3px;color:#97aaad}.topbar nav{height:100%;display:flex;gap:30px;align-items:center}.topbar nav a{height:100%;display:flex;align-items:center;color:var(--muted);font-weight:600;position:relative}.topbar nav a.active{color:var(--text)}.topbar nav a.active:after{content:'';position:absolute;height:3px;background:var(--accent);bottom:0;width:100%}.exchange{margin-left:auto;font:600 12px system-ui;letter-spacing:1px;display:flex;align-items:center;gap:9px}.live-dot{display:inline-block;width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--accent);box-shadow:0 0 9px #67dfb32b}main{max-width:1450px;margin:auto;padding:34px 28px 0}.page-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.eyebrow{font:600 10px/1.4 system-ui;letter-spacing:1.9px;color:#779194;margin:0 0 11px}h1{font-size:27px;letter-spacing:-1.2px;margin:0 0 8px;line-height:1.4}h2{font-size:17px;letter-spacing:-.4px;margin:0;line-height:1.5}h3{font-size:13px;font-weight:500;color:#b7c9ce;margin:0 0 14px}p{margin:8px 0}.muted{color:var(--muted)}.small{font-size:11px;line-height:1.8}.market-note{font-size:12px;color:#c2d2d5}.market-note .live-dot{margin-right:7px}.market-note small{display:block;color:var(--muted);font-size:10px;margin-top:7px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;align-items:start}.panel{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:24px;overflow:hidden}.panel-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px}.panel-top .eyebrow{margin-bottom:7px}.secondary{background:transparent;font-size:11px;padding:7px 11px}.pill{display:inline-flex;padding:3px 8px;background:#202b30;border:1px solid #344249;color:#bac9ce;font-size:10px;line-height:1.5;border-radius:5px;letter-spacing:.2px}.good{color:var(--accent);background:#143029;border-color:#295544}.warning{color:var(--gold);background:#352c1e;border-color:#54482e}select{border:0;background:transparent;color:var(--text);font-size:21px;font-weight:600;cursor:pointer;max-width:230px;padding:0 20px 0 0}select option{background:var(--panel);font-size:14px}#market-heading{display:flex;gap:12px;align-items:center}.price-row{display:flex;align-items:center;justify-content:space-between;margin:22px 0 24px}#price{font:600 34px/1.2 system-ui;letter-spacing:-1.2px}.price-unit{font:500 11px system-ui;color:var(--muted);margin-left:8px}#change{font-size:11px;margin-top:10px}.observed{text-align:right;font-size:10px}.observed small{display:block;color:var(--muted);margin-top:9px;font-size:10px}.toolbar{display:flex;justify-content:space-between;flex-wrap:wrap;gap:9px;padding:14px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.segments{display:flex;gap:3px;flex-wrap:wrap}.segments button{font-size:11px;padding:6px 10px;background:transparent;border-color:transparent;color:var(--muted)}.segments button[aria-pressed=true]{background:#244338;color:var(--accent);border-color:#33574b}.legend-row{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px;margin:16px 0 7px}.averages{display:flex;gap:13px}.averages button{padding:0;border:0;background:none;font:500 10px system-ui;color:var(--muted)}.averages button[aria-pressed=false]{opacity:.35}.averages i{display:inline-block;width:11px;height:2px;vertical-align:middle;margin-right:5px}.ma5{background:#ddb06b}.ma60{background:#76abc9}.ma120{background:#ad92d4}.legend-caption{font-size:9px;color:var(--muted)}.status{font-size:10px;color:var(--muted);min-height:18px}.chart-plot{min-height:320px;margin-top:9px}.empty{min-height:280px;display:grid;place-items:center;text-align:center;color:var(--muted);font-size:12px;padding:30px;line-height:1.9;border:1px dashed #2d3b41;border-radius:8px;background:linear-gradient(180deg,#18232855,transparent)}.empty.compact{min-height:80px;padding:20px;font-size:11px}.chart-footer{display:flex;justify-content:space-between;font-size:9px;color:#677c85;padding-top:14px;border-top:1px solid var(--line);margin-top:12px}.chart-grid{stroke:#29363c;stroke-width:.6}.chart-axis{fill:#81969e;font:9px system-ui}.chart-time-axis{font-size:8px}.chart-line{fill:none;stroke-width:1.8}.chart-line.up,.chart-wick.up{stroke:var(--up)}.chart-line.down,.chart-wick.down{stroke:var(--down)}.chart-area{fill:#3c807412}.chart-candle.up,.chart-dot.up{fill:var(--up)}.chart-candle.down,.chart-dot.down{fill:var(--down)}.chart-ma{fill:none;stroke-width:1.1}.chart-ma-5{stroke:#ddb06b}.chart-ma-60{stroke:#76abc9}.chart-ma-120{stroke:#ad92d4}.chart-cursor{stroke:#a7b6bd;stroke-width:.8;stroke-dasharray:3 3}.chart-tooltip{font-size:10px;color:var(--muted);min-height:18px;padding-left:3px;line-height:1.8}.chart-hover-tooltip{position:fixed;transform:translate(-50%,-100%);padding:8px 12px;background:#27383f;border:1px solid #54717a;border-radius:6px;pointer-events:none;z-index:20;font-size:11px;max-width:calc(100vw - 20px);box-shadow:0 6px 20px #0006}.chart-signal{stroke:var(--panel);stroke-width:1}.chart-signal-buy{fill:var(--accent)}.chart-signal-sell{fill:var(--gold)}.chart-fill{stroke:#fff;stroke-width:1;fill:#9a8ee5}.chart-fill.live{fill:#f5bd62}.indicator-panel{border-top:1px solid var(--line);padding-top:10px;margin-top:8px}.indicator-panel svg{width:100%;display:block}.indicator-title{fill:#c9d7dc;font:500 10px system-ui}.indicator-reference{stroke:#658074;stroke-width:.7;stroke-dasharray:4 4}.indicator-line{fill:none;stroke-width:1.4}.indicator-rsi{stroke:#c2a4db}.indicator-macd{stroke:#75b5d5}.indicator-signal{stroke:#dfb773}.indicator-obv{stroke:#6ecba9}.indicator-volume-bar.up,.indicator-histogram-bar.up{fill:#bc6f7266}.indicator-volume-bar.down,.indicator-histogram-bar.down{fill:#578ac066}.indicator-empty{color:var(--muted);font-size:11px;margin:6px}.indicator-tooltip{margin:4px 0}aside{display:grid;gap:20px}.signal-panel .panel-top{margin-bottom:10px}.signal-list{max-height:356px;overflow:auto;margin-top:18px}.signal-card{padding:15px 0;border-top:1px solid var(--line)}.signal-title{font-size:12px;font-weight:600;margin-bottom:5px}.signal-card small{font-size:9px}.signal-reasons{font-size:11px;line-height:1.9;color:#c9d8dd;margin:7px 0}.up{color:var(--up)}.down{color:var(--down)}.aside-note{border-top:1px solid var(--line);padding-top:14px;margin-top:13px;color:#7f969f;font-size:10px;line-height:1.9}.worker-row{display:flex;align-items:center;gap:9px;margin-top:24px;font-size:14px}.worker-dot{width:8px;height:8px;border-radius:50%;background:#7d8c93}.worker-dot.running{background:var(--accent)}.risk-grid{display:grid;grid-template-columns:1fr 1fr;background:#0e171b;border:1px solid var(--line);border-radius:8px;margin:17px 0}.risk-grid div{padding:13px}.risk-grid div+div{border-left:1px solid var(--line)}.risk-grid small{display:block;color:var(--muted);font-size:10px}.risk-grid strong{font:600 24px system-ui;display:block;margin-top:6px}.commands{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:18px}.commands button{font-size:11px}.primary{background:var(--accent);border-color:var(--accent);color:#12342a;font-weight:700}.primary:hover{background:#8be8c5}.danger{grid-column:1/-1;background:#3a2327;border-color:#63353e;color:#e5a1ab}.danger:hover{background:#512b33}.text-button{border:0;background:none;padding:4px 0;color:var(--muted);font-size:10px}.error{color:#e9a1a3;font-size:11px}#login-form{border-top:1px solid var(--line);padding-top:16px;margin-top:15px}label{font-size:11px;display:block;color:var(--muted)}input{width:100%;background:#0e171b;border:1px solid var(--line);border-radius:6px;color:var(--text);padding:8px 10px;margin:8px 0 10px}#login-form .primary{width:100%}.ledger-panel{margin-top:22px}.ledger-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}.ledger-item{padding:12px 0;border-top:1px solid var(--line)}.ledger-item strong{font-size:11px}.ledger-item p{margin:4px 0}footer{display:flex;justify-content:space-between;gap:20px;padding:28px 0;color:#5c727b;font-size:9px;letter-spacing:.3px}footer span:first-child{font-weight:600}@media(min-width:1550px){main{padding-top:44px}}@media(max-width:1100px){.workspace{grid-template-columns:minmax(0,1fr) 290px}.panel{padding:20px}.topbar{gap:28px}.legend-caption{font-size:8px}.price-row #price{font-size:29px}.segments button{padding:5px 7px}}@media(max-width:850px){.workspace{grid-template-columns:1fr}aside{grid-template-columns:1fr 1fr;align-items:start}.signal-list{max-height:300px}.page-heading{align-items:start}.market-note{padding-top:12px}.ledger-grid{gap:18px}.exchange{display:none}.topbar #login-toggle{margin-left:auto}.topbar{padding:0 22px}.price-row #price{font-size:34px}}@media(max-width:600px){main{padding:26px 14px 0}.topbar{padding:0 15px;height:66px;gap:20px}.topbar nav{gap:16px;font-size:11px}.brand{font-size:15px;gap:7px}.brand-mark{width:27px;height:30px;font-size:18px}.brand-sub{font-size:7px;letter-spacing:1.8px}.topbar #login-toggle{font-size:9px;padding:6px 8px}.page-heading{margin-bottom:22px}.page-heading h1{font-size:22px}.page-heading p.muted{font-size:11px;max-width:245px}.market-note{display:none}.panel{padding:17px;border-radius:9px}.workspace{gap:15px}aside{grid-template-columns:1fr;gap:15px}select{font-size:19px;max-width:210px}.price-row #price{font-size:30px}.observed small{font-size:8px}.toolbar{gap:8px}.segments button{padding:5px 7px;font-size:10px}.legend-row{margin-top:13px}.chart-plot{min-height:230px}.chart-tooltip{font-size:9px}.chart-footer{font-size:8px;gap:15px}.ledger-grid{grid-template-columns:1fr}.ledger-grid>div+div{border-top:1px solid var(--line);padding-top:18px}footer{flex-direction:column;gap:8px;padding:20px 0}.empty{min-height:230px}.signal-panel .small{font-size:11px}.signal-list{max-height:330px}}

.risk-summary{padding:5px 0 10px;border-bottom:1px solid var(--line)}.risk-summary p{display:flex;justify-content:space-between;color:#9bb0b8;margin:3px 0;font-size:10px}

.fill-paper{color:#aaa0ef;font-weight:400}.fill-live{color:#f5bd62;font-weight:400}

#login-form.login-popover{position:fixed;z-index:40;right:max(22px,calc((100vw - 1450px)/2));top:77px;width:300px;margin:0;padding:24px;background:#172329;border:1px solid #3a505b;border-radius:10px;box-shadow:0 16px 60px #0009}.login-popover h2{margin-bottom:16px}@media(max-width:600px){#login-form.login-popover{top:65px;right:14px;width:min(300px,calc(100vw - 28px))}}

.auth-actions,.auth-heading,.auth-links{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.auth-actions button,.auth-dialog button{cursor:pointer;border:1px solid #ccd7df;border-radius:8px;background:#fff;color:#172f43;padding:.55rem .8rem;font:inherit}
.auth-dialog #auth-submit{background:#172f43;color:#fff}
.auth-overlay{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:rgb(15 30 45 / 55%);padding:1rem;overflow:auto}.auth-overlay[hidden]{display:none}
.auth-dialog{background:#fff;color:#172f43;width:min(100%,440px);max-height:90vh;overflow:auto;padding:1.5rem;border-radius:14px;box-shadow:0 20px 70px #142b4366}
.auth-heading{justify-content:space-between}.auth-heading h2{margin:0}
.auth-dialog label{display:block;margin:1rem 0}.auth-dialog label[hidden]{display:none}
.auth-dialog input{display:block;width:100%;box-sizing:border-box;margin-top:.35rem;padding:.7rem;border:1px solid #b5c5d0;border-radius:7px;font:inherit}
.auth-dialog #auth-submit{width:100%}.auth-dialog #auth-status{min-height:1.4em;font-size:.9rem}
.auth-links{margin-top:1rem}.auth-links button{font-size:.8rem}.auth-dialog button:disabled{opacity:.5}
@media(max-width:640px){.auth-dialog{padding:1.2rem}}

.auth-actions{justify-content:flex-end;gap:8px;min-width:0;max-width:100%}
.auth-actions button{font-size:11px;padding:4px 9px;border-radius:5px;white-space:nowrap;flex-shrink:0}
#auth-user{font-size:12px;color:var(--muted);max-width:220px;overflow-wrap:anywhere}
footer{gap:12px;flex-wrap:wrap}
footer .member-profile-link{margin-left:auto;border:0;background:none;padding:0;text-decoration:none;white-space:nowrap}
footer .member-profile-link:hover{text-decoration:underline}
footer .footer-account-links{display:flex;justify-content:flex-end;gap:28px;margin-left:auto}
footer #admin-link{border:0;background:none;padding:0;text-decoration:none;white-space:nowrap}

.auth-dialog input{background:#fff;color:#172f43}.auth-dialog label{color:#172f43}.topbar .auth-actions{margin-left:auto}.auth-dialog [hidden]{display:none!important}

.algorithm-picker{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:12px 0}.algorithm-picker select,.trade-settings select{max-width:100%;padding:8px;background:var(--surface,#172125);color:inherit;border:1px solid #34454b;border-radius:6px}.trade-settings{display:grid;gap:8px;margin:14px 0}.trade-settings label{font-size:12px}.trade-settings p{margin:0}.signal-card>small{display:block}

.signal-panel .algorithm-picker{display:grid;gap:6px;margin:0 0 16px}.signal-panel .algorithm-picker label{font-size:11px;color:var(--muted)}.signal-panel .algorithm-picker select{width:100%;min-width:0;font-size:13px;font-weight:500}
