:root {
  --ink:#151943;
  --muted:#6d79a4;
  --blue:#0866ff;
  --blue-soft:#eaf3ff;
  --line:#eaf0f8;
  --green:#36c7a1;
  --purple:#9575e6;
  --surface:#fbfcff;
  --red:#df455c;
  font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  color:var(--ink);
  background:var(--surface);
  font-size:14px;
  font-synthesis:none}
* {
  box-sizing:border-box}
body {
  margin:0}
a {
  color:var(--blue);
  text-decoration:none}
button,input,select,textarea {
  font:inherit}
button,a,input,select,textarea {
  touch-action:manipulation}
button {
  cursor:pointer}
button:disabled {
  cursor:wait;
  opacity:.55}
button:focus-visible,a:focus-visible {
  outline:3px solid #9dc5ff;
  outline-offset:4px}
h1,h2,h3,p {
  margin-top:0}
h1 {
  font:700 34px/1.18 Georgia,"Times New Roman",serif;
  letter-spacing:-.8px;
  margin-bottom:10px}
h2 {
  font-size:18px;
  line-height:1.4;
  margin-bottom:16px}
h3 {
  font-size:14px;
  line-height:1.5;
  margin-bottom:14px}
p {
  line-height:1.65}
small,.tiny {
  font-size:11px;
  color:var(--muted);
  line-height:1.6}
strong {
  font-weight:650}
em {
  font-style:normal;
  color:var(--blue)}
.muted {
  color:var(--muted)}
.icon {
  width:19px;
  height:19px;
  flex:none;
  vertical-align:middle}
.layout {
  max-width:1220px;
  min-height:100vh;
  margin:auto;
  display:grid;
  grid-template-columns:200px minmax(0,1fr);
  gap:28px;
  padding:38px 35px 20px}
aside {
  display:flex;
  flex-direction:column;
  position:sticky;
  top:38px;
  height:calc(100vh - 70px);
  padding:10px 0}
.brand {
  color:var(--ink);
  font:bold 27px Georgia,serif;
  letter-spacing:-1px;
  display:block;
  margin:5px 12px 36px}
.brand-dot {
  color:var(--blue)}
nav {
  display:grid;
  gap:7px}
nav a {
  display:flex;
  align-items:center;
  gap:15px;
  padding:12px 15px;
  color:#616e9b;
  font-size:13px;
  border-radius:7px}
