@import"https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;700;900&family=Noto+Serif+SC:wght@500;700;900&display=swap";.header[data-v-c921021f]{position:sticky;top:0;z-index:110;height:68px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;background:#fff;border-bottom:1px solid #ece9e0;padding-top:env(safe-area-inset-top)}.header__left[data-v-c921021f]{display:flex;align-items:center;gap:16px}.header__back[data-v-c921021f]{width:40px;height:40px;border-radius:12px;border:1px solid #e2dfd6;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#7c8479}.header__back[data-v-c921021f]:active{background:#fbfaf7}.header__brand[data-v-c921021f]{display:flex;align-items:center;gap:12px}.header__logo[data-v-c921021f]{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,#3f6b46,#cfe0cc);color:#fff;font-weight:700;font-size:18px;display:flex;align-items:center;justify-content:center}.header__title[data-v-c921021f]{font-size:16px;font-weight:700;color:#1e241f}.header__subtitle[data-v-c921021f]{font-size:12px;color:#7c8479;margin-top:2px}.header__page-title[data-v-c921021f]{font-size:16px;font-weight:600;color:#1e241f}.header__right[data-v-c921021f]{display:flex;align-items:center;gap:12px}.header__admin[data-v-c921021f]{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:#eaf2e8;color:#2c4a31;font-size:13px;font-weight:500}.tabbar[data-v-f34850bb]{position:sticky;bottom:0;z-index:100;display:grid;grid-template-columns:repeat(4,1fr);gap:8px;min-height:88px;padding:10px 24px calc(10px + env(safe-area-inset-bottom));background:#fbfaf7f5;border-top:1px solid rgba(226,223,214,.92);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.tabbar__item[data-v-f34850bb]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:none;border-radius:14px;background:transparent;color:#9aa09a;min-height:56px}.tabbar__item.is-active[data-v-f34850bb]{background:#eaf2e8;color:#3f6b46}.tabbar__label[data-v-f34850bb]{font-size:13px;font-weight:500}.splash{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;min-height:100vh;background:#e9e7e1}.splash__logo{width:88px;height:88px;border-radius:18px;background:linear-gradient(135deg,#3f6b46,#cfe0cc);color:#fff;font-size:44px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 30px 70px #28322829}.splash__title{font-size:22px;font-weight:700;color:#1e241f;margin-top:12px}.splash__sub{font-size:14px;color:#7c8479}.splash__spinner{width:32px;height:32px;border:3px solid #e2dfd6;border-top-color:#3f6b46;border-radius:50%;animation:spin .8s linear infinite;margin-top:16px}@keyframes spin{to{transform:rotate(360deg)}}.gate{flex:1;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px;background:#e9e7e1}.gate__card{max-width:560px;width:100%;background:#fff;border-radius:18px;padding:40px;box-shadow:0 30px 70px #28322829;text-align:center}.gate__icon{width:64px;height:64px;border-radius:50%;background:#e89e3a1f;color:#c98d2d;font-size:32px;font-weight:700;display:flex;align-items:center;justify-content:center;margin:0 auto 20px}.gate__icon--error{background:#d9534f1f;color:#c0492f}.gate__title{font-size:18px;font-weight:700;color:#1e241f;margin-bottom:12px}.gate__desc{font-size:14px;color:#7c8479;line-height:1.7;margin-bottom:24px}.gate__openid{background:#fbfaf7;border-radius:14px;padding:16px;margin-bottom:20px;text-align:left}.gate__openid-label{font-size:13px;color:#7c8479;margin-bottom:8px}.gate__openid-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:#1e241f;word-break:break-all}.gate__btn{background:#3f6b46;color:#fff;border:none;padding:12px 32px;border-radius:999px;font-size:14px;font-weight:500;cursor:pointer;transition:background .18s cubic-bezier(.4,0,.2,1)}.gate__btn:hover{background:#2c4a31}.gate__hint{margin-top:12px;font-size:13px;color:#3f6b46}.app-main{flex:1;display:flex;flex-direction:column;width:100%;max-width:1320px;margin:0 auto}:root{--color-primary: #3f6b46;--color-primary-dark: #2c4a31;--color-primary-soft: #eaf2e8;--color-text: #1e241f;--color-page: #e9e7e1;--header-height: 68px;--tabbar-height: 88px;--van-primary-color: #3f6b46;--van-success-color: #3f6b46;--van-warning-color: #c98d2d;--van-danger-color: #c0492f;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background:#e9e7e1;color:#1e241f;font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;touch-action:manipulation}body{min-width:1024px}#app{min-height:100vh;display:flex;flex-direction:column}button,input,textarea,select{font:inherit}button{cursor:pointer}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.app-shell{width:min(100%,1320px);margin:0 auto}.page-section{background:#fbfaf7;border:1px solid rgba(255,255,255,.58);border-radius:34px;box-shadow:0 30px 70px #28322829}.card-surface{background:#fff;border:1px solid #ece9e0;border-radius:18px}.pill{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:6px 14px}.btn-primary,.btn-secondary,.btn-ghost{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:0 20px;border-radius:16px;border:none;transition:transform .18s cubic-bezier(.4,0,.2,1),box-shadow .18s cubic-bezier(.4,0,.2,1),background .18s cubic-bezier(.4,0,.2,1),color .18s cubic-bezier(.4,0,.2,1),border-color .18s cubic-bezier(.4,0,.2,1)}.btn-primary{background:#3f6b46;color:#fff;font-weight:700;box-shadow:0 12px 26px #3f6b4647}.btn-primary:disabled{background:#95a194;box-shadow:none;cursor:not-allowed}.btn-secondary{background:#fff;color:#7c8479;border:1px solid #e2dfd6}.btn-ghost{background:transparent;color:#7c8479}.route-fade-enter-active,.route-fade-leave-active{transition:opacity .28s cubic-bezier(.4,0,.2,1),transform .28s cubic-bezier(.4,0,.2,1)}.route-fade-enter-from,.route-fade-leave-to{opacity:0;transform:translateY(8px)}
