.app-container{min-height:100vh;display:flex;flex-direction:column;background-color:#f5f7fa}router-view{flex:1;padding-bottom:4.375rem}.bottom-nav{height:3.75rem;display:flex;justify-content:space-around;align-items:center;background:rgba(255,255,255,.98);backdrop-filter:blur(.625rem);box-shadow:0 -.125rem .625rem #0000000d;position:fixed;bottom:0;left:0;right:0;z-index:999;padding:.3125rem 0;border-top:.0625rem solid rgba(240,240,240,.8);animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.nav-item{display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;flex:1;height:100%;transition:all .4s cubic-bezier(.4,0,.2,1);user-select:none;position:relative;color:#909399;padding:.25rem 0}.nav-icon{display:flex;align-items:center;justify-content:center;width:2.625rem;height:1.625rem;margin-bottom:.1875rem;border-radius:.625rem;transition:all .4s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.nav-icon:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:rgba(64,158,255,.1);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease-out,height .4s ease-out}.nav-item.active .nav-icon:before{width:100%;height:100%;border-radius:.625rem}.nav-icon :deep(svg){width:1.25rem;height:1.25rem;transition:all .4s cubic-bezier(.4,0,.2,1);opacity:.8;position:relative;z-index:1}.nav-item span{font-size:.6875rem;transition:all .3s cubic-bezier(.4,0,.2,1);transform:translateY(0) scale(.95);opacity:.9}.nav-item.active{color:#409eff;animation:bounce .4s cubic-bezier(.36,0,.66,-.56) forwards}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-.25rem)}}.nav-item.active .nav-icon{transform:translateY(-.125rem)}.nav-item.active .nav-icon :deep(svg){transform:scale(1.15);opacity:1;animation:rotate .4s cubic-bezier(.4,0,.2,1)}@keyframes rotate{0%{transform:scale(1) rotate(0)}50%{transform:scale(1.2) rotate(15deg)}to{transform:scale(1.15) rotate(0)}}.nav-item.active span{transform:translateY(0) scale(1);opacity:1;font-weight:500}.nav-item:after{content:"";position:absolute;bottom:.125rem;left:50%;transform:translate(-50%) scaleX(0);width:1.125rem;height:.125rem;background-color:#409eff;border-radius:.25rem;transition:transform .4s cubic-bezier(.4,0,.2,1);opacity:0}.nav-item.active:after{transform:translate(-50%) scaleX(1);opacity:.8;animation:expandLine .3s ease-out forwards}@keyframes expandLine{0%{transform:translate(-50%) scaleX(0)}to{transform:translate(-50%) scaleX(1)}}.nav-item:active{transform:scale(.92)}.nav-item:hover .nav-icon{transform:translateY(-.0625rem)}.nav-item:hover span{transform:translateY(-.0625rem) scale(.98)}.fade-enter-active,.fade-leave-active{transition:opacity .3s ease}.fade-enter-from,.fade-leave-to{opacity:0}*{margin:0;padding:0;box-sizing:border-box}body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;background-color:#f5f7fa;overflow-x:hidden;min-height:100vh}.sse-status-indicator{position:fixed;top:.375rem;right:.375rem;display:flex;align-items:center;justify-content:center;z-index:1000;cursor:help;padding:.125rem;border-radius:50%;background:transparent}.status-dot{width:.625rem;height:.625rem;border-radius:50%;position:relative;transition:all .3s ease}.status-dot:after{content:"";position:absolute;top:-.1875rem;left:-.1875rem;right:-.1875rem;bottom:-.1875rem;border-radius:50%;animation:ripple 2s ease-out infinite;opacity:0}.sse-status-indicator.connecting .status-dot{background-color:#e6a23c;box-shadow:0 0 0 .1875rem #e6a23c26}.sse-status-indicator.connecting .status-dot:after{border:.125rem solid #E6A23C}.sse-status-indicator.connected .status-dot{background-color:#67c23a;box-shadow:0 0 0 .1875rem #67c23a26}.sse-status-indicator.connected .status-dot:after{border:.125rem solid #67C23A}.sse-status-indicator.reconnecting .status-dot{background-color:#409eff;box-shadow:0 0 0 .1875rem #409eff26}.sse-status-indicator.reconnecting .status-dot:after{border:.125rem solid #409EFF}.sse-status-indicator.error .status-dot{background-color:#f56c6c;box-shadow:0 0 0 .1875rem #f56c6c26}.sse-status-indicator.error .status-dot:after{border:.125rem solid #F56C6C}@keyframes ripple{0%{transform:scale(1);opacity:.5}to{transform:scale(2.2);opacity:0}}.sse-status-indicator.connecting .status-dot,.sse-status-indicator.reconnecting .status-dot{animation:pulse 2s infinite}@keyframes pulse{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}
