.n-spinner{animation:n-spin .8s linear infinite;flex:none}@keyframes n-spin{to{transform:rotate(360deg)}}.n-surface{position:relative;isolation:isolate}.n-surface__border{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:2;overflow:visible}.n-surface__border path{fill:none;stroke:var(--n-border-color, var(--border));transition:stroke var(--dur) var(--ease)}.n-surface-shadow{filter:drop-shadow(0 1px 1.5px var(--shadow-color)) drop-shadow(0 10px 24px var(--shadow-color))}:root[data-theme=light] .n-surface-shadow{filter:drop-shadow(0 1px 1px rgba(0,0,0,.05)) drop-shadow(0 8px 20px rgba(0,0,0,.07))}.n-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);height:var(--control-h);padding:0 var(--sp-4);border:0;font-weight:560;font-size:var(--fs-md);white-space:nowrap;-webkit-user-select:none;user-select:none;transition:background var(--dur) var(--ease),color var(--dur) var(--ease),opacity var(--dur) var(--ease),transform .12s var(--ease)}.n-btn:active:not(:disabled){transform:scale(.97)}.n-btn:disabled{opacity:.5;cursor:default}.n-btn svg{flex:none}.n-btn--sm{height:calc(var(--control-h) - 8px);padding:0 var(--sp-3);font-size:var(--fs-sm)}.n-btn--lg{height:calc(var(--control-h) + 8px);padding:0 var(--sp-6);font-size:var(--fs-lg)}.n-btn--block{display:flex;width:100%}.n-btn--icon{padding:0;width:var(--control-h)}.n-btn--icon.n-btn--sm{width:calc(var(--control-h) - 8px)}.n-btn--primary{background:var(--accent);color:var(--accent-contrast)}.n-btn--primary:hover:not(:disabled){opacity:.88}.n-btn--secondary{background:var(--surface);color:var(--text)}.n-btn--secondary:hover:not(:disabled){background:var(--surface-2)}.n-btn--ghost{background:transparent;color:var(--text)}.n-btn--ghost:hover:not(:disabled){background:var(--surface-2)}.n-btn--danger{background:var(--danger-soft);color:var(--danger)}.n-btn--danger:hover:not(:disabled){background:var(--danger);color:#fff}.n-btn:focus-visible{--n-border-color: var(--accent);box-shadow:none}.n-btn--primary:focus-visible,.n-btn--ghost:focus-visible,.n-btn--danger:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.n-dialog{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:var(--sp-4);background:var(--overlay);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.n-dialog__panel{width:100%;background:var(--bg-elev);padding:var(--sp-5) var(--sp-6) var(--sp-6);max-height:calc(100dvh - var(--sp-8));overflow-y:auto}.n-dialog__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.n-dialog__head h2{font-size:var(--fs-lg);font-weight:650}.n-dialog__close{display:grid;place-items:center;width:32px;height:32px;border:0;background:transparent;color:var(--text-3)}.n-dialog__close:hover{color:var(--text)}.n-dialog__body{color:var(--text-2)}.n-dialog__foot{display:flex;justify-content:flex-end;gap:var(--sp-2);margin-top:var(--sp-6)}@media(max-width:760px){.n-dialog{align-items:end;padding:0 var(--sp-2) calc(var(--sp-2) + var(--safe-bottom))}.n-dialog__panel{max-width:none!important;padding:var(--sp-5)}.n-dialog__foot{flex-direction:column-reverse}.n-dialog__foot .n-btn{width:100%}}.n-dialog-enter-active,.n-dialog-leave-active{transition:opacity var(--dur) var(--ease)}.n-dialog-enter-active .n-dialog__panel,.n-dialog-leave-active .n-dialog__panel{transition:transform .24s var(--ease)}.n-dialog-enter-from,.n-dialog-leave-to{opacity:0}.n-dialog-enter-from .n-dialog__panel,.n-dialog-leave-to .n-dialog__panel{transform:translateY(16px) scale(.98)}.n-confirm__msg{white-space:pre-line;word-break:break-word}.n-toasts{position:fixed;z-index:200;top:calc(var(--sp-4) + var(--safe-top));right:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-2);width:min(380px,calc(100vw - var(--sp-8)));pointer-events:none}.n-toast{display:flex;align-items:flex-start;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);background:var(--bg-elev);color:var(--text);font-size:var(--fs-sm);pointer-events:auto;cursor:pointer}.n-toast svg{flex:none;margin-top:1px}.n-toast--success svg{color:var(--success)}.n-toast--error svg{color:var(--danger)}.n-toast--info svg{color:var(--text-2)}@media(max-width:760px){.n-toasts{top:auto;right:var(--sp-3);left:var(--sp-3);width:auto;bottom:calc(var(--tabbar-h) + var(--safe-bottom) + var(--sp-3));flex-direction:column-reverse}}.n-toast-enter-active,.n-toast-leave-active{transition:opacity .2s var(--ease),transform .2s var(--ease)}.n-toast-enter-from,.n-toast-leave-to{opacity:0;transform:translateY(-8px)}.n-avatar{position:relative;display:inline-grid;place-items:center;flex:none;overflow:hidden;border-radius:50%;background:var(--accent-soft);color:var(--accent);font-weight:650;-webkit-user-select:none;user-select:none}.n-avatar img{width:100%;height:100%;object-fit:cover}.n-avatar:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:inset 0 0 0 1px var(--border);pointer-events:none}.n-logo{flex:none}.n-brand{display:inline-grid;flex:none;place-items:center}.n-brand>*{grid-area:1 / 1}.n-brand__img{width:100%;height:100%;object-fit:contain}.n-brand__dark,[data-theme=dark] .n-brand--has-dark .n-brand__light{display:none}[data-theme=dark] .n-brand--has-dark .n-brand__dark{display:block}.shell{display:flex;min-height:100vh;min-height:100dvh}.side{position:sticky;top:0;flex:none;width:var(--sidebar-w);height:100vh;height:100dvh;display:flex;flex-direction:column;padding:calc(var(--sp-5) + var(--safe-top)) var(--sp-3) calc(var(--sp-3) + var(--safe-bottom)) calc(var(--sp-3) + var(--safe-left));background:var(--bg);border-right:1px solid var(--border)}.side__brand{display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-3) var(--sp-5)}.side__name{flex:1;min-width:0;font-size:var(--fs-lg);font-weight:700;letter-spacing:-.02em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side__close{display:none;border:0;background:transparent;color:var(--text-2);padding:6px}.side__nav{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-4)}.side__group{display:flex;flex-direction:column;gap:2px}.side__group-label{padding:0 var(--sp-3) var(--sp-1);font-size:var(--fs-xs);font-weight:600;color:var(--text-3);letter-spacing:.04em;text-transform:uppercase}.side__item{display:flex;align-items:center;gap:var(--sp-3);height:40px;padding:0 var(--sp-3);color:var(--text-2);font-weight:560;transition:background var(--dur) var(--ease),color var(--dur) var(--ease)}.side__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side__item:hover{background:var(--surface-2);color:var(--text)}.side__item.is-active{background:var(--surface);color:var(--text)}:root[data-theme=dark] .side__item.is-active{background:var(--surface-2)}.side__item.is-active svg{color:var(--accent)}.side__user{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-2) 0;border-top:1px solid var(--border)}.side__me{flex:1;min-width:0;display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-1)}.side__me-text{display:flex;flex-direction:column;min-width:0;line-height:1.3}.side__me-name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.side__me-role{font-size:var(--fs-xs);color:var(--text-3)}.side__logout{display:grid;place-items:center;width:36px;height:36px;border:0;background:transparent;color:var(--text-3)}.side__logout:hover{color:var(--danger)}.scrim{display:none}.main{flex:1;min-width:0;display:flex;flex-direction:column}.topbar{display:none}.content{flex:1;width:100%;max-width:calc(var(--content-max) + var(--sp-10) * 2);margin:0 auto;padding:var(--sp-8) var(--sp-10) var(--sp-10);padding-right:calc(var(--sp-10) + var(--safe-right))}.tabbar{display:none}@media(max-width:900px){.side{position:fixed;z-index:60;left:0;top:0;bottom:0;width:min(300px,84vw);background:var(--bg-elev);border-right:0;transform:translate(-100%);transition:transform .26s var(--ease);visibility:hidden}.drawer-open .side{transform:none;visibility:visible}.side__close{display:block}.scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;background:var(--overlay);opacity:0;pointer-events:none;transition:opacity .26s var(--ease)}.drawer-open .scrim{opacity:1;pointer-events:auto}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:var(--sp-3);height:calc(var(--topbar-h) + var(--safe-top));padding:var(--safe-top) calc(var(--sp-4) + var(--safe-right)) 0 calc(var(--sp-4) + var(--safe-left));background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-bottom:1px solid var(--border)}.topbar__title{flex:1;min-width:0;font-size:var(--fs-lg);font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{padding:var(--sp-5) calc(var(--sp-4) + var(--safe-right)) calc(var(--tabbar-h) + var(--safe-bottom) + var(--sp-6)) calc(var(--sp-4) + var(--safe-left))}.tabbar{position:fixed;z-index:50;left:0;right:0;bottom:0;display:flex;height:calc(var(--tabbar-h) + var(--safe-bottom));padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);background:color-mix(in srgb,var(--bg-elev) 84%,transparent);-webkit-backdrop-filter:saturate(180%) blur(18px);backdrop-filter:saturate(180%) blur(18px);border-top:1px solid var(--border)}.tabbar__item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:0;background:transparent;color:var(--text-3);font-size:10.5px;font-weight:560;transition:color var(--dur) var(--ease)}.tabbar__item.is-active{color:var(--accent)}}.auth{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:calc(var(--sp-8) + var(--safe-top)) var(--sp-4) calc(var(--sp-8) + var(--safe-bottom));background:radial-gradient(1200px 600px at 50% -10%,var(--accent-soft),transparent 70%),var(--bg)}.auth__inner{width:100%;max-width:420px;display:flex;flex-direction:column;gap:var(--sp-6)}.auth-card{background:var(--surface);padding:var(--sp-8) var(--sp-6) var(--sp-6)}.auth-card__title{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);font-size:var(--fs-xl);font-weight:700;letter-spacing:-.02em;text-align:center;margin-bottom:var(--sp-6);overflow-wrap:anywhere}.auth-card__intro{margin:calc(var(--sp-4) * -1) 0 var(--sp-5);text-align:center;color:var(--text-2);font-size:var(--fs-sm)}.auth-form{display:flex;flex-direction:column;gap:var(--sp-2)}.auth-label{font-size:var(--fs-sm);font-weight:600;color:var(--text-2);margin-top:var(--sp-2)}.auth-hint{font-size:var(--fs-xs);color:var(--text-3);line-height:1.5}.auth-error{margin-top:var(--sp-2);font-size:var(--fs-sm);color:var(--danger)}.auth-form .n-btn{margin-top:var(--sp-4)}.auth-group{display:flex;flex-direction:column;gap:var(--sp-2)}.auth-group+.auth-group{margin-top:var(--sp-4);padding-top:var(--sp-4);border-top:1px solid var(--border)}.auth-group__title{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:650}.auth-group__step{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--accent-soft);color:var(--text);font-size:var(--fs-xs);font-weight:700;flex:none}.auth-code input{font-variant-numeric:tabular-nums;letter-spacing:.3em}.auth-mono{font-family:var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.95em;overflow-wrap:anywhere}.page-enter-active,.page-leave-active{transition:opacity .14s var(--ease),transform .14s var(--ease)}.page-enter-from{opacity:0;transform:translateY(6px)}.page-leave-to{opacity:0}:root{--font: -apple-system, BlinkMacSystemFont, "SF Pro Text", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Segoe UI", Roboto, "Noto Sans SC", "Helvetica Neue", Arial, sans-serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--fs-xs: 12px;--fs-sm: 13px;--fs-md: 15px;--fs-lg: 17px;--fs-xl: 22px;--fs-2xl: 28px;--lh: 1.55;--space: 4px;--sp-1: calc(var(--space) * 1);--sp-2: calc(var(--space) * 2);--sp-3: calc(var(--space) * 3);--sp-4: calc(var(--space) * 4);--sp-5: calc(var(--space) * 5);--sp-6: calc(var(--space) * 6);--sp-8: calc(var(--space) * 8);--sp-10: calc(var(--space) * 10);--control-h: 40px;--sidebar-w: 248px;--topbar-h: 56px;--tabbar-h: 58px;--content-max: 1080px;--poster-w: 144px;--libcover-w: 260px;--size-scale: 1;--accent: #111113;--accent-contrast: #ffffff;--accent-soft: rgba(17, 17, 19, .12);--ease: cubic-bezier(.2, .8, .2, 1);--dur: .18s;--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--safe-right: env(safe-area-inset-right, 0px)}:root[data-density=compact]{--space: 3.25px;--control-h: 34px;--fs-md: 14px;--topbar-h: 50px}:root,:root[data-theme=light]{--bg: #f4f4f5;--bg-elev: #ffffff;--surface: #ffffff;--surface-2: #f4f4f5;--surface-3: #e8e8eb;--text: #111113;--text-2: #55555f;--text-3: #8b8b95;--border: rgba(17, 17, 19, .09);--border-strong: rgba(17, 17, 19, .18);--overlay: rgba(10, 10, 12, .36);--shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 8px 24px rgba(0, 0, 0, .06);--shadow-color: rgba(0, 0, 0, .12);--danger: #d92d20;--danger-soft: rgba(217, 45, 32, .1);--success: #12924a;--success-soft: rgba(18, 146, 74, .1);--warning: #c26a00;--warning-soft: rgba(194, 106, 0, .12);--skeleton: #ececef}:root[data-theme=dark]{--bg: #000000;--bg-elev: #0d0d0f;--surface: #131315;--surface-2: #1c1c1f;--surface-3: #2a2a2e;--text: #f4f4f5;--text-2: #a8a8b3;--text-3: #74747e;--border: rgba(255, 255, 255, .09);--border-strong: rgba(255, 255, 255, .2);--overlay: rgba(0, 0, 0, .6);--shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 8px 24px rgba(0, 0, 0, .4);--shadow-color: rgba(0, 0, 0, .6);--danger: #ff5a4e;--danger-soft: rgba(255, 90, 78, .16);--success: #3fd18a;--success-soft: rgba(63, 209, 138, .14);--warning: #ffb44d;--warning-soft: rgba(255, 180, 77, .15);--skeleton: #1c1c1f}@media(max-width:760px){:root{--size-scale: .8;--content-max: 100%}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg)}body{margin:0;min-height:100vh;min-height:100dvh;font-family:var(--font);font-size:var(--fs-md);line-height:var(--lh);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}#app{min-height:100vh;min-height:100dvh}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}img{display:block;max-width:100%}code{font-family:var(--font-mono);font-size:.92em}:focus-visible{outline:none}::selection{background:var(--accent-soft)}.muted{color:var(--text-2)}.subtle{color:var(--text-3)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.page{display:flex;flex-direction:column;gap:var(--sp-5)}.page__head{display:flex;flex-direction:column;gap:var(--sp-1);margin-bottom:var(--sp-2)}.page__title{font-size:var(--fs-2xl);font-weight:750;letter-spacing:-.025em;line-height:1.2}.page__desc{color:var(--text-2)}.page-loading{display:grid;place-items:center;min-height:40vh;color:var(--text-3)}.page-error{color:var(--danger)}@media(max-width:900px){.page__head--plain .page__title{display:none}.page__title{font-size:var(--fs-xl)}}@media(prefers-reduced-motion:reduce){:root{--dur: 0ms}}
