:root{--bg:#f5f4ed;--paper:#fffef9;--ink:#243f35;--muted:#788277;--line:#dedfd3;--green:#e4ebdc;--rust:#ae6a46}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif}button,input,select{font:inherit}button{cursor:pointer;color:inherit}button,a,input,select{touch-action:manipulation}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--rust);outline-offset:4px}.app{max-width:640px;margin:auto;padding:22px 24px max(24px,env(safe-area-inset-bottom))}header{display:flex;justify-content:space-between;align-items:center}.brand{display:flex;gap:11px;align-items:center;text-decoration:none;color:inherit;font-family:Georgia,serif;font-size:20px}.brand-mark{display:grid;place-items:center;width:43px;height:45px;background:var(--ink);color:#f3e9d2;border-radius:11px 11px 11px 3px;font-size:28px}.brand small{display:block;font:8px/2.2 system-ui;letter-spacing:1.4px;color:var(--muted)}.icon-button{border:1px solid var(--line);border-radius:50%;width:42px;height:42px;background:transparent;font-size:20px}.intro{padding:32px 0 20px}.eyebrow{font-size:9px;letter-spacing:1.5px;color:var(--muted);margin:0 0 10px}h1{font:44px/1.12 Georgia,serif;letter-spacing:-1.3px;margin:0}h1 em{color:#819174;font-weight:400}.muted{color:var(--muted);font-size:13px}.intro>.muted{margin:12px 0 0}.tabs{display:flex;border-bottom:1px solid var(--line);gap:30px}.tabs button{border:0;background:none;padding:13px 0;font-size:13px;color:var(--muted);border-bottom:2px solid transparent}.tabs button[aria-selected=true]{color:var(--ink);border-color:var(--ink);font-weight:650}.filters{display:grid;grid-template-columns:1.2fr 1fr;gap:12px;margin:22px 0 15px}.filters label,.search-label{font-size:9px;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}select{display:block;width:100%;background:var(--paper);border:1px solid var(--line);border-radius:8px;padding:11px 27px 11px 10px;color:var(--ink);font-size:12px;margin-top:5px;min-height:44px}.card-caption{display:flex;justify-content:space-between;align-items:center;margin:15px 0 10px;font-size:9px;letter-spacing:1px;color:var(--muted)}.text-button{border:0;background:none;padding:10px 0;min-height:40px;font-size:11px;color:var(--muted);letter-spacing:0}.card-stage{position:relative;isolation:isolate;border-radius:18px;background:#e7eadf}.flashcard{width:100%;min-height:330px;display:flex;align-items:center;flex-direction:column;padding:23px 25px 24px;border:1px solid #d9decf;border-radius:18px;background:var(--paper);box-shadow:0 6px 25px #243f3506;touch-action:pan-y;user-select:none;position:relative;z-index:2;will-change:transform;transition:transform .18s ease}.flashcard.dragging{transition:none;cursor:grabbing}.card-category{font-size:8px;letter-spacing:1.8px;color:#8c9685}#character{font:100px/1.25 'Songti SC','Noto Serif CJK SC','STSong',serif;margin:24px 0 8px}.pinyin{color:var(--rust);font-size:20px;letter-spacing:1px;max-width:100%;overflow-wrap:anywhere}.card-divider{width:35px;border-top:1px solid #cbd1c0;margin:23px 0 16px}.hint{font-size:11px;color:#959e8c}#answer{text-align:left;width:100%;max-height:300px;overflow-y:auto;touch-action:pan-y;user-select:text}#answer .reading{display:block;color:var(--rust);font-size:14px;font-weight:600;margin:16px 0 6px}#answer .reading:first-child{margin-top:0}#answer .definition{font-size:13px;display:block;line-height:1.7;margin-bottom:5px;overflow-wrap:anywhere}#backHint{margin-top:18px}.swipe-label{position:absolute;inset:0;display:grid;place-items:center;border-radius:18px;color:white;font-weight:700;font-size:15px;letter-spacing:1px;opacity:0;z-index:1}.swipe-label.left{background:#af7754}.swipe-label.right{background:#6e8865}.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:15px}.grade{min-height:76px;display:grid;grid-template-columns:30px 1fr;align-items:center;column-gap:8px;text-align:left;border-radius:12px;padding:13px 15px;border:1px solid #e0d6c7;background:#f0e8dc}.grade>span{font-size:25px;grid-row:span 2}.grade strong{font-size:13px;font-weight:600}.grade small{font-size:10px;color:#8b7e6d}.grade.known{background:var(--ink);border-color:var(--ink);color:#fffef9}.grade.known small{color:#c7d1bf}.session-tools{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:12px 0 8px;font-size:11px;color:var(--muted)}input[type=checkbox]{accent-color:var(--ink);width:16px;height:16px;vertical-align:middle;margin-right:6px}.progress-section{border-top:1px solid var(--line);margin-top:23px;padding-top:20px}.progress-section>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:10px}.progress-section h2{font:19px Georgia,serif;margin:0}.progress-section #progressText{font-size:10px;color:var(--muted)}.progress-track{height:5px;border-radius:4px;background:#e1e6d9;margin:15px 0}.progress-track>div{height:100%;width:0;background:#82956d;border-radius:4px;transition:width .2s}.stats{display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.stats b{color:var(--ink);font-weight:600}footer{font-size:10px;color:#8b9384;padding-top:25px}footer>p{text-align:center}footer details{margin:20px 0 0;font-size:10px}footer a{color:inherit}footer summary{cursor:pointer}footer details p{line-height:1.8}.empty{text-align:center;border:1px solid var(--line);background:var(--paper);border-radius:18px;padding:40px 24px}.empty>span{font-size:32px}.empty h2{font:27px Georgia,serif}.empty p{font-size:13px;color:var(--muted)}.primary,.secondary{display:block;border:1px solid var(--ink);border-radius:8px;padding:13px 18px;text-align:center;background:var(--ink);color:white;font-size:13px;min-height:46px}.empty .primary{margin:25px auto 0}.secondary{background:transparent;color:var(--ink);border-color:var(--line)}.notice{border:1px solid #d9decb;background:#edf0e2;padding:13px;border-radius:8px;font-size:12px}.search-label{display:block;margin:20px 0 10px}.search-label input{display:block;width:100%;padding:13px;border:1px solid var(--line);border-radius:9px;background:var(--paper);margin-top:7px;font-size:16px;color:var(--ink)}.library-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.library-card{border:1px solid var(--line);border-radius:11px;background:var(--paper);padding:15px;text-align:left;min-width:0}.library-card .rank{font-size:9px;color:var(--muted);display:block}.library-card .han{font:37px/1.7 'Songti SC',serif;display:block}.library-card .pinyin{font-size:12px;letter-spacing:0}.library-card .gloss{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:11px;color:var(--muted);margin-top:7px}.library-card .status{display:block;font-size:9px;color:#738665;margin-top:10px}#loadMore{width:100%;margin-top:15px}dialog{max-width:440px;width:calc(100% - 32px);padding:25px;border:1px solid var(--line);border-radius:18px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#20352b66}.dialog-head{display:flex;justify-content:space-between;align-items:center}.dialog-head h2{font:25px Georgia,serif;margin:0}dialog p{font-size:13px;color:var(--muted);line-height:1.8}dialog .primary,dialog .secondary{width:100%;margin:12px 0}.file-label{cursor:pointer}@media(max-width:360px){.app{padding-left:16px;padding-right:16px}.grade{padding:12px 10px;grid-template-columns:23px 1fr}.grade strong{font-size:12px}.brand{font-size:18px}}@media(min-width:800px){.app{padding-top:35px}.intro{padding-top:40px}.flashcard{min-height:370px}#character{font-size:115px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media(max-width:600px){.intro{padding:24px 0 14px}h1{font-size:36px}.intro .eyebrow{font-size:8px;margin-bottom:8px}.intro>.muted{font-size:12px;margin-top:8px}.filters{margin:16px 0 10px}.flashcard{min-height:292px;padding:20px 22px}#character{font-size:88px;margin-top:18px}.card-divider{margin:18px 0 14px}.card-caption{margin:9px 0 8px}.actions{margin-top:12px}.grade{min-height:70px}}
@media(max-width:600px) and (max-height:740px){.intro{padding:18px 0 10px}h1{font-size:30px}.intro>.muted{display:none}.flashcard{min-height:245px}#character{font-size:76px;margin-top:12px}.card-divider{margin:14px 0 12px}}

.account-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.account-bar .text-button{font-size:10px;color:var(--rust)}#syncStatus{font-size:9px;color:var(--muted);text-align:right}.auth-label{font-size:12px;display:block;margin:15px 0}.auth-label input{display:block;width:100%;background:white;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:12px;margin-top:6px;font-size:16px}.auth-note{font-size:10px!important}.sync-pending{color:var(--rust)!important}.account-bar+.intro{padding-top:17px}@media(max-width:600px){.account-bar{margin-top:5px}.account-bar+.intro{padding-top:10px}.intro>.eyebrow{display:none}}

.meaning-reading{display:block;padding:13px 0;border-top:1px solid #eceee4}.meaning-reading:first-child{padding-top:0;border:0}.meaning-pinyin{display:block;color:var(--rust);font-size:14px;font-weight:600;margin-bottom:5px}.meaning-gloss{display:block;font-size:14px;line-height:1.8;color:var(--ink);overflow-wrap:anywhere}
