.ty-wrap{max-width:1100px;margin:0 auto}
.ty{padding-bottom:24px}
.ty-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:12px;align-items:start}
.ty-col{display:grid;gap:12px;min-width:0}
.ty-card{background:var(--card);border-radius:16px;box-shadow:var(--sh);padding:12px 16px}
.ty-card h4{margin:0 0 6px;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--mute);display:flex;justify-content:space-between;align-items:center;gap:8px}
.ty-card h4 span{letter-spacing:0;text-transform:none;font-weight:600}
.ty-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}
.ty-stats b{display:block;font:800 1.5rem/1.2 var(--hd);color:var(--ink)}.ty-stats span{font-size:.78rem;color:var(--mute)}
.ty-ring{width:46px;height:46px;border-radius:50%;margin:0 auto 2px;display:grid;place-items:center;background:conic-gradient(var(--pri) calc(var(--p,0)*1%),#E6EAE5 0)}
.ty-ring i{font-style:normal;width:36px;height:36px;border-radius:50%;background:var(--card);display:grid;place-items:center;font:800 .72rem var(--hd)}
.ty-chart{width:100%;display:block}.ty-chart circle{cursor:pointer}
.ty-note{font-size:.84rem;color:var(--ink2);margin:4px 0 0;min-height:1.2em}
.ty-modes{display:grid;gap:8px}
.ty-mode{display:flex;gap:14px;align-items:center;width:100%;text-align:left;font:inherit;background:var(--card);border-radius:16px;box-shadow:var(--sh);padding:10px 14px;color:var(--ink);border:1.5px solid transparent;cursor:pointer}
.ty-mode:hover{border-color:var(--pri)}
.ty-mi{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:1.2rem;flex:none}
.ty-mode b{display:block;font:800 1rem var(--hd)}.ty-mode span:not(.ty-mi){font-size:.82rem;color:var(--mute)}
.ty-mode em{margin-left:auto;font-style:normal;font-weight:800;color:var(--pri);font-size:1.3rem}
.ty-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.ty-top h2{margin:0;font:800 1.2rem var(--hd)}.ty-top .sp{flex:1}
.ty-back{border:1px solid var(--line);background:var(--card);border-radius:10px;padding:6px 12px;font:inherit;font-weight:700;font-size:.9rem;color:var(--ink);cursor:pointer;min-height:34px}
.ty-lead{margin:0 0 8px;color:var(--mute);font-size:.88rem}
.ty-lv{display:grid;gap:6px}
.ty-l{display:flex;align-items:center;gap:12px;background:var(--card);box-shadow:var(--sh);border-radius:14px;padding:8px 14px}
.ty-l .n{width:28px;height:28px;border-radius:10px;background:#E3EFEA;color:#2F7D5B;display:grid;place-items:center;font-weight:800;flex:none}
.ty-l.lock{opacity:.55}.ty-l.lock .n{background:var(--line);color:var(--mute)}
.ty-l b{display:block;font-size:1rem}.ty-l small{font-size:.82rem;color:var(--mute)}
.ty-l .r{margin-left:auto;display:flex;align-items:center;gap:10px;white-space:nowrap}
.ty-btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;background:var(--pri);color:#fff;font:inherit;font-weight:800;font-size:.92rem;padding:8px 16px;min-height:36px;cursor:pointer}
.ty-btn:hover{filter:brightness(1.08)}.ty-btn:disabled{opacity:.45;cursor:not-allowed}
.ty-btn.gold{background:#F2C14E;color:#263130}.ty-btn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}
.ty-btn.wide{width:100%;font-size:1rem;min-height:42px}
.ty-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.ty-chips span{min-width:36px;text-align:center;padding:6px 10px;border-radius:10px;font:800 1.2rem ui-monospace,Consolas,monospace;background:var(--bg);border-bottom:3px solid var(--line)}
.ty-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.ty-pill{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:4px 10px;font-weight:800;font-size:.9rem;font-variant-numeric:tabular-nums;color:var(--ink)}
.ty-bar .sp{flex:1}
.ty-dots span{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--line);margin:0 3px}.ty-dots .on{background:var(--pri)}.ty-dots .cu{background:#F2C14E}
.ty-prog{height:6px;background:#E6EAE5;border-radius:99px;overflow:hidden;margin-bottom:10px}.ty-prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,#3E7C6B,#6CC3A6);transition:width .15s}
.ty-text{font:1.2rem/1.75 ui-monospace,Consolas,monospace;background:#F7F9F6;border:1px solid var(--line);border-radius:14px;padding:10px 16px;color:#8A9792;height:112px;overflow:hidden;white-space:pre-wrap;word-break:break-word;cursor:text}
.ty-text.tall{height:170px}
.ty-text i{font-style:normal}.ty-text .ok{color:#2F7D5B}.ty-text .bad{background:#E5484D;color:#fff;border-radius:4px}.ty-text .cur{background:#F2C14E;color:#263130;border-radius:4px}
.ty-in{position:fixed;left:-999px;top:0;opacity:0}
.ty-hint{font-size:.84rem;color:var(--mute);margin-top:6px}
.ty-coach{text-align:center;font-weight:700;font-size:.9rem;margin:6px 0 2px;color:var(--ink2);min-height:1.4em}
.ty-kb{display:grid;gap:4px;margin-top:4px}.ty-kr{display:flex;justify-content:center;gap:4px}
.ty-k{flex:1;max-width:44px;height:32px;border-radius:8px;display:grid;place-items:center;font:700 .8rem system-ui;color:#263130;text-transform:uppercase;transition:transform .1s}
.ty-k.sp{max-width:260px}.ty-k.sh{max-width:70px;font-size:.62rem}
.ty-k.nx{transform:scale(1.12);box-shadow:0 0 0 2px #fff,0 0 0 4px #F2C14E;z-index:1}
.ty-k.er{background:#E5484D!important;color:#fff;animation:tysh .2s}
@keyframes tysh{25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
.ty-leg{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;font-size:.8rem;color:var(--mute);margin-top:12px}.ty-leg i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:5px}
.ty-res{max-width:640px;margin:0 auto;text-align:center}
.ty-big{font:800 3rem var(--hd);color:var(--pri);line-height:1}.ty-big small{font-size:1.2rem;color:var(--mute);font-weight:700}
.ty-msg{font-weight:800;font-size:1rem;margin:8px 0 2px}
.ty-tag{display:inline-block;background:var(--bg);border-radius:8px;padding:3px 9px;font-size:.84rem;margin:2px}
.ty-acts{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:10px}
.ty-opts{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.ty-opt{background:var(--bg);border:2px solid transparent;border-radius:12px;padding:6px 10px;text-align:left;font:inherit;font-size:.9rem;color:var(--ink);cursor:pointer}
.ty-opt b{display:block}.ty-opt span{font-size:.74rem;color:var(--mute)}.ty-opt.sel{border-color:var(--pri);background:#F1F7F4}
.ty-row{display:flex;gap:10px;flex-wrap:wrap}.ty-row>*{flex:1;min-width:100px}
.ty-exam{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.ty-pane{height:44vh;min-height:200px;max-height:420px;background:#F7F9F6;border:2px solid var(--line);border-radius:12px;padding:10px 12px;font:1rem/1.6 ui-monospace,Consolas,monospace;color:var(--ink);overflow:auto;white-space:pre-wrap;word-break:break-word;width:100%}
textarea.ty-pane{resize:none;outline:none;-webkit-user-select:text;user-select:text}textarea.ty-pane:focus{border-color:var(--pri)}
.ty-ph{font-size:.76rem;font-weight:800;letter-spacing:.08em;color:var(--mute);margin-bottom:4px}
#tyArena{position:relative;height:min(320px,42vh);background:#F7F9F6;border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-top:10px}
.ty-w{position:absolute;top:0;padding:2px 12px;border-radius:10px;background:var(--pri);color:#fff;font:700 1.1rem ui-monospace,Consolas,monospace;white-space:nowrap;will-change:transform}
.ty-w.hit{background:#F2C14E;color:#263130}
.ty-fin{width:100%;font:1.1rem ui-monospace,Consolas,monospace;padding:8px 12px;border-radius:12px;border:2px solid var(--pri);background:var(--card);color:var(--ink);margin-top:10px}
.ty-pop{animation:typop .5s}@keyframes typop{0%{transform:scale(.7);opacity:0}60%{transform:scale(1.04)}100%{transform:none;opacity:1}}
@media(max-width:860px){.ty-grid,.ty-exam{grid-template-columns:1fr}.ty-text{font-size:1.05rem;padding:10px 12px;height:130px}.ty-k{height:30px;font-size:.72rem}.ty-pane{height:30vh;min-height:160px}.ty-big{font-size:2.6rem}.ty-opts{grid-template-columns:1fr 1fr}}
@media(prefers-reduced-motion:reduce){.ty-pop,.ty-k.er{animation:none}}
.ty-head{padding:0 0 8px}
.ty-head h1{font:800 1.5rem var(--hd);margin:2px 0 2px}.ty-head p{margin:0;color:var(--mute);font-size:.9rem;max-width:64ch}
@media(max-width:860px){.ty-head h1{font-size:1.3rem}}
.ty-login{background:var(--bg);border-radius:12px;padding:12px 14px}.ty-login b{display:block;font:800 1rem var(--hd);margin-bottom:4px}.ty-login p{margin:0 0 8px;color:var(--ink2);font-size:.86rem;line-height:1.45}
.ty-wrap.busy .ty-head p{display:none}html[data-theme=dark]{color-scheme:dark}html[data-theme=dark] .ty-card{background:var(--card);box-shadow:var(--sh)}html[data-theme=dark] .ty-card h4{color:var(--mute)}html[data-theme=dark] .ty-stats b{color:var(--ink)}html[data-theme=dark] .ty-stats span{color:var(--mute)}html[data-theme=dark] .ty-ring{background:conic-gradient(var(--pri) calc(var(--p,0)*1%),#38444B 0)}html[data-theme=dark] .ty-ring i{background:var(--card)}html[data-theme=dark] .ty-note{color:var(--ink2)}html[data-theme=dark] .ty-mode{background:var(--card);box-shadow:var(--sh);color:var(--ink);border:1.5px solid transparent}html[data-theme=dark] .ty-mode:hover{border-color:var(--pri)}html[data-theme=dark] .ty-mode span:not(.ty-mi){color:var(--mute)}html[data-theme=dark] .ty-mode em{color:var(--pri)}html[data-theme=dark] .ty-back{border:1px solid var(--line);background:var(--card);color:var(--ink)}html[data-theme=dark] .ty-lead{color:var(--mute)}html[data-theme=dark] .ty-l{background:var(--card);box-shadow:var(--sh)}html[data-theme=dark] .ty-l .n{background:#334847;color:#E8EEEA}html[data-theme=dark] .ty-l.lock .n{background:var(--line);color:var(--mute)}html[data-theme=dark] .ty-l small{color:var(--mute)}html[data-theme=dark] .ty-btn{border:0;background:var(--pri);color:#FFFFFF}html[data-theme=dark] .ty-btn.gold{background:#DAB766;color:#263130}html[data-theme=dark] .ty-btn.ghost{background:var(--card);color:var(--ink);border:1px solid var(--line)}html[data-theme=dark] .ty-chips span{background:var(--bg);border-bottom:3px solid var(--line)}html[data-theme=dark] .ty-pill{background:var(--card);border:1px solid var(--line);color:var(--ink)}html[data-theme=dark] .ty-dots span{background:var(--line)}html[data-theme=dark] .ty-dots .on{background:var(--pri)}html[data-theme=dark] .ty-dots .cu{background:#DAB766;color:#1E262B}html[data-theme=dark] .ty-prog{background:#38444B}html[data-theme=dark] .ty-prog i{background:linear-gradient(90deg,#3E7C6B,#6DC2A6)}html[data-theme=dark] .ty-text{background:#2F3A40;border:1px solid var(--line);color:#E8EEEA}html[data-theme=dark] .ty-text .ok{color:#58B896}html[data-theme=dark] .ty-text .bad{background:#D15C60;color:#1E262B}html[data-theme=dark] .ty-text .cur{background:#DAB766;color:#263130}html[data-theme=dark] .ty-hint{color:var(--mute)}html[data-theme=dark] .ty-coach{color:var(--ink2)}html[data-theme=dark] .ty-k{color:#E9ECEC}html[data-theme=dark] .ty-k.nx{box-shadow:0 0 0 2px rgba(255,255,255,0.1),0 0 0 4px rgba(242,193,78,0.1)}html[data-theme=dark] .ty-k.er{background:#D15C60!important;color:#1E262B}html[data-theme=dark] .ty-leg{color:var(--mute)}html[data-theme=dark] .ty-big{color:var(--pri)}html[data-theme=dark] .ty-big small{color:var(--mute)}html[data-theme=dark] .ty-tag{background:var(--bg)}html[data-theme=dark] .ty-opt{background:var(--bg);border:2px solid transparent;color:var(--ink)}html[data-theme=dark] .ty-opt span{color:var(--mute)}html[data-theme=dark] .ty-opt.sel{border-color:var(--pri);background:#334846}html[data-theme=dark] .ty-pane{background:#2F3A40;border:2px solid var(--line);color:var(--ink)}html[data-theme=dark] textarea.ty-pane{outline:none}html[data-theme=dark] textarea.ty-pane:focus{border-color:var(--pri)}html[data-theme=dark] .ty-ph{color:var(--mute)}html[data-theme=dark] #tyArena{background:#2F3A40;border:1px solid var(--line)}html[data-theme=dark] .ty-w{background:var(--pri);color:#FFFFFF}html[data-theme=dark] .ty-w.hit{background:#DAB766;color:#263130}html[data-theme=dark] .ty-fin{border:2px solid var(--pri);background:var(--card);color:var(--ink)}html[data-theme=dark] .ty-head p{color:var(--mute)}html[data-theme=dark] .ty-login{background:var(--bg)}html[data-theme=dark] .ty-login p{color:var(--ink2)}html[data-theme=sepia] .ty-ring{background:conic-gradient(var(--pri) calc(var(--p,0)*1%),#E4DBCD 0)}html[data-theme=sepia] .ty-l .n{background:#E6EDE5}html[data-theme=sepia] .ty-btn.gold{color:#322C25}html[data-theme=sepia] .ty-prog{background:#E4DBCD}html[data-theme=sepia] .ty-text{background:#F1EBDF;color:#9C9185}html[data-theme=sepia] .ty-text .cur{color:#322C25}html[data-theme=sepia] .ty-k{color:#322C25}html[data-theme=sepia] .ty-opt.sel{background:#F0F3EC}html[data-theme=sepia] .ty-pane{background:#F1EBDF}html[data-theme=sepia] #tyArena{background:#F1EBDF}html[data-theme=sepia] .ty-w.hit{color:#322C25}