:root{--paper: #FBFAF6;--surface: #FFFFFF;--surface-2: #F4F2EB;--ink: #1C1B19;--ink-soft: #6B675E;--ink-faint: #9A968C;--line: #E9E6DE;--seal: #C8433A;--seal-soft: #F4DED9;--ok: #2E7D5B;--radius: 18px;--shadow: 0 1px 2px rgba(28,27,25,.04), 0 8px 28px rgba(28,27,25,.08);--font-ui: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Malgun Gothic", "Segoe UI", system-ui, sans-serif;--font-han: "Nanum Myeongjo", "Apple SD Gothic Neo", "Batang", "SimSun", serif}@media(prefers-color-scheme:dark){:root{--paper: #17171A;--surface: #1F1F24;--surface-2: #26262C;--ink: #ECEAE3;--ink-soft: #A29E94;--ink-faint: #6E6A61;--line: #2E2E34;--seal: #E4635A;--seal-soft: #38231F;--shadow: 0 1px 2px rgba(0,0,0,.3), 0 10px 30px rgba(0,0,0,.35)}}:root[data-theme=dark]{--paper: #17171A;--surface: #1F1F24;--surface-2: #26262C;--ink: #ECEAE3;--ink-soft: #A29E94;--ink-faint: #6E6A61;--line: #2E2E34;--seal: #E4635A;--seal-soft: #38231F;--shadow: 0 1px 2px rgba(0,0,0,.3), 0 10px 30px rgba(0,0,0,.35)}:root[data-theme=light]{--paper: #FBFAF6;--surface: #FFFFFF;--surface-2: #F4F2EB;--ink: #1C1B19;--ink-soft: #6B675E;--ink-faint: #9A968C;--line: #E9E6DE;--seal: #C8433A;--seal-soft: #F4DED9;--shadow: 0 1px 2px rgba(28,27,25,.04), 0 8px 28px rgba(28,27,25,.08)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;line-height:1.6;display:flex;justify-content:center;padding:0}@media(min-width:480px){body{padding:24px;align-items:flex-start}}.app{width:100%;max-width:430px;min-height:100dvh;background:var(--paper);display:flex;flex-direction:column;position:relative;overflow:hidden}@media(min-width:480px){.app{min-height:min(880px,calc(100dvh - 48px));height:880px;border-radius:34px;border:1px solid var(--line);box-shadow:var(--shadow)}}.topbar{display:flex;align-items:center;justify-content:space-between;padding:14px 18px 10px;background:color-mix(in srgb,var(--paper) 86%,transparent);backdrop-filter:saturate(1.2) blur(8px);position:sticky;top:0;z-index:20;border-bottom:1px solid transparent}.brand{display:flex;align-items:center;gap:9px}.seal-logo{width:30px;height:30px;border-radius:8px;background:var(--seal);color:#fff;font-family:var(--font-han);font-size:19px;font-weight:700;display:grid;place-items:center;box-shadow:inset 0 0 0 1.5px #ffffff40}.brand b{font-size:17px;letter-spacing:-.02em}.brand span{font-size:11px;color:var(--ink-faint);letter-spacing:.12em;text-transform:uppercase}.iconbtn{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:6px 12px;font-size:12px;font-family:var(--font-ui);cursor:pointer;display:inline-flex;align-items:center;gap:6px}.iconbtn:hover{color:var(--ink)}.iconbtn b{color:var(--ink);font-weight:600}.screen{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 18px 96px}.screen::-webkit-scrollbar{width:0}.screen[hidden]{display:none}h2.title{font-size:22px;letter-spacing:-.02em;margin:14px 2px 4px;text-wrap:balance}p.sub{color:var(--ink-soft);font-size:13px;margin:0 2px 16px}.eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--seal);font-weight:700;margin:22px 2px 8px;display:flex;align-items:center;gap:7px}.eyebrow:before{content:"";width:14px;height:2px;background:var(--seal);border-radius:2px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow)}.review-hero{padding:20px 18px 18px}.review-hero .kicker{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.review-hero .kicker .lbl{font-size:12px;color:var(--ink-soft)}.progress-dots{display:flex;gap:5px}.progress-dots i{width:7px;height:7px;border-radius:999px;background:var(--line);transition:background .25s}.progress-dots i.on{background:var(--seal)}.progress-dots i.cur{background:var(--ink)}.sentence{font-family:var(--font-han);font-size:25px;line-height:1.85;letter-spacing:-.01em;color:var(--ink);word-break:keep-all;min-height:128px}.sentence.long{font-size:21px;line-height:2}.genre-tag{display:inline-block;font-size:11px;color:var(--ink-faint);border:1px solid var(--line);border-radius:999px;padding:2px 9px;margin-bottom:12px;letter-spacing:.02em}.hanja{font-family:var(--font-han);font-size:inherit;color:var(--ink);background:none;border:none;padding:0 1px;cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,border-color .15s;position:relative}.hanja:hover,.hanja:focus-visible{color:var(--seal);border-bottom-color:color-mix(in srgb,var(--seal) 40%,transparent);outline:none}.hanja.pulse{color:var(--seal);border-bottom-color:var(--seal)}ruby.hanja{border-bottom:none}ruby.hanja rt{font-family:var(--font-ui);font-size:.42em;color:var(--ink-faint);font-weight:500}.reading-line{margin-top:12px;color:var(--ink-soft);font-size:14px;font-family:var(--font-ui);display:none}.reading-line.show{display:block}.linkish{background:none;border:none;color:var(--seal);font-size:12.5px;cursor:pointer;padding:8px 0 0;font-family:var(--font-ui);font-weight:600}.answers{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:18px}.ans{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:13px;padding:12px 6px;font-family:var(--font-ui);font-size:14px;font-weight:600;cursor:pointer;transition:transform .08s,background .15s}.ans small{display:block;font-size:10.5px;font-weight:500;color:var(--ink-faint);margin-top:2px}.ans:active{transform:scale(.96)}.ans.know:hover{background:color-mix(in srgb,var(--ok) 10%,var(--surface));border-color:var(--ok)}.ans.vague:hover{background:var(--surface-2)}.ans.confuse:hover{background:var(--seal-soft);border-color:var(--seal)}.chips{display:flex;gap:8px;margin:4px 2px 14px;flex-wrap:wrap}.chip{border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:7px 15px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}.chip.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}.tabs{display:flex;gap:4px;background:var(--surface-2);padding:4px;border-radius:12px;margin:0 2px 16px}.tab{flex:1;border:none;background:none;color:var(--ink-soft);border-radius:9px;padding:9px 4px;font-size:13px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}.tab.on{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.item{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px 15px;margin-bottom:9px;display:flex;align-items:center;gap:12px;cursor:pointer}.item:hover{border-color:var(--ink-faint)}.item .han{font-family:var(--font-han);font-size:22px;word-break:keep-all;flex-shrink:0}.item .han.sent{font-size:18px;line-height:1.5}.item .meta{flex:1;min-width:0}.item .meta .rd{font-size:12.5px;color:var(--ink-soft)}.item .meta .mn{font-size:12px;color:var(--ink-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lvlbadge{font-size:10.5px;font-weight:700;color:var(--seal);background:var(--seal-soft);border-radius:6px;padding:2px 7px;flex-shrink:0}.stat-row{display:flex;gap:12px;margin-bottom:14px}.stat{flex:1;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px}.stat .num{font-size:26px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.stat .num .u{font-size:13px;color:var(--ink-faint);font-weight:600;margin-left:2px}.stat .lb{font-size:12px;color:var(--ink-soft);margin-top:2px}.flame{color:var(--seal)}.bar{margin:11px 0}.bar .bl{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:6px}.bar .bl .p{color:var(--ink-soft);font-variant-numeric:tabular-nums}.track{height:8px;background:var(--surface-2);border-radius:999px;overflow:hidden}.track>i{display:block;height:100%;background:var(--seal);border-radius:999px}.nav{position:absolute;left:0;right:0;bottom:0;display:flex;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:8px 8px calc(8px + env(safe-area-inset-bottom))}.nav button{flex:1;background:none;border:none;cursor:pointer;color:var(--ink-faint);font-family:var(--font-ui);font-size:11px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px}.nav button .ic{font-family:var(--font-han);font-size:19px;line-height:1}.nav button.on{color:var(--ink)}.nav button.on .ic{color:var(--seal)}.scrim{position:absolute;inset:0;background:#14131157;opacity:0;pointer-events:none;transition:opacity .22s;z-index:40}.scrim.show{opacity:1;pointer-events:auto}.sheet{position:absolute;left:0;right:0;bottom:0;z-index:41;background:var(--surface);border-radius:24px 24px 0 0;border-top:1px solid var(--line);box-shadow:0 -10px 40px #00000029;padding:10px 20px calc(22px + env(safe-area-inset-bottom));transform:translateY(100%);transition:transform .28s cubic-bezier(.22,1,.36,1)}.sheet.show{transform:translateY(0)}.grip{width:38px;height:4px;border-radius:999px;background:var(--line);margin:4px auto 14px}.sheet .hd{display:flex;align-items:flex-start;gap:16px}.sheet .bigchar{font-family:var(--font-han);font-size:60px;line-height:1}.sheet .info{flex:1;padding-top:4px}.sheet .hun{font-size:22px;font-weight:700;letter-spacing:-.01em}.sheet .hun .eum{color:var(--seal)}.sheet .rowmeta{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.sheet .pill{font-size:11.5px;border:1px solid var(--line);border-radius:999px;padding:3px 10px;color:var(--ink-soft)}.sheet .pill.lvl{color:var(--seal);border-color:color-mix(in srgb,var(--seal) 35%,var(--line));font-weight:700}.sheet .kw{margin-top:14px;font-size:13.5px;color:var(--ink-soft)}.sheet .kw b{color:var(--ink);font-weight:600}.sheet .note{margin-top:8px;font-size:12.5px;color:var(--ink-faint)}.sheet .sheetbtns{display:flex;gap:8px;margin-top:18px}.sheet .sheetbtns button{flex:1;border-radius:12px;padding:12px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:var(--font-ui);border:1px solid var(--line);background:var(--surface);color:var(--ink)}.sheet .sheetbtns .primary{background:var(--ink);color:var(--paper);border-color:var(--ink)}.sheet .sheetbtns .warn{color:var(--seal);border-color:color-mix(in srgb,var(--seal) 40%,var(--line))}.done{text-align:center;padding:40px 10px}.done .big{font-family:var(--font-han);font-size:54px;color:var(--seal)}.done h3{font-size:20px;margin:14px 0 6px}.done p{color:var(--ink-soft);font-size:14px}.done button{margin-top:20px;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:11px 20px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}canvas#confetti{position:absolute;inset:0;pointer-events:none;z-index:30}.hint{font-size:12px;color:var(--ink-faint);text-align:center;margin-top:10px}.hint b{color:var(--seal)}@media(prefers-reduced-motion:reduce){*{transition:none!important}}.topactions{display:flex;gap:8px;align-items:center}.iconbtn.gear{padding:6px 10px;font-size:15px;line-height:1}.search{width:100%;box-sizing:border-box;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:12px;padding:11px 14px;font-size:14px;font-family:var(--font-ui);margin:4px 0 12px}.search::placeholder{color:var(--ink-faint)}.search:focus{outline:none;border-color:var(--ink-faint)}.pill.star{cursor:pointer;background:var(--surface);color:var(--ink-soft);font-family:var(--font-ui)}.pill.star.on{color:var(--seal);border-color:color-mix(in srgb,var(--seal) 40%,var(--line))}.sheet .hun .alt{font-size:14px;color:var(--ink-faint);font-weight:500}.setrow{display:flex;align-items:center;gap:14px}.setrow input[type=range]{flex:1;accent-color:var(--seal)}.setrow b{font-variant-numeric:tabular-nums;min-width:34px;text-align:right}.setbtns{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:11px;padding:10px 14px;font-size:13.5px;font-weight:600;cursor:pointer;font-family:var(--font-ui)}.btn:hover{border-color:var(--ink-faint)}.btn.danger{color:var(--seal);border-color:color-mix(in srgb,var(--seal) 35%,var(--line))}.bmwrap{display:flex;gap:12px;flex-wrap:wrap;font-family:var(--font-han);font-size:26px}.bmwrap .hanja{cursor:pointer}.nav{position:static}.screen{padding-bottom:20px}@media(max-width:479px){.nav{position:fixed;left:0;right:0;bottom:0}.screen{padding-bottom:84px}}
