:root{--bg: #f7f5f0;--surface: #ffffff;--surface-2: #f2f0ea;--text: #1c1c22;--muted: #6a6a75;--border: #e3e0d7;--accent: #4f46e5;--accent-ink: #ffffff;--accent-soft: #eceefe;--good: #15803d;--good-soft: #e5f5ea;--warn: #b45309;--warn-soft: #fcf1df;--trap: #be123c;--trap-soft: #fde8ec;--mark: #fff0a0;--shadow: 0 1px 2px rgba(20, 20, 30, .05), 0 2px 8px rgba(20, 20, 30, .04);--radius: 14px;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #131419;--surface: #1b1c23;--surface-2: #23252e;--text: #ececf2;--muted: #9b9bab;--border: #2d2f3a;--accent: #8f8aff;--accent-ink: #14141c;--accent-soft: #252548;--good: #4ade80;--good-soft: #15301f;--warn: #fbbf24;--warn-soft: #35290f;--trap: #fb7185;--trap-soft: #3a1820;--mark: rgba(250, 204, 21, .28);--shadow: none;color-scheme:dark}}:root[data-theme=dark]{--bg: #131419;--surface: #1b1c23;--surface-2: #23252e;--text: #ececf2;--muted: #9b9bab;--border: #2d2f3a;--accent: #8f8aff;--accent-ink: #14141c;--accent-soft: #252548;--good: #4ade80;--good-soft: #15301f;--warn: #fbbf24;--warn-soft: #35290f;--trap: #fb7185;--trap-soft: #3a1820;--mark: rgba(250, 204, 21, .28);--shadow: none;color-scheme:dark}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:130px}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.55 var(--sans);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}body.lock{overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.45}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}mark{background:var(--mark);color:inherit;padding:0 2px;border-radius:3px}kbd{font:11px/1 var(--sans);padding:3px 5px;border:1px solid var(--border);border-bottom-width:2px;border-radius:5px;color:var(--muted);background:var(--surface)}.topbar{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 96%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid var(--border);padding-top:env(safe-area-inset-top)}.topbar-inner{max-width:1240px;margin:0 auto;display:flex;align-items:center;gap:12px;padding:10px 16px 6px}.brand{display:flex;align-items:center;gap:10px;background:none;border:0;padding:0;text-align:left}.logo{width:34px;height:34px;border-radius:9px;flex:none;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink);font:700 20px/1 var(--serif)}.brand-text{display:flex;flex-direction:column;line-height:1.15}.brand-text b{font-size:15px}.brand-text small{font-size:12px;color:var(--muted);white-space:nowrap}.search{position:relative;flex:1;max-width:420px;margin-left:auto}.search input{width:100%;font:inherit;font-size:15px;padding:8px 34px 8px 12px;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text);outline:none}.search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.kbd-hint{position:absolute;right:9px;top:50%;transform:translateY(-50%);pointer-events:none}.search input:focus+.kbd-hint,.search input:not(:placeholder-shown)+.kbd-hint{display:none}.icon-btn{flex:none;width:36px;height:36px;border-radius:10px;border:1px solid var(--border);background:var(--surface);display:grid;place-items:center;font-size:16px}.tabs{max-width:1240px;margin:0 auto;display:flex;gap:4px;padding:0 12px 8px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:none;border:0;background:none;padding:7px 12px;border-radius:999px;color:var(--muted);font-size:14px;font-weight:500;white-space:nowrap}.tab:hover{background:var(--surface-2);color:var(--text)}.tab.on{background:var(--text);color:var(--bg)}.tab-emoji{margin-right:6px}.container{max-width:1240px;margin:0 auto;padding:20px 16px 40px}.part-head{margin:4px 0 18px}.eyebrow{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.part-head h1{margin:2px 0 0;font:600 clamp(24px,4vw,32px)/1.2 var(--serif);letter-spacing:-.01em}.page{max-width:980px}.words-layout{display:grid;gap:20px;grid-template-columns:minmax(0,1fr)}.set-nav{min-width:0}@media(min-width:1000px){.words-layout{grid-template-columns:250px minmax(0,1fr);gap:32px;align-items:start}}.words-main{min-width:0;max-width:860px}.set-nav-title{font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.set-grid{display:flex;gap:6px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:thin}.set-chip{position:relative;flex:none;min-width:42px;height:38px;padding:0 8px;border-radius:10px;border:1px solid var(--border);background:linear-gradient(to top,var(--good-soft) var(--p),transparent var(--p)),var(--surface);font-weight:600;font-size:14px;font-variant-numeric:tabular-nums}.set-chip:hover{border-color:var(--muted)}.set-chip.done{color:var(--good);border-color:color-mix(in srgb,var(--good) 45%,var(--border))}.set-chip.current{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.set-chip .rv{position:absolute;top:4px;right:4px;width:6px;height:6px;border-radius:50%;background:var(--warn)}@media(min-width:1000px){.set-nav{position:sticky;top:118px}.set-grid{display:grid;grid-template-columns:repeat(5,1fr);overflow:visible;padding:0}.set-chip{min-width:0}}.set-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}.set-head h2{margin:0;font:600 22px/1.2 var(--serif)}.sub{margin:4px 0 0;color:var(--muted);font-size:14px}.sub .k{color:var(--good)}.sub .r{color:var(--warn)}.progress{display:flex;height:6px;border-radius:99px;background:var(--surface-2);overflow:hidden;margin:12px 0 16px}.progress .pk{background:var(--good);transition:width .3s}.progress .pr{background:var(--warn);transition:width .3s}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}.tools{display:flex;flex-wrap:wrap;gap:6px}.btn{border:1px solid var(--border);background:var(--surface);padding:7px 12px;border-radius:10px;font-size:14px;font-weight:500;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.btn:hover:not(:disabled){border-color:var(--muted)}.btn.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.seg{display:inline-flex;padding:3px;gap:2px;background:var(--surface-2);border-radius:11px}.seg button{border:0;background:none;padding:5px 11px;border-radius:8px;font-size:13px;font-weight:500;color:var(--muted)}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.hint-text{margin:0;color:var(--muted);font-size:14px;flex:1 1 260px}.link-btn{background:none;border:0;padding:0;color:var(--muted);text-decoration:underline;font-size:13px}.word-list{display:flex;flex-direction:column;gap:8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;transition:border-color .15s}.card.open{border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.card.known{border-left:3px solid var(--good)}.card.review{border-left:3px solid var(--warn)}.card-head{width:100%;display:flex;align-items:center;gap:12px;padding:13px 14px;background:none;border:0;text-align:left;min-height:56px}.card-head:hover{background:var(--surface-2)}.num{flex:none;width:24px;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}.head-main{flex:1;min-width:0;display:flex;flex-direction:column}.word{font:600 20px/1.25 var(--serif);letter-spacing:.005em}.where{font-size:12px;color:var(--muted)}.clue{font-size:15px;color:var(--text)}.clue-pos{color:var(--muted)}.badges{flex:none;display:flex;align-items:center;gap:6px}.badge{font-size:11px;font-weight:600;padding:3px 7px;border-radius:99px;background:var(--surface-2);color:var(--muted);white-space:nowrap}.badge.trap{background:var(--trap-soft)}.dot{width:9px;height:9px;border-radius:50%}.dot.known{background:var(--good)}.dot.review{background:var(--warn)}.chev{font-size:22px;line-height:1;color:var(--muted);transition:transform .2s;width:14px;text-align:center}.card.open .chev{transform:rotate(90deg)}.card-body{padding:2px 16px 16px 50px;animation:reveal .18s ease-out}@keyframes reveal{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.meta{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.pill{font-size:12px;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--accent-soft);color:var(--accent);border:0}.pill.trap{background:var(--trap-soft);color:var(--trap)}.pill.loc{background:var(--surface-2);color:var(--muted)}.pill.loc:hover{color:var(--text)}.lead{margin:0 0 4px}.senses{margin:0 0 12px;font-size:16.5px}ol.senses{padding-left:1.4em}ol.senses li{margin:2px 0;padding-left:2px}ol.senses li::marker{color:var(--muted);font-size:.85em}.example{margin:0 0 14px}.example blockquote{margin:0;padding:8px 12px;border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 8px 8px 0;font-family:var(--serif);font-style:italic;font-size:16px}.field{margin:0 0 12px}.label{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:14px;padding:3px 10px;border-radius:99px;background:var(--surface-2);border:1px solid transparent;line-height:1.5}.chip.link{border-color:var(--border);background:var(--surface);text-decoration:underline dotted color-mix(in srgb,var(--accent) 60%,transparent);text-underline-offset:3px}.chip.link:hover{border-color:var(--accent);color:var(--accent)}.chip.known{border-color:color-mix(in srgb,var(--good) 55%,var(--border));background:var(--good-soft)}.chip.review{border-color:color-mix(in srgb,var(--warn) 55%,var(--border));background:var(--warn-soft)}.trick{background:var(--warn-soft);border-radius:10px;padding:9px 12px;margin-bottom:14px}.trick .label{color:var(--warn)}.trick p{margin:0;font-size:15px}.actions{display:flex;gap:8px;flex-wrap:wrap}.act{flex:1 1 140px;max-width:200px;border:1px solid var(--border);background:var(--surface);padding:8px 12px;border-radius:10px;font-size:14px;font-weight:600}.act.known:hover,.act.known.on{border-color:var(--good);color:var(--good)}.act.known.on{background:var(--good-soft)}.act.review:hover,.act.review.on{border-color:var(--warn);color:var(--warn)}.act.review.on{background:var(--warn-soft)}.pager{display:flex;justify-content:space-between;gap:10px;margin-top:22px}.empty{color:var(--muted);padding:30px 0;text-align:center}.jump{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.jump a{font-size:13px;padding:5px 11px;border-radius:99px;background:var(--surface);border:1px solid var(--border);color:var(--text);text-decoration:none}.cat h2{font:600 20px/1.3 var(--serif);margin:26px 0 12px}.grid{display:grid;gap:8px;grid-template-columns:1fr;align-items:start}@media(min-width:760px){.grid{grid-template-columns:1fr 1fr}}.cl-title{font-weight:600;font-size:16px}.anchor{font-size:13px;color:var(--muted)}.anchor b{color:var(--accent);font-family:var(--serif);font-size:14px}.cluster .card-body{padding-left:50px}.note{margin:10px 0 0;font-size:14px;color:var(--muted)}.rtable{display:flex;flex-direction:column;gap:8px}.rrow{display:grid;gap:4px 16px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 14px;cursor:pointer;box-shadow:var(--shadow)}.rrow:hover{border-color:var(--muted)}.rrow.open{border-color:color-mix(in srgb,var(--accent) 40%,var(--border))}.rhead{display:none}.rcell{min-width:0;font-size:15px}.rcell.first{font:600 18px/1.3 var(--serif)}.rcell:not(.first):before{content:attr(data-label);display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.rtable.trap .rrow{grid-template-columns:1fr 1fr}.rtable.trap .rcell.first{grid-column:1 / -1}.masked{display:inline-block;font-size:13px;color:var(--muted);padding:2px 10px;border-radius:6px;background:repeating-linear-gradient(-45deg,var(--surface-2) 0 6px,transparent 6px 12px);border:1px dashed var(--border)}@media(min-width:760px){.rtable{gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--surface);box-shadow:var(--shadow)}.rrow{border:0;border-radius:0;box-shadow:none;border-top:1px solid var(--border);align-items:center}.rtable.cols-3 .rrow{grid-template-columns:180px 200px 1fr}.rtable.trap .rcell.first{grid-column:auto}.rtable.cols-2 .rrow{grid-template-columns:200px 1fr}.rrow:hover{background:var(--surface-2)}.rhead{display:grid;cursor:default;border-top:0;background:var(--surface-2)}.rhead:hover{background:var(--surface-2)}.rhead .rcell{font:700 11px/1.4 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.rcell:not(.first):before{display:none}}.pairs h2{font:600 20px/1.3 var(--serif);margin:30px 0 12px}.pair-grid{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.pair{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:8px 10px;flex-wrap:wrap}.vs{font-size:12px;color:var(--muted)}.prose{font-size:16px}.prose p{margin:0 0 12px}.prose blockquote{margin:0 0 16px;padding:10px 14px;background:var(--accent-soft);border-radius:10px}.prose ol,.prose ul{padding-left:1.3em}.prose li{margin:0 0 10px}.intro{color:var(--muted);max-width:760px}.intro blockquote{color:var(--text)}.study{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px 22px;max-width:760px;box-shadow:var(--shadow)}.study li::marker{color:var(--accent);font-weight:700}.res-h{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:8px 0 10px}.res-h span{background:var(--surface-2);padding:1px 7px;border-radius:99px;margin-left:4px}.search-results section{margin-bottom:26px;max-width:860px}.overlay{position:fixed;inset:0;z-index:50}.modal{background:#0a0a1073;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}@keyframes fade{0%{opacity:0}}.sheet{position:relative;width:100%;max-width:640px;max-height:88vh;overflow:auto;background:var(--bg);border-radius:18px 18px 0 0;padding:16px 12px calc(16px + env(safe-area-inset-bottom))}.sheet .close{position:absolute;top:10px;right:10px;z-index:1}.sheet .card-head{padding-right:52px}@media(min-width:700px){.modal{align-items:center}.sheet{border-radius:18px;padding:16px}}.fc{background:var(--bg);display:flex;flex-direction:column;padding:calc(12px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));overflow:auto}.fc-top{display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:720px;width:100%;margin:0 auto}.fc-count{color:var(--muted);font-size:14px;font-variant-numeric:tabular-nums}.fc-bar{max-width:720px;width:100%;margin:12px auto 16px;height:4px;background:var(--surface-2);border-radius:9px;overflow:hidden}.fc-bar span{display:block;height:100%;background:var(--accent);transition:width .25s}.fc-card{flex:1;max-width:720px;width:100%;margin:0 auto;background:var(--surface);border:1px solid var(--border);border-radius:20px;box-shadow:var(--shadow);display:flex;flex-direction:column;overflow:auto}.fc-face{flex:1;min-height:180px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;background:none;border:0}.fc-card.flipped .fc-face{flex:none;min-height:0;padding:22px 20px 6px}.fc-word{font:600 clamp(34px,8vw,52px)/1.1 var(--serif);text-align:center}.fc-card.flipped .fc-word{font-size:clamp(26px,5vw,34px)}.fc-word.small{font-size:26px;text-align:left;margin:0 16px 10px;color:var(--accent)}.fc-clue{text-align:left;max-width:520px;font-size:18px}.fc-clue .senses{font-size:18px}.fc-hint{font-size:13px;color:var(--muted)}.fc-back .card-body{padding:4px 20px 20px}.fc-actions{display:flex;justify-content:center;gap:8px;max-width:720px;width:100%;margin:14px auto 0}.fc-actions .btn{padding:12px 16px;font-size:15px;justify-content:center}.fc-actions .review-btn,.fc-actions .known-btn{flex:1;font-weight:600}.review-btn{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 50%,var(--border))!important}.known-btn{color:var(--good);border-color:color-mix(in srgb,var(--good) 50%,var(--border))!important}.fc-card.done{align-items:center;justify-content:center;text-align:center;padding:30px;flex:none}.fc-card.done h2{font:600 28px/1.2 var(--serif);margin:0 0 8px}.foot{max-width:1240px;margin:0 auto;padding:20px 16px calc(30px + env(safe-area-inset-bottom));display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:13px;border-top:1px solid var(--border)}@media(max-width:640px){.brand-text small,.brand-text b,.kbd-hint,.fc-actions kbd{display:none}.container{padding-top:14px}.card-head{padding:12px;gap:10px}.num{width:18px}.card-body,.cluster .card-body{padding:0 14px 14px}.word{font-size:19px}.badge:not(.trap){display:none}.set-head .btn.primary{padding:8px 12px}.toolbar{flex-direction:column;align-items:stretch}.hint-text{flex:none}.seg{display:flex}.seg button{flex:1;padding:6px 4px;white-space:nowrap}.tools{display:grid;grid-template-columns:1fr 1fr}.tools .btn{justify-content:center}.tools .btn:last-child:nth-child(odd){grid-column:span 2}.act{max-width:none}.pager .btn{flex:1;justify-content:center;font-size:13px}.fc-actions .btn{padding:12px 10px}}
