.so-defs{position:absolute;width:0;height:0;overflow:hidden}.so-grid{fill:none;stroke:var(--line);stroke-width:4;stroke-dasharray:16 14}.so-ghost{fill:var(--surface-sunken)}.so-done{fill:var(--ink)}.so-now{fill:var(--brand)}.so-trace{fill:var(--line)}.so-ink{fill:none;stroke:var(--ink);stroke-width:150;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 2;stroke-dashoffset:1;animation:so-ink .5s ease-in-out forwards}.so-ink:nth-child(1){animation-delay:.3s}.so-ink:nth-child(2){animation-delay:.9s}.so-ink:nth-child(3){animation-delay:1.5s}.so-ink:nth-child(4){animation-delay:2.1s}.so-ink:nth-child(5){animation-delay:2.7s}.so-ink:nth-child(6){animation-delay:3.3s}.so-ink:nth-child(7){animation-delay:3.9s}.so-ink:nth-child(8){animation-delay:4.5s}.so-ink:nth-child(9){animation-delay:5.1s}.so-ink:nth-child(10){animation-delay:5.7s}.so-ink:nth-child(11){animation-delay:6.3s}.so-ink:nth-child(12){animation-delay:6.9s}.so-ink:nth-child(13){animation-delay:7.5s}.so-ink:nth-child(14){animation-delay:8.1s}.so-ink:nth-child(15){animation-delay:8.7s}.so-ink:nth-child(16){animation-delay:9.3s}.so-ink:nth-child(17){animation-delay:9.9s}.so-ink:nth-child(18){animation-delay:10.5s}.so-ink:nth-child(19){animation-delay:11.1s}.so-ink:nth-child(20){animation-delay:11.7s}.so-ink:nth-child(21){animation-delay:12.3s}.so-ink:nth-child(22){animation-delay:12.9s}.so-ink:nth-child(23){animation-delay:13.5s}.so-ink:nth-child(24){animation-delay:14.1s}.so-ink:nth-child(25){animation-delay:14.7s}.so-ink:nth-child(26){animation-delay:15.3s}.so-ink:nth-child(27){animation-delay:15.9s}.so-ink:nth-child(28){animation-delay:16.5s}.so-ink:nth-child(29){animation-delay:17.1s}.so-ink:nth-child(30){animation-delay:17.7s}@keyframes so-ink{to{stroke-dashoffset:0}}@media(prefers-reduced-motion:reduce){.so-ink{animation:none;stroke-dashoffset:0}}.so-card{display:grid;gap:20px;max-width:720px;padding:20px;margin-bottom:32px;border-radius:var(--radius-lg);background:var(--surface-raised);box-shadow:0 0 0 1px var(--line)}.so-stage{display:grid;gap:10px;justify-items:center}.so-draw{width:min(100%,320px);aspect-ratio:1}.so-facts{display:grid;gap:10px;align-content:start}.so .so-said,.so .so-count,.so .so-own{margin:0}.so-py{font:600 28px/1.2 var(--font-sans)}.so-meaning{display:block;font-size:17px;line-height:1.4}.so-count{display:flex;align-items:baseline;gap:10px;font-size:17px}.so-count b{font:500 32px/1 var(--font-display)}.so-own{font-size:15px}.so-own a,.so-near a{color:var(--ink)}.so .so-print{min-height:52px}.so-replay[hidden],.so-print[hidden]{display:none}.so .so-by h2,.so .so-words h2,.so .so-level h2{margin:0 0 14px;font:500 28px/1.15 var(--font-display)}.so-steps{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));margin:0 0 32px;padding:0;list-style:none}.so-steps li{position:relative;padding:4px;border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:0 0 0 1px var(--line)}.so-frame{display:block;width:100%;aspect-ratio:1}.so-step-n{position:absolute;top:4px;left:8px;font:600 12px/1.4 var(--font-sans);color:var(--ink-muted)}.so-words ul{display:grid;gap:4px;margin:0 0 24px;padding:0;list-style:none}.so-words li{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}.so-words a{color:inherit;text-decoration:none}.so-words a:hover .so-word{text-decoration:underline;text-underline-offset:5px}.so-word{font:400 22px/1.3 var(--font-hanzi-sans)}.so-word-py{font-size:15px;font-weight:600}.so-word-gloss{font-size:14px;color:var(--ink-muted)}.so-near{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0 0 32px;font-size:15px}.so-near span{font:400 22px/1.3 var(--font-hanzi-sans)}.so-find{display:grid;gap:8px;max-width:420px}.so .so-label{font:600 14px/1.3 var(--font-sans);color:var(--ink-muted)}.so-find-row{display:flex;gap:8px}.so-find input{box-sizing:border-box;flex:1;min-width:0;min-height:52px;padding:0 16px;border:1px solid var(--line-strong);border-radius:var(--radius-lg);background:var(--surface);color:var(--ink);font:24px/1.3 var(--font-hanzi-sans)}.so-find input:focus-visible{outline:none;box-shadow:var(--focus-ring)}.so .so-find .lp-bp{min-height:52px}.so .so-missing{margin:8px 0 0;font-size:14px;color:var(--danger)}.so-level{padding-top:40px}.so-chars{display:grid;gap:6px;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));margin:0;padding:0;list-style:none}.so-chars a{display:grid;justify-items:center;padding:8px 4px;border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:0 0 0 1px var(--line);color:var(--ink);text-decoration:none}.so-chars a:hover{box-shadow:0 0 0 2px var(--brand)}.so-chars span:first-child{font:400 30px/1.2 var(--font-hanzi-sans)}.so-chars-py{font-size:12px;color:var(--ink-muted)}.so-sheet{display:none}@media(min-width:760px){.so-card{grid-template-columns:320px 1fr;padding:28px}}@media print{@page{size:A4;margin:12mm}.so .lp-header,.so .lp-footer,.so .skip,.so main .lp-wrap>:not(.so-sheet,.so-defs){display:none!important}html,body.so{background:#fff!important}.so-sheet{display:block;color:#000}.so .so-sheet-head{margin:0 0 4mm;font:14pt/1.3 var(--font-sans)}.so-sheet-head span{font:28pt/1 var(--font-hanzi-sans)}.so-sheet-steps{display:grid;grid-template-columns:repeat(10,1fr);gap:1.5mm;margin-bottom:5mm}.so-sheet-rows{display:grid;gap:0}.so-sheet-row{display:grid;grid-template-columns:repeat(10,1fr)}.so-sheet .so-grid{stroke:#bbb}.so-sheet .so-ghost{fill:#eee}.so-sheet .so-done{fill:#000}.so-sheet .so-now{fill:#c0392b}.so-sheet .so-trace{fill:#d8d8d8}.so-sheet-row .so-frame{border:.3mm solid #888;margin:-.15mm}}
