:root{--bg: #f6f6f7;--surface: #ffffff;--surface-2: #fafafa;--border: #e8e8ea;--border-strong: #d6d6da;--text: #111113;--text-secondary: #3c3c41;--muted: #8b8b92;--accent: #111113;--accent-ink: #ffffff;--accent-hover: #2b2b30;--accent-soft: #f0f0f2;--code-bg: #f4f4f6;--code-ink: #24242a;--danger: #b3261e;--danger-soft: #f6e7e6;--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--shadow-sm: 0 1px 2px rgba(17, 17, 19, .04);--shadow-md: 0 16px 40px rgba(17, 17, 19, .16), 0 2px 8px rgba(17, 17, 19, .06);--ring: 0 0 0 3px rgba(17, 17, 19, .12);--dur: .16s;color-scheme:light}[data-theme=dark]{--bg: #0b0b0c;--surface: #141416;--surface-2: #18181a;--border: #26262a;--border-strong: #3a3a40;--text: #f4f4f5;--text-secondary: #c6c6cb;--muted: #77777f;--accent: #f4f4f5;--accent-ink: #111113;--accent-hover: #dcdce0;--accent-soft: #1f1f23;--code-bg: #1a1a1d;--code-ink: #e6e6ea;--danger: #f08a82;--danger-soft: #2a1b1a;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 16px 40px rgba(0, 0, 0, .6), 0 2px 8px rgba(0, 0, 0, .45);--ring: 0 0 0 3px rgba(244, 244, 245, .14);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;height:100%}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font:15px/1.7 -apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background var(--dur) ease,color var(--dur) ease}#app{min-height:100%}button{font:inherit;cursor:pointer;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);padding:9px 16px;min-height:38px;border-radius:10px;transition:border-color var(--dur) ease,background var(--dur) ease,color var(--dur) ease,transform var(--dur) ease}button:hover:not(:disabled){border-color:var(--text)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible{outline:none;box-shadow:var(--ring)}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}button.ghost{border-color:transparent;background:transparent;color:var(--text-secondary)}button.ghost:hover:not(:disabled){color:var(--text);background:var(--accent-soft)}button.danger{color:var(--danger);border-color:var(--danger);background:transparent}button.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}button.icon{display:inline-flex;align-items:center;justify-content:center;width:38px;padding:0;line-height:1}button.icon svg{width:18px;height:18px;stroke:currentColor}input,textarea,select{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;padding:10px 12px;width:100%;min-height:40px;transition:border-color var(--dur) ease,box-shadow var(--dur) ease,background var(--dur) ease}input::placeholder,textarea::placeholder{color:var(--muted)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--text);box-shadow:var(--ring)}textarea{resize:vertical;line-height:1.65;min-height:96px}.shell{max-width:880px;margin:0 auto;padding:28px 24px 96px}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:14px;padding:16px 0 20px;margin-bottom:4px;background:linear-gradient(var(--bg) 78%,transparent)}.brand{display:flex;align-items:baseline;gap:8px;font-weight:700;font-size:19px;letter-spacing:-.2px}.brand .dot{width:8px;height:8px;border-radius:50%;background:var(--text);align-self:center}.spacer{flex:1}.tabs{display:inline-flex;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:4px;margin-bottom:24px;overflow-x:auto;max-width:100%;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tabs button{border:none;background:transparent;color:var(--muted);padding:8px 18px;min-height:36px;border-radius:999px;white-space:nowrap;transition:color var(--dur) ease,background var(--dur) ease}.tabs button:hover:not(.active){color:var(--text)}.tabs button.active{background:var(--text);color:var(--bg);font-weight:600}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;box-shadow:var(--shadow-sm)}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.hint{color:var(--muted);font-size:13px}.error{color:var(--danger);font-size:14px}.empty{color:var(--muted);text-align:center;padding:72px 24px;font-size:15px}.empty .empty-mark{font-size:30px;color:var(--border-strong);margin-bottom:12px;letter-spacing:4px}.shell.auth{max-width:420px;padding-top:14vh}.auth .panel{padding:36px 32px}.auth .brand{font-size:26px;justify-content:center;margin-bottom:4px}.auth .sub{text-align:center;color:var(--muted);margin:0 0 24px;font-size:14px}.note-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}.note-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 18px 16px;cursor:pointer;transition:border-color var(--dur) ease,box-shadow var(--dur) ease,transform var(--dur) ease;animation:rise .3s ease both}.note-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-sm);transform:translateY(-2px)}.note-title{font-weight:600;font-size:16px;margin-bottom:6px;word-break:break-word;letter-spacing:-.1px}.note-preview{color:var(--muted);font-size:13.5px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.note-meta{display:flex;gap:8px;align-items:center;margin-top:14px;font-size:12px;color:var(--muted);flex-wrap:wrap}.chip{background:var(--accent-soft);color:var(--text-secondary);border-radius:999px;padding:2px 11px;font-size:12px;line-height:1.5}.markdown{word-break:break-word;color:var(--text-secondary)}.markdown>:first-child{margin-top:0}.markdown>:last-child{margin-bottom:0}.markdown pre{background:var(--code-bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;overflow-x:auto}.markdown code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;color:var(--code-ink)}.markdown :not(pre)>code{background:var(--code-bg);border:1px solid var(--border);border-radius:5px;padding:1px 6px}.markdown table{border-collapse:collapse;width:100%;display:block;overflow-x:auto}.markdown th,.markdown td{border:1px solid var(--border);padding:8px 14px;text-align:left}.markdown th{background:var(--surface-2);font-weight:600}.markdown img{max-width:100%;border-radius:var(--radius-sm)}.markdown blockquote{margin:0;padding:4px 0 4px 16px;border-left:2px solid var(--border-strong);color:var(--muted)}.markdown hr{border:none;border-top:1px solid var(--border);margin:20px 0}.hljs{color:var(--code-ink);background:transparent}.hljs-comment,.hljs-quote{color:var(--muted);font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-built_in,.hljs-type{color:var(--text);font-weight:600}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-number,.hljs-literal,.hljs-attr,.hljs-variable,.hljs-template-variable{color:var(--text-secondary)}.hljs-title,.hljs-title.function_,.hljs-title.class_,.hljs-section{color:var(--text);font-weight:600}.hljs-symbol,.hljs-bullet,.hljs-meta{color:var(--muted)}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.card-stage{min-height:320px;display:flex;flex-direction:column;gap:24px;padding:28px 28px 24px}.card-question{font-size:22px;font-weight:600;line-height:1.55;white-space:pre-wrap;word-break:break-word;letter-spacing:-.2px}.card-answer{border-top:1px solid var(--border);padding-top:20px;animation:rise .25s ease both}.grade-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.grade-row button{padding:16px 10px;min-height:64px;flex-direction:column;align-items:center;gap:4px}.grade-row button small{display:block;font-size:12px;font-weight:400}.progress-bar{height:4px;background:var(--border);border-radius:999px;overflow:hidden}.progress-bar>span{display:block;height:100%;background:var(--text);transition:width .3s ease}.kbd-hint{display:flex;gap:6px;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:12px}.kbd-hint kbd{font-family:inherit;background:var(--surface);border:1px solid var(--border-strong);border-radius:6px;padding:1px 7px;font-size:11px;color:var(--text-secondary)}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b0b0c66;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px 40px;overflow-y:auto;z-index:20;animation:fade .18s ease both}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:min(760px,100%);padding:26px;box-shadow:var(--shadow-md);animation:pop .22s cubic-bezier(.16,1,.3,1) both}.label{display:block;font-size:13px;color:var(--muted);margin-bottom:6px}.field{margin-bottom:18px}.preview-box{border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;min-height:88px;background:var(--surface-2)}.import-row{display:grid;grid-template-columns:1fr 1.4fr 130px;gap:10px;align-items:start;padding:14px 0;border-bottom:1px solid var(--border)}.import-row:last-child{border-bottom:none}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;transition-duration:.001ms!important}}@media(max-width:640px){.shell{padding:20px 16px 80px}.panel{padding:18px}.card-stage{padding:20px 18px}.note-list,.import-row,.grade-row{grid-template-columns:1fr}}
