.lang-switch[data-v-d31560a5]{position:fixed;top:12px;right:12px;z-index:1000;padding:6px 14px;border:1px solid var(--color-wood-dark, #4a3526);background:#ffffffd9;color:var(--color-wood-dark, #4a3526);border-radius:4px;cursor:pointer;font-size:13px;font-family:var(--font-body, inherit);letter-spacing:.05em}.lang-switch[data-v-d31560a5]:hover{background:var(--color-wood-dark, #4a3526);color:#fff}.ink-icon[data-v-3b68041e]{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex-shrink:0}.ink-icon[data-v-3b68041e] svg{width:100%;height:100%;display:block}.admin-shell[data-v-52ef0690]{display:flex;min-height:100vh;background:var(--ad-canvas)}.sidebar[data-v-52ef0690]{width:232px;flex-shrink:0;display:flex;flex-direction:column;background:var(--ad-surface-1);border-right:1px solid var(--ad-hairline)}.sidebar-brand[data-v-52ef0690]{display:flex;align-items:center;gap:10px;padding:20px 18px;border-bottom:1px solid var(--ad-hairline)}.brand-mark[data-v-52ef0690]{display:grid;place-items:center;width:36px;height:36px;border-radius:var(--ad-radius-md);background:var(--ad-primary);color:var(--ad-on-primary);font-weight:700;font-size:.85rem;letter-spacing:.5px}.brand-title[data-v-52ef0690]{color:var(--ad-ink);font-weight:600;font-size:.95rem;letter-spacing:.2px}.sidebar-nav[data-v-52ef0690]{flex:1;display:flex;flex-direction:column;gap:14px;padding:14px 10px;overflow-y:auto}.nav-group[data-v-52ef0690]{display:flex;flex-direction:column;gap:2px}.nav-group-label[data-v-52ef0690]{padding:0 14px 6px;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ad-ink-tertiary)}.nav-item[data-v-52ef0690]{position:relative;display:flex;align-items:center;gap:12px;padding:10px 14px;border:none;border-radius:var(--ad-radius-md);background:transparent;color:var(--ad-ink-subtle);font-size:.92rem;font-family:inherit;cursor:pointer;text-align:left;transition:background .15s ease,color .15s ease}.nav-item[data-v-52ef0690]:hover{background:var(--ad-surface-2);color:var(--ad-ink)}.nav-item.active[data-v-52ef0690]{background:color-mix(in srgb,var(--ad-primary) 8%,var(--ad-surface-1));color:var(--ad-ink)}.nav-item.active[data-v-52ef0690]:before{content:"";position:absolute;left:-10px;top:6px;bottom:6px;width:2px;border-radius:1px;background:var(--ad-primary)}.nav-icon[data-v-52ef0690]{width:20px;text-align:center;font-size:1rem}.sidebar-footer[data-v-52ef0690]{padding:14px 12px;border-top:1px solid var(--ad-hairline);display:flex;flex-direction:column;gap:10px}.user-chip[data-v-52ef0690]{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--ad-radius-md);background:var(--ad-surface-2)}.user-avatar[data-v-52ef0690]{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--ad-primary);color:var(--ad-on-primary);font-weight:600;font-size:.95rem}.user-meta[data-v-52ef0690]{display:flex;flex-direction:column;min-width:0}.user-meta strong[data-v-52ef0690]{color:var(--ad-ink);font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-meta em[data-v-52ef0690]{color:var(--ad-ink-subtle);font-size:.75rem;font-style:normal}.logout-btn[data-v-52ef0690]{padding:8px 10px;border:1px solid var(--ad-hairline-strong);border-radius:var(--ad-radius-md);background:transparent;color:var(--ad-ink-muted);font-size:.85rem;font-family:inherit;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.logout-btn[data-v-52ef0690]:hover{background:var(--ad-danger-bg);border-color:var(--ad-danger);color:var(--ad-danger)}.admin-main[data-v-52ef0690]{flex:1;min-width:0;display:flex;flex-direction:column}.topbar[data-v-52ef0690]{display:flex;align-items:center;justify-content:space-between;padding:0 26px;height:56px;background:var(--ad-canvas);border-bottom:1px solid var(--ad-hairline)}.topbar h1[data-v-52ef0690]{margin:0;color:var(--ad-ink);font-size:1rem;font-weight:600;letter-spacing:-.1px}.page-body[data-v-52ef0690]{flex:1;padding:24px 26px 40px;overflow-y:auto}.login-shell[data-v-52ef0690]{min-height:100vh;background:var(--ad-canvas)}.login-shell[data-v-fffdb6cc]{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--ad-canvas)}.login-card[data-v-fffdb6cc]{width:min(400px,100%);padding:36px 34px 32px;border-radius:var(--ad-radius-lg);background:var(--ad-surface-2);border:1px solid var(--ad-hairline-strong);display:flex;flex-direction:column;gap:22px;animation:card-in-fffdb6cc .3s ease}@keyframes card-in-fffdb6cc{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.brand[data-v-fffdb6cc]{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}.brand-mark[data-v-fffdb6cc]{display:grid;place-items:center;width:58px;height:58px;border-radius:var(--ad-radius-lg);background:var(--ad-primary);color:var(--ad-on-primary);font-weight:700;font-size:1.25rem;letter-spacing:1px}.login-title[data-v-fffdb6cc]{margin:0;color:var(--ad-ink);font-size:1.35rem;font-weight:600;letter-spacing:-.4px}.login-subtitle[data-v-fffdb6cc]{margin:0;color:var(--ad-ink-subtle);font-size:.85rem}.login-form[data-v-fffdb6cc]{display:flex;flex-direction:column;gap:14px}.field[data-v-fffdb6cc]{display:flex;flex-direction:column;gap:6px}.field-label[data-v-fffdb6cc]{color:var(--ad-ink-subtle);font-size:.8rem}.input[data-v-fffdb6cc]{background:var(--ad-surface-1);border:1px solid var(--ad-hairline);color:var(--ad-ink);border-radius:var(--ad-radius-md);padding:12px 14px;font-size:.92rem;font-family:inherit;transition:border-color .15s ease,background .15s ease}.input[data-v-fffdb6cc]::placeholder{color:var(--ad-ink-tertiary)}.input[data-v-fffdb6cc]:focus{outline:2px solid color-mix(in srgb,var(--ad-primary-focus) 50%,transparent);border-color:var(--ad-hairline-strong);background:var(--ad-surface-1)}.login-error[data-v-fffdb6cc]{margin:0;padding:9px 12px;border-radius:var(--ad-radius-md);color:var(--ad-danger);background:var(--ad-danger-bg);border:1px solid var(--ad-danger);font-size:.84rem}.btn-primary[data-v-fffdb6cc]{padding:12px 18px;border:none;border-radius:var(--ad-radius-md);background:var(--ad-primary);color:var(--ad-on-primary);font-weight:500;font-size:.95rem;font-family:inherit;cursor:pointer;transition:background .15s ease}.btn-primary[data-v-fffdb6cc]:hover{background:var(--ad-primary-hover)}.btn-primary[data-v-fffdb6cc]:disabled{opacity:.55;cursor:not-allowed}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;scroll-behavior:smooth}:root{--color-bg-rice: #f4efe6;--color-bg-book: #ede8dd;--color-jade-light: #e0f2f1;--color-jade-dark: #80cbc4;--color-gold-dark: #c9a84c;--color-indigo-dark: #5b7ab8;--color-accent-dark: #c44b3c;--color-wood-dark: #4a4136;--color-bg: #f4efe6;--color-bg-alt: #ede8dd;--color-surface: rgba(255, 255, 255, .6);--color-surface-elevated: rgba(255, 255, 255, .75);--color-surface-glass: rgba(255, 255, 255, .55);--color-card: linear-gradient( 180deg, rgba(255, 255, 255, .65) 0%, rgba(252, 249, 244, .55) 100% );--color-card-hover: linear-gradient( 180deg, rgba(255, 255, 255, .78) 0%, rgba(254, 251, 246, .68) 100% );--color-input: rgba(244, 239, 230, .75);--color-input-focus: #fefcf8;--color-text-primary: #333333;--color-text-secondary: #4a4136;--color-text-muted: #8c7a60;--color-text-inverse: #f4efe6;--color-accent: #c44b3c;--color-accent-hover: #a83a2d;--color-accent-light: rgba(196, 75, 60, .08);--color-accent-glow: rgba(196, 75, 60, .18);--color-accent-text: #ffffff;--color-jade: #4a9c8c;--color-jade-hover: #3a7d6f;--color-jade-light: rgba(74, 156, 140, .08);--color-jade-glow: rgba(74, 156, 140, .18);--color-jade-text: #2d6b5e;--color-indigo: #5b7ab8;--color-indigo-hover: #4a6598;--color-indigo-light: rgba(91, 122, 184, .08);--color-indigo-glow: rgba(91, 122, 184, .18);--color-indigo-text: #3d5280;--color-amber: #d4893c;--color-amber-hover: #b87230;--color-amber-light: rgba(212, 137, 60, .08);--color-amber-glow: rgba(212, 137, 60, .18);--color-amber-text: #8b5a20;--color-gold: #c9a84c;--color-gold-light: rgba(201, 168, 76, .12);--color-gold-text: #8b7230;--color-danger: #c44b3c;--color-danger-hover: #a83a2d;--color-danger-light: rgba(196, 75, 60, .06);--color-danger-text: #a83a2d;--color-success: #5b8c5a;--color-success-light: rgba(91, 140, 90, .08);--color-success-text: #3d6b3c;--color-warning: #c49a3c;--color-warning-light: rgba(196, 154, 60, .08);--color-warning-text: #8b6a20;--color-border-ink: #d1c7b7;--color-border: rgba(180, 170, 150, .35);--color-border-light: rgba(180, 170, 150, .2);--color-border-elevated: rgba(160, 150, 130, .4);--hsk-1: #5b8c5a;--hsk-1-light: rgba(91, 140, 90, .1);--hsk-1-text: #3d6b3c;--hsk-2: #3d5a80;--hsk-2-light: rgba(61, 90, 128, .1);--hsk-2-text: #2a4365;--hsk-3: #c49a3c;--hsk-3-light: rgba(196, 154, 60, .1);--hsk-3-text: #8b6a20;--book-hsk: #4a7a6e;--book-hsk-light: rgba(74, 122, 110, .1);--book-hsk-text: #2f5c52;--book-tongguan: #8a5a7c;--book-tongguan-light: rgba(138, 90, 124, .1);--book-tongguan-text: #6a3f5c;--color-orb-a: radial-gradient(circle, #c4a07a, rgba(196, 160, 122, 0));--color-orb-b: radial-gradient(circle, #8a9ab0, rgba(138, 154, 176, 0));--color-orb-c: radial-gradient(circle, #a0b8a0, rgba(160, 184, 160, 0));--color-orb-d: radial-gradient(circle, #c4907a, rgba(196, 144, 122, 0));--color-orb-e: radial-gradient(circle, #7aacb0, rgba(122, 172, 176, 0));--gradient-hero: linear-gradient(135deg, #f4efe6 0%, #ede4d6 50%, #e5dcc8 100%);--gradient-accent: linear-gradient(135deg, #c44b3c, #d4654e);--gradient-jade: linear-gradient(135deg, #4a9c8c, #5db8a6);--gradient-indigo: linear-gradient(135deg, #5b7ab8, #7b9ad4);--gradient-amber: linear-gradient(135deg, #d4893c, #e8a860);--gradient-gold: linear-gradient(135deg, #c9a84c, #ddc070);--gradient-card: linear-gradient( 180deg, rgba(255, 255, 255, .65) 0%, rgba(248, 244, 236, .55) 100% );--gradient-glass: linear-gradient( 135deg, rgba(255, 255, 255, .55) 0%, rgba(255, 255, 255, .2) 100% );--glass-bg: rgba(255, 255, 255, .6);--glass-border: #d1c7b7;--glass-shadow: 0 4px 16px rgba(51, 51, 51, .06);--glass-blur: blur(10px);--font-display: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "SimSun", serif;--font-body: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "SimSun", serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", monospace;--font-number: "JetBrains Mono", "Fira Code", "Consolas", monospace;--font-calligraphy: "KaiTi", "STKaiti", "SimSun", "FangSong", "STFangsong", serif;--font-pinyin: "Times New Roman", "Segoe UI", "Microsoft YaHei", "PingFang SC", sans-serif;--text-xs: clamp(.7rem, 1.2vw, .72rem);--text-sm: clamp(.82rem, 1.4vw, .85rem);--text-base: clamp(.94rem, 1.6vw, 1rem);--text-lg: clamp(1.1rem, 2vw, 1.15rem);--text-xl: clamp(1.3rem, 2.4vw, 1.4rem);--text-2xl: clamp(1.55rem, 3vw, 1.7rem);--text-3xl: clamp(1.9rem, 3.6vw, 2.1rem);--text-hero: clamp(2.4rem, 5vw, 3.1rem);--radius-sm: 4px;--radius-md: 4px;--radius-lg: 4px;--radius-xl: 4px;--radius-full: 999px;--shadow-sm: 0 2px 8px rgba(51, 51, 51, .05);--shadow-md: 0 6px 18px rgba(51, 51, 51, .07);--shadow-lg: 0 14px 28px rgba(51, 51, 51, .08);--shadow-xl: 0 24px 48px rgba(51, 51, 51, .1);--shadow-glow: 0 0 30px rgba(196, 75, 60, .12);--shadow-stamp: 0 2px 4px rgba(51, 51, 51, .18), 0 0 0 1px rgba(196, 75, 60, .25);--shadow-card: 0 4px 12px rgba(51, 51, 51, .05);--shadow-card-hover: 0 8px 24px rgba(51, 51, 51, .1);--transition-fast: .2s cubic-bezier(.4, 0, .2, 1);--transition-base: .3s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1);--transition-spring: .35s cubic-bezier(.34, 1.56, .64, 1);--transition-stamp: .28s cubic-bezier(.18, .89, .32, 1.15);--space-xs: 4px;--space-sm: 8px;--space-md: 14px;--space-lg: 22px;--space-xl: 32px;--space-2xl: 44px;--content-max: 820px;--content-narrow: 560px;--z-base: 1;--z-overlay: 10;--z-modal: 100;--z-toast: 200;--bg-0: #e5dcc8;--bg-1: #ddd5c0;--bg-2: #ede4d6;--ink-0: #333333;--ink-1: #4a4136;--line-0: rgba(255, 255, 255, .4);--panel-0: rgba(255, 255, 255, .6);--panel-1: rgba(255, 255, 255, .48);--accent-0: #333333;--accent-1: #4a4136;--shadow-soft: 0 14px 26px rgba(51, 51, 51, .1);--shadow-strong: 0 24px 48px rgba(51, 51, 51, .14);--color-primary: #c44b3c;--color-primary-light: #d4654e;--color-muted: #8c7a60;--transition-normal: .3s cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--color-bg: #1e1e24;--color-bg-alt: #26262e;--color-surface: rgba(30, 30, 36, .7);--color-surface-elevated: rgba(38, 38, 46, .82);--color-surface-glass: rgba(30, 30, 36, .55);--color-card: linear-gradient(180deg, rgba(38, 38, 46, .7) 0%, rgba(30, 30, 36, .6) 100%);--color-card-hover: linear-gradient( 180deg, rgba(45, 45, 54, .78) 0%, rgba(36, 36, 44, .68) 100% );--color-input: rgba(40, 40, 50, .55);--color-input-focus: rgba(50, 50, 62, .7);--color-text-primary: #e8e0d0;--color-text-secondary: #c4b8a0;--color-text-muted: #908878;--color-text-inverse: #1e1e24;--color-accent: #e87860;--color-accent-hover: #f09078;--color-accent-light: rgba(232, 120, 96, .12);--color-accent-glow: rgba(232, 120, 96, .22);--color-accent-text: #ffffff;--color-jade: #5db8a6;--color-jade-hover: #6ecab8;--color-jade-light: rgba(93, 184, 166, .1);--color-jade-glow: rgba(93, 184, 166, .2);--color-jade-text: #80d4c4;--color-indigo: #7b9ad4;--color-indigo-hover: #90b0e8;--color-indigo-light: rgba(123, 154, 212, .1);--color-indigo-glow: rgba(123, 154, 212, .2);--color-indigo-text: #a0c0f0;--color-amber: #e8a860;--color-amber-hover: #f0b878;--color-amber-light: rgba(232, 168, 96, .1);--color-amber-glow: rgba(232, 168, 96, .2);--color-amber-text: #f0c880;--color-gold: #d4b860;--color-gold-light: rgba(212, 184, 96, .12);--color-gold-text: #ddc880;--color-gold-dark: #d4b860;--color-indigo-dark: #7b9ad4;--color-accent-dark: #e87860;--color-danger: #e87860;--color-danger-hover: #f09078;--color-danger-light: rgba(232, 120, 96, .08);--color-danger-text: #f0a090;--color-success: #6aaa6a;--color-success-light: rgba(106, 170, 106, .1);--color-success-text: #8ac88a;--color-warning: #d4aa50;--color-warning-light: rgba(212, 170, 80, .1);--color-warning-text: #e0c070;--color-border-ink: rgba(200, 190, 170, .18);--color-border: rgba(180, 170, 150, .16);--color-border-light: rgba(160, 150, 130, .1);--color-border-elevated: rgba(200, 190, 170, .2);--color-orb-a: radial-gradient(circle, #6a5040, rgba(106, 80, 64, 0));--color-orb-b: radial-gradient(circle, #4a5a80, rgba(74, 90, 128, 0));--color-orb-c: radial-gradient(circle, #4a6a5a, rgba(74, 106, 90, 0));--color-orb-d: radial-gradient(circle, #6a4050, rgba(106, 64, 80, 0));--color-orb-e: radial-gradient(circle, #3a6070, rgba(58, 96, 112, 0));--gradient-hero: linear-gradient(135deg, #1e1e24 0%, #26262e 50%, #22222a 100%);--gradient-accent: linear-gradient(135deg, #e87860, #f09078);--gradient-jade: linear-gradient(135deg, #5db8a6, #6ecab8);--gradient-indigo: linear-gradient(135deg, #7b9ad4, #90b0e8);--gradient-amber: linear-gradient(135deg, #e8a860, #f0b878);--gradient-gold: linear-gradient(135deg, #d4b860, #e0cc78);--gradient-card: linear-gradient(180deg, rgba(38, 38, 46, .7) 0%, rgba(30, 30, 36, .6) 100%);--gradient-glass: linear-gradient( 135deg, rgba(255, 255, 255, .06) 0%, rgba(255, 255, 255, .01) 100% );--glass-bg: rgba(30, 30, 36, .6);--glass-border: rgba(255, 255, 255, .06);--glass-shadow: 0 4px 16px rgba(0, 0, 0, .3);--glass-blur: blur(10px);--shadow-sm: 0 2px 8px rgba(0, 0, 0, .25);--shadow-md: 0 6px 18px rgba(0, 0, 0, .3);--shadow-lg: 0 14px 28px rgba(0, 0, 0, .35);--shadow-xl: 0 24px 48px rgba(0, 0, 0, .4);--shadow-glow: 0 0 30px rgba(232, 120, 96, .2);--shadow-stamp: 0 2px 4px rgba(0, 0, 0, .4), 0 0 0 1px rgba(232, 120, 96, .35);--shadow-card: 0 4px 12px rgba(0, 0, 0, .25);--shadow-card-hover: 0 8px 24px rgba(0, 0, 0, .35);--bg-0: #1e1e24;--bg-1: #26262e;--bg-2: #2e2e36;--ink-0: #e8e0d0;--ink-1: #c4b8a0;--line-0: rgba(255, 255, 255, .06);--panel-0: rgba(30, 30, 36, .7);--panel-1: rgba(24, 24, 30, .6);--accent-0: #e8e0d0;--accent-1: #c4b8a0;--shadow-soft: 0 14px 26px rgba(0, 0, 0, .3);--shadow-strong: 0 24px 48px rgba(0, 0, 0, .4);--color-primary: #e87860;--color-primary-light: #f09078;--color-muted: #908878}body{margin:0;padding:0;font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-bg) url(/admin/bg-ink-landscape.webp) center / cover no-repeat fixed;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background var(--transition-slow),color var(--transition-slow);min-height:100vh;min-height:100dvh;overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;color:var(--color-text-primary);margin:0;letter-spacing:.02em}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-lg)}button{font-family:var(--font-body);cursor:pointer;border:none;outline:none;transition:background var(--transition-base),color var(--transition-base),transform var(--transition-base),box-shadow var(--transition-base),border-color var(--transition-base);-webkit-tap-highlight-color:transparent;touch-action:manipulation}button:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}input,select,textarea{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-text-primary);background:var(--color-input);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);padding:clamp(8px,1.5vw,12px) clamp(10px,2vw,14px);transition:border-color var(--transition-fast),background var(--transition-fast),box-shadow var(--transition-fast);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--color-accent);background:var(--color-input-focus);box-shadow:0 0 0 3px var(--color-accent-light)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238c7a60' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;background:var(--color-border-light);border-radius:var(--radius-full);padding:0;border:none;cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:var(--color-accent);border:2px solid var(--color-surface-elevated);box-shadow:var(--shadow-sm);cursor:pointer;transition:transform var(--transition-fast)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.15)}input[type=range]:focus{box-shadow:none}input[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:clamp(18px,3vw,22px);height:clamp(18px,3vw,22px);border:2px solid var(--color-border-elevated);border-radius:5px;padding:0;cursor:pointer;position:relative;flex-shrink:0;transition:all var(--transition-fast)}input[type=checkbox]:checked{background:var(--color-accent);border-color:var(--color-accent)}input[type=checkbox]:checked:after{content:"";position:absolute;left:5px;top:2px;width:6px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}input[type=checkbox]:focus{box-shadow:0 0 0 3px var(--color-accent-light)}.close-btn{width:clamp(32px,5vw,36px);height:clamp(32px,5vw,36px);border-radius:50%;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--color-text-muted);font-size:20px;font-weight:400;border:1px solid var(--color-border-light);cursor:pointer;flex-shrink:0;transition:transform .25s cubic-bezier(.34,1.56,.64,1),background .2s ease,color .2s ease}.close-btn:hover{background:var(--color-danger-light);color:var(--color-danger-text);border-color:#c44b3c40;transform:rotate(90deg)}.close-btn:active{transform:rotate(90deg) scale(.88);transition:transform .07s ease}.spring-btn{transition:transform .3s cubic-bezier(.34,1.56,.64,1),box-shadow .3s cubic-bezier(.34,1.56,.64,1),border-color .2s ease,background .2s ease,color .2s ease}.spring-btn:active{transform:scale(.94);transition:transform .07s ease,box-shadow .07s ease}.lift-btn:hover{transform:translateY(-3px)}.lift-btn:active{transform:translateY(1px) scale(.96);transition:transform .07s ease,box-shadow .07s ease}.shine-sweep{position:relative;overflow:hidden}.shine-sweep:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(105deg,transparent 40%,rgba(255,252,247,.5) 45%,transparent 50%);transform:translate(-120%);transition:transform .55s ease;pointer-events:none;z-index:1}.shine-sweep:hover:before{transform:translate(120%)}.deep-shadow{box-shadow:0 2px 4px #2c24160a,0 6px 14px #2c24160f,0 14px 28px #2c24160d}.deep-shadow:hover{box-shadow:0 4px 8px #2c24160f,0 10px 22px #2c241617,0 22px 44px #2c241614}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;opacity:.03;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='1'/%3E%3C/svg%3E");background-repeat:repeat;background-size:128px 128px}[data-theme=dark] body:before{opacity:.04}[data-theme=dark] body{background:linear-gradient(#121218bf,#121218bf),url(/admin/bg-ink-landscape.webp) center / cover no-repeat fixed}@keyframes breathe-glow{0%,to{box-shadow:0 0 0 0 var(--color-accent-glow),0 4px 8px #2c24160f,0 10px 22px #2c241617,0 22px 44px #2c241614}50%{box-shadow:0 0 0 8px #c44b3c14,0 4px 12px #2c241614,0 12px 28px #2c24161c,0 28px 52px #2c24161a}}@supports (padding-bottom: env(safe-area-inset-bottom)){.safe-bottom{padding-bottom:env(safe-area-inset-bottom)}}.scroll-y{overflow-y:auto;-webkit-overflow-scrolling:touch}.scroll-y::-webkit-scrollbar{width:4px}.scroll-y::-webkit-scrollbar-track{background:transparent}.scroll-y::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:2px}.panel{width:100%;position:relative;z-index:1;background:#fff9;border:1px solid #d1c7b7;border-radius:4px;padding:clamp(16px,3vw,28px);box-shadow:0 2px 8px #3333330a,0 8px 20px #3333330f,inset 0 1px #ffffff80;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);animation:panel-rise .36s cubic-bezier(.22,.61,.36,1)}[data-theme=dark] .panel{background:#1e1e2499;border-color:#c8beaa26;box-shadow:0 2px 8px #00000026,0 8px 20px #0003,inset 0 1px #ffffff08}.panel h2{margin:0 0 clamp(12px,2vw,18px);color:#333;font-family:var(--font-display);font-size:clamp(24px,3.5vw,34px);font-weight:700;letter-spacing:.03em}[data-theme=dark] .panel h2{color:#e8e0d0}@keyframes panel-rise{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.generic-head,.levels-head{display:flex;align-items:center;justify-content:space-between;gap:clamp(8px,1.5vw,12px);flex-wrap:wrap}.generic-head h2,.levels-head h2{margin:0}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1c1866;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;place-items:center;z-index:200;padding:clamp(12px,3vw,20px);animation:fade-in .2s ease}.modal{background:#fff9;border-radius:4px;padding:clamp(16px,3vw,28px);width:min(440px,calc(100vw - 24px));max-height:85vh;max-height:85dvh;overflow-y:auto;box-shadow:var(--shadow-xl);display:flex;flex-direction:column;gap:clamp(10px,2vw,14px);animation:modal-unroll .26s cubic-bezier(.22,.61,.36,1);border:1px solid #d1c7b7;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);-webkit-overflow-scrolling:touch}[data-theme=dark] .modal{background:#1e1e2499;border-color:#c8beaa26}@keyframes modal-unroll{0%{opacity:0;transform:scale(.92,.88);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:scale(1);clip-path:inset(0 0 0 0)}}@supports not (clip-path: inset(0 0 0 0)){@keyframes modal-unroll{0%{opacity:0;transform:scale(.94) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}}.modal.warn{border:1.5px solid rgba(196,75,60,.35);box-shadow:var(--shadow-xl),0 0 0 1px #c44b3c14}.modal.paper{position:relative;overflow:hidden;background:linear-gradient(180deg,#fffdfaf5,#f8f4ece6);box-shadow:var(--shadow-xl),0 0 0 1px #c44b3c0f}.overlay-solid{backdrop-filter:none;-webkit-backdrop-filter:none;background:#1a181699}.modal.paper:before{content:"";position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px solid rgba(180,170,150,.28);border-radius:2px;pointer-events:none}.modal.paper>*{position:relative;z-index:1}[data-theme=dark] .modal.paper{background:linear-gradient(180deg,#26262ecc,#1e1e24a8)}[data-theme=dark] .modal.paper:before{border-color:#ffffff14}.paper-head{display:flex;align-items:center;gap:14px}.paper-seal{flex-shrink:0;width:46px;height:46px;display:grid;place-items:center;font-family:var(--font-calligraphy);font-size:24px;font-weight:700;line-height:1;color:#fff;background:var(--gradient-accent);border-radius:4px;box-shadow:var(--shadow-stamp);animation:paper-seal-in .42s cubic-bezier(.18,.89,.32,1.15) both}@keyframes paper-seal-in{0%{opacity:0;transform:scale(1.6) rotate(-20deg)}to{opacity:1;transform:scale(1) rotate(-3deg)}}.paper-head-text h3{font-family:var(--font-calligraphy);font-size:clamp(1.5rem,3vw,1.75rem);font-weight:700;color:var(--color-text-primary);letter-spacing:.12em;line-height:1.2}.paper-head-sub{margin:4px 0 0;font-family:var(--font-calligraphy);font-size:var(--text-xs);color:var(--color-text-muted);letter-spacing:.14em}.paper-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px}.paper-stat{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:10px;row-gap:1px;align-items:center;padding:10px 12px;border:1px solid var(--color-border-light);border-top:2px solid transparent;border-radius:4px;background:#ffffff8c;animation:paper-rise .42s both;animation-delay:var(--d, 0ms)}.paper-stat-icon{grid-row:1 / span 2;width:32px;height:32px;display:grid;place-items:center;border-radius:50%}.paper-stat-value{font-family:var(--font-number);font-size:var(--text-lg);font-weight:700;line-height:1.1;color:var(--color-text-primary)}.paper-stat-label{font-size:var(--text-xs);color:var(--color-text-muted);white-space:nowrap}.paper-stat[data-accent=indigo]{border-top-color:var(--color-indigo)}.paper-stat[data-accent=indigo] .paper-stat-icon{color:var(--color-indigo);background:var(--color-indigo-light)}.paper-stat[data-accent=amber]{border-top-color:var(--color-amber)}.paper-stat[data-accent=amber] .paper-stat-icon{color:var(--color-amber);background:var(--color-amber-light)}.paper-stat[data-accent=jade]{border-top-color:var(--color-jade)}.paper-stat[data-accent=jade] .paper-stat-icon{color:var(--color-jade);background:var(--color-jade-light)}.paper-stat[data-accent=cinnabar]{border-top-color:var(--color-accent)}.paper-stat[data-accent=cinnabar] .paper-stat-icon{color:var(--color-accent);background:var(--color-accent-light)}@keyframes paper-rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.paper-progress{display:flex;flex-direction:column;gap:6px}.paper-progress-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:var(--text-xs);color:var(--color-text-muted)}.paper-progress-count{font-family:var(--font-number);font-weight:700;color:var(--color-text-secondary)}.paper-progress-track{height:8px;border-radius:4px;background:#3e272314;overflow:hidden}.paper-progress-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,var(--color-jade),var(--color-jade-dark));transition:width var(--transition-base)}[data-theme=dark] .paper-stat{background:#ffffff0a;border-color:#ffffff14}[data-theme=dark] .paper-progress-track{background:#ffffff1a}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1e1c1873;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);display:grid;place-items:center;z-index:300;padding:clamp(12px,3vw,20px)}.modal-box{background:#fff9;border-radius:4px;padding:clamp(16px,3vw,28px);width:min(440px,calc(100vw - 24px));max-height:85vh;max-height:85dvh;overflow-y:auto;box-shadow:var(--shadow-xl);display:flex;flex-direction:column;gap:14px;border:1px solid #d1c7b7;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);-webkit-overflow-scrolling:touch}[data-theme=dark] .modal-box{background:#1e1e2499;border-color:#c8beaa26}.preview-box{border:1px solid rgba(160,140,110,.22);border-radius:clamp(14px,2.5vw,20px);padding:clamp(12px,2vw,16px);background:linear-gradient(180deg,#faf6eeb3,#f2ece28c);box-shadow:inset 0 1px #fff9}[data-theme=dark] .preview-box{background:linear-gradient(180deg,#221c2e99,#1c182680);box-shadow:inset 0 1px #ffffff08}.preview-box ul,.preview-box ol{margin:8px 0;padding-left:clamp(14px,2vw,18px);max-height:280px;overflow:auto}.preview-box li{white-space:normal;word-break:break-word;line-height:1.5}.preview-box .me-row{background:var(--color-gold-light);border-radius:6px;padding:2px 6px;font-weight:600}.preview-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(260px,.85fr);gap:clamp(12px,2vw,16px)}button{cursor:pointer;border:2px solid rgba(62,39,35,.2);border-radius:4px;font-size:var(--text-sm);font-weight:600;background:#ffffffa6;color:var(--ink-0);padding:clamp(6px,1.2vw,10px) clamp(14px,2.5vw,20px);min-height:clamp(34px,5vw,40px);transition:opacity .15s ease,background .15s ease,transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s ease;touch-action:manipulation;box-shadow:inset 0 1px #ffffff80,0 1px 3px #3e27231a}button:disabled{opacity:.45;cursor:default}button:hover:not(:disabled){background:#ffffffe6;border-color:#3e272359;box-shadow:inset 0 1px #ffffff80,0 3px 8px #3e27231f}button:active:not(:disabled){transform:scale(.96);box-shadow:inset 0 1px #ffffff4d,0 1px 2px #3e272314}[data-theme=dark] button{background:#ffffff0f;color:var(--ink-0);border-color:#a08c6e33;box-shadow:none}[data-theme=dark] button:hover:not(:disabled){background:#ffffff1f;border-color:#a08c6e59;box-shadow:0 2px 8px #00000040}button.ghost{background:transparent;color:var(--ink-1);border-color:#8c785a38;padding:clamp(6px,1.2vw,10px) clamp(12px,2vw,18px);min-height:clamp(34px,5vw,40px)}button.ghost:hover:not(:disabled){background:#8c785a0f}button.ghost.active{background:var(--color-accent-light);color:var(--color-accent);border-color:#c44b3c4d}button.danger{background:var(--color-danger);color:#fff;padding:clamp(6px,1.2vw,10px) clamp(12px,2vw,18px);min-height:clamp(34px,5vw,40px)}button.danger:hover:not(:disabled){background:var(--color-danger-hover)}button.back{background:transparent;color:var(--ink-1);border-color:#8c785a29;margin-top:14px;padding:clamp(6px,1.2vw,10px) clamp(12px,2vw,18px);min-height:clamp(34px,5vw,40px)}button.tiny{font-size:var(--text-xs);padding:4px 10px;min-height:30px;border-radius:var(--radius-sm)}.btn-primary{background:var(--color-jade-dark);color:#1f3d38;border:2px solid var(--color-wood-dark);padding:clamp(8px,1.5vw,12px) clamp(16px,3vw,24px);border-radius:4px;font-weight:700;display:inline-flex;align-items:center;gap:6px;cursor:pointer;min-height:clamp(38px,6vw,44px);box-shadow:inset 0 1px #ffffff4d,0 2px 6px #3e272333;letter-spacing:.04em}.btn-primary:hover:not(:disabled){background:#9ad9d3;box-shadow:inset 0 1px #ffffff59,0 4px 12px #3e272340}.btn-primary:active:not(:disabled){transform:scale(.96);box-shadow:inset 0 1px #fff3,0 1px 3px #3e272326}.btn-ghost{background:transparent;color:var(--ink-1);border:2px solid rgba(62,39,35,.2);padding:clamp(8px,1.5vw,12px) clamp(14px,2.5vw,20px);border-radius:4px;font-weight:600;display:inline-flex;align-items:center;gap:6px;cursor:pointer;min-height:clamp(38px,6vw,44px)}.btn-ghost:hover:not(:disabled){background:#3e27230a;border-color:#3e272359}.btn-danger{background:transparent;color:var(--color-danger-text);border:1px solid rgba(196,75,60,.25);padding:clamp(8px,1.5vw,12px) clamp(14px,2.5vw,20px);border-radius:var(--radius-md);font-weight:600;display:inline-flex;align-items:center;gap:6px;cursor:pointer;min-height:clamp(38px,6vw,44px)}.btn-danger:hover:not(:disabled){background:var(--color-danger-light);border-color:#c44b3c66}.row-actions{display:flex;flex-wrap:wrap;gap:clamp(6px,1vw,8px);align-items:center}.tip{font-size:var(--text-sm);color:var(--color-muted);margin:4px 0}.progress-table-wrap{max-height:360px;overflow:auto;border-radius:var(--radius-md);border:1px solid rgba(140,120,90,.16);-webkit-overflow-scrolling:touch}.progress-table{width:100%;border-collapse:collapse;font-size:var(--text-sm);text-align:left}.progress-table th,.progress-table td{padding:clamp(6px,1vw,10px);border-bottom:1px solid rgba(140,120,90,.1);white-space:nowrap}.progress-table th{background:#f5f1eab3;font-weight:600;position:sticky;top:0;z-index:1}[data-theme=dark] .progress-table th{background:#1e1a28cc}.levels{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(180px,100%),1fr));gap:clamp(10px,2vw,14px)}.level-grid{display:grid;gap:clamp(10px,2vw,14px)}.level-tile{display:flex;flex-direction:column;gap:8px;padding:clamp(12px,2vw,16px);border:none;border-radius:clamp(14px,2.5vw,18px);background:#ffffffb3;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;transition:all .2s ease;text-align:left;font-size:var(--text-sm);animation:tile-stamp .34s cubic-bezier(.18,.89,.32,1.15) backwards;box-shadow:0 4px 12px #0000000d;min-height:100px}@keyframes tile-stamp{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}[data-theme=dark] .level-tile{background:#1e1a2a99}.level-tile:hover:not(:disabled):not(.opening){transform:translateY(-3px);box-shadow:0 8px 24px #00000017;background:#ffffffd9}[data-theme=dark] .level-tile:hover:not(:disabled):not(.opening){background:#241e32cc}.level-tile:active:not(:disabled){transform:scale(.97);transition:transform .08s ease}.level-tile.opening{opacity:.5;pointer-events:none}.level-tile.placeholder{visibility:hidden}.tile-order-badge{font-size:var(--text-xs);font-weight:700;color:var(--color-text-muted)}.tile-icon-wrap,.tile-icon-fallback{width:clamp(32px,5vw,40px);height:clamp(32px,5vw,40px);border-radius:var(--radius-sm);overflow:hidden;display:grid;place-items:center;background:#e6e1d7cc}.tile-icon-wrap img{width:100%;height:100%;object-fit:cover}.tile-title{font-weight:700;font-size:var(--text-base);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-footer{display:flex;justify-content:space-between;align-items:center;gap:6px;font-size:var(--text-xs)}.tile-book-badge{padding:2px 8px;border-radius:6px;background:var(--color-accent-light);color:var(--color-accent-hover);font-weight:600}.tile-score{display:flex;align-items:center;gap:3px;color:var(--color-gold-text);font-weight:600}.tile-hsk1 .tile-order-badge{color:var(--hsk-1)}.tile-hsk2 .tile-order-badge{color:var(--hsk-2)}.tile-hsk3 .tile-order-badge{color:var(--hsk-3)}label{display:flex;flex-direction:column;gap:4px;font-size:var(--text-sm);font-weight:600;color:var(--ink-1);text-align:left}input,select,textarea{padding:clamp(8px,1.5vw,12px);border:1.5px solid rgba(140,120,90,.25);border-radius:var(--radius-sm);font-size:var(--text-base);font-family:inherit;background:#fcf9f2b3;transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light)}.progress-modal-summary{display:grid;grid-template-columns:1fr 1fr;gap:clamp(8px,1.5vw,12px);margin-bottom:12px}.pms-item{padding:clamp(10px,2vw,14px);background:#f5f1ea99;border-radius:var(--radius-md);text-align:center}[data-theme=dark] .pms-item{background:#221c2e80}.pms-value{font-size:clamp(18px,3vw,22px);font-weight:700;font-family:var(--font-number)}.pms-label{font-size:var(--text-xs);color:var(--color-muted)}.progress-mode-badge{padding:2px 8px;border-radius:6px;font-size:var(--text-xs);font-weight:600}.progress-mode-badge.match3{background:var(--hsk-2-light);color:var(--hsk-2-text)}.progress-mode-badge.linkup{background:var(--hsk-1-light);color:var(--hsk-1-text)}.progress-mode-badge.radical-combo{background:var(--color-jade-light);color:var(--color-jade-text)}.progress-mode-badge.radical-compose{background:var(--color-amber-light);color:var(--color-amber-text)}.progress-mode-badge.picto{background:var(--color-gold-light);color:var(--color-gold-text)}.progress-state-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px}.progress-state-dot.completed{background:var(--color-success)}.progress-state-dot.draft{background:var(--color-warning)}.message{position:fixed;bottom:clamp(16px,3vw,24px);left:50%;transform:translate(-50%);background:var(--ink-0);color:var(--color-text-inverse);padding:clamp(8px,1.5vw,12px) clamp(16px,3vw,24px);border-radius:var(--radius-full);font-size:var(--text-sm);z-index:500;box-shadow:var(--shadow-xl);max-width:calc(100vw - 32px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;animation:toast-in .28s cubic-bezier(.18,.89,.32,1.15)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(12px) scale(.92)}to{opacity:1;transform:translate(-50%) translateY(0) scale(1)}}.screen-fade-enter-active,.screen-fade-leave-active{transition:opacity .12s ease-out}.screen-fade-enter-from,.screen-fade-leave-to{opacity:0}@keyframes skeleton-pulse{0%,to{opacity:.35}50%{opacity:.7}}.skeleton{background:linear-gradient(110deg,#c8b9a04d,#e6dac380 40%,#c8b9a04d);background-size:200% 100%;animation:skeleton-pulse 1.6s ease-in-out infinite,shimmer 2s linear infinite;border-radius:var(--radius-md)}[data-theme=dark] .skeleton{background:linear-gradient(110deg,#3c322866,#50443780 40%,#3c322866);background-size:200% 100%}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@media(max-width:480px){.panel{border-radius:clamp(18px,4vw,24px);padding:clamp(12px,3vw,16px)}.modal,.modal-box{border-radius:clamp(14px,3.5vw,20px);padding:clamp(14px,3vw,18px);width:calc(100vw - 16px)}.preview-grid{grid-template-columns:1fr}.levels{grid-template-columns:1fr;gap:10px}.level-tile{min-height:90px}.progress-modal-summary{grid-template-columns:1fr 1fr;gap:8px}.message{left:8px;right:8px;transform:none;max-width:none;text-align:center;border-radius:var(--radius-md)}@keyframes toast-in-mobile{0%{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}.message{animation:toast-in-mobile .28s cubic-bezier(.18,.89,.32,1.15)}}@media(min-width:481px)and (max-width:768px){.levels{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}.preview-grid{grid-template-columns:1fr;gap:14px}}@media(hover:none)and (pointer:coarse){button,.btn-primary,.btn-ghost,.btn-danger,.level-tile{min-height:44px}.close-btn{width:44px;height:44px}input,select,textarea{font-size:16px}}.layout{position:relative;width:min(820px,100%);min-height:100vh;min-height:100dvh;margin:0 auto;padding:clamp(16px,3vw,28px);padding-bottom:calc(clamp(16px,3vw,28px) + env(safe-area-inset-bottom));display:grid;align-content:center}.layout:before,.layout:after{content:"";position:fixed;inset:auto;width:clamp(200px,32vw,340px);height:clamp(200px,32vw,340px);border-radius:50%;filter:blur(100px);pointer-events:none;opacity:.22;z-index:0}.layout:before{top:10vh;right:-80px;background:radial-gradient(circle,rgba(128,203,196,.25),rgba(128,203,196,.06),transparent 70%)}.layout:after{bottom:6vh;left:-100px;background:radial-gradient(circle,rgba(196,75,60,.12),rgba(62,39,35,.04),transparent 70%)}[data-theme=dark] .layout:before{background:radial-gradient(circle,rgba(128,203,196,.12),rgba(128,203,196,.03),transparent 70%);opacity:.16}[data-theme=dark] .layout:after{background:radial-gradient(circle,rgba(224,112,80,.08),rgba(62,39,35,.06),transparent 70%);opacity:.14}@media(max-width:480px){.layout:before,.layout:after{width:150px;height:150px;filter:blur(70px);opacity:.16}.layout:before{top:6vh;right:-50px}.layout:after{bottom:3vh;left:-60px}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-in-right{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:translate(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translate(-24px)}to{opacity:1;transform:translate(0)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.15)}30%{transform:scale(1)}}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes stamp-down{0%{opacity:0;transform:scale(1.15);filter:brightness(1.3)}50%{opacity:1;transform:scale(.94)}65%{transform:scale(1.03)}80%{transform:scale(.98)}to{opacity:1;transform:scale(1);filter:brightness(1)}}@keyframes ink-spread{0%{clip-path:circle(0% at 50% 50%);opacity:0}to{clip-path:circle(100% at 50% 50%);opacity:1}}@keyframes ink-fill{0%{background-size:0% 100%}to{background-size:var(--fill-pct, 100%) 100%}}@keyframes wash-spread{0%{background-size:0% 100%;background-position:0 0}to{background-size:100% 100%;background-position:0 0}}@keyframes count-up{0%{--num: 0}to{--num: var(--target, 100)}}@keyframes trophy-bounce{0%{transform:scale(0);opacity:0}50%{transform:scale(1.25)}65%{transform:scale(1.08)}80%{transform:scale(.95)}to{transform:scale(1);opacity:1}}@keyframes ink-ripple{0%{transform:scale(0);opacity:.25}to{transform:scale(4);opacity:0}}@keyframes pulse-glow{0%,to{box-shadow:0 0 4px var(--color-accent-glow),0 0 8px #c44b3c14}50%{box-shadow:0 0 12px var(--color-accent-glow),0 0 24px #c44b3c2e}}@keyframes gradient-flow{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes orb-breathe{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.6}50%{transform:translate(-50%,-50%) scale(1.15);opacity:.85}}@keyframes stagger-in{0%{opacity:0;transform:translateY(24px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes card-float-3d{0%,to{transform:translateY(0) rotateX(0) rotateY(0)}25%{transform:translateY(-4px) rotateX(1deg) rotateY(-1deg)}75%{transform:translateY(-4px) rotateX(-.5deg) rotateY(1deg)}}@keyframes draw-line{0%{stroke-dashoffset:var(--line-length, 100)}to{stroke-dashoffset:0}}.entering{animation:stamp-down .34s cubic-bezier(.18,.89,.32,1.15)}.stamp-in{animation:stamp-down .36s cubic-bezier(.18,.89,.32,1.15)}.trophy-in{animation:trophy-bounce .5s cubic-bezier(.18,.89,.32,1.3)}.float-item{animation:float 3s ease-in-out infinite}.gradient-flow{background-size:200% 200%;animation:gradient-flow 4s ease infinite}.stagger-children>*{opacity:0;animation:stagger-in .4s cubic-bezier(.18,.89,.32,1.15) forwards}.stagger-children>*:nth-child(1){animation-delay:0ms}.stagger-children>*:nth-child(2){animation-delay:60ms}.stagger-children>*:nth-child(3){animation-delay:.12s}.stagger-children>*:nth-child(4){animation-delay:.18s}.stagger-children>*:nth-child(5){animation-delay:.24s}.stagger-children>*:nth-child(6){animation-delay:.3s}.stagger-children>*:nth-child(7){animation-delay:.36s}.stagger-children>*:nth-child(8){animation-delay:.42s}.bg-orb{position:absolute;border-radius:50%;filter:blur(60px);pointer-events:none;z-index:0}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:480px){.layout:before,.layout:after{animation:none}}.editor-dark{--ed-sidebar-bg: var(--ad-surface-1);--ed-sidebar-surface: var(--ad-surface-2);--ed-sidebar-hover: var(--ad-surface-3);--ed-sidebar-border: var(--ad-hairline);--ed-sidebar-text: var(--color-text-primary);--ed-sidebar-muted: var(--color-text-muted);--ed-sidebar-accent: var(--color-accent);--ed-sidebar-accent-bg: var(--color-accent-light);--ed-content-bg: var(--ad-canvas);--ed-card-bg: var(--ad-surface-1);--ed-card-border: var(--ad-hairline);--ed-card-shadow: 0 1px 2px rgba(0, 0, 0, .04);--ed-card-hover-shadow: 0 4px 16px rgba(0, 0, 0, .08);--ed-text-primary: var(--color-text-primary);--ed-text-secondary: var(--color-text-secondary);--ed-text-muted: var(--color-text-muted);--ed-input-bg: var(--ad-surface-2);--ed-input-border: var(--ad-hairline);--ed-input-focus: var(--color-accent);--ed-input-focus-ring: var(--color-accent-light);--ed-accent: var(--color-accent);--ed-accent-hover: var(--color-accent-hover);--ed-accent-text: #fff;--ed-accent-bg: var(--color-accent-light);--ed-danger: #d93a3a;--ed-danger-hover: #c12828;--ed-danger-bg: rgba(217, 58, 58, .06);--ed-danger-border: rgba(217, 58, 58, .16);--ed-success: var(--color-success);--ed-warning: var(--color-warning);--ed-hanzi: #c44b3c;--ed-hanzi-bg: rgba(196, 75, 60, .08);--ed-hanzi-border: rgba(196, 75, 60, .2);--ed-pinyin: #3d5a80;--ed-pinyin-bg: rgba(61, 90, 128, .08);--ed-pinyin-border: rgba(61, 90, 128, .2);--ed-english: #5b8c5a;--ed-english-bg: rgba(91, 140, 90, .08);--ed-english-border: rgba(91, 140, 90, .2);--ed-radius-sm: var(--radius-sm);--ed-radius-md: var(--radius-md);--ed-radius-lg: var(--radius-lg);--ed-transition: var(--transition-fast)}[data-theme=dark] .editor-dark{--ed-sidebar-bg: rgba(26, 22, 36, .95);--ed-sidebar-surface: rgba(30, 26, 40, .78);--ed-sidebar-hover: rgba(40, 34, 50, .7);--ed-sidebar-border: rgba(120, 100, 80, .2);--ed-content-bg: #1a1620;--ed-card-bg: rgba(30, 26, 40, .85);--ed-card-border: rgba(120, 100, 80, .18);--ed-card-shadow: 0 2px 8px rgba(0, 0, 0, .2);--ed-card-hover-shadow: 0 4px 16px rgba(0, 0, 0, .3);--ed-input-bg: rgba(40, 34, 52, .5);--ed-input-border: rgba(120, 100, 80, .25);--ed-hanzi-bg: rgba(224, 112, 80, .1);--ed-pinyin-bg: rgba(90, 120, 160, .1);--ed-english-bg: rgba(106, 170, 106, .1)}.editor-dark{background:var(--ed-content-bg);color:var(--ed-text-primary);transition:background .4s ease}.editor-app{min-height:100vh;min-height:100dvh}.editor-app-layout{display:flex;height:100vh;height:100dvh;overflow:hidden}.editor-content{flex:1;min-width:0;overflow-y:auto;padding:clamp(14px,2.5vw,24px) clamp(16px,3vw,28px);-webkit-overflow-scrolling:touch}.editor-content::-webkit-scrollbar{width:5px}.editor-content::-webkit-scrollbar-track{background:transparent}.editor-content::-webkit-scrollbar-thumb{background:#78645033;border-radius:3px}.editor-content::-webkit-scrollbar-thumb:hover{background:#78645059}.editor-dark button{font-family:inherit;font-size:var(--text-sm);font-weight:500;padding:clamp(6px,1.2vw,8px) clamp(12px,2vw,16px);border-radius:var(--ed-radius-sm);border:1px solid rgba(160,140,110,.2);background:linear-gradient(180deg,#fcf9f2d6,#f2ece2c7);color:var(--ed-text-primary);cursor:pointer;transition:background var(--ed-transition),border-color var(--ed-transition),color var(--ed-transition),box-shadow var(--ed-transition),transform var(--ed-transition);min-height:clamp(36px,6vw,40px);display:inline-flex;align-items:center;gap:6px;box-shadow:0 1px 2px #2c24160a;touch-action:manipulation}[data-theme=dark] .editor-dark button{background:linear-gradient(180deg,#262030cc,#1e1a28bf);border-color:#7864502e}.editor-dark button:hover:not(:disabled){background:linear-gradient(180deg,#fffcf7eb,#faf4ecd9);border-color:#8c6e5059;box-shadow:0 2px 6px #2c241614}[data-theme=dark] .editor-dark button:hover:not(:disabled){background:linear-gradient(180deg,#2c2636d9,#241e2ecc);border-color:#b48c644d}.editor-dark button:active:not(:disabled){transform:scale(.985);background:#e6dfd4e6}.editor-dark button:disabled{opacity:.4;cursor:not-allowed}.editor-dark button.primary{background:linear-gradient(180deg,#d4654e,#c44b3c);border-color:#c44b3c;color:#fff;font-weight:600;box-shadow:0 2px 6px #c44b3c40}.editor-dark button.primary:hover:not(:disabled){background:linear-gradient(180deg,#e07050,#d4654e);border-color:#d4654e;box-shadow:0 3px 10px #c44b3c59}.editor-dark button.ghost{background:transparent;border-color:transparent;color:var(--ed-text-secondary);box-shadow:none}.editor-dark button.ghost:hover:not(:disabled){background:#8c785a14;color:var(--ed-text-primary);box-shadow:none}.editor-dark button.danger{background:var(--ed-danger-bg);border-color:var(--ed-danger-border);color:var(--ed-danger)}.editor-dark button.danger:hover:not(:disabled){background:#d93a3a1f;border-color:#d93a3a4d}.editor-dark input:not(.sidebar-input),.editor-dark textarea:not(.sidebar-textarea){font-family:inherit;font-size:var(--text-base);padding:clamp(8px,1.5vw,12px) clamp(10px,2vw,14px);border-radius:var(--ed-radius-sm);border:1.5px solid var(--ed-input-border);background:var(--ed-input-bg);color:var(--ed-text-primary);outline:none;transition:border-color var(--ed-transition),box-shadow var(--ed-transition),background var(--ed-transition);width:100%;box-sizing:border-box}.editor-dark input:not(.sidebar-input):focus,.editor-dark textarea:not(.sidebar-textarea):focus{border-color:var(--ed-input-focus);background:#fffcf7f2;box-shadow:0 0 0 3px var(--ed-input-focus-ring),0 2px 8px #2c24160f}.editor-dark input:not(.sidebar-input)::placeholder,.editor-dark textarea:not(.sidebar-textarea)::placeholder{color:var(--ed-text-muted)}.editor-dark select{font-family:inherit;font-size:var(--text-sm);padding:8px 10px;border-radius:var(--ed-radius-sm);border:1.5px solid var(--ed-input-border);background:var(--ed-input-bg);color:var(--ed-text-primary);outline:none;cursor:pointer;transition:border-color var(--ed-transition),box-shadow var(--ed-transition)}.editor-dark select:focus{border-color:var(--ed-input-focus);box-shadow:0 0 0 3px var(--ed-input-focus-ring)}@media(max-width:640px){.editor-app-layout{flex-direction:column}.editor-content{padding:clamp(10px,3vw,16px);flex:1;height:auto}}@media(hover:none)and (pointer:coarse){.editor-dark button{min-height:44px}.editor-dark input,.editor-dark textarea,.editor-dark select{font-size:16px}}:root{--ad-canvas: #ffffff;--ad-surface-1: #ffffff;--ad-surface-2: #f5f5f6;--ad-surface-3: #ececee;--ad-surface-4: #e4e4e7;--ad-hairline: #e0e2e8;--ad-hairline-strong: #d0d2d9;--ad-ink: #18181b;--ad-ink-muted: #3f3f46;--ad-ink-subtle: #71717a;--ad-ink-tertiary: #a1a1aa;--ad-primary: #5e6ad2;--ad-primary-hover: #4a55c4;--ad-primary-focus: #535dc0;--ad-on-primary: #ffffff;--ad-success: #16a34a;--ad-danger: #dc2626;--ad-danger-bg: rgba(220, 38, 38, .08);--ad-radius-xs: 4px;--ad-radius-sm: 6px;--ad-radius-md: 8px;--ad-radius-lg: 12px;--ad-radius-pill: 9999px;--ad-font: Inter, -apple-system, "Segoe UI", Roboto, "PingFang SC", "Microsoft YaHei", sans-serif;--ad-font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}body{background:var(--color-bg) var(--ad-bg-image, none) center / cover no-repeat fixed;color:var(--ad-ink);font-family:var(--ad-font)}:root{--color-bg: var(--ad-canvas);--color-bg-rice: var(--ad-canvas);--color-bg-book: var(--ad-canvas);--color-bg-alt: var(--ad-surface-1);--color-surface: var(--ad-surface-1);--color-surface-elevated: var(--ad-surface-1);--color-surface-glass: var(--ad-surface-2);--glass-bg: var(--ad-surface-2);--glass-blur: 0;--color-card: var(--ad-surface-1);--color-card-hover: var(--ad-surface-2);--color-text-primary: var(--ad-ink);--color-text-secondary: var(--ad-ink-muted);--color-text-muted: var(--ad-ink-subtle);--color-text-inverse: var(--ad-ink);--color-muted: var(--ad-ink-subtle);--color-wood-dark: var(--ad-ink);--color-primary: var(--ad-primary);--color-primary-light: var(--ad-surface-2);--color-border: var(--ad-hairline);--color-border-light: var(--ad-hairline);--color-border-elevated: var(--ad-hairline);--color-border-ink: var(--ad-hairline-strong);--color-accent: var(--ad-primary);--color-accent-hover: var(--ad-primary-hover);--color-accent-light: color-mix(in srgb, var(--ad-primary) 12%, transparent);--color-accent-glow: var(--ad-hairline-strong);--color-accent-text: var(--ad-on-primary);--color-accent-dark: var(--ad-primary-focus);--color-gold: var(--ad-primary);--color-gold-dark: var(--ad-primary);--color-gold-light: var(--ad-surface-2);--color-gold-text: var(--ad-ink-muted);--color-jade: var(--ad-success);--color-jade-hover: color-mix(in srgb, var(--ad-success) 85%, white);--color-jade-light: color-mix(in srgb, var(--ad-success) 12%, transparent);--color-jade-dark: var(--ad-success);--color-jade-text: var(--ad-success);--color-jade-glow: var(--ad-hairline-strong);--color-danger: var(--ad-danger);--color-danger-hover: var(--ad-danger);--color-danger-light: var(--ad-danger-bg);--color-danger-text: var(--ad-danger);--color-success: var(--ad-success);--color-success-light: color-mix(in srgb, var(--ad-success) 12%, transparent);--color-success-text: var(--ad-success);--color-warning: #e8a860;--color-warning-light: rgba(232, 168, 96, .12);--color-warning-text: #f0c880;--color-amber: #e8a860;--color-amber-light: rgba(232, 168, 96, .12);--color-amber-text: #f0c880;--color-amber-hover: #f0b878;--color-amber-glow: var(--ad-hairline-strong);--color-indigo: var(--ad-ink-subtle);--color-indigo-light: var(--ad-surface-2);--color-indigo-text: var(--ad-ink-subtle);--color-indigo-dark: var(--ad-ink-subtle);--color-indigo-glow: var(--ad-hairline-strong);--color-indigo-hover: var(--ad-ink-muted);--gradient-accent: var(--ad-primary);--gradient-amber: var(--ad-primary);--gradient-card: var(--ad-surface-1);--gradient-glass: var(--ad-surface-1);--gradient-gold: var(--ad-primary);--gradient-hero: var(--ad-surface-1);--gradient-indigo: var(--ad-primary);--gradient-jade: var(--ad-success);--shadow-sm: none;--shadow-md: none;--shadow-lg: none;--shadow-xl: none;--shadow-card: none;--shadow-card-hover: none;--shadow-soft: none;--shadow-strong: none;--shadow-glow: none;--shadow-stamp: none;--font-body: var(--ad-font);--font-display: var(--ad-font);--font-calligraphy: var(--ad-font);--font-number: var(--ad-font);--font-mono: var(--ad-font-mono);--font-pinyin: var(--ad-font)}.panel{background:var(--ad-surface-1);border:1px solid var(--ad-hairline);border-radius:var(--ad-radius-lg);color:var(--ad-ink);box-shadow:0 1px 2px #0000000a}.overlay{background:#0009}.modal{background:var(--ad-surface-1);border:1px solid var(--ad-hairline-strong);border-radius:var(--ad-radius-lg);color:var(--ad-ink);box-shadow:0 8px 30px #0000001f}.btn-primary{background:var(--ad-primary);color:var(--ad-on-primary);border-radius:var(--ad-radius-md);font-family:var(--ad-font)}.btn-primary:hover:not(:disabled){background:var(--ad-primary-hover)}.btn-primary:active:not(:disabled){background:var(--ad-primary-focus)}.btn-ghost{background:var(--ad-surface-1);border:1px solid var(--ad-hairline);color:var(--ad-ink);border-radius:var(--ad-radius-md);font-family:var(--ad-font)}.btn-ghost:hover:not(:disabled){background:var(--ad-surface-2);border-color:var(--ad-hairline-strong)}.btn-danger{background:transparent;border:1px solid var(--ad-danger);color:var(--ad-danger);border-radius:var(--ad-radius-md);font-family:var(--ad-font)}.btn-danger:hover:not(:disabled){background:var(--ad-danger-bg)}.tip{color:var(--ad-ink-subtle)}.progress-table th{color:var(--ad-ink-subtle);border-bottom:1px solid var(--ad-hairline)}.progress-table td{border-top:1px solid var(--ad-hairline);color:var(--ad-ink-muted)}input,select,textarea{background:var(--ad-surface-1);border:1px solid var(--ad-hairline);border-radius:var(--ad-radius-md);color:var(--ad-ink);font-family:var(--ad-font)}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--ad-primary-focus) 50%,transparent);border-color:var(--ad-hairline-strong)}.ad-panel{background:var(--ad-surface-1);border:1px solid var(--ad-hairline);border-radius:var(--ad-radius-lg)}.ad-badge{display:inline-flex;align-items:center;gap:4px;background:var(--ad-surface-2);color:var(--ad-ink-muted);border-radius:var(--ad-radius-pill);padding:2px 8px;font-size:12px}.ad-badge-success{background:color-mix(in srgb,var(--ad-success) 14%,transparent);color:var(--ad-success)}.ad-badge-danger{background:var(--ad-danger-bg);color:var(--ad-danger)}.ad-message{padding:10px 14px;border-radius:var(--ad-radius-md);font-size:.85rem}.ad-message-error{color:var(--ad-danger);background:var(--ad-danger-bg);border:1px solid var(--ad-danger)}.ad-message-ok{color:var(--ad-success);background:color-mix(in srgb,var(--ad-success) 12%,transparent);border:1px solid var(--ad-success)}
