.popover-menu[data-v-efd10e4a]{position:fixed;z-index:240;min-width:9.5rem;padding:.3rem;background:var(--surface-content);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow-2);overscroll-behavior:contain}.popover-divider[data-v-efd10e4a]{border:none;border-top:1px solid color-mix(in srgb,var(--line) 75%,transparent);margin:.25rem .35rem}.popover-item[data-v-efd10e4a]{display:flex;align-items:center;gap:.45rem;width:100%;padding:.42rem .55rem;border:none;border-radius:7px;background:transparent;color:var(--ink);font-size:.88rem;text-align:left}.popover-item[data-v-efd10e4a]:hover:not(:disabled){background:var(--hover-surface)}.popover-item--danger[data-v-efd10e4a]{color:var(--danger)}.popover-item--danger[data-v-efd10e4a]:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 8%,transparent)}.popover-item-icon[data-v-efd10e4a]{flex-shrink:0;opacity:.75}.account-menu[data-v-ac62ac7a]{position:relative;z-index:1}.account-trigger[data-v-ac62ac7a]{display:inline-flex;align-items:center;gap:.45rem;max-width:12rem;padding:.25rem .45rem .25rem .25rem;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--ink);font:inherit;cursor:pointer}.account-trigger[data-v-ac62ac7a]:hover{background:var(--surface-hover)}.account-trigger[data-v-ac62ac7a]:focus-visible{outline:2px solid color-mix(in srgb,var(--accent) 45%,transparent);outline-offset:2px}.account-avatar[data-v-ac62ac7a]{display:inline-flex;align-items:center;justify-content:center;width:1.85rem;height:1.85rem;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.8rem;font-weight:650;flex-shrink:0}.account-name[data-v-ac62ac7a]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;font-weight:500}.account-chevron[data-v-ac62ac7a]{flex-shrink:0;color:var(--ink-soft)}.app-footer[data-v-a17eddb9]{flex-shrink:0;border-top:1px solid var(--line);background:var(--surface-content)}.app-footer-inner[data-v-a17eddb9]{width:min(1100px,calc(100% - 2rem));margin:0 auto;padding:1.1rem 0 1.35rem;display:flex;align-items:center;justify-content:space-between;gap:1rem}.app-footer-brand[data-v-a17eddb9]{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:.35rem .65rem;font-size:.9rem}.app-footer-name[data-v-a17eddb9]{font-family:var(--display);letter-spacing:.04em}.app-footer-slogan[data-v-a17eddb9]{font-size:.82rem}.app-footer-nav[data-v-a17eddb9]{display:flex;align-items:center;gap:1rem}.app-footer-link[data-v-a17eddb9]{font-size:.9rem;color:var(--ink-soft);padding:.25rem .45rem;border-radius:var(--radius-sm)}.app-footer-link[data-v-a17eddb9]:hover{color:var(--ink);background:var(--hover-surface)}.app-footer-link.router-link-active[data-v-a17eddb9]{color:var(--ink);font-weight:600}.app-footer-link--quiet[data-v-a17eddb9]{font-size:.78rem;font-weight:400;opacity:.78}.app-footer-link--quiet.router-link-active[data-v-a17eddb9]{font-weight:500;opacity:1}.toast-host[data-v-a76c6335]{position:fixed;left:50%;bottom:1.5rem;z-index:300;display:flex;flex-direction:column-reverse;align-items:center;gap:.45rem;width:max-content;max-width:min(22rem,calc(100vw - 2rem));transform:translate(-50%);pointer-events:none}.toast[data-v-a76c6335]{pointer-events:auto;padding:.65rem 1rem;border-radius:999px;border:1px solid var(--line);background:var(--ink);color:#fff;font-size:.9rem;line-height:1.35;text-align:center;box-shadow:0 10px 28px #1f232938;cursor:default;animation:toast-in-a76c6335 .16s ease-out}.toast--success[data-v-a76c6335]{background:var(--ink)}.toast--error[data-v-a76c6335]{background:var(--danger);border-color:color-mix(in srgb,var(--danger) 70%,#000)}.toast--default[data-v-a76c6335]{background:var(--ink)}@keyframes toast-in-a76c6335{0%{opacity:0;transform:translateY(.4rem)}to{opacity:1;transform:translateY(0)}}.topnav-end[data-v-07bac3fd]{display:flex;align-items:center;margin-left:auto}.guest-auth[data-v-07bac3fd]{display:flex;align-items:center;gap:.65rem}.guest-auth-link[data-v-07bac3fd]{color:var(--ink-soft);font-size:.9rem;font-weight:500}.guest-auth-link[data-v-07bac3fd]:hover{color:var(--ink)}.guest-auth-cta[data-v-07bac3fd]{display:inline-flex;align-items:center;min-height:var(--control-h-md);padding:0 .95rem;border-radius:var(--radius-md);background:var(--accent);color:#fff;font-size:.9rem;font-weight:600;text-decoration:none}.guest-auth-cta[data-v-07bac3fd]:hover{filter:brightness(1.05)}.app-main[data-v-07bac3fd]{min-height:0}:root{--bg: #faf7f2;--bg-deep: #f0ebe3;--surface-sidebar: #faf7f2;--surface-content: #ffffff;--surface-sunken: #f7f3ec;--surface-hover: #f0ebe3;--panel: #ffffff;--ink: #2a2118;--ink-secondary: #6b5f52;--ink-soft: #9a8f84;--line: #e8e0d4;--accent: #c45c26;--accent-2: #e8a83a;--danger: #c23b3b;--accent-soft: color-mix(in srgb, var(--accent) 12%, transparent);--accent-2-soft: color-mix(in srgb, var(--accent-2) 16%, transparent);--danger-soft: color-mix(in srgb, var(--danger) 10%, transparent);--hover-surface: color-mix(in srgb, var(--ink) 5%, transparent);--active-surface: color-mix(in srgb, var(--ink) 8%, transparent);--success-fg: #1a7f5a;--success-bg: color-mix(in srgb, #1a7f5a 12%, transparent);--success-border: color-mix(in srgb, #1a7f5a 35%, var(--line));--warning-fg: color-mix(in srgb, var(--accent) 70%, #8a5a00);--warning-bg: var(--accent-2-soft);--warning-border: color-mix(in srgb, var(--accent-2) 45%, var(--line));--danger-fg: var(--danger);--danger-bg: var(--danger-soft);--danger-border: color-mix(in srgb, var(--danger) 40%, var(--line));--radius-xs: 4px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 999px;--radius: var(--radius-md);--shadow-1: 0 1px 2px rgba(42, 33, 24, .04), 0 1px 3px rgba(42, 33, 24, .06);--shadow-2: 0 4px 16px rgba(42, 33, 24, .08);--shadow-3: 0 16px 48px rgba(42, 33, 24, .14);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.75rem;--space-7: 2.5rem;--space-8: 3.5rem;--space-section: var(--space-7);--space-group: var(--space-4);--space-tight: var(--space-2);--control-h-sm: 1.75rem;--control-h-md: 2.15rem;--control-h-lg: 2.5rem;--icon-sm: 14px;--icon-md: 16px;--icon-lg: 20px;--focus-ring: 0 0 0 2px var(--surface-content), 0 0 0 4px color-mix(in srgb, var(--ink) 22%, transparent);--ease: ease;--duration: .16s;--font: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", sans-serif;--display: "Songti SC", "Source Han Serif SC", "Noto Serif SC", "SimSun", serif;--mono: "SF Mono", "JetBrains Mono", Menlo, Consolas, "Liberation Mono", monospace;--code-bg: var(--ink);--code-fg: #f2ede6;--code-inline-bg: var(--surface-sunken);--code-keyword: var(--accent-2);--code-string: #9ec27a;--code-number: #e0a878;--code-title: #8ec5e6;--code-type: #e6cf9a;--code-meta: #c0a9d6;--code-comment: rgba(242, 237, 230, .45);color:var(--ink);background:var(--bg);font-family:var(--font);line-height:1.5}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}p{margin:0}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--ink);background:var(--ink);color:#fff;border-radius:var(--radius-md);padding:0 1.1rem;min-height:var(--control-h-md);transition:background var(--duration) var(--ease),border-color var(--duration) var(--ease),color var(--duration) var(--ease),opacity var(--duration) var(--ease)}button:hover:not(:disabled){background:color-mix(in srgb,var(--ink) 88%,#fff)}button:active:not(:disabled){background:color-mix(in srgb,var(--ink) 78%,#000)}button:focus-visible{outline:none;box-shadow:var(--focus-ring)}button.secondary{background:transparent;color:var(--ink);border-color:var(--line)}button.secondary:hover:not(:disabled){background:var(--hover-surface);border-color:color-mix(in srgb,var(--ink) 25%,var(--line))}button.ghost{background:transparent;border-color:transparent;color:var(--ink-soft);padding-inline:.6rem}button.ghost:hover:not(:disabled){background:var(--hover-surface);color:var(--ink)}button.soft{border:none;background:transparent;color:inherit;min-height:0;padding:0;border-radius:var(--radius-sm);box-shadow:none}button.soft:hover:not(:disabled),button.soft:active:not(:disabled){background:var(--hover-surface);color:var(--ink);border-color:transparent}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 88%,#000)}button:disabled{opacity:.5;cursor:not-allowed}input,textarea,select{border:1px solid var(--line);background:var(--surface-content);border-radius:var(--radius-sm);padding:.55rem .8rem;min-height:var(--control-h-md);transition:border-color var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}label.stack>input,label.stack>textarea,label.stack>select,.field input,.field textarea,.field select,.input-block{width:100%}input:hover,textarea:hover,select:hover{border-color:color-mix(in srgb,var(--ink) 22%,var(--line))}input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;border-color:color-mix(in srgb,var(--ink) 35%,var(--line));box-shadow:var(--focus-ring)}textarea{min-height:120px;resize:none;line-height:1.55}.app-shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto;background:var(--bg)}.app-shell>.app-main{min-height:0}.topnav{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1.4rem;border-bottom:1px solid var(--line);background:var(--surface-content);position:sticky;top:0;z-index:20}.brand{font-family:var(--display);font-weight:700;font-size:1.35rem;letter-spacing:.04em}.brand span{color:var(--accent);margin-left:.35rem;font-size:.85rem;font-family:var(--font);font-weight:500}.page{width:min(1100px,calc(100% - 2rem));margin:var(--space-6) auto var(--space-8);display:grid;gap:var(--space-section)}.page--wide{width:min(1280px,calc(100% - 2rem))}.page--flush{width:100%;max-width:none;margin:0;gap:0}.page-section{display:grid;gap:var(--space-group)}.hero-title{font-family:var(--display);font-size:clamp(1.55rem,2.6vw,2rem);font-weight:700;margin:0;letter-spacing:.01em}.page-lead{color:var(--ink-soft);font-size:.95rem;margin-top:var(--space-2)}.muted{color:var(--ink-soft)}.empty-text{color:var(--ink-soft);font-size:.9rem;font-style:italic;opacity:.85}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:1.1rem 1.2rem;box-shadow:var(--shadow-1)}.grid-books{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,320px));justify-content:start;gap:var(--space-4)}.book{display:flex;flex-direction:column;padding:0;overflow:hidden;border-radius:var(--radius-lg);border:1px solid var(--line);background:var(--surface-content);box-shadow:var(--shadow-1);transition:transform var(--duration) var(--ease),box-shadow var(--duration) var(--ease),border-color var(--duration) var(--ease)}.book:hover{transform:translateY(-2px);box-shadow:var(--shadow-2);border-color:color-mix(in srgb,var(--accent) 25%,var(--line))}.book:focus-visible{outline:none;box-shadow:var(--focus-ring)}.book h3{margin:0;font-family:var(--display);font-size:1.1rem;font-weight:650}.progress{height:4px;background:var(--bg-deep);border-radius:var(--radius-full);overflow:hidden}.progress>i{display:block;height:100%;background:var(--accent);border-radius:inherit}.row{display:flex;gap:.75rem;align-items:center;flex-wrap:wrap}.stack{display:grid;gap:.85rem}.input-group{display:flex;align-items:stretch;gap:.55rem;width:100%;max-width:28rem}.input-group input{flex:1 1 auto;width:auto;min-width:0}.input-group button{flex-shrink:0}.auth-card{width:min(420px,100%);margin:4rem auto}.auth-hero{width:min(440px,100%);margin:4.5rem auto 2rem;text-align:center}.auth-hero .brand{font-size:clamp(2rem,5vw,2.6rem);display:block}.auth-hero .brand span{display:inline;font-size:.55em}.auth-hero-lead{margin-top:var(--space-3);color:var(--ink-secondary);font-size:1.05rem}.block{border-top:1px dashed var(--line);padding:1.2rem 0}.block:first-child{border-top:0}.quiz-stem{font-weight:600;color:var(--ink)}.quiz-stem pre,.quiz-stem code,.quiz-stem .katex{font-weight:400}.quiz-stem .cx-quiz-blank{display:inline}.quiz-stem td .cx-quiz-blank,.quiz-stem th .cx-quiz-blank{display:inline-flex;justify-content:center}.quiz-stem td .formula-field--inline,.quiz-stem th .formula-field--inline{margin-inline:0}.quiz-stem .cx-quiz-grid{display:grid;gap:.7rem 1.15rem;align-items:baseline;margin:.35em 0 .85em}.quiz-stem .cx-quiz-grid--2{grid-template-columns:repeat(2,minmax(0,1fr))}.quiz-stem .cx-quiz-grid--3{grid-template-columns:repeat(3,minmax(0,1fr))}.quiz-stem .cx-quiz-grid--4{grid-template-columns:repeat(4,minmax(0,1fr))}.quiz-stem .cx-quiz-grid--5{grid-template-columns:repeat(5,minmax(0,1fr))}.quiz-stem .cx-quiz-grid--6{grid-template-columns:repeat(6,minmax(0,1fr))}.quiz-stem .cx-quiz-grid-item{min-width:0}@media(max-width:40rem){.quiz-stem .cx-quiz-grid--3,.quiz-stem .cx-quiz-grid--4,.quiz-stem .cx-quiz-grid--5,.quiz-stem .cx-quiz-grid--6{grid-template-columns:repeat(2,minmax(0,1fr))}}.quiz-stem .quiz-blank-input{display:inline-block;width:4ch;max-width:100%;margin:0 .12em;padding:0 .2em .05em;min-height:1.35em;border:none;border-bottom:2px solid var(--ink);border-radius:0;background:color-mix(in srgb,var(--accent) 7%,transparent);font:inherit;font-weight:600;line-height:1.3;text-align:center;vertical-align:baseline;box-shadow:none}.quiz-stem .quiz-blank-input:hover{border-bottom-color:var(--accent)}.quiz-stem .quiz-blank-input:focus-visible{outline:none;border-bottom-color:var(--accent);box-shadow:none;background:color-mix(in srgb,var(--accent) 12%,transparent)}.quiz-option{display:flex;gap:.6rem;align-items:flex-start;padding:.7rem .8rem;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--surface-content);cursor:pointer}.quiz-option>input{flex:0 0 auto;margin-top:.22rem}.quiz-option>.md{flex:1 1 auto;min-width:0}.quiz-option .md pre{cursor:text}.quiz-option.selected{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));background:var(--accent-soft)}.quiz-option:focus-within{border-color:color-mix(in srgb,var(--ink) 35%,var(--line));box-shadow:var(--focus-ring)}.feedback{padding:.7rem .9rem;border-radius:var(--radius-md);background:var(--warning-bg)}.feedback.ok{background:var(--success-bg)}.qcard{position:relative}.qcard.has-tutor{padding-right:3.6rem}button.card-tool{display:inline-flex;align-items:center;justify-content:center;gap:.2rem;height:1.85rem;min-height:0;padding:0 .55rem;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--ink-soft);font-size:.8rem;font-weight:600;line-height:1;flex-shrink:0}button.card-tool:hover:not(:disabled),button.card-tool:active:not(:disabled){background:var(--hover-surface);border-color:color-mix(in srgb,var(--ink) 25%,var(--line));color:var(--ink)}button.card-tool--icon{width:1.85rem;padding:0}button.card-tool--open{color:var(--ink);background:var(--hover-surface);border-color:color-mix(in srgb,var(--ink) 35%,var(--line))}button.card-tool svg{width:1rem;height:1rem}.qbody{position:relative;display:grid;gap:.85rem}.quiz-note{color:var(--ink-secondary)}.lab-frame{width:100%;min-height:120px;border:none;border-radius:var(--radius-md);background:var(--surface-sunken);display:block}.ai-shell{display:grid;grid-template-rows:1fr auto;min-height:420px;border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden;background:var(--surface-content)}.ai-messages{padding:1rem;overflow:auto;display:grid;gap:.75rem;max-height:480px}.bubble{padding:.75rem .95rem;border-radius:var(--radius-lg);min-width:0}.bubble.user{justify-self:end;max-width:min(85%,560px);background:var(--ink);color:#fff;border-bottom-right-radius:var(--radius-xs);white-space:pre-wrap;overflow-wrap:anywhere}.bubble.assistant{justify-self:start;max-width:100%;background:var(--bg-deep);border-bottom-left-radius:var(--radius-xs)}.bubble-md{min-width:0}.bubble.assistant .md{gap:.55rem}.ai-composer{border-top:1px solid var(--line);padding:.75rem;display:grid;gap:.55rem;background:var(--bg)}.ai-tools{display:flex;gap:.4rem;flex-wrap:wrap}.chip{border:1px solid var(--line);background:transparent;color:var(--ink-soft);border-radius:var(--radius-full);padding:.3rem .7rem;font-size:.85rem;min-height:auto}.hold-talk{border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-full);padding:.45rem 1rem;font-size:.9rem;-webkit-user-select:none;user-select:none;touch-action:none;transition:transform var(--duration) var(--ease),background var(--duration) var(--ease),box-shadow var(--duration) var(--ease)}.hold-talk.holding{background:var(--accent);color:#fff;transform:scale(1.06);box-shadow:0 0 0 6px var(--accent-soft)}.hold-talk.busy{opacity:.7}.sidebar-layout{display:grid;grid-template-columns:minmax(220px,280px) 1fr;gap:0;align-items:stretch;background:var(--surface-sidebar);min-height:0}.sidebar-layout>.tree-pane,.sidebar-layout>aside.tree-pane{background:var(--surface-sidebar);border:none;border-radius:0;border-right:1px solid var(--line);-webkit-backdrop-filter:none;backdrop-filter:none;box-shadow:none;min-height:0;min-width:0}.sidebar-layout>.main-pane{background:var(--surface-content);border-radius:0;min-width:0;min-height:0}@media(max-width:800px){.sidebar-layout{grid-template-columns:1fr}.sidebar-layout>.tree-pane,.sidebar-layout>aside.tree-pane{border-right:none;border-bottom:1px solid var(--line)}.topnav{flex-wrap:wrap}.grid-books{grid-template-columns:1fr}}.list-item{display:block;padding:.55rem .7rem;border-radius:var(--radius-sm);color:var(--ink-soft)}.list-item.active,.list-item:hover{background:var(--surface-hover);color:var(--ink)}.tag,.badge{display:inline-flex;align-items:center;gap:.25rem;font-size:.72rem;font-weight:550;padding:.12rem .45rem;border-radius:var(--radius-sm);border:1px solid var(--line);color:var(--ink-soft);background:transparent;line-height:1.3}.type-chip{display:inline-flex;align-items:center;gap:.3rem;font-size:.72rem;font-weight:550;padding:.15rem .5rem;border-radius:var(--radius-sm);background:var(--surface-sunken);color:var(--ink-secondary);border:none}.counter{font-size:.8rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.tag-progress-not-started{color:var(--ink-soft);border-color:var(--line)}.tag-progress-in-progress{color:var(--warning-fg);border-color:var(--warning-border);background:var(--warning-bg)}.tag-progress-completed{color:var(--success-fg);border-color:var(--success-border);background:var(--success-bg)}.tag-course-draft{color:var(--ink-soft);border-color:var(--line)}.tag-course-published{color:var(--success-fg);border-color:var(--success-border);background:var(--success-bg)}.error{color:var(--danger)}.skeleton{background:linear-gradient(90deg,var(--bg-deep),var(--surface-hover),var(--bg-deep));background-size:200% 100%;animation:skeleton-shine 1.2s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shine{0%{background-position:100% 0}to{background-position:-100% 0}}
