@font-face{font-family:Google Sans Code;src:url(/fonts/GoogleSansCode-latin.woff2) format("woff2");font-weight:300 800;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Google Sans Code;src:url(/fonts/GoogleSansCode-latin-ext.woff2) format("woff2");font-weight:300 800;font-style:normal;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}.word{cursor:pointer}.word:hover{color:var(--accent)}.word-current{background:var(--accent-soft);border-radius:3px;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:3px}.dict-popup{--bg: #121d2e;--surface: #1c2a41;--surface-sunk: #0b1320;--line: #2b3b55;--line-strong: #3c5278;--ink: #eaf1fa;--ink-dim: #a3b4cc;--ink-faint: #76889f;--accent: #7fc4ac;--accent-ink: #0d2119;--accent-soft: #23413a;--wrong: #ef9187;--radius: 10px;--tap: 48px;--gutter: 16px;--font: "Google Sans Code", ui-monospace, SFMono-Regular, Menlo, monospace;position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);color-scheme:dark;font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;padding:calc(env(safe-area-inset-top) + 12px) var(--gutter) calc(env(safe-area-inset-bottom) + 12px);overflow-y:auto}.dict-popup h2{font-weight:600;margin:0}.dict-popup button,.dict-popup input{font:inherit;color:inherit}.dict-popup :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dict-popup .icon-btn{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);padding:0;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.dict-popup .icon-btn:hover:not(:disabled){border-color:var(--line-strong)}.dict-popup .icon-btn.quiet{border-color:transparent;background:transparent;color:var(--ink-dim)}.dict-popup .icon-btn.quiet:hover:not(:disabled){color:var(--ink);border-color:var(--line)}.dict-popup .icon-btn.primary{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.dict-popup .icon-btn[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.dict-popup .icon-btn:disabled{opacity:.4;cursor:default}.dict-popup .icon-btn.inline-speak{width:22px;height:22px;vertical-align:middle}.dict-popup .icon-btn.inline-speak svg{width:14px;height:14px}.dict-popup .inline-form{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dict-popup .inline-form input{flex:1;min-width:0;height:var(--tap);padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface)}.dict-head{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:6px;padding:4px 0;background:var(--bg)}.dict-word{flex:1;min-width:0;overflow-wrap:anywhere}.dict-body{display:flex;flex-direction:column;gap:var(--gutter);padding-top:12px}.dict-status{color:var(--ink-dim);text-align:center;padding:24px 8px}.dict-image{width:100%;max-height:200px;object-fit:contain;border-radius:var(--radius);background:var(--surface-sunk)}.dict-phonetic{display:flex;align-items:center;gap:8px;color:var(--ink-dim)}.dict-group{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:var(--radius);background:var(--surface)}.pos-badge{align-self:flex-start;padding:2px 10px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:.75rem;font-weight:600}.dict-def p{margin:0 0 4px}.dict-example{color:var(--ink-dim);font-style:italic}.dict-head .inline-form{flex:1;flex-wrap:nowrap}.dict-foot{display:flex;align-items:center;justify-content:space-between}.dict-foot .report-failed{color:var(--wrong)}.dict-foot-actions{display:flex;align-items:center}.dict-source{margin:0;color:var(--ink-faint);font-size:.75rem}.dict-popup .dict-close-bottom{flex:none;width:100%;height:48px;border-radius:var(--radius);margin-top:8px}.markmap-box{position:relative;flex:none;height:200px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.markmap-box,.markmap-full{background:#fff;color:#333;--markmap-text-color: #333;--markmap-circle-open-bg: #fff}.markmap-box .icon-btn.quiet,.markmap-full .icon-btn.quiet{color:#555}.markmap-svg{width:100%;height:100%}.markmap-expand{position:absolute;top:8px;right:8px}.markmap-full{position:fixed;inset:0;z-index:60}.markmap-full .markmap-svg{width:100%;height:100%}.markmap-close{position:absolute;top:calc(env(safe-area-inset-top) + 8px);right:8px;z-index:1}:root{color-scheme:light dark;--ink: #1e1b16;--ink-soft: #4a453c;--ink-faint: #7d7668;--paper: #faf8f4;--paper-raised: #ffffff;--paper-sunk: #f1ece3;--rule: #e3dbcd;--accent: #8a6a3b;--accent-soft: #f0e6d6;--danger: #9c3b2e;--ok: #3c6b4a;--font-latin-serif: Georgia, "Iowan Old Style", "Palatino Linotype", "Times New Roman", serif;--font-latin-sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-cjk-serif: "Songti SC", "Noto Serif SC", "Source Han Serif SC", "STSong", serif;--font-cjk-sans: "PingFang SC", "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei", sans-serif;--size-body: 1.0625rem;--size-body-lg: 1.1875rem;--leading-body: 1.65;--tracking-body: .003em;--size-body-cjk: 1.0625rem;--size-body-lg-cjk: 1.125rem;--leading-body-cjk: 1.95;--tracking-body-cjk: .01em;--size-xs: .75rem;--size-sm: .8125rem;--size-md: .9375rem;--size-lg: 1.25rem;--size-xl: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 14px;--radius-pill: 999px;--measure: 34rem;--shell-max: 62rem;--nav-height: 3.75rem;--tap: 44px;--shadow-card: 0 1px 2px rgb(30 27 22 / .05), 0 8px 24px -16px rgb(30 27 22 / .18);--transition: .16s cubic-bezier(.2, 0, .2, 1)}[data-theme=dark]{--ink: #ece6da;--ink-soft: #b3ab9c;--ink-faint: #857e70;--paper: #17150f;--paper-raised: #201d16;--paper-sunk: #100e0a;--rule: #322d23;--accent: #c9a568;--accent-soft: #2b2418;--danger: #d1705f;--ok: #7aab85}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--ink: #ece6da;--ink-soft: #b3ab9c;--ink-faint: #857e70;--paper: #17150f;--paper-raised: #201d16;--paper-sunk: #100e0a;--rule: #322d23;--accent: #c9a568;--accent-soft: #2b2418;--danger: #d1705f;--ok: #7aab85}}:root:lang(zh),[lang=zh]{--font-reading: var(--font-cjk-serif);--font-ui: var(--font-cjk-sans);--size-reading: var(--size-body-cjk);--size-reading-lg: var(--size-body-lg-cjk);--leading-reading: var(--leading-body-cjk);--tracking-reading: var(--tracking-body-cjk)}:root,[lang=en]{--font-reading: var(--font-latin-serif);--font-ui: var(--font-latin-sans);--size-reading: var(--size-body);--size-reading-lg: var(--size-body-lg);--leading-reading: var(--leading-body);--tracking-reading: var(--tracking-body)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--paper);overscroll-behavior-x:none;color:var(--ink);font-family:var(--font-ui);font-size:var(--size-md);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}img{max-width:100%;display:block}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}a{color:inherit;text-decoration-color:var(--rule);text-underline-offset:3px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.shell{display:grid;grid-template-columns:1fr;min-height:100%;padding-bottom:calc(var(--nav-height) + env(safe-area-inset-bottom))}.shell__main{width:100%;max-width:var(--shell-max);margin:0 auto;padding:var(--space-4) var(--space-4) var(--space-7)}.column{max-width:var(--measure);margin:0 auto}@media(min-width:62rem){.shell{grid-template-columns:15rem 1fr;padding-bottom:0}.shell__main{padding-inline:var(--space-6)}}.bottomnav{position:fixed;inset:auto 0 0;z-index:20;display:grid;grid-template-columns:repeat(2,1fr);background:color-mix(in srgb,var(--paper-raised) 92%,transparent);backdrop-filter:blur(12px);border-top:1px solid var(--rule);padding-bottom:env(safe-area-inset-bottom)}.bottomnav a{min-height:var(--tap);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:var(--size-xs);color:var(--ink-faint);text-decoration:none;padding:var(--space-2) 0}.bottomnav a[aria-current=page]{color:var(--accent)}.sidenav{display:none}@media(min-width:62rem){.bottomnav{display:none}.sidenav{display:flex;flex-direction:column;gap:var(--space-2);position:sticky;top:0;align-self:start;height:100vh;padding:var(--space-6) var(--space-4);border-right:1px solid var(--rule)}.sidenav a{padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);text-decoration:none;color:var(--ink-soft)}.sidenav a[aria-current=page]{background:var(--accent-soft);color:var(--accent)}}.wordmark{font-family:var(--font-latin-serif);font-size:var(--size-lg);letter-spacing:-.01em;margin-bottom:var(--space-5);display:block;text-decoration:none}.card{background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-4);box-shadow:var(--shadow-card)}.card__head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.figure-avatar{width:2rem;height:2rem;border-radius:50%;object-fit:cover;flex:none}.figure-avatar--lg{width:4rem;height:4rem}.card__figure{font-weight:600;font-size:var(--size-md);text-decoration:none}.card__meta{color:var(--ink-faint);font-size:var(--size-xs);margin-left:auto;display:flex;align-items:center;gap:var(--space-2)}.card__body{font-family:var(--font-reading);font-size:var(--size-reading);line-height:var(--leading-reading);letter-spacing:var(--tracking-reading);color:var(--ink);white-space:pre-wrap;margin:0}.card__body--lg{font-size:var(--size-reading-lg)}.card__actions{display:flex;align-items:center;gap:var(--space-1);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--rule)}.iconbtn{min-width:var(--tap);min-height:var(--tap);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-1);border-radius:var(--radius-md);color:var(--ink-faint);font-size:var(--size-sm);transition:color var(--transition),background var(--transition)}.iconbtn:hover{color:var(--ink);background:var(--paper-sunk)}.iconbtn[aria-pressed=true]{color:var(--accent)}.ai-badge{display:inline-flex;align-items:center;font-size:.625rem;font-weight:700;letter-spacing:.06em;padding:2px 6px;border-radius:var(--radius-sm);background:var(--ink);color:var(--paper);text-transform:uppercase;flex:none}.chip{display:inline-flex;align-items:center;gap:4px;font-size:var(--size-xs);color:var(--ink-soft);background:var(--paper-sunk);border:1px solid var(--rule);border-radius:var(--radius-pill);padding:2px 8px;text-decoration:none}.excerpt{border-left:3px solid var(--accent);background:var(--accent-soft);padding:var(--space-3) var(--space-4);border-radius:0 var(--radius-md) var(--radius-md) 0;margin:var(--space-3) 0}.citation{font-size:var(--size-xs);color:var(--ink-faint);font-style:italic;margin-top:var(--space-2)}.btn{min-height:var(--tap);padding:0 var(--space-4);border-radius:var(--radius-pill);border:1px solid var(--rule);background:var(--paper-raised);font-size:var(--size-md);font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);transition:background var(--transition),border-color var(--transition)}.btn:hover{background:var(--paper-sunk)}.btn--primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.btn--primary:hover{background:var(--ink-soft)}.btn--following{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn--block{width:100%}.menu{position:relative}.menu__panel{position:absolute;right:0;top:calc(100% + 4px);z-index:30;min-width:14rem;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--radius-md);box-shadow:var(--shadow-card);padding:var(--space-1)}.menu__item{display:flex;width:100%;align-items:center;gap:var(--space-2);min-height:var(--tap);padding:0 var(--space-3);border-radius:var(--radius-sm);font-size:var(--size-md);text-align:left}.menu__item:hover{background:var(--paper-sunk)}.menu__note{padding:var(--space-2) var(--space-3);font-size:var(--size-xs);color:var(--ink-faint)}.sheet-backdrop{position:fixed;inset:0;z-index:40;background:#0006;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--paper-raised);width:min(28rem,100%);border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-5) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom));max-height:90vh;overflow-y:auto}@media(min-width:40rem){.sheet-backdrop{align-items:center}.sheet{border-radius:var(--radius-lg)}}.sheet h2{margin:0 0 var(--space-3);font-family:var(--font-reading);font-size:var(--size-lg)}.prose{font-family:var(--font-reading);font-size:var(--size-reading);line-height:var(--leading-reading);color:var(--ink-soft)}.prose h1,.prose h2,.prose h3{color:var(--ink);line-height:1.3}.prose h1{font-size:var(--size-xl)}textarea,input[type=text],select{width:100%;font:inherit;color:inherit;background:var(--paper);border:1px solid var(--rule);border-radius:var(--radius-md);padding:var(--space-3);min-height:var(--tap)}textarea{resize:vertical;min-height:5rem;font-family:var(--font-reading);line-height:var(--leading-reading)}.skeleton{background:linear-gradient(90deg,var(--paper-sunk),var(--rule),var(--paper-sunk));background-size:200% 100%;animation:shimmer 1.4s infinite linear;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:12rem;margin-bottom:var(--space-4);border-radius:var(--radius-lg)}.stack>*+*{margin-top:var(--space-4)}.row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.muted{color:var(--ink-faint);font-size:var(--size-sm)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.notice{border:1px solid var(--rule);background:var(--paper-sunk);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font-size:var(--size-sm);color:var(--ink-soft)}.notice--warn{border-color:var(--danger);color:var(--danger)}.page-title{font-family:var(--font-reading);font-size:var(--size-xl);margin:0 0 var(--space-2)}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:2px;padding:2px;background:var(--paper-sunk);border:1px solid var(--rule);border-radius:var(--radius-pill)}.segmented button{min-height:var(--tap);border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-faint);font-size:var(--size-md);font-weight:500}.segmented button[aria-selected=true]{background:var(--paper-raised);color:var(--ink);box-shadow:var(--shadow-card)}.expander{min-height:var(--tap);width:100%;display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);padding:0;border:0;background:none;font-size:var(--size-md);font-weight:600;text-align:left}.expander:after{content:"›";color:var(--ink-faint);transition:transform var(--transition)}.expander>:first-child{flex:1}.expander[aria-expanded=true]:after{transform:rotate(90deg)}.mini-grid{list-style:none;padding:0;margin-bottom:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:var(--space-2)}.mini-card{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3);border:1px solid var(--rule);border-radius:var(--radius-md);background:var(--paper);min-width:0}.mini-card__link{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-decoration:none;min-width:0}.mini-card__name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.mini-card__initial{display:inline-flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);font-weight:600}.btn--sm{padding:0 var(--space-3);font-size:var(--size-sm)}
