.tr-app{max-width:1200px;margin:0 auto;padding:36px 24px 70px;color:#eaf0ff;font-family:Inter,system-ui,sans-serif}.tr-app *{box-sizing:border-box}.tr-app [hidden]{display:none!important}.tr-hero{display:grid;grid-template-columns:1fr 300px;gap:40px;padding:38px 0 46px;align-items:center}.tr-eyebrow{font-size:11px;letter-spacing:.16em;color:#83d9c6;font-weight:700}.tr-hero h1{font-size:clamp(34px,4vw,55px);line-height:1.12;letter-spacing:-.04em;margin:20px 0}.tr-hero h1 span{color:#a8b9ff}.tr-hero p,.tr-card p,.tr-rules{color:#aab8d1}.tr-row{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.tr-row a{color:#b5caff}.tr-primary,.tr-quiet{border:1px solid #425276;border-radius:12px;font:inherit;cursor:pointer;padding:13px 19px;color:#ecf3ff;background:#1c2b45}.tr-primary{background:#a6b9ff;border-color:#a6b9ff;color:#102044;font-weight:750}.tr-primary:disabled{opacity:.5;cursor:wait}.tr-orbit{aspect-ratio:1;border:1px solid #324362;border-radius:50%;position:relative;display:grid;place-items:center;background:radial-gradient(circle,#33427450,transparent 65%)}.tr-orbit:before{content:'';position:absolute;inset:35px;border:1px dashed #4b638c;border-radius:50%;animation:tr-spin 60s linear infinite}.tr-orbit b{font-size:64px;text-align:center;line-height:.8;color:#a6b9ff}.tr-orbit small{font-size:13px;letter-spacing:.04em}.tr-orbit span{position:absolute;background:#17253c;border:1px solid #4f6387;border-radius:15px;padding:15px;box-shadow:0 10px 30px #0003;font-weight:700}.tr-orbit span:nth-of-type(1){top:0;left:40px}.tr-orbit span:nth-of-type(2){right:-5px;top:110px}.tr-orbit span:nth-of-type(3){bottom:4px;left:35px}@keyframes tr-spin{to{transform:rotate(360deg)}}.tr-controls{display:flex;gap:18px;align-items:end;margin-bottom:22px}.tr-controls label:first-child{flex:1}.tr-app label{display:block;font-size:13px;color:#c0cce1}.tr-app input,.tr-app select,.tr-app textarea{display:block;background:#101d31;color:#eaf0ff;border:1px solid #43526f;border-radius:10px;padding:13px 15px;width:100%;font:inherit;font-size:16px;margin:8px 0}.tr-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.tr-card{text-align:left;color:inherit;font:inherit;background:linear-gradient(140deg,#19273d,#142034);border:1px solid #31415a;border-radius:20px;padding:24px;cursor:pointer;transition:transform .16s,border-color .16s;display:flex;flex-direction:column;min-width:0}.tr-card:hover{transform:translateY(-3px);border-color:#8dacf8}.tr-card h2{font-size:19px;margin:20px 0 8px}.tr-card p{font-size:14px;line-height:1.6;flex:1;margin:0 0 28px}.tr-badge{width:47px;height:47px;border-radius:14px;display:grid;place-items:center;background:#253756;color:#a8dacf;font-weight:750}.tr-card:nth-child(3n+2) .tr-badge{background:#363356;color:#cac0ff}.tr-card-foot{font-size:11px;color:#b8c6de;display:flex;justify-content:space-between}.tr-card-foot b{font-size:18px}.tr-round{max-width:840px;margin:10px auto 40px;background:#18253b;border:1px solid #40516f;border-radius:24px;padding:30px}.tr-round .tr-row h2{flex:1;font-size:22px}.tr-round progress{width:100%;height:7px;margin:15px 0 30px;accent-color:#83d9c6}.tr-round p{line-height:1.8}.tr-round pre{padding:20px;background:#0b1424;color:#c7e0ff;border-radius:14px;font-size:16px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}.tr-round table{width:100%;border-collapse:collapse;text-align:center;margin:20px 0}.tr-round th,.tr-round td{border:1px solid #526585;padding:14px;text-align:center}.tr-round ol{padding-left:25px;list-style:decimal}.tr-formula{font-size:24px;padding:20px;background:#253656;border-radius:12px;text-align:center}.tr-circuit{display:flex;gap:12px;flex-wrap:wrap}.tr-circuit>*{padding:16px;background:#253656;border-radius:12px}.tr-cells{display:flex;gap:8px;flex-wrap:wrap}.tr-cells span{border:1px solid #6b839f;padding:12px;min-width:44px;text-align:center}.tr-round textarea{min-height:60px}#answerFeedback,#hintText,#trNotice:not(:empty){padding:16px;border-radius:12px;background:#243650;margin:16px 0;line-height:1.7}#answerFeedback.good{border-left:4px solid #81dcc4}#answerFeedback.bad{border-left:4px solid #ffbd85}.tr-score{font-size:50px;color:#9ae3cb}.tr-review{padding:15px 0;border-bottom:1px solid #40516f}.tr-rules{margin-top:30px;padding:20px;border:1px solid #32435d;border-radius:15px;line-height:1.7;font-size:13px}.tr-rules summary{cursor:pointer;color:#dce6fc}.tr-app :focus-visible{outline:3px solid #a6b9ff;outline-offset:4px}@media(max-width:800px){.tr-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tr-hero{grid-template-columns:1fr}.tr-orbit{display:none}}@media(max-width:520px){.tr-app{padding:15px 16px 40px}.tr-hero{padding:24px 0}.tr-grid{grid-template-columns:1fr}.tr-controls{align-items:stretch;flex-direction:column}.tr-card{padding:21px}.tr-round{padding:19px;border-radius:18px}.tr-formula{font-size:19px}.tr-round pre{font-size:14px;padding:14px}.tr-primary{min-height:48px}}@media(prefers-reduced-motion:reduce){.tr-orbit:before{animation:none}.tr-card{transition:none}}

.tr-round{scroll-margin-top:150px}

/* Visible feedback while a request is pending; no permanent click lock. */
.tr-app[aria-busy=true] #trNotice:before{content:'↻';display:inline-block;margin-right:8px;animation:tr-spin 1.3s linear infinite}
.tr-card:disabled{opacity:.65;cursor:wait;transform:none}.tr-quiet:disabled{opacity:.6;cursor:wait}
#trLoading{padding:14px 18px;border:1px solid #43526f;border-radius:12px;margin:0 0 18px;line-height:1.6}#trLoading a{color:#b5caff}
#trRetry{margin:0 0 18px}#trNotice:not(:empty){scroll-margin-top:150px}
@media(prefers-reduced-motion:reduce){.tr-app[aria-busy=true] #trNotice:before{animation:none}}

.tr-round .tr-quiet,.tr-round .tr-primary{text-decoration:none;display:inline-flex;align-items:center;justify-content:center}.tr-app [hidden]{display:none!important}
/* Touch-safe trainer launch and competition UI. */
.tr-card-wrap{min-width:0;display:flex;flex-direction:column;border:1px solid var(--theme-line,#40516f);border-radius:20px;overflow:hidden;background:var(--theme-panel,#18253b)}.tr-card-wrap .tr-card{border:0;border-radius:0;flex:1;width:100%;touch-action:manipulation;background:transparent;transform:none}.tr-card-rating{padding:14px 24px;border-top:1px solid var(--theme-line,#40516f);font-size:13px;color:var(--theme-accent,#b5caff);text-decoration:none;min-height:46px}.tr-app button,.tr-app a{touch-action:manipulation}.tr-card:hover{transform:none}.tr-card-wrap:focus-within{outline:2px solid var(--theme-accent,#a6b9ff);outline-offset:3px}@media(hover:hover) and (pointer:fine){.tr-card-wrap:hover{border-color:var(--theme-accent,#a6b9ff)}.tr-card-rating:hover{text-decoration:underline}}
.tr-round{scroll-margin-top:90px}.tr-round-links{justify-content:space-between;margin:0 0 20px;font-size:13px}.tr-round-links a{min-height:44px;display:inline-flex;align-items:center}.tr-round-links span{color:var(--theme-success,#81dcc4)}.tr-app .tr-typing-settings{padding:18px 22px;border:1px solid var(--theme-line,#40516f);border-radius:16px;margin:0 0 24px;background:var(--theme-panel,#18253b)}.tr-typing-settings summary{cursor:pointer;font-weight:700;padding:6px 0}.tr-typing-settings .tr-controls{margin:12px 0}.tr-typing-settings label{flex:1}.tr-typing-settings p{font-size:13px;color:var(--theme-muted,#aab8d1);line-height:1.6;margin:10px 0 0}.tr-typing-ready{border:1px solid var(--theme-line,#40516f);padding:24px;border-radius:16px;background:var(--theme-panel2,#21304a)}.tr-typing-ready h3{font-size:25px;margin:0 0 10px}.tr-typing-live{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:16px;background:var(--theme-panel2,#21304a);border-radius:14px;margin-bottom:20px}.tr-typing-live>div{text-align:center}.tr-typing-live b{display:block;font-size:25px;color:var(--theme-ink,#eaf0ff);font-variant-numeric:tabular-nums}.tr-typing-live span{font-size:11px;color:var(--theme-muted,#aab8d1)}.tr-typing-live progress,.tr-typing-live p{grid-column:1/-1;margin:0;text-align:center}.tr-round .tr-type-target{padding:18px;border:1px solid var(--theme-line,#40516f);border-radius:12px;background:var(--theme-bg,#0c172a);color:var(--theme-ink,#eaf0ff);font:21px/1.8 ui-monospace,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:280px;overflow-y:auto;margin:0 0 18px}.tr-type-target .typed-ok{color:var(--theme-success,#81dcc4)}.tr-type-target .typed-error{color:var(--theme-error,#ffadad);text-decoration:underline wavy;font-weight:800}.tr-type-target .typed-cursor{background:var(--theme-action,#285aca);color:#fff;border-bottom:3px solid currentColor}.tr-medal{font-weight:750;font-size:20px}.tr-back{display:inline-flex;margin:0 0 24px;text-decoration:none;min-height:46px}.tr-ranking h1{font-size:clamp(26px,4vw,42px);line-height:1.25;margin:18px 0}.tr-muted{color:var(--theme-muted,#aab8d1)}.tr-rank-filters{display:flex;align-items:end;flex-wrap:wrap;gap:14px;margin:28px 0}.tr-rank-filters label{flex:1 1 140px}.tr-rank-filters label:first-child{flex:2 1 240px}.tr-rank-filters .tr-primary{margin:8px 0}.tr-rank-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:24px 0}.tr-rank-stats>div{background:var(--theme-panel,#18253b);border:1px solid var(--theme-line,#40516f);border-radius:16px;padding:22px;text-align:center}.tr-rank-stats strong{display:block;font-size:clamp(23px,4vw,35px)}.tr-rank-stats span{display:block;margin-top:8px;font-size:12px;color:var(--theme-muted,#aab8d1)}.tr-leaders{padding:0;margin:24px 0;list-style:none}.tr-leaders li{display:flex;gap:16px;align-items:center;padding:18px;border-bottom:1px solid var(--theme-line,#40516f)}.tr-leaders li.is-mine{background:var(--theme-panel2,#21304a);border:2px solid var(--theme-accent,#a6b9ff);border-radius:12px}.tr-place{width:40px;flex-shrink:0}.tr-player{flex:1;min-width:0;overflow-wrap:anywhere}.tr-player small{display:block;margin-top:4px;color:var(--theme-muted,#aab8d1);font-size:12px}.tr-points{white-space:nowrap;font-size:22px}.tr-points small{font-size:12px;font-weight:400}.tr-empty-board{padding:35px;text-align:center;background:var(--theme-panel,#18253b);border-radius:16px}.tr-empty-board a{display:inline-flex;text-decoration:none;margin-top:10px}
@media(max-width:520px){.tr-typing-settings .tr-controls{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tr-typing-settings select{padding:12px 8px}.tr-typing-settings{padding:16px!important}.tr-rank-stats{gap:7px}.tr-rank-stats>div{padding:16px 6px}.tr-rank-stats span{font-size:11px}.tr-typing-live{gap:6px;padding:12px}.tr-round .tr-type-target{font-size:18px;line-height:1.8;padding:12px}.tr-round{margin-top:0}.tr-hero:has(+ #trLoading ~ #trRound:not([hidden])){display:none}.tr-leaders li{padding:14px 6px;gap:8px}}

@media(max-width:520px){.tr-app.tr-is-active .tr-hero{display:none}}
html[data-academy-theme] .tr-score{color:var(--theme-success)}

/* Calm catalog; the topic ranking is shown only within the active trainer. */
.tr-is-active .tr-hero{display:none}
html .tr-app .tr-general-rating{display:inline-flex;align-items:center;min-height:44px;color:var(--theme-accent,#b5caff);font-size:14px;text-decoration:none;border-bottom:1px solid var(--theme-line,#4f6387);padding:6px 2px}
.tr-card-wrap{border-radius:18px}.tr-card-wrap .tr-card{border-radius:18px}.tr-card-foot{gap:10px}
.tr-round-links{justify-content:flex-start;border-bottom:1px solid var(--theme-line,#40516f);padding:0 0 12px;margin:12px 0 20px}.tr-round-links a{font-size:13px;min-height:36px;display:inline-flex;align-items:center;text-underline-offset:4px}
.typing-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:20px 0 14px}
.typing-options [hidden]{display:none!important}.typing-options select{width:100%}.typing-launch{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;border-top:1px solid var(--theme-line,#40516f);padding-top:18px;margin-top:18px}
.tr-typing-ready h3{font-size:25px;margin:0 0 10px}.tr-typing-ready p{line-height:1.6}#typingSettingsNote,#typingPreviousBest{font-size:13px}#typingBegin:disabled{opacity:.55;cursor:default}
.typing-race{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:10px 0 16px}.typing-race label{display:flex;align-items:center;gap:10px}.typing-race progress{height:9px;flex:1;min-width:0}#typingPaceTrack{accent-color:#b09cda}
.typing-toolbar{margin-bottom:14px}.typing-toolbar button{font-size:12px;padding:9px 12px;min-height:40px}#typingCaps{color:var(--theme-accent,#b5caff);font-size:12px}
.typing-keyboard{padding:14px;background:var(--theme-panel,#17253c);border:1px solid var(--theme-line,#43526f);border-radius:14px;margin-bottom:16px;text-align:center;max-width:700px}
.typing-keyboard>div{display:flex;justify-content:center;gap:4px;margin-bottom:4px}.typing-keyboard kbd{display:inline-grid;place-items:center;min-width:26px;min-height:32px;padding:3px 7px;border:1px solid var(--theme-line,#52678c);border-bottom-width:3px;border-radius:5px;background:var(--theme-panel2,#233453);color:var(--theme-ink,#eaf0ff);font:600 13px/1.3 monospace}
.typing-keyboard kbd.is-next{background:var(--theme-action,#285aca);color:#fff;border-color:var(--theme-accent,#9cb8ff)}.typing-keyboard kbd.typing-space{width:45%}
#typingTextView{font-size:clamp(19px,2.3vw,26px);line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow-y:auto;letter-spacing:.02em;padding:20px}
#typingTextView .typed-cursor{border-bottom:3px solid var(--theme-accent,#9cb8ff);background:var(--theme-panel2,#233453);color:var(--theme-ink,#eaf0ff)}
#typingTextView .typed-error{background:#642b36;color:#fff;text-decoration:underline;text-decoration-color:#ffc2cb;text-underline-offset:4px}
#typingTextView .typed-ok{color:#8cddba}html:is([data-academy-theme=light],[data-academy-theme=warm]) #typingTextView .typed-ok{color:#145c41}
.typing-result-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:18px 0}.typing-result-stats>div{padding:14px;border:1px solid var(--theme-line,#43526f);border-radius:12px;background:var(--theme-panel,#17253c)}.typing-result-stats b,.typing-result-stats span{display:block}.typing-result-stats b{font-size:22px;color:var(--theme-ink,#eaf0ff)}.typing-result-stats span{font-size:12px;color:var(--theme-muted,#b6c2dd);margin-top:5px}
.typing-history{display:flex;align-items:end;gap:12px;margin:18px 0;max-width:440px}.typing-history>div{flex:1;text-align:center}.typing-history i{display:block;min-height:5px;border-radius:5px 5px 0 0;background:var(--theme-accent,#9cb8ff)}.typing-history small{display:block;margin-top:5px;font-size:11px;color:var(--theme-muted,#b6c2dd)}
#roundSummary>.tr-quiet,#roundSummary>.tr-primary{display:inline-flex;align-items:center;min-height:44px;margin:8px 8px 0 0}
@media(max-width:600px){.typing-options{grid-template-columns:1fr}.typing-race{grid-template-columns:1fr;gap:8px}.typing-toolbar{gap:8px}.typing-result-stats{grid-template-columns:1fr 1fr}.typing-keyboard{padding:8px 3px}.typing-keyboard>div{gap:2px}.typing-keyboard kbd{min-width:0;min-height:26px;flex:1;padding:2px;font-size:10px}.typing-keyboard kbd.typing-space{display:inline-grid}.tr-typing-ready{padding:16px!important}#typingTextView{font-size:19px;padding:12px;max-height:220px}.tr-round-links{gap:10px}.typing-launch .tr-primary{width:100%}}

.tr-card-wrap a.tr-card{text-decoration:none;position:relative;z-index:1;-webkit-tap-highlight-color:transparent}.tr-card-wrap .tr-card::before,.tr-card-wrap .tr-card::after{pointer-events:none}.tr-card-wrap a.tr-card:focus-visible{outline:3px solid var(--theme-accent);outline-offset:-4px}.tr-launch h1{font-size:clamp(25px,5vw,38px);line-height:1.2}.tr-launch form{margin:24px 0}.tr-launch form button{margin-top:14px;width:100%;min-height:50px}.tr-launch select{max-width:100%}a.tr-primary{display:inline-flex;align-items:center;text-decoration:none}

/* Touch targets keep navigation on the card; decorative layers never catch taps. */
.tr-card-wrap{position:relative;isolation:isolate}.tr-card-wrap a.tr-card{touch-action:manipulation;min-height:190px}.tr-card-wrap a.tr-card>*{pointer-events:none} .tr-app select,.tr-app textarea,.tr-app input{font-size:16px}.tr-app a.tr-card:active{transform:none;border-color:var(--theme-accent,#a6b9ff)}
@media(hover:none){.tr-card:hover{transform:none}}

/* Typing workspace: stable whole words, wide readable track, three live numbers. */
.tr-typing-mode #trRound{max-width:1120px;width:100%;margin-left:auto;margin-right:auto;padding:clamp(16px,3vw,36px)}
.tr-typing-mode #typingTextView{position:relative;display:block;box-sizing:border-box;width:100%;height:240px;min-height:240px;overflow:auto;scroll-behavior:auto;font-size:clamp(22px,2.2vw,29px);line-height:1.8;letter-spacing:.03em;word-break:normal!important;overflow-wrap:normal!important;white-space:normal;padding:20px 24px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;border:1px solid var(--border-color,#47486c);border-radius:18px;background:var(--bg-secondary,#171c32)}
#typingTextView .typing-word{display:inline-block;white-space:pre;word-break:normal;overflow-wrap:normal}#typingTextView .typing-space-group{white-space:pre-wrap}#typingTextView .typed-cursor{border-left:2px solid var(--accent,#a99aff);text-decoration:none}#typingTextView .typed-ok{color:#319b79}#typingTextView .typed-error{color:#f87171;background:rgba(239,68,68,.15);text-decoration:underline}
.tr-typing-mode #roundClock,.tr-typing-mode #typingGoalProgress{display:none}.tr-typing-mode #typingLive{grid-template-columns:repeat(3,1fr);max-width:600px;margin:16px auto}.tr-typing-mode #typingLive b{font-size:28px}.tr-typing-mode #typingEncourage{grid-column:1/-1;margin:4px 0;font-size:13px}.tr-typing-mode #trAnswer{font-size:18px;min-height:72px;max-height:96px;resize:none}.tr-typing-mode #answerForm>label{font-size:13px}.typing-tools{margin:10px 0}.typing-tools summary{cursor:pointer;font-size:14px}.typing-toolbar{margin-top:8px}.typing-focus .tr-round-links,.typing-focus #roundTitle,.typing-focus #roundProgress{display:none}.typing-focus #typingTextView{height:310px}.tr-earned{animation:se-prize .45s ease-out}.tr-earned:before{content:'🪙 ';} @keyframes se-prize{from{transform:translateY(9px);opacity:0}to{transform:none;opacity:1}}
@media(max-width:600px){.tr-typing-mode #typingTextView{height:220px;min-height:220px;padding:12px;font-size:22px}.tr-typing-mode #trRound{padding:14px}.tr-typing-mode #typingLive b{font-size:23px}.tr-typing-mode #typingLive span{font-size:11px}.typing-options{grid-template-columns:repeat(2,minmax(0,1fr))}.typing-options label{min-width:0}.typing-options select{width:100%;min-width:0}.typing-pace-setting{grid-column:1/-1}.typing-focus #typingTextView{height:260px}}
@media(prefers-reduced-motion:reduce){.tr-earned{animation:none}}

/* Spacious typing workspace. */
.tr-typing-mode #trRound{max-width:1280px;padding:clamp(16px,2.5vw,32px)}
.tr-typing-mode .typing-options{grid-template-columns:repeat(3,minmax(0,1fr))}
.tr-typing-mode #typingTextView,.tr-typing-mode .tr-type-target{height:360px;min-height:360px;max-height:520px;padding:26px 30px;font-size:clamp(24px,2.2vw,30px);line-height:1.85}
.tr-typing-mode #trAnswer{height:200px;min-height:200px;max-height:none;resize:vertical;padding:22px 26px;font:22px/1.7 ui-monospace,SFMono-Regular,Consolas,monospace}
.tr-typing-mode.typing-focus #typingTextView{height:420px}
@media(max-width:600px){.tr-typing-mode .typing-options{grid-template-columns:1fr}.tr-typing-mode #typingTextView,.tr-typing-mode .tr-type-target{height:300px;min-height:300px;padding:18px 16px;font-size:23px}.tr-typing-mode #trAnswer{height:180px;min-height:180px;padding:16px;font-size:20px}.tr-typing-mode.typing-focus #typingTextView{height:340px}}

/* The primary action keeps its own text pair; row links must not recolour it. */
html body .tr-primary,html body a.tr-primary:visited,html body .tr-primary:hover,html body .tr-primary:active{background:var(--theme-action,#285aca);color:#fff!important;-webkit-text-fill-color:currentColor;border-color:transparent}
html body .tr-primary :is(span,strong,small,i){color:inherit;-webkit-text-fill-color:currentColor}
html body .tr-primary:hover{filter:brightness(.94)}
