/* Shared v3 shell for converted source pages. */
:root{--border:var(--line);--text-muted:var(--muted);--text-head:var(--text);--bg-panel:var(--panel);--bg-panel-h:var(--panel2);--accent:var(--brand);--green:var(--brand2)}
html.theme-dark{--border:var(--line);--text-muted:var(--muted);--text-head:var(--text);--bg-panel:var(--panel);--bg-panel-h:var(--panel2);--accent:var(--brand);--green:var(--brand2)}
.v3-converted .layout{display:flex;min-height:100vh;background:var(--bg)}
.v3-converted .v3-search-input:focus-visible{outline:3px solid var(--focus-ring);outline-offset:1px}
.v3-converted .app-content-wrapper{flex:1;min-width:0;margin-left:var(--sidebar-w);display:flex;flex-direction:column}
.v3-converted .app-topbar{position:sticky;top:0;z-index:1020;height:var(--topbar-h);display:flex;align-items:center;gap:14px;padding:0 22px;background:var(--topbar-bg);border-bottom:1px solid var(--line);backdrop-filter:blur(8px)}
.v3-converted .v3-mobile-menu{display:none;width:36px;height:36px;border:1px solid var(--line2);border-radius:9px;background:var(--panel);color:var(--muted)}
.v3-converted .v3-search{position:relative;flex:1;max-width:420px}
.v3-converted .v3-search>i{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:var(--soft);font-size:16px}
.v3-converted .v3-search-input{width:100%;height:38px;padding:0 72px 0 36px;border:1px solid var(--line2);border-radius:9px;background:var(--panel2);color:var(--text);font:inherit;font-size:13.3px}
.v3-converted .v3-search-input::placeholder{color:var(--soft)}
.v3-converted .v3-search kbd{position:absolute;right:9px;top:50%;transform:translateY(-50%);padding:1px 6px;border:1px solid var(--line2);border-radius:5px;background:var(--panel);color:var(--soft);font-size:10.5px}
.v3-converted .v3-spacer{flex:1}
.v3-converted .v3-icon-btn{display:grid;place-items:center;width:38px;height:38px;border:1px solid var(--line2);border-radius:9px;background:var(--panel);color:var(--muted);font-size:17px}
.v3-converted .v3-icon-btn:hover{background:var(--panel2);color:var(--text)}
.v3-converted .v3-auth{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px;font-weight:700}
.v3-converted .v3-auth .primary{padding:8px 12px;border-radius:8px;background:var(--brand);color:#fff}
.v3-converted .v3-user-menu{position:relative}
.v3-converted .v3-user-menu summary{display:flex;align-items:center;gap:8px;list-style:none;padding:4px 8px 4px 4px;border:1px solid var(--line2);border-radius:10px;background:var(--panel);color:var(--text);cursor:pointer}
.v3-converted .v3-user-menu summary::-webkit-details-marker{display:none}
.v3-converted .v3-user-menu summary>i{color:var(--soft);font-size:15px}
.v3-converted .v3-user-avatar{display:grid;place-items:center;width:30px;height:30px;overflow:hidden;border-radius:8px;background:var(--brand);color:#fff;font-size:12px;font-weight:800}
.v3-converted .v3-user-avatar img{width:100%;height:100%;object-fit:cover}
.v3-converted .v3-user-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:800}
.v3-converted .v3-user-dropdown{position:absolute;right:0;top:calc(100% + 8px);z-index:1100;display:grid;min-width:190px;padding:6px;border:1px solid var(--line2);border-radius:10px;background:var(--panel);box-shadow:0 16px 32px rgba(0,0,0,.24)}
.v3-converted .v3-user-dropdown a,.v3-converted .v3-user-dropdown button{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:0;border-radius:6px;background:transparent;color:var(--text);font:700 12px var(--sans,Inter,sans-serif);text-align:left;text-decoration:none;cursor:pointer}
.v3-converted .v3-user-dropdown a:hover,.v3-converted .v3-user-dropdown button:hover{background:var(--panel2)}
.v3-converted .v3-user-dropdown button{color:#d56b6b}
.v3-converted .app-main{flex:1;width:100%;max-width:1360px;margin:0 auto;padding:22px 26px 40px}
.v3-converted .app-footer{display:flex;justify-content:space-between;gap:14px;padding:18px 26px 26px;max-width:1360px;width:100%;margin:0 auto;color:var(--muted);font-size:12px}
.v3-converted .app-footer a{color:var(--brand2);font-weight:700}
.v3-converted .v3-search-results{position:absolute;z-index:1040;top:calc(100% + 8px);left:0;width:420px;max-width:calc(100vw - 32px);overflow:hidden;border:1px solid var(--line2);border-radius:10px;background:var(--panel);box-shadow:var(--shadow-lg)}
.v3-converted .v3-search-results[hidden]{display:none}
.v3-converted .v3-search-item{display:grid;grid-template-columns:96px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:46px;padding:8px 12px;border-bottom:1px solid var(--line);color:var(--text);font-size:12px}
.v3-converted .v3-search-item:last-child{border-bottom:0}.v3-converted .v3-search-item:hover,.v3-converted .v3-search-item.selected{background:var(--brandSoft)}
.v3-converted .v3-search-symbol{color:var(--brand2);font-weight:800}.v3-converted .v3-search-name{overflow:hidden;color:var(--muted);font-weight:600;text-overflow:ellipsis;white-space:nowrap}.v3-converted .v3-search-exchange{padding:3px 6px;border-radius:5px;background:var(--panel2);color:var(--soft);font-size:9.5px;font-weight:800}
/* Chart keeps its native interaction model, with a static v3 frame around it. */
body[data-v3-chart-lite]{background:var(--bg);color:var(--text)}
body[data-v3-chart-lite] .layout{display:flex;min-height:100vh;background:var(--bg)}
/* Keep the chart sidebar in the layout flow. A fixed sidebar overlays the
   KLine canvas, while this lets the chart reclaim exactly the width released
   by the collapse control. */
body[data-v3-chart-lite] .app-sidebar{position:sticky;inset:auto;top:0;align-self:flex-start;width:var(--sidebar-w);min-width:var(--sidebar-w);max-width:var(--sidebar-w);height:100vh;flex:0 0 var(--sidebar-w);transition:width .18s ease,min-width .18s ease,max-width .18s ease,flex-basis .18s ease}
/* The chart shell uses the sidebar as a flex item; do not add a second fixed sidebar offset. */
body[data-v3-chart-lite] .main{min-width:0;flex:1;margin-left:0;background:var(--bg)}
body[data-v3-chart-lite] .topbar{position:sticky;top:0;z-index:1020;display:flex;align-items:center;gap:14px;height:var(--topbar-h);padding:0 22px;background:var(--topbar-bg);border-bottom:1px solid var(--line);box-shadow:none}
body[data-v3-chart-lite] .content{width:100%;max-width:none;margin:0;padding:22px 26px 40px}
body[data-v3-chart-lite] .chart-page{width:100%;max-width:none;margin:0}
body[data-v3-chart-lite] .topbar .search-wrap{flex:1;max-width:620px;margin:0}
body[data-v3-chart-lite] .topbar .search-box{height:38px;border:1px solid var(--line2);border-radius:9px;background:var(--panel2);box-shadow:none}
body[data-v3-chart-lite] .topbar .search-box input{color:var(--text);font:500 13px var(--sans,Inter,sans-serif)}
body[data-v3-chart-lite] .topbar .search-box input::placeholder{color:var(--soft)}
body[data-v3-chart-lite] .topbar .search-box #goBtn{height:28px;margin-right:4px;border-radius:6px;background:var(--brand);color:#fff;font:700 11px var(--sans,Inter,sans-serif)}
body[data-v3-chart-lite] .topbar .top-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
body[data-v3-chart-lite] .topbar .v3-icon-btn{display:grid;place-items:center;width:38px;height:38px;padding:0;border:1px solid var(--line2);border-radius:9px;background:var(--panel);color:var(--muted);font-size:17px;cursor:pointer}
body[data-v3-chart-lite] .topbar .v3-icon-btn:hover{background:var(--panel2);color:var(--text)}
body[data-v3-chart-lite] .topbar .v3-auth{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:12.5px;font-weight:700}
body[data-v3-chart-lite] .topbar .v3-auth .primary{padding:8px 12px;border-radius:8px;background:var(--brand);color:#fff}
body[data-v3-chart-lite] .topbar .v3-user-menu{position:relative}
body[data-v3-chart-lite] .topbar .v3-user-menu summary{display:flex;align-items:center;gap:8px;list-style:none;padding:4px 8px 4px 4px;border:1px solid var(--line2);border-radius:10px;background:var(--panel);color:var(--text);cursor:pointer}
body[data-v3-chart-lite] .topbar .v3-user-menu summary::-webkit-details-marker{display:none}
body[data-v3-chart-lite] .topbar .v3-user-menu summary>i{color:var(--soft);font-size:15px}
body[data-v3-chart-lite] .topbar .v3-user-avatar{display:grid;place-items:center;width:30px;height:30px;overflow:hidden;border-radius:8px;background:var(--brand);color:#fff;font-size:12px;font-weight:800}
body[data-v3-chart-lite] .topbar .v3-user-avatar img{width:100%;height:100%;object-fit:cover}
body[data-v3-chart-lite] .topbar .v3-user-name{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12.5px;font-weight:800}
body[data-v3-chart-lite] .topbar .v3-user-dropdown{position:absolute;right:0;top:calc(100% + 8px);z-index:1100;display:grid;min-width:190px;padding:6px;border:1px solid var(--line2);border-radius:10px;background:var(--panel);box-shadow:var(--shadow-lg)}
body[data-v3-chart-lite] .topbar .v3-user-dropdown a,body[data-v3-chart-lite] .topbar .v3-user-dropdown button{display:flex;align-items:center;gap:9px;width:100%;padding:9px 10px;border:0;border-radius:6px;background:transparent;color:var(--text);font:700 12px var(--sans,Inter,sans-serif);text-align:left;text-decoration:none;cursor:pointer}
body[data-v3-chart-lite] .topbar .v3-user-dropdown a:hover,body[data-v3-chart-lite] .topbar .v3-user-dropdown button:hover{background:var(--panel2)}
body[data-v3-chart-lite] .topbar .v3-user-dropdown button{color:#d56b6b}
body[data-v3-chart-lite] .topbar .top-actions>a,body[data-v3-chart-lite] .topbar .theme-toggle button{height:34px;border:1px solid var(--line2);border-radius:8px;background:var(--panel);color:var(--muted);font:700 12px var(--sans,Inter,sans-serif)}
body[data-v3-chart-lite] .topbar .top-actions>a{display:inline-flex;align-items:center;padding:0 11px;text-decoration:none}
body[data-v3-chart-lite] .topbar .top-actions>a.primary{border-color:var(--brand);background:var(--brand);color:#fff}
body[data-v3-chart-lite] .topbar .theme-toggle{display:flex;gap:3px;padding:3px;border:1px solid var(--line2);border-radius:9px;background:var(--panel)}
body[data-v3-chart-lite] .topbar .theme-toggle button{height:26px;padding:0 8px;border:0;background:transparent}
body[data-v3-chart-lite] .topbar .theme-toggle button.active{background:var(--brandSoft);color:var(--brand2)}
@media(max-width:1080px){
  body[data-v3-chart-lite] .layout{display:block;min-height:100vh}
  body[data-v3-chart-lite] .app-sidebar{position:fixed;left:0;top:0;bottom:0;width:264px;min-width:264px;max-width:264px;height:100vh;flex:none;transform:translateX(-100%);z-index:1200}
  body[data-v3-chart-lite] .app-sidebar.is-open{transform:translateX(0)}
  body[data-v3-chart-lite] .main{width:100%;min-width:0;margin-left:0}
  body[data-v3-chart-lite] .content{width:100%;min-width:0;padding:18px 16px 32px}
}
@media(max-width:700px){
  body[data-v3-chart-lite] .topbar .top-actions{display:none!important}
}
/* Exact index.html sidebar styles, deliberately scoped to defeat legacy layout rules. */
/* Source pages still need legacy body tokens for their content.  The menu must not inherit them. */
html.theme-dark body.v3-menu-mounted .app-sidebar{--bg:#111419;--panel:#181c22;--panel2:#20252d;--line:#2b323c;--line2:#39424e;--text:#e7e9ed;--muted:#a4abb6;--soft:#77818e;--brand:#2f765a;--brand2:#93bca7;--brand-hover:#245c45;--brandSoft:#1c2a24;--brand-line:#385747;--brand-glow:rgba(47,118,90,.18);--focus-ring:rgba(88,145,117,.24);--focus-ring-strong:rgba(88,145,117,.30);--nav-text:#c7cdd5;--topbar-bg:rgba(24,28,34,.92);--shadow:0 10px 28px rgba(0,0,0,.24);--shadow-lg:0 18px 44px rgba(0,0,0,.38)}
html:not(.theme-dark) body.v3-menu-mounted .app-sidebar{--bg:#f4f7fb;--panel:#fff;--panel2:#f9fbfe;--line:#e6ecf3;--line2:#d7e0eb;--text:#172033;--muted:#697a92;--soft:#8390a4;--brand:#17803d;--brand2:#0f6d32;--brand-hover:#0f6d32;--brandSoft:#e8f6ee;--brand-line:#bfe3cc;--brand-glow:rgba(23,128,61,.28);--focus-ring:rgba(23,128,61,.20);--focus-ring-strong:rgba(23,128,61,.25);--nav-text:#3d4a60;--topbar-bg:rgba(255,255,255,.92);--shadow:0 10px 28px rgba(23,32,51,.06);--shadow-lg:0 18px 44px rgba(23,32,51,.10)}
body.v3-menu-mounted .app-sidebar .nav-group{margin:0}
body.v3-menu-mounted .app-sidebar .nav-link{display:flex;align-items:center;gap:11px;padding:9px 10px;margin:0 0 2px;border:0;border-radius:9px;background:transparent;color:var(--nav-text);font-size:13.6px;font-weight:600;line-height:normal;box-shadow:none;text-decoration:none;transform:none;transition:background .14s ease,color .14s ease}
body.v3-menu-mounted .app-sidebar .nav-link i{width:18px;font-size:17px;line-height:1;color:var(--soft);text-align:center;transition:color .14s ease}
body.v3-menu-mounted .app-sidebar .nav-link:hover,body.v3-menu-mounted .app-sidebar .nav-link:focus{background:var(--panel2);border:0;color:var(--text);box-shadow:none;text-decoration:none;transform:none}
body.v3-menu-mounted .app-sidebar .nav-link:hover i{color:var(--brand2)}
body.v3-menu-mounted .app-sidebar .nav-link.active{background:var(--brandSoft);border:0;color:var(--brand2);box-shadow:none}
body.v3-menu-mounted .app-sidebar .nav-link.active i{color:var(--brand2)}
body.v3-menu-mounted .app-sidebar .nav-link.active:after{content:"";position:absolute;left:-14px;top:8px;bottom:8px;width:3px;background:var(--brand);border-radius:0 3px 3px 0}
body.v3-menu-mounted .app-sidebar .nav-parent{width:100%;text-align:left;cursor:pointer}
body.v3-menu-mounted .app-sidebar .nav-parent:after{content:none!important;display:none!important}
body.v3-menu-mounted .app-sidebar .nav-parent .chev{width:auto;margin-left:auto;font-size:18px;color:var(--soft);transition:transform .18s ease,color .14s ease}
body.v3-menu-mounted .app-sidebar .nav-group.is-open .nav-parent{background:var(--panel2);color:var(--text)}
body.v3-menu-mounted .app-sidebar .nav-group.is-open .nav-parent>i:first-child{color:var(--brand2)}
body.v3-menu-mounted .app-sidebar .nav-group.is-open .nav-parent .chev{color:var(--brand2);transform:rotate(90deg)}
body.v3-menu-mounted .app-sidebar .nav-submenu{max-height:0;overflow:hidden;opacity:0;visibility:hidden;padding:0 0 0 39px;transition:max-height .22s ease,opacity .14s ease,visibility 0s linear .22s}
body.v3-menu-mounted .app-sidebar .nav-group.is-open .nav-submenu{max-height:360px;opacity:1;visibility:visible;padding-top:2px;padding-bottom:5px;transition:max-height .26s ease,opacity .16s ease,visibility 0s linear 0s}
body.v3-menu-mounted .app-sidebar .nav-sublink{display:block;position:relative;padding:6px 10px;border-radius:7px;background:transparent;color:var(--muted);font-size:12.5px;font-weight:600;line-height:1.35;text-decoration:none;transition:background .14s ease,color .14s ease}
body.v3-menu-mounted .app-sidebar .nav-sublink:before{content:"";position:absolute;left:-14px;top:50%;width:5px;height:5px;border-radius:50%;background:var(--line2);transform:translateY(-50%);transition:background .14s ease,transform .14s ease}
body.v3-menu-mounted .app-sidebar .nav-sublink:hover{background:var(--panel2);color:var(--text);text-decoration:none}
body.v3-menu-mounted .app-sidebar .nav-sublink:hover:before{background:var(--brand);transform:translateY(-50%) scale(1.15)}
body.v3-menu-mounted .app-sidebar .nav-sublink.active{background:var(--brandSoft);color:var(--brand2);font-weight:700}
body.v3-menu-mounted .app-sidebar .nav-sublink.active:before{background:var(--brand);box-shadow:0 0 0 3px var(--focus-ring)}
body.v3-menu-mounted .app-sidebar .sidebar-brand{position:relative}
body.v3-menu-mounted .app-sidebar .sidebar-collapse{position:absolute;right:-13px;top:22px;width:26px;height:26px;border:1px solid var(--line2);border-radius:999px;background:var(--panel);color:var(--muted);display:grid;place-items:center;cursor:pointer;pointer-events:auto;box-shadow:0 4px 12px rgba(23,32,51,.12);z-index:1300;transition:background .15s,color .15s,border-color .15s}
body.v3-menu-mounted .app-sidebar .sidebar-collapse:hover{background:var(--brandSoft);border-color:var(--brand-line);color:var(--brand2)}
body.v3-menu-mounted .app-sidebar .sidebar-collapse svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;transition:transform .18s ease}
body.sidebar-collapsed .app-sidebar{width:58px;overflow:visible}
body.sidebar-collapsed .app-sidebar .sidebar-brand{justify-content:center;padding:0}
body.sidebar-collapsed .app-sidebar .sidebar-brand .name,body.sidebar-collapsed .app-sidebar .nav-title,body.sidebar-collapsed .app-sidebar .sidebar-foot{display:none}
body.sidebar-collapsed .app-sidebar .sidebar-scroll{padding:14px 6px 20px;overflow:visible}
body.sidebar-collapsed .app-sidebar .nav-link{justify-content:center;gap:0;padding:11px 0;font-size:0;border-radius:10px;position:relative}
body.sidebar-collapsed .app-sidebar .nav-link i{font-size:18px}
body.sidebar-collapsed .app-sidebar .nav-submenu{display:none}
body.sidebar-collapsed .app-sidebar .nav-parent .chev{display:none}
body.sidebar-collapsed .app-sidebar .sidebar-collapse svg{transform:rotate(180deg)}
body.sidebar-collapsed .app-sidebar .nav-link:hover:after{content:attr(data-label);position:absolute;left:48px;top:50%;transform:translateY(-50%);white-space:nowrap;background:var(--text);color:#fff;border-radius:6px;padding:6px 9px;font-size:12px;font-weight:750;box-shadow:var(--shadow);z-index:1201;pointer-events:none}
html.theme-dark body.sidebar-collapsed .app-sidebar .nav-link:hover:after{background:#e8edf5;color:#111827}
@media(max-width:1080px){
  /* Converted legacy pages use the v3 shell classes after the original
     stylesheet has loaded. Keep the sidebar out of the mobile flow so the
     source page can use the full viewport width. */
  .v3-converted .layout{display:block;min-height:100vh}
  .v3-converted .app-sidebar{position:fixed;left:-280px;top:0;bottom:0;width:264px;min-width:264px;max-width:264px;height:100vh;flex:none;transform:none;z-index:1200;transition:left .2s ease}
  .v3-converted .app-sidebar.is-open{left:0}
  .v3-converted .app-content-wrapper{width:100%;min-width:0;margin-left:0}
  .v3-converted .v3-mobile-menu{display:grid;place-items:center}
  .v3-converted .v3-search{display:none}
  .v3-converted .app-main{width:100%;min-width:0;padding:18px 16px 32px}
}
@media(max-width:720px){
  .v3-converted .app-topbar{min-height:68px;height:auto;padding:12px;gap:10px}
  .v3-converted .app-main{padding:14px 12px 30px}
}

/* Full v3 theme bridge for the editor-only workspaces.  Their fixed toolbar and
   Monaco layout remain intentionally native; only the surrounding shell tokens
   are normalized to the index.html palette. */
html.theme-dark body.v3-special-shell{--bg-body:#111419;--bg-panel:#181c22;--bg-panel-h:#20252d;--bg-input:#20252d;--bg-row-alt:rgba(255,255,255,.025);--bg-row-hov:#252c35;--border:#2b323c;--text:#e7e9ed;--text-muted:#a4abb6;--text-head:#e7e9ed;--accent:#2f765a;--green:#93bca7;--red:#df8585;--amber:#c9a66a;--blue:#8eabdb;--shadow:0 10px 28px rgba(0,0,0,.24)}
html:not(.theme-dark) body.v3-special-shell{--bg-body:#f4f7fb;--bg-panel:#fff;--bg-panel-h:#f9fbfe;--bg-input:#f9fbfe;--bg-row-alt:rgba(0,0,0,.018);--bg-row-hov:#edf5f0;--border:#e6ecf3;--text:#172033;--text-muted:#697a92;--text-head:#172033;--accent:#17803d;--green:#0f6d32;--red:#dc6262;--amber:#b7791f;--blue:#3569b6;--shadow:0 10px 28px rgba(23,32,51,.06)}
body.v3-special-shell .gs-header{background:var(--topbar-bg)!important;border-color:var(--line)!important;box-shadow:none}
body.v3-special-shell .gs-logo{color:var(--brand2)!important}body.v3-special-shell .gs-logo span{color:var(--text)!important}
body.v3-special-shell .tb-btn,body.v3-special-shell .btn-theme{border-color:var(--line2)!important;color:var(--muted)!important;background:var(--panel)}
body.v3-special-shell .tb-btn:hover,body.v3-special-shell .btn-theme:hover{border-color:var(--brand-line)!important;background:var(--panel2)!important;color:var(--text)!important}
body.v3-special-shell .btn-theme.active,body.v3-special-shell .tb-btn.primary{background:var(--brand)!important;border-color:var(--brand)!important;color:#fff!important}
body.v3-special-shell [data-theme="trader"]{display:none!important}
body.v3-special-shell [style*="background:#2a3a5a"],body.v3-special-shell [style*="background:#1e2c44"]{background:var(--line)!important}
html.theme-dark .v3-converted .ts-library-page{--bg-body:#111419;--bg-panel:#181c22;--bg-panel-h:#20252d;--border:#2b323c;--text:#e7e9ed;--text-muted:#a4abb6;--text-head:#e7e9ed;--accent:#2f765a;--green:#93bca7;--red:#df8585;--amber:#c9a66a;--blue:#8eabdb;--shadow:0 10px 28px rgba(0,0,0,.24)}
html:not(.theme-dark) .v3-converted .ts-library-page{--bg-body:#f4f7fb;--bg-panel:#fff;--bg-panel-h:#f9fbfe;--border:#e6ecf3;--text:#172033;--text-muted:#697a92;--text-head:#172033;--accent:#17803d;--green:#0f6d32;--red:#dc6262;--amber:#b7791f;--blue:#3569b6;--shadow:0 10px 28px rgba(23,32,51,.06)}
