:root{--bg: #0e1117;--panel: #161b22;--border: #2a3344;--text: #c9d1d9;--muted: #7d8794;--green: #26a69a;--red: #ef5350;--accent: #2f81f7;--control-h: 56px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior:none}#app{display:flex;flex-direction:column;height:100dvh;width:100vw}#topbar{flex:0 0 auto;display:flex;align-items:center;gap:8px;height:calc(40px + env(safe-area-inset-top));padding:calc(4px + env(safe-area-inset-top)) 10px 4px;background:var(--panel);border-bottom:1px solid var(--border);font-size:13px;overflow-x:auto;scrollbar-width:none}#topbar::-webkit-scrollbar{display:none}.tf-bar{display:flex;align-items:center;gap:4px;flex:0 0 auto}.tf-chip{appearance:none;background:#1b2230;color:var(--muted);border:1px solid var(--border);border-radius:8px;min-width:38px;height:32px;padding:0 8px;font-size:13px;font-weight:700}.tf-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}#topbar .meta{font-weight:700;white-space:nowrap}#topbar .meta .tag{color:var(--muted);font-weight:500;margin-left:6px}#topbar .spacer{flex:1 1 auto}#topbar select,#topbar button{appearance:none;background:#1b2230;color:var(--text);border:1px solid var(--border);border-radius:8px;height:32px;padding:0 10px;font-size:13px;font-weight:600}#chart{flex:1 1 auto;min-height:0;position:relative}#boot{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:var(--bg);color:var(--muted);font-size:15px}#drawbar{position:absolute;top:8px;left:8px;bottom:8px;z-index:40;display:none;flex-direction:column;gap:6px;overflow-y:auto;scrollbar-width:none}#drawbar::-webkit-scrollbar{display:none}#drawbar.open{display:flex}.draw-tool{appearance:none;background:#161b22f0;color:var(--text);border:1px solid var(--border);border-radius:8px;height:34px;padding:0 10px;font-size:12px;font-weight:700;white-space:nowrap;text-align:left;flex:0 0 auto}.draw-tool.active{background:#e0b341;border-color:#e0b341;color:#2a2206}#controls{flex:0 0 auto;display:flex;align-items:center;gap:6px;height:calc(var(--control-h) + env(safe-area-inset-bottom));padding:6px 8px calc(6px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--border)}.ctrl-group{display:flex;align-items:center;gap:4px}.ctrl-group.spacer{flex:1 1 auto;justify-content:center}button.btn{appearance:none;border:1px solid var(--border);background:#1b2230;color:var(--text);border-radius:8px;min-width:44px;height:44px;font-size:16px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}button.btn:active{filter:brightness(1.3)}button.btn.buy{background:var(--green);border-color:var(--green);color:#04221f;padding:0 14px}button.btn.sell{background:var(--red);border-color:var(--red);color:#2a0606;padding:0 14px}.speed-chip{min-width:52px;font-variant-numeric:tabular-nums}.pnl{font-variant-numeric:tabular-nums;font-weight:700;font-size:15px}.pnl.pos{color:var(--green)}.pnl.neg{color:var(--red)}button.btn.close{background:#1b2230;border-color:var(--muted);color:var(--text);padding:0 12px;display:none}button.btn.close.show{display:inline-flex}#ticket{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--panel);border-top:1px solid var(--border);border-radius:14px 14px 0 0;transform:translateY(110%);transition:transform .18s ease;padding:14px 14px calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}#ticket.open{transform:translateY(0)}#ticket .t-title{font-size:16px;font-weight:700}#ticket .t-fields{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}#ticket label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}#ticket input{height:44px;border-radius:8px;border:1px solid var(--border);background:#0e1117;color:var(--text);font-size:16px;padding:0 10px;font-variant-numeric:tabular-nums}#ticket .t-actions{display:flex;gap:10px}#ticket .t-actions button{flex:1 1 auto;height:48px;border-radius:10px;border:none;font-size:16px;font-weight:700}#ticket .t-actions .cancel{flex:0 0 110px;background:#1b2230;color:var(--text);border:1px solid var(--border)}#ticket .t-actions .confirm.buy{background:var(--green);color:#04221f}#ticket .t-actions .confirm.sell{background:var(--red);color:#2a0606}#ticket .t-mode{display:flex;gap:8px}#ticket .t-tab{flex:1 1 auto;height:38px;border-radius:8px;border:1px solid var(--border);background:#1b2230;color:var(--muted);font-weight:700;font-size:14px}#ticket .t-tab.active{background:var(--accent);border-color:var(--accent);color:#fff}#ticket .t-fixed{display:flex;flex-direction:column;gap:12px}#ticket .lot-chips{display:flex;flex-wrap:wrap;gap:8px;align-items:center}#ticket .lot-chip{appearance:none;min-width:54px;height:40px;border-radius:8px;border:1px solid var(--border);background:#1b2230;color:var(--text);font-weight:700;font-size:15px;font-variant-numeric:tabular-nums}#ticket .lot-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}#ticket .lot-chips input{width:84px;height:40px;border-radius:8px;border:1px solid var(--border);background:#0e1117;color:var(--text);font-size:16px;padding:0 10px;font-variant-numeric:tabular-nums}.t-readout{font-size:14px;min-height:20px;color:var(--text);font-variant-numeric:tabular-nums}.t-readout.muted{color:var(--muted)}.t-readout.warn{color:var(--red)}.t-readout b{font-size:16px}.t-readout .pos{color:var(--green)}.t-readout .neg{color:var(--red)}#range{position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--panel);border-top:1px solid var(--border);border-radius:14px 14px 0 0;transform:translateY(110%);transition:transform .18s ease;padding:14px 14px calc(14px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px}#range.open{transform:translateY(0)}#range .r-info{color:var(--muted);font-size:13px;line-height:1.7}#range .r-info b{color:var(--text)}#range label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}#range input{height:44px;border-radius:8px;border:1px solid var(--border);background:#0e1117;color:var(--text);font-size:16px;padding:0 10px}#range .t-actions{display:flex;gap:10px}#range .t-actions button{flex:1 1 auto;height:48px;border-radius:10px;border:1px solid var(--border);font-size:15px;font-weight:700}#range .t-actions .cancel{background:#1b2230;color:var(--text)}#range .t-actions .confirm.buy{background:var(--green);color:#04221f;border:none}#panel{position:fixed;left:0;right:0;bottom:0;height:85dvh;background:var(--panel);border-top:1px solid var(--border);border-radius:14px 14px 0 0;transform:translateY(100%);transition:transform .22s ease;z-index:50;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom)}#panel.open{transform:translateY(0)}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.panel-head h2{margin:0;font-size:16px}.panel-head button{background:none;border:none;color:var(--muted);font-size:22px}.panel-body{overflow-y:auto;flex:1 1 auto;padding:12px 14px;-webkit-overflow-scrolling:touch}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.stat{background:#1b2230;border:1px solid var(--border);border-radius:10px;padding:8px 10px}.stat .k{color:var(--muted);font-size:11px}.stat .v{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.stat .v.pos{color:var(--green)}.stat .v.neg{color:var(--red)}.trade-row{display:grid;grid-template-columns:1fr auto;gap:4px 10px;padding:8px 4px;border-bottom:1px solid #1b2230;font-size:13px}.trade-row .sub{color:var(--muted);font-size:11px}.trade-row .net{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}.trade-row .net.pos{color:var(--green)}.trade-row .net.neg{color:var(--red)}.panel-foot{display:flex;gap:8px;padding:10px 14px calc(10px + env(safe-area-inset-bottom));border-top:1px solid var(--border)}.panel-foot button{flex:1 1 auto;height:40px;border-radius:8px;border:1px solid var(--border);background:#1b2230;color:var(--text);font-weight:600}.panel-foot button.danger{color:var(--red);border-color:var(--red)}.empty{color:var(--muted);text-align:center;padding:24px}
