/* Quiet gravitational glow: bounded, compositor-only motion. */
body::before{content:"";position:fixed;width:310px;height:310px;right:-155px;top:23vh;border-radius:50%;background:radial-gradient(circle,#030812 0 34%,rgba(92,133,222,.16) 35%,rgba(167,127,239,.13) 36%,transparent 42%);box-shadow:0 0 100px rgba(71,112,207,.07);pointer-events:none;z-index:-1;animation:orbitBreath 14s ease-in-out infinite alternate}
@keyframes orbitBreath{to{transform:scale(1.1) rotate(12deg);opacity:.6}}
.top::before{background:radial-gradient(ellipse at 73% 50%,#030711 0 7%,rgba(115,143,235,.28) 7.5%,rgba(157,111,226,.13) 9%,transparent 17%),radial-gradient(circle at 24% 50%,rgba(47,155,255,.16),transparent 32%);inset:-70%;filter:blur(3px)}
.top::after{opacity:.65;background-size:61px 53px,103px 79px,157px 101px}
.shell{grid-template-columns:250px minmax(0,1fr);align-items:start}
.main{min-width:0}
.side{align-self:start}
#mobileNavigation{display:none}
#navigationContext{margin-bottom:18px}
.contextTitle{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.contextTitle small{font-size:10px;letter-spacing:2px;color:var(--muted)}
.contextTitle strong{font-size:17px}
.contextTitle>.btn{margin-left:auto;font-size:12px}
.contextLinks{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.contextLinks .active{border-color:#78b4eb;background:#1a3655}
#navigationDrawer{padding:0;border:1px solid #29415d;border-radius:22px;background:#091424;color:var(--text);max-width:640px;width:calc(100% - 24px);max-height:85dvh;box-shadow:0 28px 100px #0009}
#navigationDrawer::backdrop{background:#020916b8;backdrop-filter:blur(8px)}
.drawerSurface{padding:22px;background:radial-gradient(ellipse at 100% 0,rgba(102,81,174,.16),transparent 60%)}
.drawerTitle{display:flex;justify-content:space-between;align-items:center}
.drawerTitle small{font-size:10px;color:#819dc5;letter-spacing:3px}
.drawerTitle h2{margin:6px 0 14px;font-size:22px}
.drawerSurface h3{font-size:12px;color:#849bb7;margin:22px 0 10px;font-weight:500}
.drawerGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.drawerGrid .btn{text-align:left;min-height:52px;white-space:normal}
.financeFold{border:1px solid #28405a88;border-radius:12px;margin:12px 0;padding:0 12px;min-width:0}
.financeFold>summary{cursor:pointer;padding:16px 4px;font-weight:700;color:#c9ddf6;list-style-position:inside}
.financeFold[open]{padding-bottom:14px}
.financeFold[open]>summary{border-bottom:1px solid #28405a66;margin-bottom:14px}
.assetRecordFilters{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.assetRecordFilterSelect{display:none}
.toast{z-index:200;bottom:calc(90px + env(safe-area-inset-bottom));max-width:calc(100vw - 32px)}
.approval-queue{border-color:#d4a84f99;background:linear-gradient(135deg,#1c2b47,#15223b)}
.approval-queue-item{border-color:#d4a84f44;background:#0d1b30aa}
.approval-badge{display:inline-block;padding:2px 7px;border-radius:999px;background:#6d451e;color:#ffd98b;font-size:11px;letter-spacing:.04em}
.approval-focus{border-color:#ffd166!important;box-shadow:0 0 0 2px #ffd16666,0 0 28px #d69e2e55!important;animation:approvalFocusPulse 1.1s ease-in-out 2}
@keyframes approvalFocusPulse{50%{transform:translateY(-2px);box-shadow:0 0 0 4px #ffd16655,0 0 36px #d69e2e88!important}}
.marketMobileList{display:none}
.marketMobileCard{padding:14px;border:1px solid rgba(83,139,190,.28);border-radius:14px;background:linear-gradient(145deg,rgba(15,35,59,.92),rgba(5,17,31,.94));box-shadow:inset 0 1px rgba(255,255,255,.035)}
.marketMobileHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.marketMobileHead>div{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;min-width:0}
.marketMobileHead b{font-size:16px;overflow-wrap:anywhere}
.marketMobileHead strong{font-size:18px;white-space:nowrap}
.marketMobileCode{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#8eb8e4;font-size:12px}
.marketMobileStats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-top:14px}
.marketMobileStats span{display:flex;flex-direction:column;gap:4px;min-width:0;padding:8px;border-radius:9px;background:rgba(4,15,29,.55);border:1px solid rgba(83,139,190,.18)}
.marketMobileStats small{font-size:10px;color:var(--muted)}
.marketMobileStats b{font-size:clamp(10px,2.8vw,12px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.marketMobileActions{display:flex;align-items:center;gap:8px;margin-top:12px}
.marketMobileActions .btn{flex:1}
.nav-button .button-ripple{width:8px;height:8px;background:rgba(165,225,255,.5);animation:v6NavRipple .3s ease-out forwards}
@keyframes v6NavRipple{to{opacity:0;transform:translate(-50%,-50%) scale(5)}}
.card>.financeFold{margin:0;border:0}
#backToTop{position:fixed;right:18px;bottom:24px;z-index:29;width:42px;height:42px;opacity:0;pointer-events:none;transition:opacity .2s}
#backToTop.visible{opacity:1;pointer-events:auto}
@media(max-width:920px){
 .shell{display:block;min-height:calc(100dvh - 64px)}
 .side{display:none}
 .main{width:100%;padding-bottom:110px}
 #mobileNavigation{position:fixed;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));left:0;right:0;bottom:0;z-index:30;padding:8px 8px calc(8px + env(safe-area-inset-bottom));border-top:1px solid #41628d55;background:rgba(7,17,31,.96);backdrop-filter:blur(18px)}
 #mobileNavigation button{background:transparent;border:0;border-radius:12px;color:#7e96b5;display:flex;align-items:center;flex-direction:column;gap:4px;min-height:50px;padding:6px;font-size:11px;cursor:pointer;transition:color .2s,background .2s}
 #mobileNavigation button{position:relative;overflow:hidden}
 #mobileNavigation button>span:first-child{font-size:22px;line-height:24px}
 #mobileNavigation button.active{color:#bbdfff;background:radial-gradient(ellipse at 50% 0,#4866aa55,transparent 90%)}
 #mobileNavigation button:active{transform:scale(.96)}
 #navigationDrawer{margin:auto auto 0;border-radius:22px 22px 0 0;width:100%;max-width:640px;padding-bottom:env(safe-area-inset-bottom)}
 .top{height:auto;min-height:64px;flex-wrap:wrap;gap:6px;padding:10px 12px}
 .brand{font-size:14px;white-space:nowrap}
 .topright{margin-left:auto;gap:7px}
 .contextTitle small{display:none}
 .contextTitle strong{font-size:15px}
 .contextLinks .btn{font-size:12px;flex:1 1 auto}
 #backToTop{bottom:calc(88px + env(safe-area-inset-bottom));right:12px}
 .toast{bottom:calc(90px + env(safe-area-inset-bottom))}
 .pos{flex-wrap:wrap;gap:10px;overflow-wrap:anywhere}
 .pos>span{min-width:0;max-width:100%}
 .metric .v{font-size:clamp(13px,3.4vw,20px);overflow-wrap:anywhere}
 .assetRecordFilters{display:none}
 .assetRecordFilterSelect{display:block;margin-bottom:12px}
 .assetRecordFilterSelect label{font-size:11px;letter-spacing:.08em;text-transform:uppercase}
 .assetRecordFilterSelect select{width:100%;min-height:46px}
 #sec-market .tablewrap{display:none}
 #sec-admin .tablewrap{display:block;overflow:visible}
 #sec-admin .tablewrap table,#sec-admin .tablewrap tbody{display:block;width:100%;min-width:0}
 #sec-admin .tablewrap thead{display:none}
 #adminTable tr{display:flex;flex-wrap:wrap;gap:10px;padding:12px;border:1px solid #28405a;border-radius:12px;margin:8px 0}
 #adminTable td{display:block;white-space:normal;min-width:0;padding:4px;max-width:100%}
 #adminTable td[colspan]{width:100%}
 #adminTable td:nth-child(4)::before{content:'波动 '}
 #adminTable td:nth-child(5)::before{content:'趋势 '}
 #adminTable td:nth-child(6)::before{content:'股本 '}
 .marketMobileList{display:grid;gap:10px}
 .card{backdrop-filter:none}
 .nav:hover{transform:none}
}
@media(prefers-reduced-motion:reduce){body::before{animation:none}#mobileNavigation button{transition:none}}
