:root{--safe-top:max(env(safe-area-inset-top,0px), var(--safe-area-inset-top,0px));--safe-bottom:max(env(safe-area-inset-bottom,0px), var(--safe-area-inset-bottom,0px));--bg:#fffaf0;--card:#fff;--fg:#2a2418;--dim:#7a7264;--line:#efe6d2;--accent:#f2b01e;--accent-ink:#8a5a00;--accent-soft:#fff1c9;--user:#ffd65c;--user-fg:#2a2418;--know:#1f9d55;--forgot:#e5484d;--s-mature:#1f9d55;--s-young:#8fd19e;--s-learn:#f2b01e;--s-new:#e8e1d0}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);overscroll-behavior:none;font:15px/1.5 system-ui,-apple-system,Apple SD Gothic Neo,Noto Sans KR,sans-serif}button{font:inherit;color:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit}[hidden]{display:none!important}.dim{color:var(--dim)}.small{margin-top:4px;font-size:12.5px}.center{text-align:center}.app{flex-direction:column;max-width:640px;height:100%;margin:0 auto;display:flex}.safetop{height:var(--safe-top);background:var(--bg);flex:none}main{flex:1;min-height:0;position:relative}.pane{flex-direction:column;display:flex;position:absolute;inset:0}.page{flex:1;padding:12px 14px 24px;overflow-y:auto}.h2{margin:16px 2px 10px;font-size:18px}.h2 .dim{font-size:14px;font-weight:500}.tabs{background:var(--card);border-top:1px solid var(--line);padding-bottom:var(--safe-bottom);flex:none;display:flex}.tabs button{color:#b0a796;background:0 0;border:0;flex-direction:column;flex:1;align-items:center;gap:1px;padding:6px 0 7px;font-size:11px;display:flex}.tabs button.on{color:var(--accent-ink);font-weight:700}.tabs button.on svg{color:var(--accent)}.card{background:var(--card);border-radius:16px;margin-bottom:12px;padding:14px 16px;box-shadow:0 1px 2px #503c000d}.label{color:var(--dim);margin-bottom:8px;font-size:13px}.empty{text-align:center;color:var(--dim);padding:48px 16px;line-height:1.8}.empty p{margin:8px 0 14px}.empty b{color:var(--fg)}.big-emoji{font-size:52px;line-height:1.2}.big{font-size:40px;font-weight:800;line-height:1.2}.big small{color:var(--dim);font-size:18px;font-weight:500}.note{background:var(--accent-soft);border-radius:12px;margin:8px 0;padding:10px 12px;font-size:13.5px;line-height:1.6}.chips{flex-wrap:wrap;gap:6px;margin:4px 0 0 38px;display:flex}.chips.center{justify-content:center;margin:6px 0 0}.chip{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:7px 13px;font-size:13.5px}.chip.primary{background:var(--accent);border-color:var(--accent);color:var(--fg);font-weight:700}.link{color:var(--accent-ink);background:0 0;border:0;padding:4px 2px;font-size:14px}.link.danger,.danger{color:var(--forgot)!important}.btns{gap:8px;margin-top:12px;display:flex}.btns button{border:1px solid var(--line);background:var(--card);border-radius:12px;flex:1;padding:10px}.btns .primary,button.primary{background:var(--accent);border-color:var(--accent);color:var(--fg);font-weight:700}.deckpick{border:1px solid var(--line);background:var(--card);border-radius:10px;width:100%;padding:8px 10px}.say{background:var(--accent-soft);vertical-align:middle;border:0;border-radius:50%;flex:none;place-items:center;width:38px;height:38px;font-size:18px;display:inline-grid}.say.sm{width:26px;height:26px;font-size:13px}.toast{left:50%;bottom:calc(80px + var(--safe-bottom));color:#fff;pointer-events:none;z-index:10;background:#282010e0;border-radius:999px;padding:7px 14px;font-size:13.5px;position:fixed;transform:translate(-50%)}.review{flex-direction:column;flex:1;min-height:0;padding:10px 14px 8px;display:flex}.rv-head{flex-direction:column;gap:8px;display:flex}.rv-counts{justify-content:center;gap:14px;font-size:13px;font-weight:700;display:flex}.c-new{color:#3c7dd9}.c-learn{color:#d1495b}.c-rev{color:var(--know)}.stage{flex:1;justify-content:center;align-items:center;min-height:0;padding:12px 0;display:flex;overflow:hidden}.fcard{scrollbar-width:none;background:var(--card);text-align:center;touch-action:none;-webkit-user-select:none;user-select:none;border:2px solid #0000;border-radius:22px;width:100%;max-height:100%;padding:30px 20px 22px;position:relative;overflow-y:auto;box-shadow:0 6px 24px #503c001f}.fcard.front{flex-direction:column;justify-content:center;min-height:52%;display:flex}.fcard.know{border-color:var(--know)}.fcard.forgot{border-color:var(--forgot)}.fword{justify-content:center;align-items:center;gap:10px;display:flex}.fword h1{letter-spacing:-.5px;word-break:break-word;margin:0;font-size:36px}.fipa{color:var(--dim);margin-top:4px;font-size:15px}.pos{background:var(--accent-soft);color:var(--accent-ink);border-radius:6px;margin-left:4px;padding:0 6px;font-size:12.5px;font-weight:700;display:inline-block}.fhint{margin-top:26px;font-size:13px}.fback{border-top:1px dashed var(--line);margin-top:16px;padding-top:14px}.fmeaning{font-size:22px;font-weight:700}.fimg{aspect-ratio:1;object-fit:cover;pointer-events:none;border-radius:14px;width:100%;max-width:min(220px,27vh);margin:12px auto 4px;display:block}.fmnem{background:var(--accent-soft);text-align:left;border-radius:12px;margin-top:12px;padding:8px 12px;font-size:14px;line-height:1.55}.fex{text-align:left;margin-top:12px;font-size:14.5px}.fex p{margin:2px 0}.fdeck{margin-top:12px;font-size:12px}.tag{border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700;position:absolute;top:10px;left:12px}.tag.new{color:#2f6fde;background:#e3ecfb}.tag.forgot{color:var(--forgot);background:#fde8e8}.stamp{border:3px solid;border-radius:8px;padding:2px 10px;font-size:18px;font-weight:800;position:absolute;top:14px;right:14px;transform:rotate(8deg)}.stamp.know{color:var(--know)}.stamp.forgot{color:var(--forgot)}.rv-btns{flex:none;gap:10px;display:flex}.rv-btns button{color:#fff;border:0;border-radius:16px;flex-direction:column;flex:1;align-items:center;padding:12px 6px 8px;font-size:16px;font-weight:800;display:flex}.rv-btns button small{opacity:.9;font-size:11.5px;font-weight:500}.rv-btns .forgot{background:var(--forgot)}.rv-btns .know{background:var(--know)}.rv-btns .nextbtn{background:var(--accent);color:var(--fg);padding:14px}.rv-foot{text-align:center;flex:none;margin-top:6px;font-size:12px}.chat{flex-direction:column;flex:1;min-height:0;display:flex}.msgs{-webkit-overflow-scrolling:touch;flex:1;padding:12px 12px 6px;overflow-y:auto}.older{color:var(--dim);background:0 0;border:0;margin:0 auto 10px;font-size:13px;display:block}.row{align-items:flex-end;gap:6px;margin:8px 0;display:flex}.row.user{flex-direction:row-reverse}.avatar{background:var(--accent-soft);border-radius:50%;flex:none;align-self:flex-start;place-items:center;width:32px;height:32px;font-size:17px;display:grid}.bubble{background:var(--card);word-break:break-word;border-radius:16px;max-width:82%;padding:9px 12px;box-shadow:0 1px 1px #0000000a}.row.assistant .bubble{border-top-left-radius:4px}.row.user .bubble{background:var(--user);color:var(--user-fg);border-bottom-right-radius:4px}.bubble p{margin:0 0 6px}.bubble p:last-child{margin-bottom:0}.bphoto{border-radius:10px;width:220px;max-width:100%;margin:-2px -4px 6px;display:block}.time{color:var(--dim);flex:none;margin-bottom:2px;font-size:10px}.mdtable{border-collapse:collapse;width:100%;margin:6px 0;font-size:13.5px}.mdtable th,.mdtable td{border-bottom:1px solid var(--line);text-align:left;padding:4px 6px}.mdtable th{color:var(--dim);font-size:12px;font-weight:500}.typing{color:var(--dim)}.typing span{animation:1.2s infinite blink}.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}@keyframes blink{0%,60%,to{opacity:.2}30%{opacity:1}}.err{color:#b42318;background:#fdecec;border-radius:12px;max-width:80%;margin:6px 0 6px auto;padding:8px 12px;font-size:13px}.err div{gap:6px;margin-top:6px;display:flex}.err button{background:#fff;border:1px solid #f2b8b5;border-radius:8px;padding:3px 10px;font-size:13px}.added{background:#ffffffa6;border-radius:10px;margin-top:8px;padding:7px 9px;font-size:13px}.added-top{align-items:center;gap:8px;display:flex}.added-top span{flex:1}.added-top button{background:var(--fg);color:#fff;border:0;border-radius:8px;padding:3px 10px;font-size:12.5px;font-weight:700}.added-words{color:#5c5240;white-space:nowrap;text-overflow:ellipsis;margin-top:4px;overflow:hidden}.added-words.open{white-space:normal}.composer{background:var(--card);border-top:1px solid var(--line);flex:none;align-items:flex-end;gap:6px;padding:8px 10px;display:flex}.composer textarea{resize:none;border:1px solid var(--line);background:var(--bg);field-sizing:content;border-radius:20px;outline:none;flex:1;max-height:120px;padding:9px 14px}.composer textarea:focus{border-color:var(--accent)}.cam,.send{border:0;border-radius:50%;flex:none;place-items:center;width:40px;height:40px;display:grid}.cam{background:var(--accent-soft);color:var(--accent-ink)}.send{background:var(--accent);color:var(--fg);font-size:20px;font-weight:800}.cam:disabled,.send:disabled{opacity:.4}.modes{gap:10px;display:grid}.mode{text-align:left;border:1px solid var(--line);background:var(--card);border-radius:16px;align-items:center;gap:12px;padding:14px;display:flex}.mode .micon{font-size:26px}.mode b{font-size:16px;display:block}.mode small{color:var(--dim);font-size:13px}.quiz{flex-direction:column;display:flex}.qtop{align-items:center;gap:10px;display:flex}.qbar{background:var(--accent-soft);border-radius:4px;flex:1;height:8px;overflow:hidden}.qbar div{background:var(--accent);height:100%;transition:width .3s}.qprompt{text-align:center;flex-direction:column;align-items:center;gap:6px;padding:34px 0 24px;display:flex}.qprompt h1{align-items:center;gap:10px;margin:0;font-size:34px;display:flex}.qmeaning{font-size:24px;font-weight:700}.bigsay{background:var(--accent);border:0;border-radius:50%;width:92px;height:92px;font-size:40px}.choices{gap:10px;display:grid}.choices button{border:2px solid var(--line);background:var(--card);text-align:left;border-radius:14px;padding:13px 14px;font-size:16px}.choices .right{border-color:var(--know);background:#e6f6ec;font-weight:700}.choices .wrong{border-color:var(--forgot);background:#fdecec}.choices .off{opacity:.5}.spell{gap:8px;display:flex}.spell input{border:2px solid var(--line);background:var(--card);border-radius:14px;outline:none;flex:1;padding:12px 14px;font-size:20px}.spell input:focus{border-color:var(--accent)}.spell input.right{border-color:var(--know);background:#e6f6ec}.spell input.wrong{border-color:var(--forgot);background:#fdecec}.spell button{border:0;border-radius:14px;padding:0 18px}.qfeed{border-radius:14px;margin-top:16px;padding:12px 14px;font-size:15px}.qfeed.ok{color:#13703b;text-align:center;background:#e6f6ec;font-weight:700}.qfeed.no{background:#fdecec}.qfeed button{border:0;border-radius:12px;width:100%;margin-top:10px;padding:11px;display:block}.wrow{border-bottom:1px solid var(--line);align-items:center;gap:8px;padding:7px 0;display:flex}.wrow .dim{flex:1}.pgrid{text-align:center;grid-template-columns:repeat(4,1fr);margin-bottom:12px;display:grid}.pgrid b{font-size:22px;display:block}.pgrid span{color:var(--dim);font-size:12px}.t-mature{color:var(--s-mature)}.sbar{background:var(--s-new);border-radius:4px;height:8px;margin-top:8px;display:flex;overflow:hidden}.sbar i{height:100%;display:block}.s-mature{background:var(--s-mature)}.s-young{background:var(--s-young)}.s-learn{background:var(--s-learn)}.s-new{background:var(--s-new)}.legend{color:var(--dim);flex-wrap:wrap;gap:10px;margin-top:8px;font-size:12px;display:flex}.legend i{vertical-align:-1px;border-radius:3px;width:9px;height:9px;margin-right:4px;display:inline-block}.spark{align-items:flex-end;gap:4px;height:60px;margin-top:14px;display:flex}.spark div{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;height:100%;display:flex}.spark i{background:var(--accent);border-radius:3px 3px 0 0;width:70%;max-width:16px;min-height:2px;display:block}.spark span{color:var(--dim);font-size:9.5px}.deck{text-align:left;background:var(--card);border:0;border-radius:14px;width:100%;margin-bottom:8px;padding:12px 14px;display:block;box-shadow:0 1px 2px #503c000d}.deck-top{align-items:baseline;gap:8px;display:flex}.deck-top b{flex:1;font-size:15.5px}.due{color:var(--know);background:#e6f6ec;border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}.dv-top{align-items:center;gap:10px;display:flex}.spacer{flex:1}.search{border:1px solid var(--line);background:var(--card);border-radius:12px;outline:none;width:100%;margin:12px 0 8px;padding:9px 12px}.wcard{background:var(--card);border-radius:12px;margin-bottom:6px}.wline{cursor:pointer;align-items:center;gap:8px;padding:10px 12px;display:flex}.wline b{flex:none}.wmean{min-width:0;color:var(--dim);white-space:nowrap;text-overflow:ellipsis;text-align:right;flex:1;font-size:13.5px;overflow:hidden}.wcard.open .wmean{white-space:normal}.dot{border-radius:50%;flex:none;width:8px;height:8px}.wdetail{padding:0 12px 12px}.wd-top{color:var(--dim);align-items:center;gap:8px;display:flex}.wd-btns{gap:6px;margin-top:10px;display:flex}.wd-btns button{border:1px solid var(--line);background:var(--card);border-radius:10px;flex:1;padding:6px;font-size:13px}.wdetail.edit label{color:var(--dim);margin-top:8px;font-size:12.5px;display:block}.wdetail.edit input,.wdetail.edit textarea{border:1px solid var(--line);background:var(--bg);width:100%;color:var(--fg);field-sizing:content;border-radius:8px;margin-top:2px;padding:7px 9px;display:block}.settings{margin-top:18px}.srow{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:9px 0;display:flex}.srow:last-child{border-bottom:0}.srow.col{flex-direction:column;align-items:stretch}.srow select{border:1px solid var(--line);background:var(--bg);border-radius:8px;padding:5px 8px}.seg{border:1px solid var(--line);border-radius:10px;display:flex;overflow:hidden}.seg button{background:var(--card);border:0;padding:5px 11px;font-size:13.5px}.seg button.on{background:var(--accent);font-weight:700}.toggle{background:#ddd5c3;border:0;border-radius:13px;width:46px;height:26px;padding:0;position:relative}.toggle i{background:#fff;border-radius:50%;width:20px;height:20px;transition:left .15s;position:absolute;top:3px;left:3px}.toggle.on{background:var(--know)}.toggle.on i{left:23px}.code{background:var(--bg);border:1px dashed var(--line);text-align:center;letter-spacing:1px;-webkit-user-select:all;user-select:all;border-radius:8px;margin-top:4px;padding:8px;font-family:ui-monospace,monospace;display:block}.fsent{text-align:left;background:var(--bg);border-radius:12px;max-width:34em;margin:18px auto 0;padding:10px 12px;font-size:16px;line-height:1.55}.fsent p{margin:0}.fsent .say{margin-left:2px}.fsent-ko{color:var(--dim);font-size:14.5px;margin-top:6px!important}.hl{color:var(--accent-ink);background:linear-gradient(transparent 60%, var(--accent-soft) 60%)}.fcard.front .fhint{margin-top:18px}.inmode{justify-content:center;margin-bottom:10px;display:flex}.draw{flex-direction:column;gap:8px;display:flex}.board-area{border:2px solid var(--line);background:var(--card);border-radius:16px;height:clamp(150px,28vh,230px);position:relative;overflow:hidden}.board-area.nudge{animation:.4s shake}.board{position:absolute;inset:0}.board-lines{pointer-events:none;position:absolute;inset:0}.board-lines span{height:0;position:absolute;left:4%;right:4%}.board-lines .l-top{border-top:1.5px solid #eee4cc;top:22%}.board-lines .l-mid{border-top:1.5px dashed #e6dbc0;top:42%}.board-lines .l-base{border-top:2px solid #f2b9a8;top:62%}.board-lines .l-bottom{border-top:1.5px solid #eee4cc;top:82%}.board-canvas{touch-action:none;width:100%;height:100%;position:absolute;inset:0}.board-note{text-align:center;color:var(--dim);pointer-events:none;font-size:13px;position:absolute;inset:auto 0 8px}.board-note.err{color:var(--forgot);padding:0 10px}.live{color:var(--accent-ink);background:var(--accent-soft);pointer-events:none;border-radius:999px;padding:1px 10px;font-size:14px;position:absolute;top:6px;right:10px}.draw-btns{gap:8px;display:flex}.draw-btns button{border:1px solid var(--line);background:var(--card);border-radius:12px;flex:1;padding:11px 6px;font-size:15px}.draw-btns .primary{background:var(--accent);border-color:var(--accent);flex:1.4;font-weight:700}.draw-btns button:disabled{opacity:.55}@keyframes shake{0%,to{transform:none}25%{transform:translate(-6px)}75%{transform:translate(6px)}}.diffbox{text-align:center;margin:4px 0 6px}.diffbox .label{color:var(--dim);font-size:12px}.diff{flex-wrap:wrap;justify-content:center;gap:1px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:24px;font-weight:700;display:inline-flex}.diff.empty{color:var(--dim);font-family:inherit;font-size:14px;font-weight:400}.diff .c{text-align:center;border-radius:5px;min-width:.7em;padding:0 1px;position:relative}.diff .ok{color:var(--know)}.diff .wrong{color:#fff;background:var(--forgot)}.diff .wrong small{color:var(--know);font-size:.55em;position:absolute;top:-1.05em;left:0;right:0}.diff .missing{color:var(--forgot);border-bottom:3px solid var(--forgot)}.diff .extra{color:var(--forgot);opacity:.8;text-decoration:line-through}.match .qtop{gap:8px}.mstat{font-variant-numeric:tabular-nums;color:var(--dim);flex:1;justify-content:center;gap:12px;font-size:14px;display:flex}.mgrid{perspective:900px;gap:8px;margin:14px 0 6px;display:grid}.mgrid.n8,.mgrid.n10,.mgrid.n12{grid-template-columns:repeat(3,1fr)}.mgrid.n14,.mgrid.n16{grid-template-columns:repeat(4,1fr)}.mcard{aspect-ratio:3/4;transform-style:preserve-3d;background:0 0;border:0;padding:0;transition:transform .35s;position:relative}.mgrid.n14 .mcard,.mgrid.n16 .mcard{aspect-ratio:4/5}.mcard.up{transform:rotateY(180deg)}.mcard>span{backface-visibility:hidden;border-radius:12px;place-items:center;display:grid;position:absolute;inset:0}.mback{background:var(--accent);font-size:28px;box-shadow:inset 0 0 0 3px #ffffff59,0 2px 4px #503c001f}.mface{text-align:center;word-break:keep-all;overflow-wrap:anywhere;border:2px solid var(--line);padding:6px;line-height:1.25;transform:rotateY(180deg);box-shadow:0 2px 4px #503c0014}.mcard.en .mface{background:var(--card);overflow-wrap:normal;font-weight:700}.mcard.ko .mface{background:var(--accent-soft)}.mcard.got .mface{border-color:var(--know);animation:.35s pop}.mcard.got{opacity:.55;transition:transform .35s,opacity .4s .3s}.mcard.miss .mface{border-color:var(--forgot)}.mcard.miss{animation:.3s mshake}@keyframes mshake{0%,to{transform:rotateY(180deg)}25%{transform:rotateY(180deg)translate(6px)}75%{transform:rotateY(180deg)translate(-6px)}}@keyframes pop{50%{transform:rotateY(180deg)scale(1.08)}}.match.open .mcard{transition:transform .15s,opacity .25s;transform:none}.match.open .mface{transform:none}.match.open .mcard.sel{transform:translateY(-3px)scale(1.04)}.match.open .mcard.sel .mface{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent), 0 6px 12px #503c002e}.match.open .mcard.gone{opacity:0;pointer-events:none;transform:scale(.6)}.match.open .mcard.miss{animation:.3s shake}.match.open .mcard.miss .mface{border-color:var(--forgot)}.match.open .mcard:disabled{cursor:default}
