:root{--bg: #f4efe6;--card: #fffdf8;--ink: #1d1b19;--muted: #8a8377;--line: #e2d9c8;--accent: #c8372d;--t1: #d1453b;--t2: #2e9a57;--t3: #2f6fd6;--t4: #8a46c9;--t5: #8a8377;--hz: "Kaiti SC", "STKaiti", "KaiTi", "Songti SC", "Noto Serif CJK SC", "Noto Serif SC", serif;color-scheme:light dark}@media (prefers-color-scheme: dark){:root{--bg: #171513;--card: #221f1c;--ink: #efe9df;--muted: #968e81;--line: #37322c;--accent: #e5584c;--t1: #f0776d;--t2: #5cc986;--t3: #6fa2f5;--t4: #b784ee;--t5: #968e81}}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:16px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overscroll-behavior-y:none}button,input,textarea{font:inherit;color:inherit}button{cursor:pointer;border:0;background:none;padding:0}h2{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:22px 0 10px;font-weight:600}code{background:var(--line);padding:1px 5px;border-radius:5px}.muted{color:var(--muted)}.error{color:var(--accent);margin:4px 0}.page{max-width:520px;margin:0 auto;min-height:100dvh;padding:12px 16px calc(96px + env(safe-area-inset-bottom))}.page.center{display:grid;place-content:center;gap:12px;text-align:center}.top{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:48px;margin-bottom:8px}.title{flex:1;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.icon{width:40px;height:40px;border-radius:12px;font-size:20px;display:grid;place-items:center;flex:none}.icon:active{background:var(--line)}.brand{display:flex;align-items:center;gap:10px}.brand b{font-size:20px;line-height:1.1;letter-spacing:-.01em;display:block}.brand small{color:var(--muted);font-size:12px}.seal{width:42px;height:42px;border-radius:10px;background:var(--accent);color:#fff;font:28px/42px var(--hz);text-align:center;transform:rotate(-4deg);box-shadow:inset 0 0 0 2px #ffffff59}.chip{display:inline-flex;align-items:center;gap:7px;padding:8px 12px;border-radius:99px;background:var(--card);border:1px solid var(--line);font-size:14px;max-width:150px;overflow:hidden;white-space:nowrap}.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);flex:none}.dot.idle{background:var(--t2)}.dot.error{background:var(--accent)}.dot.syncing{background:var(--t3);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.3}}.btn{min-height:48px;padding:0 18px;border-radius:14px;background:var(--card);border:1px solid var(--line);font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}.btn:active{transform:scale(.98)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--accent)}.btn:disabled{opacity:.45}.grow{flex:1;min-width:0}.row{display:flex;gap:10px;align-items:flex-end}.fab{position:fixed;left:50%;transform:translate(-50%);bottom:calc(18px + env(safe-area-inset-bottom));width:min(488px,calc(100vw - 32px));box-shadow:0 8px 24px #0000002e}.fab:active{transform:translate(-50%) scale(.98)}.decks{display:grid;gap:10px}.deck{display:grid;grid-template-columns:auto 1fr;gap:2px 14px;align-items:center;text-align:left;padding:14px 16px;border-radius:18px;background:var(--card);border:1px solid var(--line)}.deck-hz{grid-row:span 2;font:30px/1 var(--hz);letter-spacing:2px;color:var(--accent);min-width:2em}.deck-name{font-weight:600}.field{width:100%;padding:13px 14px;border-radius:14px;border:1px solid var(--line);background:var(--card);margin:6px 0;outline:none}.field:focus{border-color:var(--accent)}.paste{min-height:190px;resize:vertical;font-size:17px}.words{list-style:none;margin:14px 0 0;padding:0;background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden}.words li{display:flex;align-items:center;gap:14px;padding:12px 14px;border-top:1px solid var(--line);cursor:pointer}.words li:first-child{border-top:0}.words.compact li{padding:8px 14px;cursor:default}.w-hz{font:30px/1.1 var(--hz);min-width:2.2em;flex:none}.w-mid{display:flex;flex-direction:column;min-width:0;flex:1;font-size:14px}.w-mid .muted{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-pic{font-size:26px;flex:none}.w-pic img{width:38px;height:38px;border-radius:9px;object-fit:cover;display:block}.pinyin{font-weight:600}.t1{color:var(--t1)}.t2{color:var(--t2)}.t3{color:var(--t3)}.t4{color:var(--t4)}.t5{color:var(--t5)}.study{display:flex;flex-direction:column;height:100dvh;padding-bottom:calc(16px + env(safe-area-inset-bottom))}.progress{height:4px;border-radius:4px;background:var(--line);overflow:hidden}.progress i{display:block;height:100%;background:var(--accent);transition:width .25s}.stage{flex:1;min-height:0;padding:16px 0;perspective:1400px}.card{position:relative;height:100%;max-height:600px;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.3,1.2,.4,1);cursor:pointer}.card.flipped{transform:rotateY(180deg)}.face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:var(--card);border:1px solid var(--line);border-radius:26px;box-shadow:0 10px 30px #3c280a1a;padding:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;overflow:hidden}.back{transform:rotateY(180deg)}.card:not(.flipped) .back,.card.flipped .front{pointer-events:none}.front>div:first-child{width:100%}.strokes{display:flex;justify-content:center;gap:8px;width:100%;touch-action:none}.hz{border:1.5px solid var(--line);border-radius:12px;flex:none;background:linear-gradient(var(--line),var(--line)) center / 100% 1px no-repeat,linear-gradient(var(--line),var(--line)) center / 1px 100% no-repeat}.plain-hz{font:72px/1.2 var(--hz)}.big-pinyin{font-size:28px;letter-spacing:.02em}.actions{display:flex;gap:22px;margin-top:10px}.actions button{display:grid;justify-items:center;gap:6px;font-size:12px;color:var(--muted);letter-spacing:.02em}.actions button span{width:54px;height:54px;border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--ink);display:grid;place-items:center;transition:transform .1s,background .15s}.actions button:active span{transform:scale(.92)}.actions button.on{color:var(--accent)}.actions button.on span{background:var(--accent);border-color:var(--accent);color:#fff}.hint{color:var(--muted);position:absolute;bottom:14px}.assoc{flex:1;min-height:0;width:100%;display:grid;place-items:center}.assoc img{max-width:100%;max-height:100%;border-radius:18px;object-fit:contain}.assoc{overflow:hidden}.emoji{font-size:min(34vw,150px);line-height:1}.meaning{font-size:24px;font-weight:700;text-align:center}.note{margin:0;text-align:center;color:var(--muted);font-size:15px}.back-foot{display:flex;align-items:baseline;gap:10px}.back-foot .w-hz{color:var(--accent)}.nav{flex:none}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:10}.sheet{width:100%;max-width:520px;max-height:92dvh;overflow:auto;background:var(--bg);border-radius:24px 24px 0 0;padding:6px 16px calc(18px + env(safe-area-inset-bottom));animation:up .22s ease-out}@keyframes up{0%{transform:translateY(40px);opacity:0}}.sheet label{display:block;font-size:13px;color:var(--muted);margin-top:8px}.sheet .row{margin-top:8px}.sheet label.btn{color:var(--ink);font-size:15px;margin:6px 0}.emoji-in{width:76px;text-align:center;font-size:24px;padding:8px}.preview{max-height:120px;border-radius:12px;display:block;margin:4px 0}
