:root{--bg:#0b0d12;--panel:#141821;--panel-2:#1b202b;--ink:#eef1f6;--muted:#98a2b3;--line:#262c3a;--accent:#ffd166;--lang:#f6a86a;--mech:#7cc4f2;--good:#6ee7b7;--bad:#f87171;--radius:16px}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif;font-size:16px;line-height:1.5}button{font:inherit;cursor:pointer;background:var(--panel-2);color:var(--ink);border:none;border-radius:10px;padding:11px 18px;transition:background .15s,transform 50ms}button:hover{background:#232a38}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button.primary{background:var(--accent);color:#17181c;font-weight:650}button.primary:hover{background:#ffdd8a}button.ghost{border:1px solid var(--line);background:0 0}button.ghost:hover{background:var(--panel-2)}.app{max-width:920px;margin:0 auto;padding:28px 24px 80px}.topbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.brand{align-items:baseline;gap:10px;display:flex}.brand h1{letter-spacing:-.3px;margin:0;font-size:20px}.brand span{color:var(--muted);font-size:13px}.nav{flex-wrap:wrap;gap:8px;display:flex}.nav button.active{background:var(--panel-2);box-shadow:inset 0 0 0 1px var(--accent)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;padding:24px}.panel h2{letter-spacing:-.3px;margin:0 0 6px;font-size:20px}.panel h3{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:22px 0 10px;font-size:15px;font-weight:600}.panel p{color:var(--muted);margin:0 0 12px}.panel p.ink{color:var(--ink)}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.spread{justify-content:space-between}.grid{gap:14px;display:grid}.grid.two{grid-template-columns:1fr 1fr}.grid.three{grid-template-columns:repeat(3,1fr)}.grid.four{grid-template-columns:repeat(4,1fr)}@media (width<=900px){.grid.four{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.grid.two,.grid.three,.grid.four{grid-template-columns:1fr}}.stat{background:var(--panel-2);border-radius:12px;padding:16px}.stat .value{letter-spacing:-.5px;font-size:26px;font-weight:700}.stat .label{color:var(--muted);margin-top:4px;font-size:13px}.stat.lang .value{color:var(--lang)}.stat.mech .value{color:var(--mech)}.stat.good .value{color:var(--good)}.field{border:1px solid var(--line);width:100%;color:var(--ink);resize:vertical;background:#0e1117;border-radius:12px;padding:16px 18px;font-family:inherit;font-size:19px;line-height:1.6}.field:focus{border-color:#3b455c;outline:none}.field.gap{text-align:center;padding:14px;font-size:20px}.reference{border:1px solid var(--line);border-left:3px solid var(--accent);-webkit-user-select:none;user-select:none;background:#0e1117;border-radius:10px;padding:16px 18px;font-size:19px;line-height:1.6}.reading{border:1px solid var(--line);color:#d6dce8;background:#0e1117;border-radius:10px;padding:18px;line-height:1.7}.gapline{font-size:21px;line-height:1.8}.gapline .slot{border-bottom:2px solid var(--accent);text-align:center;min-width:96px;margin:0 4px;display:inline-block}.hint{color:var(--muted);font-size:14px}.warn{color:#fca5a5;background:#f871711a;border:1px solid #f8717159;border-radius:10px;padding:10px 14px;font-size:14px}.note{color:#e8d9ae;background:#ffd16614;border:1px solid #ffd16640;border-radius:10px;padding:12px 16px;font-size:14px}.verdict{align-items:center;gap:12px;margin-bottom:10px;display:flex}.verdict .badge{border-radius:999px;padding:6px 14px;font-size:14px;font-weight:700}.badge.pass{color:var(--good);background:#6ee7b724}.badge.almost{color:var(--mech);background:#7cc4f224}.badge.fail{color:var(--bad);background:#f8717124}.issues{flex-direction:column;gap:10px;margin:12px 0 0;padding:0;list-style:none;display:flex}.issues li{background:var(--panel-2);border-left:3px solid var(--lang);border-radius:10px;padding:12px 14px;font-size:15px}.issues li.mech{border-left-color:var(--mech)}.issues .pair{font-size:16px}.issues .wrong{color:var(--bad);text-decoration:line-through}.issues .right{color:var(--good);font-weight:600}.issues .why{color:var(--muted);margin-top:4px;font-size:13.5px}.progressbar{background:var(--panel-2);border-radius:999px;height:6px;margin:14px 0 4px;overflow:hidden}.progressbar>div{background:var(--accent);height:100%;transition:width .25s}.rules{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.rules li{background:var(--panel-2);border-radius:10px;align-items:center;gap:14px;padding:12px 14px;display:flex}.rules .name{flex:1}.rules .boxes{gap:4px;display:flex}.rules .box{background:#2b3243;border-radius:3px;width:10px;height:18px}.rules .box.on{background:var(--accent)}.rules .mastered{color:var(--good);font-size:13px}.chart-title{color:var(--muted);margin-bottom:6px;font-size:14px}.legend{color:var(--muted);gap:16px;margin-top:8px;font-size:13px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border-radius:3px;width:10px;height:10px;display:inline-block}.empty{color:var(--muted);text-align:center;padding:18px 0;font-size:14px}.steps{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.steps .step{background:var(--panel-2);color:var(--muted);border-radius:999px;padding:6px 12px;font-size:13px}.steps .step.current{background:var(--accent);color:#17181c;font-weight:600}.steps .step.done{color:var(--good)}