nav a:hover {
  background:#f0f5fd}
nav a[aria-current] {
  background:#e8f1ff;
  color:var(--blue);
  font-weight:600}
.sidebar-bottom {
  margin-top:auto;
  display:grid;
  gap:16px;
  color:var(--muted);
  padding:20px 9px}
.sidebar-bottom .btn {
  font-size:11px;
  padding:0;
  justify-content:start}
.sidebar-bottom span {
  font-size:11px}
.main-wrap {
  min-width:0}
header {
  height:48px;
  display:flex;
  justify-content:flex-end;
  align-items:center;
  gap:20px;
  margin-bottom:18px}
.language-chip {
  border:1px solid var(--line);
  border-radius:7px;
  padding:9px 12px;
  font-size:12px}
.language-chip .muted {
  margin-left:5px}
.avatar {
  width:31px;
  height:31px;
  background:#e0e7f5;
  color:#39456d;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:10px;
  font-weight:650;
  flex:none}
.profile-link {
  display:block}
main {
  min-height:620px}
.page-heading {
  display:flex;
  justify-content:space-between;
  gap:22px;
  align-items:center;
  margin-bottom:32px}
.page-heading p {
  color:#60709c;
  font-size:16px;
  margin-bottom:0}
.btn {
  border:0;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  font-size:12px;
  font-weight:550;
  padding:12px 18px;
  min-height:39px;
  border-radius:7px;
  background:transparent;
  color:var(--blue);
  white-space:nowrap;
  transition:background .15s,transform .15s}
.btn:active {
  transform:translateY(1px)}
.primary {
  background:var(--blue);
  color:white}
.primary:hover {
  background:#0056e8}
.soft {
  background:var(--blue-soft);
  color:var(--blue)}
.soft:hover {
  background:#dceaff}
.text {
  padding:8px 0;
  min-height:0;
  justify-content:start}
.text:hover {
  color:#0046c5}
.icon-button {
  padding:6px;
  background:transparent;
  border:0;
  color:var(--muted);
  border-radius:5px;
  min-width:28px;
  min-height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center}
.icon-button:hover {
  background:var(--blue-soft)}
.danger-soft {
  color:#d63750;
  background:#fff0f2}
.success-soft {
  color:#1e9473;
  background:#e9faf3}
.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:16px;
  margin:25px 0 12px}
.section-heading h2,.section-heading h3 {
  margin:0}
.section-heading a {
  font-size:11px}
.section-heading h3 small {
  font-weight:400}
.dashboard-top {
  display:grid;
  grid-template-columns:1.1fr .8fr 1.15fr;
  gap:28px;
  margin-bottom:25px}
.dashboard-top section {
  padding:7px 12px 20px;
  border-bottom:1px solid var(--line)}
.dashboard-top .section-heading {
  margin:0 0 12px}
.dashboard-top h3 {
  white-space:nowrap}
.progress-group {
  display:flex;
  align-items:center;
  gap:12px;
  font-size:10px;
  color:#465888;
  min-width:130px}
.progress-track {
  height:8px;
  flex:1;
  border-radius:20px;
  background:#e8f0fc;
  display:flex;
  overflow:hidden;
  min-width:65px}
.progress-track span {
  display:block;
  height:100%}
.progress-group.wide {
  margin-top:17px;
  gap:15px}
.known {
  background:var(--purple)}
.learned {
  background:var(--green)}
.remaining {
  background:var(--blue)}
.new {
  background:#9fc8ff}
.progress-group.wide+.tiny {
  margin:8px 0 21px}
.legend-row {
  display:flex;
  justify-content:space-between;
  gap:8px}
.legend-row>span {
  display:grid;
  grid-template-columns:13px 1fr;
  gap:3px 7px}
.legend-row small {
  grid-column:2;
  font-size:10px}
.dot {
  width:9px;
  height:9px;
  border-radius:50%;
  display:inline-block;
  flex:none;
  vertical-align:middle;
  margin-right:5px}
.legend-row .dot {
  margin-top:5px}
.big-number {
  font-size:22px;
  font-weight:700;
  margin:7px 0 16px}
.week-strip {
  display:flex;
  gap:9px}
.week-strip>span {
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:6px}
.week-strip small {
  font-size:10px}
.week-strip i {
  width:18px;
  height:18px;
  border-radius:50%;
  border:2px solid #e0e7f4;
  display:flex;
  align-items:center;
  justify-content:center}
.week-strip .active {
  background:var(--green);
  border-color:var(--green);
  color:white}
.week-strip .today {
  outline:2px solid #bfd6ff;
  outline-offset:2px}
.week-strip .icon {
  width:12px;
  height:12px}
.mini-rank {
  display:flex;
  align-items:center;
  gap:9px;
  font-size:11px;
  height:30px;
  padding:3px 6px;
  border-radius:4px}
.mini-rank .avatar {
  height:23px;
  width:23px;
  font-size:8px}
.mini-rank b {
  margin-left:auto;
  font-size:10px;
  font-weight:500}
.rank {
  width:18px;
  height:18px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-size:10px}
.rank-1 {
  background:#ffbd26;
  color:white;
  border-radius:50%}
.rank-2 {
  background:#adb8d1;
  color:white;
  border-radius:50%}
.rank-3 {
  background:#d78a53;
  color:white;
  border-radius:50%}
.you {
  background:#e8f2ff;
  color:var(--blue)}
.learn-banner {
  display:flex;
  align-items:center;
  gap:24px;
  background:#e8f2ff;
  padding:23px;
  border-radius:9px;
  margin:18px 0 28px}
.learn-banner h2 {
  margin:0 0 4px;
  font-size:20px}
.learn-banner p {
  font-size:12px;
  margin:0 0 3px;
  color:#66779d}
.learn-banner .btn {
  margin-left:auto;
  min-width:165px}
.tile {
  height:41px;
  width:41px;
  border-radius:8px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex:none}
.blue {
  color:var(--blue);
  background:#e6f1ff}
.violet {
  color:#9341de;
  background:#f4eaff}
.green {
  color:#22ac88;
  background:#e4f8f1}
.peach {
  color:#d67820;
  background:#fff2e4}
.learn-banner .tile {
  width:66px;
  height:66px;
  border-radius:50%;
  background:#dbeaff}
.learn-banner .tile .icon {
  width:35px;
  height:35px}
.set-row {
  display:grid;
  grid-template-columns:42px minmax(125px,1.2fr) minmax(130px,1fr) minmax(90px,.9fr) auto;
  gap:16px;
  align-items:center;
  padding:17px 9px;
  border-bottom:1px solid var(--line)}
.set-name {
  display:flex;
  flex-direction:column;
  gap:5px}
.set-name strong {
  font-size:12px}
.set-name small {
  font-size:10px}
.set-meta {
  color:var(--muted);
  font-size:10px;
  line-height:1.7}
.row-actions {
  display:flex;
  gap:9px;
  align-items:center}
.row-actions .soft {
  padding:8px 15px;
  min-height:30px;
  font-size:11px}
.row-actions .icon {
  width:15px;
  height:15px}
.progress-legend {
  font-size:10px;
  display:flex;
  align-items:center;
  gap:9px;
  color:var(--muted);
  margin:24px 10px}
.progress-legend .dot {
  margin-left:12px;
  margin-right:0}
.tabs {
  border-bottom:1px solid var(--line);
  display:flex;
  gap:22px;
  margin-bottom:25px}
.tab {
  font-size:12px;
  border-radius:0;
  border-bottom:2px solid transparent;
  min-height:40px;
  padding:10px 15px;
  color:#596991}
.tab.active {
  color:var(--blue);
  border-bottom-color:var(--blue)}
.period-controls {
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px;
  margin:0 0 25px}
.period-controls .tab {
  border:0;
  border-radius:5px;
  font-size:11px;
  padding:9px 14px;
  min-height:33px}
.period-controls .tab.active {
  background:#eaf3ff}
.date-range {
  display:flex;
  gap:12px;
  align-items:end;
  width:100%;
  margin-top:12px}
.date-range label {
  margin:0}
.date-range input {
  padding:8px}
.metric-grid {
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:20px;
  margin:32px 0}
.metric {
  display:flex;
  gap:13px;
  align-items:start}
.metric b {
  display:block;
  font-size:20px;
  margin:0 0 5px}
.metric small {
  display:block;
  font-size:11px}
.statistics-grid {
  display:grid;
  grid-template-columns:1.2fr 1fr;
  gap:25px}
.chart-panel {
  min-width:0;
  padding:17px 12px 22px;
  border-bottom:1px solid var(--line)}
.chart-panel .section-heading {
  margin:0 0 20px}
.chart-panel .section-heading small {
  font-size:9px}
.bar-chart {
  height:180px;
  display:flex;
  gap:12px;
  position:relative;
  margin:14px 0}
.axis {
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  font-size:9px;
  color:var(--muted);
  padding-bottom:23px}
.bars {
  display:flex;
  flex:1;
  gap:8px;
  min-width:0;
  border-bottom:1px solid var(--line)}
.bar-col {
  flex:1;
  min-width:0;
  display:flex;
  flex-direction:column;
  text-align:center;
  gap:7px}
.bar-stack {
  height:150px;
  display:flex;
  flex-direction:column-reverse;
  justify-content:flex-start;
  background:repeating-linear-gradient(to top,transparent 0px,transparent 49px,#f0f4fa 50px);
  border-radius:3px 3px 0 0;
  overflow:hidden}
.bar-stack i {
  display:block;
  width:100%;
  min-height:0}
.new-bar {
  background:#a6ceff}
.review-bar {
  background:linear-gradient(#489bff,#0866ff)}
.bar-col small {
  font-size:8px;
  white-space:nowrap;
  overflow:hidden}
.donut-layout {
  display:flex;
  gap:24px;
  align-items:center;
  margin:20px 0}
.donut {
  height:126px;
  width:126px;
  border-radius:50%;
  display:grid;
  place-items:center;
  flex:none}
.donut>div {
  background:var(--surface);
  width:86px;
  height:86px;
  border-radius:50%;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center}
.donut b {
  font-size:20px}
.donut small {
  font-size:9px}
.status-list {
  flex:1}
.status-list>div {
  display:flex;
  align-items:center;
  gap:7px;
  margin:15px 0;
  font-size:10px}
.status-list b {
  margin-left:auto}
.status-list small {
  width:32px;
  text-align:right;
  font-size:9px}
.heatmap {
  display:grid;
  grid-template-rows:repeat(7,13px);
  grid-auto-flow:column;
  gap:3px;
  overflow-x:auto;
  padding:8px 0 12px}
.heat {
  width:13px;
  height:13px;
  background:#e8eef7;
  border-radius:2px;
  font-size:9px;
  text-align:center;
  color:white;
  line-height:13px}
.level-1 {
  background:#bad8ff}
.level-2 {
  background:#7cb8ff}
.level-3 {
  background:#4597ff}
.level-4 {
  background:#0866ff}
.explanation p {
  font-size:12px;
  color:var(--muted)}
.explanation strong {
  font-size:12px;
  color:var(--blue)}
.leaderboard-grid {
  display:grid;
  grid-template-columns:1.5fr 1fr;
  gap:45px}
.group-select {
  font-size:11px;
  margin:0;
  min-width:180px}
.rank-header,.rank-row {
  display:grid;
  grid-template-columns:40px 1fr 90px;
  align-items:center;
  gap:15px;
  padding:8px 12px}
.rank-header {
  font-size:10px;
  color:var(--muted);
  margin-bottom:6px}
.rank-header span:last-child {
  text-align:right}
.rank-row {
  border-radius:5px;
  margin:5px 0;
  font-size:12px}
.rank-row>span:nth-child(2) {
  display:flex;
  align-items:center;
  gap:12px}
.rank-row b {
  text-align:right;
  font-size:11px}
.podium-0 {
  background:#fff5e6}
.podium-1 {
  background:#f0f4fb}
.podium-2 {
  background:#fff0e9}
.rank-row.you {
  background:#e8f2ff}
.your-rank {
  display:flex;
  align-items:center;
  gap:20px;
  margin:22px 0 45px}
.your-rank b {
  font-size:30px;
  display:block}
.your-rank small {
  display:block;
  font-size:10px}
.your-rank>div:last-child {
  border-left:1px solid var(--line);
  padding-left:25px}
.encouragement {
  background:#eaf3ff;
  padding:19px;
  display:flex;
  gap:16px;
  border-radius:8px;
  margin-top:30px}
.encouragement h3 {
  margin-bottom:7px;
  color:var(--blue)}
.encouragement p {
  font-size:12px;
  margin:0;
  color:var(--muted)}
.group-row {
  display:grid;
  grid-template-columns:65px minmax(145px,1fr) 1.3fr auto;
  align-items:center;
  gap:20px;
  padding:20px 10px;
  border-bottom:1px solid var(--line)}
.group-row small {
  display:block;
  margin-top:6px}
.group-row p {
  font-size:11px;
  color:var(--muted);
  margin:0}
.emoji-tile {
  height:59px;
  width:59px;
  background:#f0eafa;
  border-radius:50%;
  display:grid;
  place-items:center;
  font-size:28px}
.discover-heading {
  margin-top:48px}
.search {
  display:flex;
  gap:9px;
  align-items:center}
.search input {
  margin:0;
  min-width:0}
.search .btn {
  padding:10px 14px}
.badge {
  font-size:10px;
  color:var(--blue);
  background:var(--blue-soft);
  padding:7px 10px;
  border-radius:5px}
.badge.warning {
  color:#9b6809;
  background:#fff4da}
.invitations {
  background:#eef5ff;
  padding:18px;
  border-radius:8px;
  margin:0 0 30px}
.invitation {
  display:flex;
  align-items:center;
  gap:12px;
  padding:10px 0}
.invitation strong {
  margin-right:auto;
  font-size:12px}
.profile-summary {
  display:flex;
  gap:24px;
  align-items:center;
  margin:28px 10px 42px}
.profile-summary .avatar {
  height:72px;
  width:72px;
  font-size:23px}
.profile-summary h2 {
  font:700 24px Georgia,serif;
  margin-bottom:8px}
.settings-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:35px;
  margin-bottom:25px}
.settings-grid h3 {
  display:flex;
  align-items:center;
  gap:12px;
  margin-bottom:20px}
.settings-grid h3 .icon {
  color:var(--blue)}
label {
  display:flex;
  flex-direction:column;
  gap:8px;
  font-size:12px;
  margin-bottom:19px;
  color:#465782}
input,select,textarea {
  width:100%;
  border:1px solid #dce5f4;
  border-radius:6px;
  padding:12px;
  color:var(--ink);
  background:white;
  outline:none;
  min-width:0}
input:focus,select:focus,textarea:focus {
  border-color:#6daaff;
  box-shadow:0 0 0 3px #e8f1ff}
input:disabled {
  background:#f5f7fc;
  color:#8592b3}
textarea {
  resize:vertical;
  line-height:1.6}
label small {
  font-size:10px}
.switch-row {
  flex-direction:row;
  align-items:center;
  justify-content:space-between;
  gap:15px;
  padding:6px 0;
  margin-bottom:16px}
.switch-row span {
  font-size:11px;
  line-height:1.5}
.switch-row small {
  display:block;
  margin-top:5px}
.switch-row input {
  appearance:none;
  width:33px;
  min-width:33px;
  height:19px;
  border-radius:20px;
  padding:0;
  background:#cbd5e7;
  position:relative;
  cursor:pointer;
  border:0}
.switch-row input:checked {
  background:var(--blue)}
.switch-row input:before {
  content:'';
  position:absolute;
  top:3px;
  left:3px;
  height:13px;
  width:13px;
  border-radius:50%;
  background:white;
  transition:left .15s}
.switch-row input:checked:before {
  left:17px}
.radio-row {
  flex-direction:row;
  gap:12px;
  align-items:start}
.radio-row input {
  width:17px;
  margin:0;
  accent-color:var(--blue)}
.radio-row small {
  display:block;
  margin-top:5px}
.form-footer {
  border-top:1px solid var(--line);
  padding-top:20px;
  margin-top:20px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:15px}
.form-footer>.btn:only-child {
  margin-left:auto}
.profile-bottom {
  display:grid;
  grid-template-columns:1fr 1.2fr;
  gap:50px;
  margin-top:50px}
.profile-bottom p {
  font-size:12px;
  color:var(--muted)}
.back-link {
  display:flex;
  align-items:center;
  gap:10px;
  color:var(--muted);
  font-size:12px;
  margin:0 0 16px}
.daily-progress {
  display:flex;
  gap:20px;
  align-items:center;
  font-size:13px;
  color:var(--muted);
  margin:-12px 0 38px}
.daily-progress .progress-track {
  height:10px}
.goal-reached {
  color:#159571;
  text-align:center;
  font-size:12px;
  margin-top:-20px}
.learning-card {
  margin:0 auto 35px;
  background:white;
  border:1px solid #eef2fa;
  box-shadow:0 16px 45px #25347706;
  border-radius:22px;
  padding:48px 40px 30px;
  max-width:700px;
  min-height:360px;
  text-align:center}
.word-display {
  font:700 48px/1.2 Georgia,serif;
  letter-spacing:-.8px;
  padding:35px 0 20px;
  overflow-wrap:anywhere}
.card-divider {
  border-top:1px solid var(--line);
  max-width:85%;
  margin:12px auto 25px}
.sentence {
  font-size:23px;
  line-height:1.6;
  color:#7c83b1;
  margin:22px 0 32px;
  overflow-wrap:anywhere}
.cloze-sentence {
  font:700 32px/1.65 Georgia,serif;
  margin:25px 0;
  overflow-wrap:anywhere}
.gap {
  color:#7f89aa;
  margin:0 5px}
.native {
  font-size:20px}
mark {
  font-weight:700;
  background:#e7efff;
  color:#153c8f;
  padding:2px 4px;
  border-radius:3px}
.eyebrow {
  text-transform:uppercase;
  font-size:10px;
  letter-spacing:1px;
  font-weight:600;
  color:#8490b7;
  margin:10px 0 20px}
.answer-form {
  display:flex;
  gap:13px;
  margin-top:36px}
.answer-form input {
  padding:16px;
  font-size:15px}
.answer-form .btn {
  font-size:14px;
  padding:16px 23px}
.flip-controls {
  margin-top:40px}
.flip-controls>.btn {
  width:100%;
  font-size:16px;
  padding:18px}
.grade-buttons {
  display:flex;
  gap:12px;
  margin-top:20px}
.grade-buttons .btn {
  flex:1;
  padding:16px 12px;
  font-size:12px}
kbd {
  border:1px solid #ffffff80;
  background:#ffffff12;
  border-radius:4px;
  padding:3px 8px;
  font:12px inherit;
  margin-left:20px}
.verdict {
  display:inline-flex;
  align-items:center;
  gap:9px;
  padding:10px 18px;
  border-radius:30px;
  font-size:16px;
  font-weight:650}
.positive {
  color:#178a60;
  background:#edf9f3}
.negative {
  color:#e4445a;
  background:#fff0f2}
.known-verdict {
  color:#7d53bc;
  background:#f3edff}
.feedback .cloze-sentence {
  margin-top:27px}
.comparison {
  margin:30px 0 20px;
  text-align:left;
  font-size:14px}
.comparison>div {
  display:grid;
  grid-template-columns:170px 1fr;
  gap:15px;
  padding:16px;
  border-radius:7px}
.comparison span {
  font-size:10px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.4px}
.comparison .correct {
  background:#edf9f3}
.comparison .incorrect {
  background:#fff0f2}
.feedback-actions {
  display:flex;
  justify-content:space-between;
  align-items:center;
  margin:28px 0 13px;
  gap:15px}
.feedback-actions>.btn:only-child {
  margin:auto}
.source-link {
  font-size:10px;
  margin-top:10px;
  color:var(--muted)}
.hint {
  margin:15px 0 0}
.empty {
  text-align:center;
  padding:50px 15px;
  color:var(--muted)}
.empty>.icon {
  width:35px;
  height:35px;
  color:#9fbae1;
  margin-bottom:10px}
.empty p {
  font-size:13px}
.pagination {
  display:flex;
  justify-content:space-between;
  margin:22px 0}
.loading,.boot {
  padding:70px;
  text-align:center;
  color:var(--muted)}
.auth {
  max-width:460px;
  margin:50px auto;
  padding:20px;
  min-height:0}
.auth>.brand {
  text-align:center;
  margin:0 0 35px}
.auth-card {
  padding:35px;
  border:1px solid var(--line);
  background:white;
  border-radius:16px;
  box-shadow:0 20px 70px #23347b07}
.auth-card h1 {
  font-size:28px;
  margin:20px 0 10px}
.auth-card>p {
  color:var(--muted);
  font-size:13px}
.auth-card form {
  margin-top:25px}
.auth-card form>.btn {
  width:100%;
  margin-top:7px}
.auth-switch {
  text-align:center;
  margin:24px 0 0!important;
  font-size:11px!important}
.link {
  color:var(--blue);
  background:none;
  border:0;
  padding:0;
  font-size:inherit}
.modal {
  width:min(540px,calc(100vw - 35px));
  max-height:88vh;
  border:1px solid var(--line);
  padding:28px;
  border-radius:14px;
  color:var(--ink);
  box-shadow:0 20px 100px #0b16482a}
.modal.large {
  width:min(720px,calc(100vw - 35px))}
.modal::backdrop {
  background:#101d453b;
  backdrop-filter:blur(3px)}
.modal-heading {
  display:flex;
  justify-content:space-between;
  align-items:start;
  margin-bottom:22px}
.modal-heading h2 {
  font:700 25px Georgia,serif;
  margin:0}
.modal .form-footer {
  margin-top:25px}
.two-cols {
  display:grid;
  grid-template-columns:1.5fr 1fr;
  gap:16px}
.upload-label {
  flex-direction:row;
  align-items:center;
  flex-wrap:wrap;
  padding:14px;
  border:1px dashed #c8d9f0;
  border-radius:7px}
.upload-label input {
  border:0;
  padding:0;
  background:transparent;
  font-size:11px}
.preview-list {
  max-height:47vh;
  overflow:auto;
  border-top:1px solid var(--line)}
.preview-row {
  display:grid;
  grid-template-columns:1fr auto;
  gap:9px;
  padding:16px 0;
  border-bottom:1px solid var(--line);
  align-items:center}
.preview-row select,.preview-row small {
  grid-column:1/-1}
.preview-row strong {
  font-size:13px}
.menu-actions {
  display:grid;
  gap:12px}
.member-list>div {
  display:flex;
  align-items:center;
  gap:12px;
  padding:9px 0}
.member-list .btn {
  margin-left:auto}
.member-list span {
  font-size:12px}
.credit {
  padding:12px 0;
  border-bottom:1px solid var(--line)}
.credit p {
  font-size:12px}
.credit small {
  display:block}
.success-text {
  color:#159571}
.notice-success {
  color:#159571}
#notice {
  position:fixed;
  bottom:25px;
  left:50%;
  transform:translateX(-50%);
  z-index:1000;
  display:flex;
  align-items:center;
  gap:20px;
  background:#fff3f4;
  color:#a62f45;
  border:1px solid #f7cbd3;
  border-radius:10px;
  box-shadow:0 10px 40px #1826451a;
  padding:16px 20px;
  font-size:13px;
  max-width:min(660px,90vw)}
#notice[hidden] {
  display:none}
#notice button {
  background:none;
  border:0;
  color:inherit;
  display:flex;
  padding:2px}
footer {
  border-top:1px solid var(--line);
  padding:20px 0;
  margin-top:40px;
  color:#9ba6bf;
  font-size:10px}

@media(min-width:1450px) {
  .layout {
  padding-top:60px;
  gap:45px}
.dashboard-top {
  gap:35px}
.page-heading {
  margin-bottom:40px}
}

@media(max-width:1080px) {
  .layout {
  padding:25px 24px;
  grid-template-columns:170px 1fr;
  gap:20px}
.dashboard-top {
  gap:15px;
  grid-template-columns:1fr 1fr}
.dashboard-top section:last-child {
  grid-column:1/-1}
.mini-rank {
  max-width:350px}
.set-row {
  grid-template-columns:36px 1fr 140px auto;
  gap:12px}
.set-meta {
  display:none}
.set-row .set-meta:has(+.row-actions) {
  display:none}
.statistics-grid {
  grid-template-columns:1fr}
.settings-grid {
  gap:23px;
  grid-template-columns:1fr 1fr}
.settings-grid section:last-child {
  grid-column:auto}
.leaderboard-grid {
  gap:25px}
.group-row {
  grid-template-columns:50px 1fr auto}
.group-row p {
  grid-column:2/-1;
  grid-row:2}
.emoji-tile {
  width:46px;
  height:46px;
  font-size:23px}
.metric-grid {
  gap:13px}
.metric b {
  font-size:17px}
.metric .tile {
  height:33px;
  width:33px}
}

@media(max-width:760px) {
  .layout {
  display:block;
  padding:15px 18px}
.layout aside {
  position:static;
  height:auto;
  padding:0}
.brand {
  margin:0 0 18px;
  font-size:25px}
nav {
  display:flex;
  overflow-x:auto;
  gap:3px;
  border-bottom:1px solid var(--line);
  padding-bottom:10px}
nav a {
  flex:none;
  padding:9px 10px;
  gap:7px;
  font-size:11px}
nav .icon {
  width:15px;
  height:15px}
.sidebar-bottom {
  display:none}
header {
  margin:8px 0 20px;
  height:35px}
.language-chip {
  font-size:10px;
  padding:7px 9px}
.page-heading {
  margin-bottom:25px;
  align-items:start}
.page-heading h1 {
  font-size:28px}
.page-heading p {
  font-size:13px}
.page-heading>.btn {
  font-size:10px;
  padding:10px;
  white-space:normal}
.dashboard-top {
  grid-template-columns:1fr 1fr;
  gap:14px}
.dashboard-top section {
  padding:8px 0 18px}
.dashboard-top h3 {
  font-size:12px}
.legend-row {
  gap:4px}
.legend-row small {
  font-size:9px}
.learn-banner {
  padding:17px;
  gap:12px;
  flex-wrap:wrap}
.learn-banner .tile {
  height:45px;
  width:45px}
.learn-banner .tile .icon {
  height:24px;
  width:24px}
.learn-banner h2 {
  font-size:17px}
.learn-banner .btn {
  margin-left:57px;
  min-width:140px}
.set-row {
  grid-template-columns:35px 1fr auto;
  gap:10px;
  padding:17px 0}
.set-row .progress-group {
  grid-column:2;
  grid-row:2;
  width:100%;
  max-width:220px}
.set-row .tile {
  height:33px;
  width:33px;
  grid-row:1/3}
.set-row .row-actions {
  grid-column:3;
  grid-row:1/3}
.set-name strong {
  font-size:12px}
.row-actions .soft {
  padding:8px 10px}
.set-name small {
  font-size:9px}
.tabs {
  gap:4px}
.tab {
  font-size:11px;
  padding:10px}
.metric-grid {
  grid-template-columns:1fr 1fr;
  gap:25px}
.statistics-grid {
  gap:15px}
.chart-panel {
  padding:12px 0}
.donut-layout {
  justify-content:space-around}
.donut {
  height:115px;
  width:115px}
.status-list {
  max-width:200px}
.leaderboard-grid {
  grid-template-columns:1fr}
.your-rank {
  margin-bottom:25px}
.rank-header,.rank-row {
  grid-template-columns:30px 1fr 75px}
.group-select {
  min-width:130px;
  max-width:160px}
.group-select select {
  font-size:11px;
  padding:9px}
.group-row {
  gap:12px;
  padding:18px 0}
.group-row>.btn {
  font-size:10px;
  padding:9px}
.group-row strong {
  font-size:12px}
.discover-heading {
  align-items:start;
  flex-direction:column}
.search {
  width:100%}
.settings-grid {
  grid-template-columns:1fr;
  gap:25px}
.settings-grid section:last-child {
  grid-column:auto}
.profile-bottom {
  grid-template-columns:1fr;
  gap:20px}
.profile-summary {
  margin:20px 0 35px}
.learning-card {
  padding:28px 20px;
  border-radius:15px;
  min-height:320px}
.word-display {
  font-size:38px;
  padding:28px 0 15px}
.sentence {
  font-size:19px}
.cloze-sentence {
  font-size:25px}
.native {
  font-size:17px}
.answer-form {
  gap:8px}
.answer-form input {
  font-size:12px;
  padding:14px}
.answer-form .btn {
  padding:12px;
  font-size:12px}
.grade-buttons {
  gap:7px;
  flex-wrap:wrap}
.grade-buttons .btn {
  font-size:10px;
  padding:13px 8px}
.comparison>div {
  grid-template-columns:1fr;
  gap:7px}
.feedback-actions {
  gap:8px;
  flex-wrap:wrap}
.feedback-actions .btn {
  font-size:11px;
  padding:12px}
.progress-legend {
  font-size:9px;
  gap:5px;
  margin-left:0}
.progress-legend .dot {
  margin-left:5px}
.modal {
  padding:22px}
.two-cols {
  grid-template-columns:1fr}
.auth {
  margin:25px auto}
.auth-card {
  padding:25px}
.heatmap {
  grid-template-rows:repeat(7,10px);
  gap:3px}
.heat {
  width:10px;
  height:10px;
  font-size:8px;
  line-height:10px}
main {
  min-height:450px}
}

@media(prefers-reduced-motion:reduce) {
  * {
  transition:none!important;
  scroll-behavior:auto!important}
}

.auth-language { display: block; max-width: 11rem; margin: 0 0 1rem auto; }

.candidate-list { grid-column: 1 / -1; display: grid; gap: .75rem; min-width: 0; }
.candidate { display: flex; align-items: flex-start; gap: .75rem; border: 1px solid var(--line); border-radius: .75rem; padding: .75rem; cursor: pointer; }
.candidate input[type="radio"] { width: auto; margin-top: .25rem; }
.candidate small { display: block; font-weight: 400; margin-top: .35rem; }
.candidate:has(input:checked) { background: #edf5ff; border-color: #0866ff; }

.resolved-words summary { cursor: pointer; padding: 1rem 0; font-weight: 600; }

.random-words { margin-top: 1rem; padding: 14px; border: 1px dashed #c8d9f0; border-radius: 7px; }
.random-words summary { cursor: pointer; font-weight: 600; }
.random-words[open] summary { margin-bottom: 1rem; }
.three-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin-bottom: 1rem; }

.emoji-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(48px,1fr)); gap: .35rem; max-height: 20rem; overflow-y: auto; margin-bottom: 1rem; }
.emoji-choice { background: #f2f6fb; border: 1px solid transparent; padding: 6px; min-height: 48px; border-radius: .5rem; font-size: 30px; line-height: 1; cursor: pointer; }
.emoji-choice:hover, .emoji-choice:focus-visible { border-color: #0866ff; background: #e0ecff; }

.about-content { max-width: 52rem; display: grid; gap: 2rem; }
.about-content section { line-height: 1.7; }
.about-content h2 { margin-bottom: .75rem; }
footer a { margin-left: 1rem; }
.auth-footer { margin-top: 2rem; }
.public-about { max-width: 70rem; margin: auto; padding: 1.5rem; }
.public-about header { display: flex; gap: 1.5rem; justify-content: space-between; align-items: center; }
.public-about main { padding-top: 2rem; }

.answer-correction { color: var(--red); }
.answer-corrected { margin: 24px 0; }

.avatar.avatar-emoji { font-size: 23px; padding: 0; line-height: 1; flex-shrink: 0; }
.mini-rank .avatar.avatar-emoji { font-size: 18px; }
.profile-summary .avatar.avatar-emoji { font-size: 48px; }

.profile-mode { margin-top: 28px; }
.profile-summary > .btn { margin-left: auto; }
@media (max-width: 600px) {
  .profile-summary { flex-wrap: wrap; gap: 16px; }
  .profile-summary > .btn { margin-left: 0; }
}

.grade-buttons kbd { display: inline-flex; align-items: center; justify-content: center; min-width: 26px; height: 25px; margin: 0 6px; padding: 2px 5px; border: 1px solid currentColor; border-radius: 5px; font-size: 16px; line-height: 1; box-shadow: 0 2px 0 currentColor; }
