@import"https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Inter:wght@400;500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap";:root{font-family:Inter,Noto Sans KR,sans-serif;color:#edf6ff;background:#07121f;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1180px;min-height:100vh;background:radial-gradient(circle at 50% -20%,#163652 0,#07121f 48%,#050d16)}button,input,select{font:inherit}button{cursor:pointer}main{width:min(1760px,calc(100% - 56px));margin:0 auto}.topbar{height:78px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(162,189,214,.13)}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:linear-gradient(145deg,#27dd9c,#0ba7bd);color:#041016;font-weight:900;box-shadow:0 0 30px #27dd9c2e}.brand div{display:grid;gap:2px}.brand strong{font-size:15px;letter-spacing:.03em}.brand small{color:#758da5;font-size:11px}.status-cluster{display:flex;align-items:center;gap:10px;color:#9cb1c5;font:12px DM Mono}.pulse{width:7px;height:7px;border-radius:50%;background:#38d996;box-shadow:0 0 14px #38d996;animation:live-pulse 1.4s ease-in-out infinite}.pulse.connecting{background:#ffca6a;box-shadow:0 0 12px #ffca6a}.safety{padding:7px 10px;border:1px solid rgba(56,217,150,.26);color:#59e6ac;border-radius:20px}.viewer-badge,.admin-badge{padding:4px 7px;border-radius:12px;font-size:9px}.viewer-badge{color:#b8dfff;background:#58a9ff1f;border:1px solid rgba(88,169,255,.24)}.admin-badge{color:#ffcf79;background:#ffca6a17;border:1px solid rgba(255,202,106,.2)}.viewer-notice{display:grid;gap:4px;margin:9px;padding:11px;color:#8db6d8;background:#3789c91a;border:1px solid rgba(88,169,255,.22);border-radius:8px}.viewer-notice strong{font-size:10px}.viewer-notice span{font-size:8px;color:#748da2}.logout-button{padding:5px 8px;border:1px solid #263f52;border-radius:6px;color:#8299ac;background:#0a1824;font-size:9px}.logout-button:hover{color:#d9e6f0;border-color:#3d5c72}.brand-logout{margin-left:8px;color:#ff9ca5;border-color:#ff6b7a45;background:#ff6b7a14}body:has(.auth-shell){min-width:0}.auth-shell{width:100%;min-width:0;min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(380px,calc(100vw - 32px));padding:30px;display:grid;gap:18px;border:1px solid rgba(133,166,194,.18);border-radius:16px;background:linear-gradient(145deg,#0e2233fa,#07131ffa);box-shadow:0 30px 90px #00000059}.login-card .login-mark{width:44px;height:44px}.login-card small{color:#48dca6;font:500 9px DM Mono;letter-spacing:.15em}.login-card h1{margin:6px 0 5px;font-size:23px}.login-card p{margin:0;color:#71899e;font-size:11px}.login-card label{display:grid;gap:7px;color:#8ca1b3;font-size:10px}.login-card input{width:100%;padding:12px;border:1px solid #263f52;border-radius:8px;outline:none;color:#eaf4fc;background:#071522}.login-card input:focus{border-color:#3ecf9e;box-shadow:0 0 0 3px #38d99614}.login-card>button{padding:12px;border:0;border-radius:8px;color:#062018;background:#43dca7;font-weight:700}.login-card>button:disabled{opacity:.5;cursor:wait}.login-error{padding:9px 11px;border:1px solid rgba(255,107,122,.25);border-radius:7px;color:#ff929e;background:#ff6b7a14;font-size:10px}.login-help{text-align:center;color:#536b7e;font-size:9px}.loading-card{justify-items:center;color:#7890a4}@keyframes live-pulse{50%{opacity:.38;transform:scale(.78)}}.hero{display:flex;justify-content:space-between;align-items:end;padding:42px 0 32px}.eyebrow,.panel small{font:500 10px DM Mono;letter-spacing:.16em;color:#49dca5}.hero h1{margin:10px 0 12px;font-size:clamp(34px,3.1vw,58px);line-height:1.04;letter-spacing:-.05em}.hero h1 em{color:#45d9aa;font-style:normal}.hero p:not(.eyebrow){max-width:640px;margin:0;color:#8299ae;line-height:1.7;font-size:14px}.market-clock{text-align:right;display:grid;gap:5px}.market-clock small{color:#72879c}.market-clock strong{font:28px DM Mono}.market-clock button{margin-top:7px;border:1px solid #24435a;background:#0b1a28;color:#b8cce0;padding:8px 12px;border-radius:8px}.workspace{display:grid;grid-template-columns:310px minmax(540px,1fr) 280px;gap:14px;align-items:start}.panel{background:linear-gradient(145deg,#0d1f2ff0,#081623f0);border:1px solid rgba(133,166,194,.13);box-shadow:0 18px 60px #0000002e;border-radius:14px}.scanner,.trade{position:sticky;top:12px;overflow:hidden}.panel-heading{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid rgba(133,166,194,.1)}.panel-heading h2{margin:4px 0 0;font-size:18px}.panel-heading>span{color:#71889d;font:11px DM Mono}.portfolio-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:14px}.summary-card{position:relative;overflow:hidden;min-height:126px;padding:19px;display:grid;align-content:space-between;border-radius:14px;border:1px solid rgba(133,166,194,.13);background:linear-gradient(145deg,#0f2435f5,#081623f5)}.summary-card small{color:#7890a5;font-size:11px}.summary-card strong{margin:10px 0;font:700 25px DM Mono}.summary-card strong i{margin-left:5px;font: 10px Noto Sans KR;color:#6b8297}.summary-card span{color:#6d8498;font-size:11px}.summary-card.primary:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#38d996}.summary-card.positive strong,.summary-card.positive span{color:#52e1ae}.summary-card.negative strong,.summary-card.negative span{color:#ff7785}.filter-row{display:grid;grid-template-columns:repeat(3,1fr);padding:10px;gap:5px;border-bottom:1px solid rgba(133,166,194,.08)}.filter-row button{border:0;background:transparent;color:#687f95;font-size:11px;padding:8px;border-radius:7px}.filter-row .active{background:#132c3e;color:#64e4b7}.stock-list{max-height:675px;overflow:auto}.stock-row{width:100%;display:grid;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;border:0;border-bottom:1px solid rgba(133,166,194,.07);padding:14px 16px;text-align:left;color:#e5f0fa;background:transparent}.stock-row:hover,.stock-row.selected{background:#22496061}.stock-row.selected{box-shadow:inset 3px 0 #38d996}.rank-score{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;color:#56e0af;background:#2cc69017;font:500 12px DM Mono}.stock-title,.stock-price{display:grid;gap:4px}.stock-title small,.stock-price small{color:#647b91;font:10px DM Mono}.stock-price{text-align:right}.stock-price strong{font:12px DM Mono}.detail{display:grid;gap:14px}.chart-panel{padding:20px}.stock-head{display:flex;justify-content:space-between;align-items:end;padding:2px 4px 12px}.stock-head h2{margin:5px 0 0;font-size:23px}.stock-head small{color:#6f879d;font:10px DM Mono}.headline-price{display:flex;gap:12px;align-items:baseline}.headline-price strong{font:26px DM Mono}.headline-price span{font:12px DM Mono}.chart{width:100%;height:340px}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric{min-height:140px;padding:18px;display:grid;align-content:space-between}.metric strong{font:700 25px DM Mono}.metric strong i{font-style:normal;font-size:11px;color:#62788d}.metric>span{color:#71879c;font-size:11px}.metric .signal{color:#4fe1ad}.reason-panel{padding:20px;display:grid;grid-template-columns:150px 1fr;align-items:center}.reason-panel h3{margin:5px 0}.reason-list{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.reason-list span{padding:10px;background:#0f2a3db3;border-radius:8px;color:#afc1d2;font-size:12px}.reason-list b{margin-right:9px;color:#38d996;font:10px DM Mono}.trade{padding-bottom:18px}.locked{color:#ffca6a!important;border:1px solid rgba(255,202,106,.25);padding:5px 7px;border-radius:6px}.mode-card{margin:15px;padding:15px;border-radius:10px;background:#0c2636;border:1px solid rgba(56,217,150,.13);display:grid;gap:6px}.mode-card span,.mode-card small{color:#7890a5;font-size:10px}.mode-card strong{color:#52dfae}.trade label{display:grid;gap:7px;margin:13px 15px;color:#7f96aa;font-size:11px}.trade input,.trade select{width:100%;border:1px solid #223c50;background:#091723;color:#dce9f5;padding:11px;border-radius:8px}.risk-box{margin:18px 15px;padding:14px;border:1px solid rgba(255,202,106,.14);background:#4d37141f;border-radius:10px;display:grid;gap:8px;font-size:10px;color:#a6b7c7}.risk-box strong{color:#ffca6a}.risk-box span:before{content:"✓";color:#42dca6;margin-right:7px}.order-buttons{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 15px}.order-buttons button{border:0;padding:11px;border-radius:8px;color:#8498aa;background:#172c3c}.lock-note{padding:0 15px;color:#596f83;font-size:10px;line-height:1.5}.mode-card.running{box-shadow:inset 0 0 0 1px #38d9962e}.order-buttons.single{grid-template-columns:1fr}.order-buttons .buy{color:#052016;background:#43dca7;font-weight:700}.order-buttons .stop{color:#ffd3d8;background:#ff6b7a2e;border:1px solid rgba(255,107,122,.28);font-weight:700}.replay-progress{height:4px;margin-top:5px;overflow:hidden;border-radius:5px;background:#071722}.replay-progress i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#38d996,#53a9ff);transition:width .35s ease}.order-buttons.control-stack{grid-template-columns:1fr}.order-buttons .replay{color:#b8dfff;background:#3789c924;border:1px solid rgba(88,169,255,.25);font-weight:700}.order-buttons button:disabled{opacity:.5;cursor:wait}.ledger-grid{display:grid;grid-template-columns:minmax(620px,1.5fr) minmax(340px,.7fr);gap:14px;margin-top:14px}.ledger{overflow:hidden}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th,td{padding:13px 17px;text-align:right;border-bottom:1px solid rgba(133,166,194,.07);font:11px DM Mono;color:#a8bacb}th{color:#60788e;font-size:9px;letter-spacing:.09em}th:first-child,td:first-child{text-align:left}td strong,td small{display:block}td strong{color:#e5eef6;font:600 12px Noto Sans KR}td small{color:#5e768b;margin-top:4px;font-size:9px}.empty-cell{text-align:center!important;padding:32px;color:#60788e}.trade-log{max-height:310px;overflow:auto}.trade-log>div{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid rgba(133,166,194,.07)}.trade-log span:nth-child(2){display:grid;gap:4px}.trade-log strong{font-size:11px}.trade-log small{color:#60788e;font-size:9px}.trade-log b{font:11px DM Mono}.tag-buy,.tag-sell{text-align:center;padding:5px;border-radius:5px;font:9px DM Mono}.tag-buy{color:#49dda9;background:#38d9961a}.tag-sell{color:#ff7e8b;background:#ff6b7a1a}.up{color:#ff6b7a!important}.down{color:#58a9ff!important}.error-banner{margin-bottom:14px;padding:12px 16px;border:1px solid rgba(255,107,122,.25);background:#ff6b7a14;border-radius:10px;color:#ff94a0;font-size:12px}.empty{padding:30px;text-align:center;color:#647b91}.transaction-ledger{margin-top:14px;overflow:hidden}.transaction-head{display:flex;align-items:center;justify-content:space-between;padding:20px;border-bottom:1px solid rgba(133,166,194,.1)}.transaction-head h2{margin:4px 0 0;font-size:18px}.trade-filters{display:flex;gap:6px}.trade-filters button{min-width:58px;padding:7px 12px;border:1px solid #213b4f;border-radius:7px;color:#728aa0;background:#0a1926;font-size:10px}.trade-filters button.active{color:#58e0b0;border-color:#38d99659;background:#38d99617}.execution-summary{display:grid;grid-template-columns:repeat(3,1fr);border-bottom:1px solid rgba(133,166,194,.08)}.execution-summary>span{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-right:1px solid rgba(133,166,194,.08)}.execution-summary small{color:#71899e}.execution-summary strong{font:600 13px DM Mono}.buy-text{color:#49dda9}.sell-text{color:#ff7e8b}.execution-table{max-height:540px;overflow:auto}.execution-table th:first-child,.execution-table td:first-child{text-align:left}.execution-table th:nth-child(2),.execution-table td:nth-child(2){text-align:center}.execution-table td:nth-child(6){color:#869db0;font-family:Noto Sans KR}.execution-table .tag-buy,.execution-table .tag-sell{display:inline-block;min-width:42px}.execution-table tr:hover td{background:#23475e33}footer{display:flex;justify-content:space-between;padding:22px 4px 30px;color:#4c6276;font:10px DM Mono}@media(max-width:1280px){body{min-width:980px}.workspace{grid-template-columns:280px 1fr}.trade{position:static;grid-column:1 / -1;display:grid;grid-template-columns:repeat(4,1fr);align-items:end}.trade .panel-heading,.trade .mode-card,.trade .risk-box,.trade .lock-note{grid-column:span 2}.ledger-grid{grid-template-columns:1fr}}body{min-width:1180px}main{width:min(1760px,calc(100% - 24px))}.topbar{height:52px}.brand-mark{width:32px;height:32px;border-radius:9px}.brand strong{font-size:13px}.brand small{font-size:9px}.status-cluster{gap:8px;font-size:10px}.safety{padding:5px 8px}.compact-toolbar{min-height:34px;display:flex;align-items:center;justify-content:space-between;padding:5px 2px;color:#6f879d;font-size:10px}.compact-toolbar b{color:#afc2d3;font-weight:600}.toolbar-actions{display:flex;align-items:center;gap:8px}.toolbar-actions button{padding:4px 8px;border:1px solid #213c50;border-radius:6px;background:#0b1a28;color:#96adbf;font-size:9px}.toolbar-actions .logout-button{color:#ff9ca5;border-color:#ff6b7a45;background:#ff6b7a14}.portfolio-summary{gap:8px;margin-bottom:8px}.summary-card{min-height:78px;padding:11px 14px}.summary-card strong{margin:5px 0;font-size:20px}.summary-card span,.summary-card small{font-size:9px}.real-account-bar{display:grid;grid-template-columns:1.45fr repeat(5,1fr);gap:1px;margin-bottom:8px;overflow:hidden;border:1px solid rgba(56,217,150,.2);border-radius:10px;background:#38d9961f}.real-account-bar>div{min-width:0;padding:9px 12px;display:grid;gap:4px;background:#0a1d2a}.real-account-bar small{color:#70899d;font-size:8px}.real-account-bar strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 12px DM Mono}.real-account-bar .account-title{display:flex;align-items:center;gap:8px}.account-title>div{min-width:0;display:grid;gap:3px}.account-title>div strong{font:600 10px Noto Sans KR}.account-title button{margin-left:auto;padding:4px 6px;border:1px solid #28506a;border-radius:5px;color:#87a7bd;background:#0b2130;font-size:7px}.live-dot{flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:#3cdda4;box-shadow:0 0 10px #3cdda4}.account-setup-bar{min-height:38px;margin-bottom:8px;padding:7px 12px;display:flex;justify-content:space-between;align-items:center;border:1px solid rgba(255,202,106,.18);border-radius:9px;background:#6346181a}.account-setup-bar>div{display:flex;align-items:center;gap:10px}.account-setup-bar strong{color:#ffca6a;font-size:10px}.account-setup-bar span,.account-setup-bar small{color:#72889b;font-size:8px}.workspace{grid-template-columns:250px minmax(500px,1fr) 240px;gap:8px}.panel{border-radius:10px}.panel-heading{padding:11px 13px}.panel-heading h2{margin-top:2px;font-size:14px}.panel-heading>span{font-size:9px}.scanner,.trade{top:6px}.filter-row{padding:5px}.filter-row button{padding:5px;font-size:9px}.stock-list{max-height:405px}.stock-row{grid-template-columns:42px 1fr auto;gap:7px;padding:7px 10px}.rank-score{width:28px;height:28px;font-size:10px}.rank-score.wide{width:42px;font-size:8px}.stock-title strong{font-size:11px}.stock-title small,.stock-price small{font-size:8px}.stock-title .stock-signals{color:#45a988;font-size:7px;letter-spacing:0}.stock-price strong{font-size:10px}.detail{gap:8px}.chart-panel{padding:11px}.stock-head{padding:0 2px 6px}.stock-head h2{margin-top:2px;font-size:17px}.headline-price strong{font-size:20px}.chart{height:225px}.metric-grid{gap:8px}.metric{min-height:70px;padding:10px}.metric strong{font-size:18px}.metric>span{font-size:9px}.reason-panel{min-height:67px;padding:10px;grid-template-columns:105px 1fr}.reason-panel h3{margin:2px 0;font-size:13px}.reason-list{gap:5px}.reason-list span{padding:6px;font-size:9px}.reason-list b{margin-right:5px;font-size:8px}.trade{position:sticky;grid-column:auto;display:block;padding-bottom:10px}.trade .panel-heading,.trade .mode-card,.trade .risk-box,.trade .lock-note{grid-column:auto}.mode-card{margin:9px;padding:10px;gap:4px}.mode-card strong{font-size:12px}.risk-box{margin:9px;padding:10px;gap:5px}.order-buttons{margin:0 9px}.order-buttons button{padding:8px;font-size:10px}.lock-note{padding:0 9px;margin-bottom:0;font-size:8px}.dense-ledgers{display:grid;grid-template-columns:minmax(520px,.88fr) minmax(650px,1.12fr);gap:8px;margin-top:8px;align-items:start}.ledger,.transaction-ledger{height:250px;overflow:hidden}.ledger .table-wrap{max-height:204px;overflow:auto}.transaction-ledger{margin-top:0}.transaction-head{padding:10px 13px}.transaction-head h2{margin-top:2px;font-size:14px}.trade-filters button{min-width:44px;padding:5px 8px;font-size:9px}.execution-summary>span{padding:7px 12px}.execution-summary small{font-size:8px}.execution-summary strong{font-size:10px}.execution-table{max-height:170px}.execution-table th,.execution-table td,.dense-ledgers th,.dense-ledgers td{padding:7px 10px;font-size:9px}.execution-table td strong,.dense-ledgers td strong{font-size:10px}.execution-table td small,.dense-ledgers td small{margin-top:2px;font-size:8px}footer{padding:9px 2px 14px;font-size:8px}.risk-title{display:flex;align-items:center;justify-content:space-between;gap:8px}.risk-title button{padding:4px 7px;border:1px solid rgba(255,202,106,.28);border-radius:5px;color:#ffcf79;background:#ffca6a14;font-size:8px}.replay-period{color:#5f829c!important;letter-spacing:0!important}.execution-summary.four{grid-template-columns:repeat(4,1fr)}.execution-table td:nth-child(6){color:#a8bacb;font-family:DM Mono}.execution-table td:nth-child(7){color:#869db0;font-family:Noto Sans KR}.modal-backdrop{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;background:#02080ec7;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px)}.strategy-modal{width:min(760px,calc(100vw - 48px));max-height:calc(100vh - 48px);overflow:auto;padding:22px;border:1px solid rgba(114,157,190,.25);border-radius:14px;background:linear-gradient(145deg,#10283a,#071521);box-shadow:0 30px 100px #0000008c}.modal-heading{display:flex;align-items:center;justify-content:space-between}.modal-heading small{color:#49dca5;font:500 9px DM Mono;letter-spacing:.15em}.modal-heading h2{margin:5px 0 0;font-size:19px}.modal-heading>button{width:30px;height:30px;border:1px solid #29475d;border-radius:7px;color:#8ea5b8;background:#0a1b29;font-size:20px}.modal-note{margin:13px 0 16px;color:#71899d;font-size:10px;line-height:1.55}.strategy-form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.strategy-form-grid label{display:grid;gap:6px;color:#8fa4b6;font-size:10px}.strategy-form-grid label>div{display:flex;align-items:center;border:1px solid #29445a;border-radius:8px;background:#071522;overflow:hidden}.strategy-form-grid input{width:100%;min-width:0;padding:10px;border:0;outline:0;color:#eaf4fc;background:transparent;font:12px DM Mono}.strategy-form-grid i{padding-right:10px;color:#5f788d;font: 9px Noto Sans KR}.strategy-form-grid label>div:focus-within{border-color:#3ecf9e;box-shadow:0 0 0 3px #38d99612}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.modal-actions button{min-width:90px;padding:9px 14px;border:1px solid #29455a;border-radius:7px;color:#879daf;background:#0b1b29;font-size:10px}.modal-actions button[type=submit]{border-color:#42dca6;color:#062018;background:#43dca7;font-weight:700}.modal-actions button:disabled{opacity:.55;cursor:wait}
