:root{--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--page:#eceff4;--text:#2e3440;--muted:#4c566a;--line:#2e344021;--panel:#fff;--panel-line:#2e34401f;--accent:#5e81ac;--accent-text:#eceff4;--good:#3b7a57;--close:#b48a2c;--bad:#bf616a;--r0:#86b6ef;--r1:#5598e7;--r2:#2a78d6;--r3:#1c5cab;--r4:#104281;--unseen:#d8dee9}@media (prefers-color-scheme:dark){:root{--page:#2e3440;--text:#eceff4;--muted:#8b95a8;--line:#d8dee91f;--panel:#3b4252;--panel-line:#d8dee91a;--accent:#88c0d0;--accent-text:#2e3440;--good:#a3be8c;--close:#ebcb8b;--bad:#bf616a;--r0:#2a78d6;--r1:#5598e7;--r2:#86b6ef;--r3:#b7d3f6;--r4:#e6f0fc;--unseen:#4c566a}}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--page);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;margin:0}.app{flex-direction:column;min-height:100%;display:flex}button,.button,input{font:inherit;color:var(--text)}button,.button{appearance:none;border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:9px;padding:8px 14px}button:hover:not(:disabled),.button:hover{border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.link{color:var(--accent);background:0 0;border:none;padding:0;font-size:14px}.muted{color:var(--muted);font-size:14px}.topbar{border-bottom:1px solid var(--line);align-items:baseline;gap:14px;padding:14px 22px;display:flex}.topbar .brand{background:0 0;border:none;padding:0;font-size:17px;font-weight:600}.topbar-title{color:var(--muted)}.main{flex-direction:column;flex:1;gap:18px;width:100%;max-width:760px;margin:0 auto;padding:26px 16px 60px;display:flex}.message{border-left:3px solid var(--accent);background:var(--panel);border-radius:6px;margin:0;padding:10px 14px}.panel{background:var(--panel);border:1px solid var(--panel-line);border-radius:12px;padding:16px 18px}.panel h2{align-items:baseline;gap:12px;margin:0 0 12px;font-size:15px;display:flex}.datasets{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.dataset{align-items:center;gap:12px;padding:0;display:flex}.dataset-open{text-align:left;background:0 0;border:none;flex-direction:column;flex:1;gap:4px;padding:16px 18px;display:flex}.dataset .link{margin-right:18px}.due{color:var(--accent)}.actions{flex-wrap:wrap;gap:10px;display:flex}.tag-group{flex-direction:column;gap:6px;margin-bottom:12px;display:flex}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border-radius:999px;padding:5px 11px;font-size:14px}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.row{justify-content:space-between;align-items:center;gap:12px;margin-top:14px;display:flex}.row input[type=number]{border:1px solid var(--line);background:var(--page);border-radius:8px;width:80px;padding:6px 8px}.segmented{display:flex}.segmented button{border-radius:0;padding:6px 12px;font-size:14px}.segmented button:first-child{border-radius:9px 0 0 9px}.segmented button:last-child{border-radius:0 9px 9px 0}.segmented button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.start{flex-direction:column;align-items:center;gap:10px;display:flex}.start p{margin:0}.start .primary{padding:10px 28px}.review{flex-direction:column;gap:16px;display:flex}.review-bar{justify-content:space-between;display:flex}.prompt{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:28px 18px;display:flex}.prompt>span:last-child{font-size:30px;font-weight:600}.prompt img{border:1px solid var(--line);max-width:100%;height:150px}.options{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.options.image{grid-template-columns:repeat(3,1fr)}.option{justify-content:center;align-items:center;min-height:56px;padding:10px 26px;font-size:16px;display:flex;position:relative}.option img{object-fit:contain;width:100%;max-height:90px}.option kbd{color:var(--muted);font-family:inherit;font-size:11px;position:absolute;top:5px;left:8px}.option:disabled{opacity:1}.option.right{border:2px solid var(--good)}.option.wrong{border:2px solid var(--bad)}.typed{flex-direction:column;align-items:center;gap:10px;display:flex}.typed input{text-align:center;border:1px solid var(--line);background:var(--panel);border-radius:10px;width:100%;padding:12px 14px;font-size:20px}.typed input:focus{outline:2px solid var(--accent);outline-offset:-1px}.typed input.exact{border-color:var(--good)}.typed input.close{border-color:var(--close)}.typed input.wrong{border-color:var(--bad);text-decoration:line-through}.feedback{flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;font-size:18px;display:flex}.feedback>span:first-child{font-weight:600}.feedback.exact>span:first-child{color:var(--good)}.feedback.close>span:first-child{color:var(--close)}.feedback.wrong>span:first-child{color:var(--bad)}.legend{flex-wrap:wrap;gap:6px 14px;margin-bottom:12px;font-size:13px;display:flex}.legend>span{align-items:center;gap:5px;display:inline-flex}.swatch{border-radius:3px;width:16px;height:6px;display:inline-block}.r0{background:var(--r0)}.r1{background:var(--r1)}.r2{background:var(--r2)}.r3{background:var(--r3)}.r4{background:var(--r4)}.new{background:var(--unseen)}.grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;display:grid}.tile{flex-direction:column;align-items:center;gap:4px;min-width:0;padding:8px 6px 6px;display:flex}.tile.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tile img{border:1px solid var(--line);max-width:100%;height:34px}.tile strong{font-size:18px;line-height:34px}.tile-caption{text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--muted);font-size:12px;overflow:hidden}.bars{gap:2px;width:100%;display:flex}.bars i{border-radius:3px;flex:1;height:6px}.detail{z-index:10;width:min(600px,100% - 32px);position:fixed;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 8px 30px #0003}.detail header{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:8px;display:flex}.table-wrap{overflow-x:auto}.detail table{border-collapse:collapse;width:100%;font-size:13px}.detail th,.detail td{text-align:left;border-bottom:1px solid var(--line);white-space:nowrap;padding:5px 8px}.detail th{color:var(--muted);font-weight:500}.detail .num{text-align:right;font-variant-numeric:tabular-nums}.done{text-align:center}.done h2{justify-content:center}@media (width<=520px){.options.image{grid-template-columns:repeat(2,1fr)}.prompt img{height:110px}}
