/* Teacher controls retain Rift Crawl's ink, lime and pumpkin palette. */
.route-actions,.route-tools{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
.route-actions .hub-primary{flex:1;margin:0}
.route-tools button,.route-actions>button,.group-preview button,.hub-teams button,.hub-finale button,#resumeClassRace{min-height:46px;padding:10px 16px;border:1px solid #91ae7380;border-radius:12px;background:#1c2a2b;color:#f6f0dc;font:inherit;cursor:pointer}
.route-tools button:hover,.group-preview button:hover,.hub-teams button:hover{background:#34483b}
.route-tools button:focus-visible,.hub-teams input:focus-visible,.group-preview input:focus-visible{outline:3px solid #dded91;outline-offset:3px}
.race-mode{display:flex;align-items:center;gap:14px;margin:14px 0}.race-mode select,.hub-teams select{font:inherit;padding:10px;background:#182629;color:#f6f0dc;border:1px solid #92b67b;border-radius:9px}
.group-preview{padding:16px 20px;background:#111f25bf;border:1px solid #91ae7355;border-radius:15px;margin:12px 0}.group-preview h3{margin:0 0 8px;font-size:20px}.group-preview p{line-height:1.5}
.local-hint{font-size:15px;line-height:1.5;color:#c1cdb9}
.team-lists,#groupChoices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.team-lists section{min-width:0}.team-lists textarea{box-sizing:border-box;width:100%;min-height:100px;padding:12px;font:inherit;color:#f7f3e5;background:#0c1920;border:1px solid #839b78;border-radius:9px}
.team-members{display:grid;gap:8px;padding:0;list-style:none}.team-member{display:flex;align-items:center;gap:10px;padding:9px;border-radius:9px;background:#ffffff09}.team-member input,.group-choice input{width:22px;height:22px;flex-shrink:0}.team-member span{flex:1}.team-member small{font-size:14px}.team-member.absent{color:#a5a7aa;background:#ffffff04}.team-member.absent span{text-decoration:line-through;opacity:.65}.team-member label{display:flex;gap:10px;align-items:center;flex:1}.group-choice{display:flex;gap:9px;align-items:center;margin:8px 0}.group-choice:has(input:disabled){color:#a5a7aa}.team-lists h3{margin-bottom:10px}
.race-group-label{max-width:300px;font-size:15px;line-height:1.4;white-space:pre-line}.expedition-emblems{display:flex;justify-content:center;align-items:center;gap:24px}.expedition-emblems img{width:100px;height:100px;object-fit:contain}.expedition-emblems img:nth-child(2){width:130px;height:130px;animation:party-lantern 3s ease-in-out infinite}.expedition-history{line-height:1.8;padding-left:24px}.hub-finale{padding-bottom:20px}#archiveList{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}
@keyframes party-lantern{50%{filter:drop-shadow(0 0 18px #b7de6e);transform:translateY(-5px)}}
@media(prefers-reduced-motion:reduce){.expedition-emblems img:nth-child(2){animation:none}}
@media(max-width:750px){.team-lists,#groupChoices{grid-template-columns:1fr}.expedition-emblems{gap:12px}.expedition-emblems img{width:70px;height:70px}.expedition-emblems img:nth-child(2){width:90px;height:90px}.race-mode{flex-wrap:wrap}}
#hub[data-view='teams'] .hub-teams,#hub[data-view='finale'] .hub-finale{display:flex}
#hub[data-view='teams'] .hub-gear,#hub[data-view='finale'] .hub-gear{display:none}
#hub .hub-goal>#beginGameButton{position:sticky;bottom:0;flex-shrink:0;box-shadow:0 0 0 8px #12252e,0 4px 16px #0007}
#groupSelectionDetails summary{cursor:pointer;padding:8px 0;color:#ded5b4}
/* V2: clear team cards, direct name places and a separate attendance surface. */
#hub[data-view='teams'] .hub-teams,#hub[data-view='goal'] .hub-goal{left:0!important;width:100%!important;padding:24px 30px;gap:12px;background:#10232bf5;box-sizing:border-box}
#hub[data-view='teams'] .hub-branding,#hub[data-view='goal'] .hub-branding{display:none}
.teams-head{display:flex;align-items:center;gap:16px;flex-shrink:0}.teams-head .hub-back{position:static!important;margin:0!important}.teams-head .hub-title{flex:1}.teams-tabs{display:flex;gap:8px}.teams-footer{display:flex;gap:12px;position:sticky;bottom:0;background:#10232b;padding:12px 0 0;margin-top:auto;flex-shrink:0;z-index:2}.teams-footer .hub-primary{margin:0!important}
#teamListStatus:empty{display:none}.team-lists{gap:20px}.roster-team-card,.race-team-card{--team:#8fdcb4;border:1px solid color-mix(in srgb,var(--team) 55%,transparent);border-radius:18px;background:#0a1b22;padding:18px;min-width:0}.roster-team-card[data-team='B'],.race-team-card[data-team='B']{--team:#bf9dff}.roster-team-heading{display:flex;align-items:center;gap:12px;margin-bottom:12px}.roster-team-heading img{width:54px;height:54px;object-fit:contain}.roster-team-heading h3{margin:0;color:var(--team);font:600 25px Georgia,serif}.team-place-count{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font:15px system-ui,sans-serif;color:#c6d4ce}.team-place-count input,.class-size input{width:70px;padding:7px;border:1px solid #7f969f;border-radius:8px;background:#172e35;color:#fff3d7;font:inherit}.name-places{display:grid;gap:6px}.name-place{display:flex;align-items:center;gap:8px;min-width:0}.name-place>span{width:22px;font-size:12px;color:#94a7a9;text-align:right}.name-place .text-keyboard-field{flex:1}.name-place input{box-sizing:border-box;width:100%;height:40px;border:1px solid #73958d70;border-radius:8px;padding:6px 12px;background:#172d35;color:#f7f0dc;font:18px system-ui,sans-serif}.name-place .text-keyboard-trigger{min-height:40px}.bulk-names{margin-top:14px}.bulk-names summary{color:var(--team);cursor:pointer;font:15px system-ui,sans-serif;padding:6px 0}.bulk-names textarea{margin:8px 0}
.team-members{margin:0;gap:6px}.team-member{padding:0;min-height:46px}.team-member label{padding:5px 10px;cursor:pointer;min-height:36px}.team-member input,.group-choice input{width:30px;height:30px;accent-color:var(--team,#a8d9ba)}.team-member span{font-size:19px}.team-member.absent{opacity:.5}.team-member.absent span{text-decoration:line-through}.race-team-cards{display:grid;grid-template-columns:1fr 1fr;gap:18px}.race-team-card{min-height:180px}.selected-player{display:block;font:500 28px/1.5 Georgia,serif}.manual-player{font:18px system-ui,sans-serif;color:#b6c6c6}.group-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.group-toolbar label{display:flex;align-items:center;gap:10px}.group-toolbar select{font:inherit;padding:8px;border-radius:8px;background:#172d35;color:#fff3d7;border:1px solid #8ba694}.group-preview{margin:0;padding:18px;background:#0a1b2270}.secondary-tools{margin-bottom:0}.goal-options{font:17px system-ui,sans-serif}.goal-options summary{cursor:pointer;padding:5px 0}.goal-options .goal-cards{margin-top:12px}.race-mode{margin:0!important;font-size:16px}.class-size{display:flex;align-items:center;gap:14px}.teacher-options summary{cursor:pointer;padding:12px}.teacher-options[open]{display:grid;gap:6px}#raceGroupLabel{display:none!important}
@media(max-height:800px) and (min-width:751px){#hub[data-view='teams'] .hub-teams{padding:16px 24px;gap:8px}.roster-team-card{padding:12px}.roster-team-heading{margin-bottom:8px}.roster-team-heading img{width:40px;height:40px}.name-places{grid-template-columns:1fr 1fr;gap:6px 10px}.name-place{gap:4px}.name-place>span{width:16px}.name-place input{font-size:16px;height:40px;padding:6px 8px}.name-place .text-keyboard-trigger{min-width:36px}.teams-head .hub-title{font-size:28px}.bulk-names{margin-top:8px}}
@media(max-width:750px){#hub[data-view='teams'] .hub-teams,#hub[data-view='goal'] .hub-goal{padding:18px 14px}.teams-head{flex-wrap:wrap;gap:10px}.teams-tabs{margin-left:auto}.teams-tabs button{font-size:14px;padding:8px}.team-lists{grid-template-columns:1fr}.race-team-cards{gap:10px}.race-team-card{padding:12px;min-height:140px}.race-team-card .roster-team-heading{display:block}.race-team-card .roster-team-heading h3{font-size:22px}.selected-player{font-size:23px}.roster-team-card .name-places{grid-template-columns:1fr 1fr;gap:6px 10px}.name-place>span{display:none}.name-place input{font-size:16px;padding:6px 8px}.name-place .text-keyboard-trigger{min-width:32px}.group-toolbar{flex-wrap:wrap}.teams-footer{flex-wrap:wrap}}
