/* Main navigation ---------------------------------------------------------
   One compact tab treatment, derived from the learning-library controls. */

.main-nav {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  align-items: stretch;
  min-width: min(100%, 520px);
  padding: 3px;
  gap: 4px;
  border: 2px solid var(--mem-ink);
  border-radius: 12px;
  background: var(--mem-cream);
  box-shadow: none;
}
.main-nav.has-admin-library {
  grid-template-columns: repeat(6, minmax(0, 1fr));
}
.main-nav button {
  min-width: 0;
  min-height: 38px;
  padding: 7px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--mem-ink);
  font: 850 13px/1.15 var(--mem-display);
  white-space: nowrap;
  box-shadow: none;
  transform: none;
}
@media(max-width:760px){
  .main-nav{min-width:0;width:100%;gap:2px}
  .main-nav button{min-height:44px;padding-inline:4px;font-size:clamp(9px,2.8vw,11px);white-space:nowrap}
  .login-entry{min-height:44px}
}
.main-nav button:hover {
  background: var(--mem-yellow);
  color: var(--mem-ink);
}
.main-nav button.active {
  background: var(--mem-sky);
  color: var(--mem-ink);
}
.main-nav button:active {
  transform: none;
}
.player-context-bar {
  display: flex;
  box-sizing: border-box;
  width: 100%;
  min-height: 54px;
  align-items: center;
  justify-content: space-between;
  margin: 0 0 12px;
  padding: 6px;
  gap: 10px;
  border: 3px solid var(--mem-ink);
  border-radius: 14px;
  background: var(--mem-paper);
  box-shadow: 4px 5px 0 rgba(24, 49, 83, .16), 0 10px 22px rgba(24, 49, 83, .08);
}
.player-context-bar[hidden] { display: none; }
.player-origin-return {
  min-width: 0;
  min-height: 40px;
  padding: 8px 12px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--mem-ink);
  box-shadow: none;
  font: 900 13px/1.15 var(--mem-display);
  text-align: left;
  transform: none;
}
.player-origin-return:hover { background: var(--mem-yellow); }
.midi-version-switch {
  display: inline-flex;
  align-items: center;
  width: fit-content;
  max-width: 100%;
  min-width: 0;
  margin: 12px 0 4px auto;
  padding: 0;
  gap: 2px;
  border: 0;
  background: transparent;
  color: var(--mem-ink);
}
.midi-version-switch[hidden] { display: none; }
.midi-version-switch button {
  min-width: 0;
  min-height: 36px;
  margin: 0;
  padding: 7px 12px 8px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--mem-secondary);
  box-shadow: none;
  font: 850 11px/1 var(--mem-body);
  white-space: nowrap;
  transform: none;
}
.midi-version-switch button:hover { background: rgba(97, 201, 246, .28); }
.midi-version-switch button.is-active {
  background: rgba(145, 228, 195, .42);
  color: var(--mem-ink);
  box-shadow: inset 0 -3px 0 var(--mem-ink);
  font-weight: 950;
}
.midi-loading-dialog {
  width: min(430px, calc(100vw - 28px));
  max-width: none;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--mem-ink);
}
.midi-loading-dialog[hidden] { display: none; }
.midi-loading-dialog::backdrop {
  background: rgba(24, 49, 83, .42);
  -webkit-backdrop-filter: blur(8px) saturate(.78);
  backdrop-filter: blur(8px) saturate(.78);
}
.midi-loading-card {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr) auto;
  align-items: center;
  padding: 18px;
  gap: 12px;
  border: 3px solid var(--mem-ink);
  border-radius: 16px;
  background: var(--mem-paper);
  box-shadow: 8px 10px 0 rgba(24, 49, 83, .18), 0 28px 80px rgba(12, 18, 31, .3);
}
.midi-loading-icon {
  width: 46px;
  height: 46px;
  box-sizing: border-box;
  padding: 8px;
  border: 2px solid var(--mem-ink);
  border-radius: 12px;
  background: var(--mem-yellow);
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.midi-loading-copy { min-width: 0; }
.midi-loading-copy strong {
  display: block;
  font: 900 16px/1.15 var(--mem-display);
}
.midi-loading-copy p {
  margin: 5px 0 0;
  color: var(--mem-secondary);
  font: 750 11px/1.4 var(--mem-body);
}
.midi-loading-card output {
  color: var(--mem-ink);
  font: 900 12px/1 var(--mem-data);
}
.midi-loading-track {
  display: block;
  grid-column: 1 / -1;
  height: 7px;
  overflow: hidden;
  border: 1px solid var(--mem-ink);
  border-radius: 999px;
  background: rgba(24, 49, 83, .12);
}
.midi-loading-track i {
  display: block;
  width: 34%;
  height: 100%;
  border-radius: inherit;
  background: var(--mem-sky);
  transition: width .16s ease-out;
}
.midi-loading-dialog[data-indeterminate="true"] .midi-loading-track i {
  animation: midi-loading-slide 1.05s ease-in-out infinite;
}
@keyframes midi-loading-slide {
  0% { transform: translateX(-115%); }
  100% { transform: translateX(320%); }
}
@media (prefers-reduced-motion: reduce) {
  .midi-loading-dialog[data-indeterminate="true"] .midi-loading-track i { animation: none; }
}
.topbar-actions {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 8px;
}
.session-status {
  display: flex;
  align-items: center;
  min-width: 0;
  max-width: min(360px, 35vw);
  padding: 7px 10px;
  gap: 7px;
}
.session-status > span:first-child {
  flex: 0 0 9px;
  width: 9px;
  height: 9px;
  margin: 0;
  border: 2px solid var(--mem-ink);
  border-radius: 50%;
  background: var(--mem-coral);
}
.session-status #dailyTheme {
  display: block;
  width: auto;
  height: auto;
  min-width: 0;
  margin: 0;
  overflow: hidden;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--mem-ink);
  font-size: 11px;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.site-footer {
  display: flex;
  box-sizing: border-box;
  width: calc(100% - clamp(20px, 4.4vw, 80px));
  max-width: 1840px;
  min-height: 48px;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin: 0 auto 24px;
  padding: 11px 15px;
  border: 3px solid var(--mem-ink);
  border-radius: 13px;
  box-shadow: 5px 6px 0 rgba(24,49,83,.18);
}
.site-footer strong {
  color: var(--mem-paper);
  font-size: 11px;
}
.site-footer a {
  color: var(--mem-yellow);
  font-size: 10px;
  text-align: right;
}
.login-entry {
  display: grid;
  flex: 0 0 auto;
  min-width: 70px;
  min-height: 40px;
  place-content: center;
  padding: 6px 11px;
  border: 2px solid var(--mem-ink);
  border-radius: 9px;
  background: var(--mem-ink);
  color: var(--mem-paper);
  box-shadow: none;
  font-family: var(--mem-display);
  line-height: 1;
}
.login-entry span {
  font-size: 13px;
  font-weight: 900;
}
.login-entry small {
  margin-top: 3px;
  font-size: 8px;
  font-weight: 800;
  letter-spacing: .08em;
}
.login-entry:hover {
  background: var(--mem-coral);
}
.login-entry:active {
  transform: none;
}
.access-dialog {
  width: min(480px, calc(100vw - 28px));
  max-width: none;
  padding: 0;
  border: 0;
  border-radius: 16px;
  background: transparent;
  color: var(--mem-ink);
}
.access-dialog::backdrop {
  background: rgba(24, 49, 83, .38);
  -webkit-backdrop-filter: blur(6px) saturate(.82);
  backdrop-filter: blur(6px) saturate(.82);
}
.access-dialog-card {
  position: relative;
  padding: clamp(24px, 5vw, 36px);
  border: 3px solid var(--mem-ink);
  border-radius: 16px;
  background: var(--mem-paper);
  box-shadow: 8px 10px 0 rgba(24, 49, 83, .18);
}
.access-dialog-close {
  position: absolute;
  top: 12px;
  right: 12px;
  min-height: 36px;
  padding: 6px 9px;
  border: 0;
  background: transparent;
  color: var(--mem-ink);
  box-shadow: none;
  font-size: 11px;
  font-weight: 850;
}
.access-dialog-label {
  display: block;
  padding-right: 48px;
  color: var(--mem-coral-ink, #8e302c);
  font: 850 10px/1.2 var(--mem-data);
  letter-spacing: .08em;
}
.access-dialog h2 {
  margin: 10px 0 12px;
  font: 900 clamp(25px, 6vw, 36px)/1.05 var(--mem-display);
  letter-spacing: -.025em;
}
.access-dialog p {
  margin: 0;
  color: var(--mem-secondary, #344967);
  font-size: 14px;
  font-weight: 650;
  line-height: 1.65;
}
.access-dialog-actions {
  display: grid;
  grid-template-columns: 1fr 1.35fr;
  gap: 8px;
  margin-top: 24px;
}
.access-dialog-actions button,
.access-dialog-actions a {
  display: grid;
  min-height: 44px;
  place-items: center;
  padding: 8px 11px;
  border: 2px solid var(--mem-ink);
  border-radius: 9px;
  background: var(--mem-paper);
  color: var(--mem-ink);
  box-shadow: none;
  font-size: 12px;
  font-weight: 900;
  text-align: center;
  text-decoration: none;
}
.access-dialog-actions a {
  background: var(--mem-yellow);
}
.access-dialog-actions button:hover {
  background: var(--mem-sky);
}
.access-dialog-actions a:hover {
  background: var(--mem-mint);
}
.access-dialog-actions .primary-dialog-action {
  background: var(--mem-yellow);
}
.access-dialog-actions .primary-dialog-action:hover {
  background: var(--mem-mint);
}

.feature-gate-dialog{width:min(420px,calc(100vw - 28px))}
.feature-gate-card{padding:clamp(24px,5vw,34px)}
.feature-gate-card h2{max-width:11em}
.feature-gate-card p{max-width:31em}
.feature-gate-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}
.feature-gate-actions button{min-height:48px;padding:9px 14px;border:2px solid var(--mem-ink);border-radius:10px;background:var(--mem-sky);color:var(--mem-ink);box-shadow:none;font-size:14px;font-weight:950}
.feature-gate-actions .primary-dialog-action{background:var(--mem-yellow)}
.feature-gate-actions button:hover{background:var(--mem-mint)}
.user-auth-form{display:grid;gap:12px;margin-top:20px}
.user-auth-form[hidden],.user-wechat-auth[hidden],.user-auth-terms[hidden],.user-auth-submit[hidden]{display:none}
.user-wechat-auth{display:grid;justify-items:center;gap:10px;margin-top:14px;padding:16px;border:3px solid var(--mem-ink);border-radius:16px;background:var(--mem-mint);box-shadow:5px 5px 0 var(--mem-ink);color:var(--mem-ink);text-align:center}
.user-wechat-auth strong{font-size:18px}.user-wechat-auth p,.user-wechat-auth small{margin:0;line-height:1.55}.user-wechat-auth small{color:#3f526c;font-weight:700}
.user-wechat-qr{display:grid;width:210px;max-width:100%;aspect-ratio:1;place-items:center;padding:8px;border:3px solid var(--mem-ink);border-radius:12px;background:#fff}
.user-wechat-qr:empty{display:none}.user-wechat-qr svg{display:block;width:100%;height:100%}
.user-wechat-open,.user-wechat-refresh{box-sizing:border-box;min-height:42px;padding:9px 14px;border:2px solid var(--mem-ink);border-radius:9px;color:var(--mem-ink);font-weight:900;text-decoration:none}
.user-wechat-open{display:none;background:var(--mem-yellow)}.user-wechat-refresh{background:var(--mem-paper)}
.account-avatar{position:relative;overflow:hidden;width:58px;height:58px;padding:0;border:3px solid var(--mem-ink);border-radius:50%;background:var(--mem-yellow);color:var(--mem-ink);box-shadow:none;font:950 18px/1 var(--mem-display)}
.account-avatar img{position:absolute;z-index:1;inset:0;width:100%;height:100%;object-fit:cover}
.account-avatar>span{position:relative;z-index:2}.account-avatar>i{position:absolute;z-index:3;right:-1px;bottom:-1px;display:grid;width:20px;height:20px;place-items:center;border:2px solid var(--mem-ink);border-radius:50%;background:var(--mem-cream);font:900 11px/1 var(--mem-body);font-style:normal}
.user-auth-modes{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:16px;padding:5px;border:2px solid var(--mem-ink);border-radius:11px;background:var(--mem-paper)}
.user-auth-modes button{min-height:36px;padding:6px 8px;border:0;border-radius:7px;background:transparent;color:var(--mem-ink);font-size:11px;font-weight:900}
.user-auth-modes button.active{background:var(--mem-yellow);box-shadow:inset 0 0 0 2px var(--mem-ink)}
.user-auth-terms{display:grid;grid-template-columns:18px minmax(0,1fr);align-items:start;gap:8px;margin-top:14px;color:var(--mem-secondary);font-size:11px;font-weight:750;line-height:1.55}
.user-auth-terms input{width:18px;height:18px;margin:1px 0 0;accent-color:var(--mem-coral)}
.user-auth-terms a{color:var(--mem-ink);font-weight:900;text-underline-offset:2px}
.user-auth-form label{display:grid;gap:6px;color:var(--mem-ink);font-size:11px;font-weight:850}
.user-auth-form input{box-sizing:border-box;width:100%;min-height:46px;padding:9px 11px;border:2px solid var(--mem-ink);border-radius:9px;background:#fff;color:var(--mem-ink);font-size:16px;font-weight:800}
.user-code-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px}
.user-code-row button,.user-auth-submit,.user-auth-account>button{min-height:46px;padding:8px 12px;border:2px solid var(--mem-ink);border-radius:9px;background:var(--mem-yellow);color:var(--mem-ink);font-weight:900}
.user-auth-submit{width:100%;margin-top:12px}
.user-code-row button{min-width:112px;background:var(--mem-paper);font-size:11px}
.user-auth-form button:disabled,.user-auth-account>button:disabled{cursor:default;opacity:.48}
.user-auth-status{min-height:20px;color:var(--mem-secondary);font-size:11px;font-weight:750;line-height:1.45}
.user-auth-status[data-state="error"]{color:#9b3028}.user-auth-status[data-state="success"]{color:#1d684f}
.user-auth-intent-switch{display:block;margin:12px auto 0;padding:5px 8px;border:0;background:transparent;color:var(--mem-ink);box-shadow:none;font-size:11px;font-weight:900;text-decoration:underline;text-underline-offset:3px}
.user-auth-account{display:grid;gap:10px}.user-auth-account[hidden]{display:none}
.user-auth-account strong{font:900 22px/1.1 var(--mem-display)}.user-auth-account>span{color:var(--mem-secondary);font:800 12px/1 var(--mem-data)}
.user-auth-account>small{color:var(--mem-secondary);font-size:10px;font-weight:800}
.user-auth-account>button{margin-top:8px;background:var(--mem-paper)}
.login-entry.authenticated{background:var(--mem-mint);color:var(--mem-ink)}
@media (max-width: 980px) {
  .main-nav {
    order: 3;
    width: 100%;
    max-width: none;
  }
}
.brand-logo {
  display: block;
  width: clamp(150px, 16vw, 195px);
  height: auto;
  margin-block: clamp(-19px, -1.55vw, -14px);
}
@media (max-width: 719px) {
  .player-context-bar {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    padding: 5px;
    gap: 5px;
  }
  .player-context-bar[hidden] { display: none; }
  .player-origin-return { width: 100%; min-height: 44px; }
  .midi-version-switch { margin-top: 10px; }
  .midi-version-switch button { min-height: 44px; font-size: 11px; }
  .midi-loading-card {
    grid-template-columns: 42px minmax(0, 1fr) auto;
    padding: 15px;
    gap: 10px;
  }
  .midi-loading-icon { width: 42px; height: 42px; }
  .topbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: center;
    gap: 8px;
    padding: 9px;
  }
  .brand {
    min-width: 0;
  }
  .brand-logo {
    width: clamp(142px, 43vw, 174px);
    margin-block: -14px;
  }
  .main-nav {
    gap: 2px;
    padding: 3px;
    border-radius: 10px;
  }
  .main-nav button {
    min-height: 44px;
    padding: 6px 3px;
    border-radius: 7px;
    font-size: clamp(9px, 2.8vw, 11px);
    white-space: nowrap;
  }
  .topbar-actions {
    display: grid !important;
    grid-template-columns: minmax(0, 1fr) auto;
    order: 2;
    width: 100%;
    margin: 0;
  }
  .session-status {
    display: flex !important;
    width: 100%;
    max-width: none;
    min-height: 34px;
    padding: 6px 9px;
  }
  .session-status #dailyTheme {
    display: block;
    font-size: 10px;
  }
  .login-entry {
    min-width: 68px;
    min-height: 44px;
    padding: 5px 9px;
  }
  .access-dialog-actions {
    grid-template-columns: 1fr;
  }
  .feature-gate-actions{grid-template-columns:1fr 1fr}
  .user-code-row{grid-template-columns:minmax(0,1fr)}
  .user-code-row button{width:100%}
  .user-wechat-qr{display:none}.user-wechat-open{display:grid;width:100%;place-items:center}
  .site-footer {
    align-items: flex-start;
    flex-direction: column;
    width: calc(100% - 24px);
    gap: 5px;
    margin-bottom: 18px;
  }
  .site-footer a {
    text-align: left;
  }
}
