@font-face{font-family:RibbonTitle;src:url('../admin/fonts/BricolageGrotesque-ExtraBold.ttf') format('truetype');font-weight:800;font-display:swap}
@font-face{font-family:RibbonBody;src:url('../admin/fonts/Lexend-Regular.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:RibbonBody;src:url('../admin/fonts/Lexend-SemiBold.ttf') format('truetype');font-weight:600;font-display:swap}
:root {
  color-scheme: light;
  font-family: RibbonBody, ui-sans-serif, system-ui, -apple-system, sans-serif;
  font-synthesis: none;
  color: #121a2b;
  background: #eef1f6;
  --accent: #d2362d;
  --line: #d9e0eb;
  --muted: #5a6478;
  --paper: #ffffff;
  --wash: #e5eaf2;
}
* { box-sizing: border-box; }
body { margin: 0; }
button, input, select, textarea { font: inherit; }
button {
  cursor: pointer; border: 1px solid #d9e0eb; border-radius: 10px;
  background: var(--paper); color: #121a2b; padding: 11px 16px;
  font-weight: 600; min-height: 44px; transition: background .15s, border-color .15s;
}
button:disabled { opacity: .45; cursor: default; }
button:hover:not(:disabled) { background: #f6f8fc; border-color: #7d8da8; }
button.primary, .file-label { background: var(--accent); color: #fff; border-color: var(--accent); }
button.primary:hover:not(:disabled) { background: #b42318; border-color: #b42318; }
.quiet { background: transparent; border-color: transparent; }
input, select, textarea {
  width: 100%; padding: 11px 12px; border: 1px solid #b9c3d3;
  background: var(--paper); color: #121a2b; border-radius: 9px; margin-top: 7px;
}
input::placeholder, textarea::placeholder { color: #5a6478; }
input:focus, select:focus, textarea:focus, button:focus-visible, a:focus-visible {
  outline: 3px solid #2563eb; outline-offset: 3px;
}
input[type=checkbox] { width: 18px; height: 18px; accent-color: var(--accent); margin: 0; }
input[type=color] { height: 44px; padding: 4px; }
label { display: block; font-size: 13px; font-weight: 600; }
textarea { resize: vertical; line-height: 1.6; }
h1, h2, h3, p { margin: 0; }
h1 { font-size: clamp(27px, 3vw, 36px); letter-spacing: -1.2px; line-height: 1.18; font-weight: 700; }
h2 { font-size: 22px; letter-spacing: -.5px; }
h3 { font-size: 16px; margin-bottom: 12px; }
.muted { color: var(--muted); font-size: 13px; line-height: 1.7; margin-top: 8px; }
.eyebrow { font-size: 10px; font-weight: 700; letter-spacing: 1.8px; color: #5a6478; margin-bottom: 10px; }
.brand { display: inline-flex; align-items: center; gap: 12px; font-weight: 750; font-size: 21px; letter-spacing: -.6px; color: #121a2b; text-decoration: none; }
.brand > img { object-fit: contain; background: #e5eaf2; border-radius: 50%; }
.brand small { display: block; font-weight: 400; letter-spacing: .1px; font-size: 11px; margin-top: 3px; color: var(--muted); }
header { background: #fff; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px max(24px, calc((100vw - 1236px) / 2)); border-bottom: 1px solid var(--line); min-height: 81px; }
header button { font-size: 12px; }
main { max-width: 1320px; margin: auto; padding: 30px 42px 20px; }
.page-heading { display: flex; justify-content: space-between; align-items: center; gap: 24px; margin-bottom: 18px; min-height: 135px; }
.professor-guide { flex: 0 0 auto; object-fit: contain; background: #e5eaf2; border-radius: 50%; }
.tabs { display: flex; gap: 6px; border-bottom: 1px solid var(--line); margin-bottom: 30px; padding: 0 0 12px; overflow: auto; white-space: nowrap; }
.tabs button { border: 1px solid transparent; border-radius: 9px; background: transparent; padding: 12px 17px; color: #5a6478; font-size: 13px; }
.tabs button.selected { border-color: #2e3e60; background: #1c2740; color: #ffffff; }
.tabs span { color: #ffb4ae; margin-left: 6px; }
.section-heading { display: flex; justify-content: space-between; align-items: center; margin-bottom: 22px; gap: 20px; }
.filters { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 15px; background: var(--wash); border: 1px solid #d9e0eb; padding: 18px; border-radius: 13px; }
.filters label span { font-size: 10px; letter-spacing: .7px; text-transform: uppercase; color: #5a6478; }
.list-heading { display: flex; align-items: center; justify-content: space-between; gap: 14px; font-size: 11px; color: var(--muted); margin: 22px 0 12px; }
.item-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.item-card { display: flex; text-align: left; align-items: center; gap: 14px; padding: 18px 14px; min-height: 104px; overflow: hidden; border-color: var(--line); border-radius: 13px; }
.item-card img, .icon-editor img { image-rendering: pixelated; object-fit: contain; background: #eef1f6; border-radius: 11px; padding: 6px; flex-shrink: 0; }
.item-card .copy { min-width: 0; }
.item-card strong { display: block; font-size: 13px; margin-bottom: 5px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.item-card small { display: block; font-size: 10px; font-family: ui-monospace, monospace; color: #5a6478; overflow: hidden; text-overflow: ellipsis; }
.badge { font-size: 9px; display: inline-block; border-radius: 5px; padding: 4px 7px; margin-top: 8px; background: #e5f4ef; color: #0b6f6a; }
.badge.warn { color: #875721; background: #faf0d9; }
.badge.off { color: #5a6478; background: #e5eaf2; }
.pagination { display: flex; justify-content: center; align-items: center; gap: 22px; margin: 25px 0; font-size: 12px; }
.import-report { border-top: 1px solid var(--line); font-size: 12px; padding: 20px 0; color: var(--muted); line-height: 1.8; }
.import-report summary { cursor: pointer; }
.gift-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; }
.gift-card { background: var(--paper); border: 1px solid var(--line); padding: 24px; border-radius: 14px; display: flex; flex-direction: column; gap: 13px; }
.gift-card p { color: var(--muted); font-size: 13px; line-height: 1.65; }
.gift-card .counts { font-size: 11px; color: #5a6478; border-top: 1px solid var(--line); padding-top: 14px; }
.gift-card button { margin-top: auto; }
.rewards-summary { font-size: 12px; line-height: 1.7; color: #5a6478; }
.notice { padding: 14px 18px; background: #e5f4ef; border: 1px solid #b3d5c8; border-radius: 10px; font-size: 13px; margin-bottom: 20px; line-height: 1.6; }
.error { color: #b42318; font-size: 13px; line-height: 1.5; min-height: 20px; margin-top: 12px; }
footer { display: flex; align-items: center; gap: 12px; font-size: 10px; color: var(--muted); border-top: 1px solid var(--line); padding: 22px 0; margin-top: 25px; line-height: 1.8; }
footer img { object-fit: contain; flex-shrink: 0; background: #e5eaf2; border-radius: 50%; }
footer strong { font-size: 11px; color: #121a2b; font-weight: 600; }
footer a { margin-left: auto; color: var(--accent); text-underline-offset: 4px; white-space: nowrap; }
dialog { border: 1px solid #b9c3d3; border-radius: 18px; width: min(700px, 94vw); padding: 28px; max-height: 90vh; overflow: auto; color: #121a2b; background: #fff; box-shadow: 0 24px 90px #243a4326; }
dialog::backdrop { background: #121a2b5c; backdrop-filter: blur(4px); }
.dialog-heading { display: flex; justify-content: space-between; align-items: start; margin-bottom: 24px; }
.dialog-heading code { color: var(--muted); font-size: 11px; display: block; margin-top: 7px; }
.dialog-heading h2 { margin-right: 12px; }
.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }
dialog label { margin-bottom: 15px; }
.checks { display: flex; gap: 25px; margin-top: 14px; flex-wrap: wrap; }
.checks label, .publish { display: flex; align-items: center; gap: 10px; }
.icon-editor { display: flex; gap: 20px; align-items: center; border: 1px dashed #b9c3d3; border-radius: 12px; padding: 16px; margin-bottom: 24px; }
.file-label { display: inline-block; padding: 9px 12px; border-radius: 8px; font-size: 12px; cursor: pointer; margin: 0; }
.file-label input { width: 1px; height: 1px; opacity: 0; position: absolute; }
.icon-editor .muted { font-size: 11px; }
.icon-editor button { font-size: 11px; padding: 6px; min-height: 32px; }
.dialog-actions { display: flex; justify-content: flex-end; gap: 10px; border-top: 1px solid var(--line); padding-top: 20px; margin-top: 20px; }
.route-editor { border-top: 1px solid var(--line); padding-top: 20px; margin-top: 12px; }
.route-row { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 10px; padding: 12px 0; font-size: 13px; border-bottom: 1px solid #d9e0eb; }
.route-row label { display: flex; align-items: center; gap: 8px; margin: 0; }
.route-row select { width: 120px; }
.route-row input[type=number] { width: 90px; }
.inline { display: flex; align-items: end; gap: 10px; margin-top: 15px; }
.inline select { flex: 1; }
.reward { border: 1px solid var(--line); background: #eef1f6; padding: 15px; border-radius: 12px; margin-bottom: 12px; }
.reward-top { display: flex; gap: 12px; align-items: center; }
.reward-top select { flex: 1; margin: 0; }
.reward-top button { min-width: 44px; padding: 8px; }
.reward-fields { margin-top: 13px; display: grid; grid-template-columns: 2fr 1fr; gap: 12px; }
.reward-fields label { margin-bottom: 0; }
.publish { margin-top: 22px; }
.empty { grid-column: 1/-1; padding: 55px; text-align: center; color: var(--muted); border: 1px dashed #b9c3d3; border-radius: 14px; }
.login { min-height: 100svh; display: grid; grid-template-columns: 1fr 1fr; background: #eef1f6; }
.login-card { max-width: 448px; width: 100%; margin: auto; padding: 40px 32px; }
.login-card .brand { margin-bottom: 60px; }
.login-card h1 { font-size: clamp(30px, 3.2vw, 40px); margin-bottom: 12px; }
.login-card .muted { margin-bottom: 30px; }
.login-card label { margin-bottom: 18px; }
.login-card button { width: 100%; margin-top: 8px; }
.login-art { background: #1c2740; position: relative; min-height: 100svh; overflow: hidden; padding: 68px 54px; isolation: isolate; }
.login-art::before { content: ''; position: absolute; z-index: -1; width: 620px; height: 620px; border-radius: 50%; background: #2e3e60; bottom: -30px; left: 8%; }
.login-art::after { content: ''; position: absolute; z-index: -1; width: 680px; height: 680px; border: 1px solid #51658a; border-radius: 50%; bottom: 5px; left: 2%; }
.professor-label { display: inline-flex; align-items: center; gap: 8px; font-size: 10px; letter-spacing: 1.8px; color: #b8c2d6; margin-bottom: 24px; }
.professor-dot { width: 7px; height: 7px; background: #d2362d; border-radius: 50%; }
.login-art h2 { font-size: clamp(29px, 3vw, 40px); line-height: 1.15; font-weight: 600; letter-spacing: -1.3px; }
.login-art > p { margin-top: 16px; font-size: 12px; color: #b8c2d6; }
.professor-body { position: absolute; right: 8%; bottom: -20px; height: min(70svh, 700px); max-width: 90%; object-fit: contain; }
.pokemon-assets { display: flex; align-items: center; gap: 15px; flex-wrap: wrap; background: var(--wash); padding: 12px; border-radius: 12px; margin-bottom: 18px; }
.pokemon-assets img { object-fit: contain; image-rendering: pixelated; }
.pokemon-assets audio { width: 100%; height: 35px; }
.landscape-preview { height: 125px; border-radius: 12px; background: linear-gradient(var(--sky-top, #b8d898), var(--sky-bottom, #88bc7c)); border-bottom: 28px solid var(--land, #3a7c50); display: flex; align-items: center; justify-content: center; margin: 12px 0 20px; color: #17382e; font-size: 11px; }
.route-colors { display: flex; gap: 5px; }
.route-colors i { width: 28px; height: 12px; border-radius: 3px; background: var(--swatch); }
#pokemon-list { margin-top: 20px; }
#environment-roster h3 { margin-top: 24px; }
details summary { cursor: pointer; padding: 12px 0; font-size: 13px; }
#environment-form details textarea { font: 12px/1.6 ui-monospace, monospace; }
.pokemon-card img, #pokemon-icon { object-fit: cover; object-position: left; padding: 0; }
body[aria-busy=true] { cursor: progress; }
[hidden] { display: none !important; }
@media (max-width: 1050px) {
  .item-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gift-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .login-art { padding: 60px 30px; }
}
@media (max-width: 700px) {
  header { padding: 12px 16px; }
  header .brand { gap: 8px; font-size: 19px; }
  header .brand img { width: 42px; height: 42px; }
  header .brand small { font-size: 9px; }
  header button { padding: 10px; font-size: 11px; }
  main { padding: 22px 16px 12px; }
  .page-heading { gap: 10px; min-height: 100px; }
  .professor-guide { width: 76px; height: 76px; }
  .page-heading h1 { font-size: 26px; }
  .page-heading .eyebrow { font-size: 8px; letter-spacing: 1px; }
  .page-heading .muted { font-size: 12px; }
  .filters { grid-template-columns: 1fr 1fr; padding: 14px; }
  .filters .search { grid-column: 1/-1; }
  .item-grid { grid-template-columns: 1fr 1fr; gap: 8px; }
  .item-card { flex-direction: column; align-items: start; gap: 10px; padding: 14px; }
  .item-card .copy { max-width: 100%; }
  .gift-grid { grid-template-columns: 1fr; }
  .list-heading span:last-child { display: none; }
  .login { grid-template-columns: 1fr; }
  .login-art { display: none; }
  .login-card { padding: 32px 28px; }
  .login-card .brand { margin-bottom: 42px; }
  dialog { padding: 20px; }
  .form-grid { grid-template-columns: 1fr; }
  .checks { gap: 12px; }
  .icon-editor { gap: 12px; }
  .tabs { gap: 4px; margin-bottom: 24px; }
  .tabs button { padding: 11px 13px; font-size: 12px; }
  .section-heading { align-items: start; }
  .section-heading > button { flex-shrink: 0; font-size: 12px; padding: 10px; }
  .reward-fields { grid-template-columns: 1fr 1fr; }
  .reward-fields label:first-child { grid-column: 1/-1; }
  .pagination { gap: 12px; }
  footer { flex-wrap: wrap; }
  footer span { flex: 1; }
  footer a { margin-left: 52px; }
}
@media (prefers-reduced-motion: reduce) { * { transition: none !important; } }
.progress-form { max-width: 660px; background: var(--paper); border: 1px solid var(--line); border-radius: 14px; padding: 24px; }
.progress-form fieldset { border: 0; margin: 0; padding: 0; min-width: 0; display: grid; gap: 22px; }
.progress-form input { max-width: 180px; display: block; }
.progress-form small { display: block; font-size: 12px; font-weight: 400; color: var(--muted); line-height: 1.6; margin-top: 7px; }
.progress-preview { font-size: 13px; line-height: 1.7; padding: 14px; background: var(--wash); border-radius: 10px; }
.progress-actions { display: flex; flex-wrap: wrap; gap: 10px; }

.battle-music-preview { width: 100%; height: 36px; margin-top: 8px; }

.challenge-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}.challenge-card-head{display:flex;gap:18px;align-items:center}.challenge-card-head img,.challenge-team-preview img,#challenge-portrait{object-fit:contain;image-rendering:pixelated}.challenge-card h3{margin:6px 0}.challenge-team-preview{display:flex;flex-wrap:wrap;gap:2px}.challenge-heading{display:grid;grid-template-columns:80px 1fr;gap:20px;align-items:center}.challenge-mon{border:1px solid var(--line,#d8ddd3);border-radius:14px;padding:18px;margin:18px 0;min-width:0}.challenge-mon legend{font-weight:700;padding:0 8px}.challenge-mon-tools{display:flex;gap:8px;justify-content:flex-end;margin-bottom:14px}.challenge-mon-tools button{font-size:12px;min-height:36px}.challenge-mon summary{cursor:pointer;padding:12px 0}#challenge-dialog{max-width:850px;width:calc(100% - 32px)}#challenge-form .dialog-actions{position:sticky;bottom:-1px;background:var(--paper,#eef1f6);padding:16px 0;margin-bottom:-4px;border-top:1px solid var(--line,#d8ddd3);z-index:2}#challenge-form input[type=color]{min-height:42px}#challenge-form .form-grid>label{min-width:0}#challenge-form .form-grid input{min-width:0;width:100%}@media(max-width:600px){.challenge-heading{grid-template-columns:1fr}.challenge-heading>img{justify-self:center}.challenge-mon{padding:12px}.challenge-mon-tools{justify-content:flex-start;flex-wrap:wrap}}

.challenge-mon-icon{display:block;width:32px;height:32px;overflow:hidden;flex:0 0 32px}.challenge-mon-icon img{display:block;height:32px;width:auto;max-width:none;object-fit:fill}

/* Ribbon: same typography, red ribbons and raised controls as the Walker. */
:root{--ink:#121a2b;--panel:#1c2740;--bar:#0b1220;--lip:#b9c3d3;--accent-dark:#b42318}
body{background-image:linear-gradient(#2e3e6005 1px,transparent 1px),linear-gradient(90deg,#2e3e6005 1px,transparent 1px);background-size:32px 32px}
h1,h2,h3,.brand{font-family:RibbonTitle,system-ui,sans-serif;font-weight:800}
button,.file-label{border-bottom-width:4px;border-bottom-color:var(--lip);transition:transform .15s,background .15s}
button:hover:not(:disabled){transform:translateY(-1px)}button:active:not(:disabled){transform:translateY(2px)}
button.primary,.file-label{border-bottom-color:#981d16}.quiet{border-color:transparent;border-bottom-width:1px}
input,select,textarea{min-height:44px;box-shadow:inset 0 2px 0 #121a2b04}
input[type=checkbox]{min-height:0;box-shadow:none;flex-shrink:0}input[type=color]{box-shadow:none}
header{background:var(--ink);color:#fff;border-bottom:5px solid var(--bar);position:sticky;top:0;z-index:5;min-height:86px}
header .brand{color:#fff}header .brand small{color:#b8c2d6}header .brand>img{background:#2e3e60;border-radius:10px}
header button{color:#fff;border-color:#51658a;background:var(--panel);border-bottom:3px solid var(--bar)}header button:hover:not(:disabled){background:#2e3e60;border-color:#51658a}
main{max-width:1400px;padding-top:24px}.page-heading{min-height:145px;margin-bottom:14px}.page-heading h1{display:inline-block;background:var(--accent);color:#fff;border-radius:7px;padding:11px 26px 14px 22px;clip-path:polygon(2% 0,100% 0,97% 100%,0 100%);letter-spacing:-1px;font-size:clamp(27px,3vw,38px)}
.page-heading .muted{margin-left:8px}.page-heading .eyebrow{margin-left:8px}.professor-guide{border-radius:15px;border:1px solid var(--line);border-bottom:5px solid var(--lip);background:#fff;width:112px;height:112px}
.tabs{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px;white-space:normal;overflow:visible;background:var(--ink);padding:9px;border:1px solid #2e3e60;border-bottom:5px solid var(--bar);border-radius:12px;margin-bottom:28px;align-items:stretch}
.tabs button{display:block;min-width:0;min-height:54px;padding:10px 9px;background:var(--panel);border:1px solid #2e3e60;border-bottom:3px solid var(--bar);border-radius:7px;color:#d2d9e6;font-size:11px;line-height:1.5}
.tabs button.selected{background:var(--accent);border-color:var(--accent-dark);border-bottom-color:#981d16;color:#fff}.tabs button:hover:not(:disabled){background:#2e3e60;border-color:#51658a}.tabs button.selected:hover{background:var(--accent-dark);border-color:#981d16}
.section-heading h2{font-size:26px;letter-spacing:-.7px}.section-heading .muted{font-size:12px}.filters{border-bottom:4px solid var(--lip);border-radius:12px;background:#fff}.filters label span{font-size:9px}
.item-card,.gift-card,.progress-form{border-bottom:5px solid var(--lip);background:#fff;box-shadow:0 1px 0 #121a2b04}.item-card{min-height:110px}.item-card:hover:not(:disabled){background:#fff;border-color:#7d8da8;border-bottom-color:#7d8da8}.item-card img{background:var(--wash);border-radius:8px}.item-card strong{font-size:13px}.item-card small{font-size:9px}.gift-card{border-radius:12px;padding:22px}.gift-card h3{font-size:21px;letter-spacing:-.5px}.gift-card p{font-size:12px}.badge{border-radius:5px;font-size:9px}.badge.warn{background:#fff1ce;color:#76500b}.badge.off{color:var(--muted)}
.challenge-card{position:relative;border-top:3px solid var(--accent)}.challenge-card-head{gap:14px}.challenge-card-head img{background:var(--wash);border-radius:10px}.challenge-card h3{font-size:25px}.challenge-team-preview{gap:5px;padding:12px;background:var(--wash);border-radius:9px}.challenge-card .muted{font-size:11px}.challenge-card .badge{align-self:flex-start}
.notice{background:#e5f4ef;color:#0b5b50;border-left:4px solid #0b6f6a;border-bottom:3px solid #b3d5c8}.error{color:#b42318}
dialog{background:var(--paper);border:1px solid #51658a;border-top:6px solid var(--accent);border-bottom:7px solid var(--lip);border-radius:13px;box-shadow:0 24px 90px #0b122044;padding:26px}dialog::backdrop{background:#0b1220b8}.dialog-heading h2{font-size:29px}.dialog-heading .quiet{width:42px;min-width:42px;height:42px;padding:7px;background:var(--panel);color:#fff;border:1px solid #2e3e60;border-bottom:4px solid var(--bar);border-radius:8px}.dialog-heading .quiet:hover{background:#2e3e60}.dialog-actions{gap:10px}.icon-editor{border-style:solid;background:var(--wash)}.challenge-mon{background:#fff;border-bottom:4px solid var(--lip)}.challenge-mon legend{font-size:14px}.challenge-mon-tools button{font-size:11px}.reward{border-bottom:3px solid var(--lip)}
.login{background:var(--paper)}.login-card{max-width:480px;padding:40px}.login-card .brand{margin-bottom:50px}.login-card .brand img{background:#fff;border:1px solid var(--line);border-bottom:4px solid var(--lip);border-radius:10px}.login-card h1{font-size:clamp(34px,3.5vw,47px);letter-spacing:-1.6px}.login-card .eyebrow{display:inline-block;background:var(--accent);color:#fff;padding:9px 17px;border-radius:5px;transform:skew(-8deg);font-size:9px;letter-spacing:1px}.login-card .muted{font-size:13px}.login-art{background:var(--panel);color:#fff;border-left:6px solid var(--bar);padding-top:66px}.login-art h2{font-size:clamp(33px,3.5vw,47px);font-weight:800}.login-art>p{color:#b8c2d6}.login-art:before{border-radius:25px;background:#2e3e60;transform:rotate(-10deg);width:500px;height:530px;left:10%;bottom:-10px}.login-art:after{border-color:#51658a;border-radius:25px;transform:rotate(5deg);width:500px;height:530px;left:15%;bottom:15px}.professor-dot{border-radius:1px;transform:rotate(-12deg)}.professor-body{height:min(68svh,650px)}
footer{font-size:10px}footer img{border-radius:9px;background:#fff}footer strong{font-family:RibbonTitle,system-ui,sans-serif;font-size:14px}.progress-form{border-radius:12px}.progress-preview{border-left:3px solid var(--accent)}
/* Shared GTS cards adopt the panel palette without changing their renderer. */
.gts-card{border-color:var(--line);border-bottom:5px solid var(--lip);border-radius:12px}.gts-card-head{border-color:var(--line)}.gts-card-foot{background:var(--wash);border-color:var(--line)}.gts-eyebrow,.gts-number,.gts-species,.gts-level,.gts-card-foot time,.gts-details dt{color:var(--muted)}.gts-state{background:#e5f4ef;color:#0b6f6a;border-radius:5px}.gts-claimed{background:#fff1ce;color:#76500b}.gts-cancelled{background:var(--wash);color:var(--muted)}.gts-collected{background:#e5f4ef;color:#0b6f6a}.gts-sprite{background:radial-gradient(ellipse at center,#e5eaf2,transparent 70%)}.gts-arrow{color:var(--accent)}.gts-public-link{color:var(--accent-dark)}.gts-details{border-color:var(--line)}
@media(max-width:1050px){.tabs{grid-template-columns:repeat(7,minmax(120px,1fr));overflow-x:auto;scroll-snap-type:x proximity}.tabs button{scroll-snap-align:center}main{padding-inline:26px}.login-card{padding:30px}.login-art{padding:55px 30px}.login-art:before,.login-art:after{width:400px}}
@media(max-width:700px){header{min-height:78px}.page-heading{min-height:120px}.page-heading h1{font-size:27px;padding:10px 18px 12px;letter-spacing:-.8px}.professor-guide{width:74px;height:74px;border-bottom-width:4px}.page-heading .eyebrow{font-size:8px}.page-heading .muted{font-size:11px}.tabs{gap:6px;border-radius:9px;padding:7px;margin-bottom:24px;grid-template-columns:repeat(7,minmax(114px,1fr))}.tabs button{min-height:51px;font-size:10px;padding:9px 8px}.section-heading h2{font-size:23px}.section-heading .muted{font-size:11px}.section-heading>button{font-size:11px}main{padding:20px 16px}.item-card{min-height:145px;padding:14px 12px}.item-card strong{font-size:12px}.gift-card{padding:19px}.gift-card h3{font-size:21px}.login-card{padding:32px 26px}.login-card h1{font-size:39px}.login-art{display:none}.dialog-heading h2{font-size:25px}dialog{padding:20px 16px}.dialog-actions{gap:8px}.dialog-actions button{padding:11px 14px;font-size:12px}.challenge-card-head img{max-width:80px}.gts-card-head{padding:14px}.progress-form{padding:20px}.brand small{line-height:1.5}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}

.login-card .brand{display:flex;width:fit-content}.login-card .eyebrow{display:table}

/* Musical: compact edits, paged stock and a save action that stays within reach. */
.tabs{grid-template-columns:repeat(9,minmax(0,1fr))}
.musical-editor{display:grid;gap:24px;padding-bottom:12px}.musical-editor fieldset{min-width:0;margin:0;border:1px solid var(--line);border-radius:12px;padding:20px;background:#fff}.musical-editor legend{padding:0 8px;font-weight:600;font-size:13px}.musical-general-grid{display:grid;grid-template-columns:1fr 220px;gap:24px;align-items:center}.musical-toggle{display:flex;align-items:center;gap:10px;min-height:36px;font-size:12px;line-height:1.4}.musical-number{display:grid;gap:4px;font-size:12px}.musical-number input{margin-top:0}.musical-shows{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.musical-stage-card,.musical-accessory-card{min-width:0;background:#fff;border:1px solid var(--line);border-bottom:4px solid var(--lip);border-radius:12px;padding:16px}.musical-stage-card{display:grid;gap:7px;position:relative}.musical-stage-card h4{font-family:RibbonTitle,system-ui,sans-serif;font-size:18px;line-height:1.2;margin:0;min-height:44px;overflow-wrap:anywhere}.musical-stage-number{color:var(--accent-dark);font-size:11px;font-weight:600}.musical-stage-card .musical-number{padding-top:8px;border-top:1px solid var(--line)}.musical-number input:disabled{background:var(--wash);color:var(--muted)}.musical-section>h3{margin-bottom:14px;font-size:22px}.musical-filters{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:16px;margin-bottom:16px}.musical-accessories{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.musical-accessory-head{display:flex;gap:10px;align-items:center;min-width:0;margin-bottom:14px}.musical-accessory-head img{flex:0 0 56px;object-fit:contain;image-rendering:pixelated;background:var(--wash);border-radius:8px;padding:6px}.musical-accessory-head h4{min-width:0;font-family:RibbonBody,system-ui,sans-serif;font-size:13px;font-weight:600;line-height:1.5;margin:0;overflow-wrap:anywhere}.musical-accessory-options{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px}.musical-accessory-card>.musical-number{display:flex;justify-content:space-between;align-items:center;gap:10px;padding-top:12px;border-top:1px solid var(--line)}.musical-accessory-card>.musical-number input{width:96px;max-width:50%}.musical-pagination{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}.musical-pagination span{font-size:12px;color:var(--muted);text-align:center}.musical-pagination button{font-size:12px;white-space:nowrap}.musical-actions{position:sticky;bottom:0;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;border:1px solid var(--line);border-top:3px solid var(--lip);border-radius:12px;padding:14px 18px;box-shadow:0 -8px 24px #121a2b08}.musical-actions p{font-size:12px;line-height:1.5}.musical-actions .error:empty{display:none}.musical-actions button{flex-shrink:0}.musical-empty{grid-column:1/-1;padding:32px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px}
#pwt-dialog{width:min(960px,calc(100% - 32px));max-width:960px}#pwt-form,#gift-form{display:grid;gap:18px;min-width:0}#pwt-form>h3,#pwt-form label,#gift-form label{margin-bottom:0}#pwt-form .form-grid,#gift-form .form-grid{align-items:start}#pwt-form .form-grid>label,#gift-form .form-grid>label{min-width:0}#pwt-form input,#pwt-form select,#gift-form input,#gift-form select{min-width:0;max-width:100%}#pwt-form details{border:1px solid var(--line);border-radius:10px;background:#fff;padding:16px}#pwt-form summary{cursor:pointer;min-height:24px;font-weight:600;font-size:13px}#pwt-form details[open]>summary{margin-bottom:14px}#pwt-form .dialog-actions,#gift-form .dialog-actions{position:sticky;bottom:-26px;z-index:3;padding:16px 0;background:var(--paper);border-top:1px solid var(--line);margin-top:0;margin-bottom:-10px}#pwt-rivals{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}#pwt-rivals label{min-width:0;min-height:44px;border:1px solid var(--line);border-radius:8px;padding:10px;font-size:12px;line-height:1.4}#pwt-rivals label:has(input:checked){border-color:var(--accent);background:#fff4f1}#pwt-rival-count[data-ready=true]{color:#0b6f6a}#pwt-rival-count[data-ready=false]{color:#875721}#pwt-rewards fieldset{min-width:0;border:1px solid var(--line);border-bottom:3px solid var(--lip);border-radius:10px;padding:16px;margin:0 0 12px;background:#fff}#pwt-rewards legend{font-size:12px;font-weight:600;padding:0 6px}#pwt-rewards fieldset>button{margin-top:12px;font-size:12px}.pwt-cup-card{display:flex;flex-direction:column;gap:12px}.pwt-cup-card h3{margin:0;line-height:1.2;overflow-wrap:anywhere}.pwt-cup-card>.badge{align-self:flex-start;margin:0}.pwt-cup-card>button{margin-top:auto}.pwt-cup-price{display:block;font-family:RibbonTitle,system-ui,sans-serif;font-size:26px}.pwt-cup-card small{color:var(--muted);line-height:1.5}#gift-form .reward-top select{min-width:0}#gift-form .reward-top button{flex:0 0 44px}.gift-accessory-preview{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--line);background:#fff;border-radius:8px;grid-column:1/-1;font-size:12px;font-weight:400}.gift-accessory-preview img{width:48px;height:48px;object-fit:contain;image-rendering:pixelated;background:var(--wash);border-radius:6px;padding:5px}#gift-form .reward-fields .gift-accessory-choice{grid-column:1/-1}
@media(max-width:1150px){.tabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(120px,max-content);grid-template-columns:none;overflow-x:auto;scroll-snap-type:x proximity}.tabs button{scroll-snap-align:center}.musical-shows,.musical-accessories{grid-template-columns:repeat(2,minmax(0,1fr))}#pwt-rivals{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.musical-editor{gap:20px}.musical-general-grid,.musical-filters{grid-template-columns:1fr;gap:14px}.musical-editor fieldset{padding:16px}.musical-shows{grid-template-columns:1fr}.musical-stage-card{grid-template-columns:1fr 1fr;column-gap:16px}.musical-stage-card h4{grid-column:1/-1;min-height:0}.musical-stage-number{grid-column:1/-1}.musical-stage-card>.musical-number{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px}.musical-stage-card>.musical-number input{width:110px}.musical-accessories{gap:10px}.musical-accessory-card{padding:12px}.musical-accessory-head{flex-direction:column;align-items:flex-start;gap:8px;min-height:104px}.musical-accessory-head h4{font-size:12px}.musical-accessory-options{display:grid;gap:4px}.musical-accessory-card>.musical-number{display:grid;gap:6px}.musical-accessory-card>.musical-number input{width:100%;max-width:none}.musical-toggle{font-size:11px;min-height:36px}.musical-actions{padding:12px;gap:10px;bottom:0}.musical-actions button{font-size:12px;padding:10px 12px}.musical-actions>div{min-width:0}.musical-pagination{gap:8px}.musical-pagination button{font-size:11px;padding:10px}.musical-pagination span{font-size:11px}#pwt-dialog{width:calc(100% - 20px)}#pwt-rivals{grid-template-columns:1fr}#pwt-form details{padding:12px}#pwt-form .dialog-actions,#gift-form .dialog-actions{bottom:-20px}#pwt-form .dialog-actions button,#gift-form .dialog-actions button{flex:1}#pwt-form .form-grid,#gift-form .form-grid{grid-template-columns:1fr}.gift-accessory-preview{align-items:flex-start}}
#pwt-rivals label>span:not(.badge){flex:1;min-width:0;overflow-wrap:anywhere}#pwt-rivals label>.badge{font-size:8px;margin:0;flex-shrink:0}#pwt-rivals label[data-ready=false]{color:var(--muted);background:var(--wash)}#pwt-rivals label[data-ready=false]:has(input:checked){border-color:#c58d36;background:#fff7e8}
.musical-toggle{min-height:44px}.dialog-heading .quiet{width:44px;min-width:44px;height:44px}
.musical-section,.musical-stage-card,.musical-accessory-card{scroll-margin-top:110px;scroll-margin-bottom:110px}#pwt-dialog,#gift-dialog{scroll-padding-block:20px 100px}
@media(max-width:600px){.musical-accessory-head{flex-direction:row;align-items:center;min-height:56px;gap:8px;margin-bottom:8px}.musical-accessory-head img{width:44px;height:44px;flex-basis:44px;padding:5px}.musical-accessory-card>.musical-number{display:flex;align-items:center;gap:8px}.musical-accessory-card>.musical-number input{width:72px;max-width:52%}}
.account-list{display:grid;gap:16px;margin:24px 0}.account-row{display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,1fr) 160px auto auto;gap:16px;align-items:center;padding:20px;background:var(--card,#172238);border:2px solid #34455e;border-radius:12px}.account-row input,.account-row select{min-width:0;width:100%}.account-row label{display:flex;align-items:center;gap:8px}.account-row input[type=checkbox]{width:20px}#account-create{max-width:560px;margin:24px 0}#admin-name{margin-left:auto}#password-dialog{padding:0}#password-dialog .login-card{margin:0;max-width:500px}@media(max-width:800px){.account-row{grid-template-columns:1fr 1fr}.account-row p{grid-column:1/-1}#admin-name{display:none}}
.account-row .muted,.account-row label{color:#B8C2D6}#account-create{background:#fff;border:2px solid #DDE2EA;border-bottom:6px solid #B9C3D3;border-radius:14px}#password-dialog .login-card{background:#fff}
.avatar-admin-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px;margin:20px 0}.avatar-admin-card{padding:16px;background:#fff;border:2px solid #DDE2EA;border-bottom:6px solid #B9C3D3;border-radius:12px;display:flex;flex-direction:column;gap:10px}.avatar-admin-card img,.trainer-pick-card img{object-fit:contain;image-rendering:pixelated;margin:auto}.avatar-admin-card h3{margin:0}.avatar-admin-card label{display:flex;align-items:center;gap:8px}.avatar-admin-card input[type=number]{min-width:0;width:85px;margin-left:auto}.avatar-admin-card input[type=checkbox]{width:20px}.trainer-pick-card{display:flex;flex-direction:column;align-items:center;gap:10px;min-height:150px;border:2px solid #34455e;border-bottom-width:5px;padding:12px;border-radius:12px}.trainer-pick-card[aria-pressed=true]{border-color:#D2362D;outline:2px solid #D2362D}#trainer-picker{width:min(850px,calc(100vw - 24px));max-height:90vh;padding:24px}.trainer-picker-head{display:flex;align-items:center;justify-content:space-between;gap:16px}#trainer-picker .pager{position:sticky;bottom:0;background:#fff;padding:12px}.trainer-pick-open{display:block;margin-top:8px}@media(max-width:500px){.avatar-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.avatar-admin-card{padding:12px}.trainer-pick-card{min-width:0}#trainer-picker{padding:14px}}
