:root {
  font-family:
    system-ui,
    -apple-system,
    BlinkMacSystemFont,
    "Segoe UI",
    sans-serif;
  color: #17332d;
  background: #f2f6f3;
}
* {
  box-sizing: border-box;
}
[hidden] {
  display: none !important;
}
body {
  margin: 0;
}
header {
  background: #176b57;
  color: white;
  padding: calc(18px + env(safe-area-inset-top)) 20px 24px;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: flex-start;
}
header h1 {
  margin: 4px 0;
  font-size: 28px;
}
header p {
  margin: 4px 0;
  opacity: 0.9;
}
.brand {
  font-size: 12px;
  letter-spacing: 0.14em;
  font-weight: 800;
}
header a,
.button {
  color: #176b57;
  background: white;
  text-decoration: none;
  padding: 10px 14px;
  border-radius: 12px;
  font-weight: 750;
}
main {
  max-width: 820px;
  margin: auto;
  padding: 16px 16px 80px;
}
.card {
  background: white;
  border: 1px solid #d9e5e0;
  border-radius: 18px;
  padding: 18px;
  margin-bottom: 16px;
}
.card h2 {
  margin-top: 0;
}
.muted {
  color: #667d75;
}
.identity {
  display: grid;
  gap: 8px;
  padding: 12px;
  border-radius: 12px;
  background: #edf5f1;
}
.identity code {
  overflow-wrap: anywhere;
}
nav {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 16px;
}
button {
  border: 1px solid #bfd2ca;
  border-radius: 12px;
  padding: 12px 14px;
  font: inherit;
  font-weight: 750;
  color: #176b57;
  background: white;
}
button.active,
.primary {
  background: #176b57;
  color: white;
}
.welcome {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
}
.welcome h2 {
  margin-bottom: 4px;
}
form {
  display: grid;
  gap: 14px;
}
label {
  display: grid;
  gap: 6px;
  font-weight: 700;
}
input,
select,
textarea {
  width: 100%;
  border: 1px solid #bfd2ca;
  border-radius: 12px;
  padding: 12px 14px;
  font: inherit;
  color: #17332d;
  background: white;
}
.two {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.message {
  min-height: 22px;
  margin-top: 8px;
  font-weight: 700;
}
.list {
  display: grid;
  gap: 10px;
}
.activity {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 14px;
  border: 1px solid #d9e5e0;
  border-radius: 14px;
  background: #f8fbf9;
  color: #17332d;
  text-decoration: none;
}
.activity strong {
  display: block;
  margin-bottom: 4px;
}
.count {
  font-weight: 850;
  white-space: nowrap;
}
@media (max-width: 560px) {
  .two {
    grid-template-columns: 1fr;
  }
  .welcome {
    align-items: flex-start;
  }
  header {
    align-items: center;
  }
}
.player-list,
.pair-list {
  display: grid;
  gap: 9px;
}
.player-row,
.pair-row,
.simple-row {
  padding: 12px;
  border-radius: 12px;
  background: #edf5f1;
}
.player-row,
.pair-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.player-row strong,
.player-row span {
  display: block;
}
.attendance {
  display: flex;
  gap: 5px;
}
.attendance button {
  padding: 7px 9px;
  font-size: 12px;
}
.attendance button.selected {
  background: #176b57;
  color: #fff;
}
.pair-list {
  margin-top: 14px;
}
.next-stage {
  border-style: dashed;
}
.next-stage button {
  opacity: 0.65;
}
.operation-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin: 12px 0;
}
.inline-action {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 8px;
  margin: 10px 0;
}
.court-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 10px;
}
.court-card {
  padding: 14px;
  border-radius: 14px;
  background: #edf5f1;
}
.score-row {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 8px;
  margin: 10px 0;
}
.score-row input {
  text-align: center;
  font-size: 22px;
  font-weight: 800;
}
.compact-header h1 {
  font-size: clamp(22px, 5vw, 30px);
}
.status-card {
  position: sticky;
  top: 0;
  z-index: 8;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  padding: 12px 16px;
  margin: -1px 0 12px;
  border: 1px solid #d9e5e0;
  border-radius: 0 0 16px 16px;
  background: rgba(255,255,255,.96);
  backdrop-filter: blur(10px);
}
.status-card div {
  display: grid;
  gap: 2px;
}
.phase-badge {
  width: max-content;
  padding: 3px 8px;
  border-radius: 999px;
  background: #dcefe7;
  color: #176b57;
  font-size: 11px;
  font-weight: 850;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.stage-nav {
  position: sticky;
  top: 82px;
  z-index: 7;
  grid-template-columns: repeat(3,1fr);
  padding: 6px;
  border: 1px solid #d9e5e0;
  border-radius: 16px;
  background: rgba(242,246,243,.96);
  backdrop-filter: blur(10px);
}
.stage-nav button {
  padding: 10px 6px;
  border: 0;
  font-size: 13px;
}
.stage-nav button span {
  display: inline-grid;
  place-items: center;
  width: 20px;
  height: 20px;
  margin-right: 3px;
  border-radius: 50%;
  background: #e5eeea;
}
.stage-nav button.active span {
  color: #176b57;
  background: white;
}
.focus-card {
  border-color: #aecdc0;
  box-shadow: 0 8px 24px rgba(23,107,87,.08);
}
.section-kicker {
  color: #28866d;
  font-size: 11px;
  font-weight: 850;
  letter-spacing: .12em;
}
.section-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
}
.invite-choice {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
}
.invite-option {
  display: grid;
  align-content: start;
  gap: 8px;
  padding: 14px;
  border-radius: 15px;
  background: #edf5f1;
}
.invite-option h3,.invite-option p {
  margin: 0;
}
.technical-link {
  margin-top: 12px;
  color: #667d75;
  font-size: 12px;
}
.qr-box {
  margin-top: 14px;
  padding: 14px;
  border-radius: 15px;
  background: #f4f8f6;
  text-align: center;
}
.qr-box img,.qr-box canvas {
  display: block;
  width: min(280px,100%);
  height: auto;
  margin: auto;
}
.big-action {
  width: 100%;
  min-height: 54px;
  font-size: 17px;
}
.tool {
  padding: 0;
  overflow: hidden;
}
.tool summary {
  padding: 18px;
  cursor: pointer;
  font-size: 18px;
  font-weight: 800;
  list-style: none;
}
.tool summary::-webkit-details-marker {
  display: none;
}
.tool summary::after {
  content: '›';
  float: right;
  color: #667d75;
  transform: rotate(90deg);
}
.tool[open] summary::after {
  transform: rotate(-90deg);
}
.tool[open] > :not(summary) {
  margin-left: 18px;
  margin-right: 18px;
}
.tool[open] > :last-child {
  margin-bottom: 18px;
}
.quiet {
  padding: 9px 11px;
  background: transparent;
}
.versus,.micro {
  color: #667d75;
  font-size: 12px;
}
.court-card.playing {
  border: 2px solid #51a388;
  background: #f4fbf8;
}
.completed-court {
  opacity: .72;
}
.essentials {
  display: grid;
  gap: 14px;
}
.advanced-create {
  border-top: 1px solid #d9e5e0;
  padding-top: 12px;
}
.advanced-create summary {
  cursor: pointer;
  font-weight: 800;
}
@media (max-width: 620px) {
  .player-row {
    align-items: flex-start;
    flex-direction: column;
  }
  .attendance {
    width: 100%;
  }
  .attendance button {
    flex: 1;
  }
  main {
    padding: 12px 10px 72px;
  }
  .card {
    padding: 15px;
    border-radius: 16px;
  }
  .compact-header {
    padding-left: 14px;
    padding-right: 14px;
  }
  .compact-header p {
    font-size: 13px;
  }
  .compact-header a {
    padding: 9px 10px;
    font-size: 13px;
  }
  .invite-choice {
    grid-template-columns: 1fr;
  }
  .status-card {
    margin-left: -10px;
    margin-right: -10px;
  }
  .stage-nav {
    top: 80px;
  }
}

/* v1.4.1 · live sync + schedule tools */
.sync-status{display:inline-flex;align-items:center;gap:6px;margin-top:6px;font-size:12px;color:#176b57}
.sync-status::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.8}
.sync-status.paused{color:#8a5a17}.sync-status.error{color:#9a3028}
.schedule-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:14px 0}
.schedule-controls label{display:grid;gap:6px;font-weight:700}.schedule-controls select,.schedule-share-row select{width:100%;min-height:44px}
.schedule-share-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:12px}.schedule-share-row>*{flex:1 1 180px}
.schedule-round{border:1px solid #dce9e4;border-radius:14px;padding:12px;margin-top:12px;background:#fbfdfc}.schedule-round h3{margin:0 0 8px;font-size:16px}
.schedule-court{display:grid;grid-template-columns:auto 1fr;gap:10px;padding:8px 0;border-top:1px solid #edf3f0}.schedule-court:first-of-type{border-top:0}.schedule-court .court-no{font-weight:800;color:#176b57}.schedule-court p{margin:0}
.schedule-current{margin-top:10px}.schedule-status-line{padding:10px 12px;border-radius:12px;background:#f1f7f4;font-size:14px}
@media(max-width:640px){.schedule-controls{grid-template-columns:1fr}.schedule-share-row{display:grid;grid-template-columns:1fr}.schedule-share-row>*{width:100%}}

.compact-select{display:block;margin:12px 0;font-size:.88rem;color:#60766f}.compact-select select{display:block;width:100%;margin-top:6px;padding:10px 12px;border:1px solid #c8d8d2;border-radius:12px;background:#fff;color:#173b33;font:inherit}


/* v1.5.0 · Web Live Management core */
.live-focus{overflow:visible}.live-summary{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 4px}.live-chip{display:inline-flex;align-items:center;gap:5px;padding:7px 10px;border-radius:999px;background:#edf5f1;color:#315b50;font-size:12px;font-weight:750}.live-chip strong{color:#17332d}.live-primary-actions .big-action{flex:1 1 220px}.waiting-card{border-color:#d9e5e0}.waiting-list{display:grid;gap:8px}.waiting-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;border-radius:13px;background:#f1f6f4}.waiting-row .waiting-meta{display:block;color:#667d75;font-size:12px;margin-top:2px}.waiting-row button{padding:7px 10px;font-size:12px}.waiting-row.resting{opacity:.72}.micro-copy,.live-help{font-size:13px}.lineup-tool{margin-top:10px;border-top:1px solid #d9e5e0;padding-top:8px}.lineup-tool summary{cursor:pointer;color:#315b50;font-size:13px;font-weight:800}.lineup-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.lineup-grid label{display:grid;gap:4px;font-size:12px;font-weight:700}.lineup-grid select{min-height:40px;padding:8px;border:1px solid #c8d8d2;border-radius:10px;background:#fff}.court-status{display:inline-flex;padding:3px 8px;border-radius:999px;background:#dcefe7;color:#176b57;font-size:11px;font-weight:850;margin-bottom:6px}.court-card.playing .court-status{background:#176b57;color:#fff}.live-option-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:10px 0}.danger-outline{width:100%;margin-top:12px;background:#fff3f1;color:#9a3028;border:1px solid #e7b8b2}.danger-outline:hover{background:#fde9e6}.action-busy{opacity:.58;pointer-events:none}.match-warning{padding:9px 10px;border-radius:10px;background:#fff6e9;color:#8a5a17;font-size:12px;margin-top:8px}.court-card .primary{width:100%}
@media(max-width:620px){.lineup-grid,.live-option-grid{grid-template-columns:1fr}.waiting-row{align-items:flex-start}.waiting-row button{white-space:nowrap}.live-primary-actions{display:grid;grid-template-columns:1fr}.live-primary-actions .big-action{width:100%}}

/* v1.5.2 live fairness */
.court-teams{line-height:1.7}.court-games{font-size:11px;font-weight:750;color:#678078;white-space:nowrap}.court-mode{display:block;margin-top:-3px;color:#81958e;font-size:11px;font-weight:750}.fairness-card{border-color:#d9e5e0}.fairness-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.fairness-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-radius:13px;background:#f1f6f4}.fairness-row div{min-width:0}.fairness-row strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fairness-row span{display:block;color:#667d75;font-size:11px;margin-top:2px}.fairness-row b{white-space:nowrap;color:#17332d}.completed-court{opacity:.78}
@media(max-width:620px){.fairness-grid{grid-template-columns:1fr}.court-games{font-size:10px}}

/* v1.6.0 Host UX pilot */
.settings-row {
  display: grid;
  grid-template-columns: minmax(120px, 1fr) auto minmax(110px, 1fr) auto;
  gap: 10px;
  align-items: end;
}
.settings-row label { margin: 0; }
.compact-live-settings { margin-bottom: 12px; }
.manual-teams {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px;
  margin: 12px 0;
}
.fairness-summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  cursor: pointer;
  font-size: 17px;
}
.fairness-summary strong { white-space: nowrap; }
.summary-count { color: #667d75; font-size: 13px; font-weight: 750; }
.full-width { width: 100%; margin-top: 12px; }
.result-card p { margin-bottom: 0; }
@media (max-width: 640px) {
  .settings-row, .manual-teams { grid-template-columns: 1fr; }
  .settings-row button { width: 100%; }
  .fairness-summary { align-items: flex-start; }
}

/* v1.6.0 compact completed-match history */
.results-list{display:grid;gap:8px}.result-row{display:grid;grid-template-columns:minmax(110px,.7fr) minmax(170px,1.4fr) minmax(72px,.5fr) minmax(170px,1.4fr);align-items:center;gap:12px;padding:12px 14px;border:1px solid #d9e5e0;border-radius:14px;background:#edf5f1}.result-meta{font-size:.82rem;font-weight:800;color:#667d75}.result-team{min-width:0}.result-score{text-align:center;white-space:nowrap}.result-row:nth-child(n+2){margin-top:0}@media(max-width:700px){.result-row{grid-template-columns:1fr auto;gap:5px 10px}.result-meta{grid-column:1/-1}.result-team:last-child{text-align:right}.result-score{grid-column:1/-1;text-align:center;font-size:1.05rem}}

.host-link{text-align:center}.host-auth-qr{display:block;width:min(320px,86vw);height:auto;margin:22px auto;border-radius:18px}.host-link .section-kicker{color:#4f8d7d;font-weight:800;letter-spacing:.12em;font-size:12px}

.welcome-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.story-privacy{display:flex;grid-template-columns:none;align-items:center;gap:10px;padding:12px 14px;border-radius:12px;background:#edf5f1}.story-privacy input{width:auto;min-width:18px;height:18px;margin:0}.story-privacy+ .micro-copy{margin-top:8px}

/* v1.8.5 editable Story */
.story-editor-grid{display:grid;gap:14px;margin:14px 0}.story-editor-grid textarea{min-height:96px;resize:vertical}.story-draft-row{display:grid;grid-template-columns:minmax(180px,.45fr) 1fr;gap:10px;align-items:end}.story-draft-row button{min-height:46px}@media(max-width:620px){.story-draft-row{grid-template-columns:1fr}.story-editor-grid textarea{min-height:110px}}


/* v1.8.6 Weekly Sessions */
.week-days { display:grid; grid-template-columns:repeat(7,1fr); gap:7px; margin-top:8px; }
.week-day { position:relative; display:grid; gap:3px; padding:10px 5px; border:1px solid #bfd2ca; border-radius:13px; text-align:center; cursor:pointer; background:#f8fbf9; font-weight:750; }
.week-day input { position:absolute; opacity:0; pointer-events:none; }
.week-day strong { font-size:13px; }
.week-day small { color:#667d75; font-size:11px; }
.week-day.selected { background:#dcefe7; border-color:#2d8a71; color:#176b57; }
.week-day.selected::after { content:'✓'; display:grid; place-items:center; width:18px; height:18px; margin:3px auto 0; border-radius:50%; color:#fff; background:#176b57; font-size:11px; }
.weekly-result { margin-top:20px; padding-top:18px; border-top:1px solid #d9e5e0; }
.weekly-result h3 { margin:4px 0; }
.weekly-session-list { display:grid; gap:9px; margin:14px 0; }
.weekly-session { display:grid; grid-template-columns:1fr auto; gap:10px; align-items:center; padding:13px; border:1px solid #d9e5e0; border-radius:14px; background:#f8fbf9; }
.weekly-session strong,.weekly-session span { display:block; }
.weekly-session .muted { margin-top:3px; }
.weekly-session button { padding:8px 10px; }
.share-box { display:grid; gap:9px; padding:14px; border-radius:15px; background:#e9f7f1; }
.share-box textarea { min-height:220px; background:#fff; font-size:13px; line-height:1.45; }
.share-actions { display:flex; gap:8px; flex-wrap:wrap; }
.share-actions button { flex:1 1 160px; }
.big-action { width:100%; }
@media (max-width:680px){
  nav { grid-template-columns:1fr; }
  .week-days { grid-template-columns:repeat(4,1fr); }
  .weekly-session { grid-template-columns:1fr; }
  .weekly-session button { width:100%; }
}

.live-update-box{margin-top:14px;border-top:1px solid #d9e5e0;padding-top:14px}.share-box textarea{margin-top:8px}.share-box .muted{margin:5px 0 8px}.share-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}


.weekly-history-wrap { margin:16px 0 20px; padding:14px; border:1px solid #d9e5e0; border-radius:16px; background:#fbfdfc; }
.weekly-history-list { display:grid; gap:10px; margin-top:10px; }
.weekly-history-card { display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; padding:12px; border:1px solid #d9e5e0; border-radius:14px; background:white; }
.weekly-history-card strong,.weekly-history-card span { display:block; }
.weekly-history-meta { margin-top:4px; color:#61736c; font-size:.9rem; }
.weekly-history-actions { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.weekly-history-actions button { padding:8px 10px; }
.weekly-history-actions .danger { color:#9b2c2c; border-color:#e2b9b9; background:#fffafa; }
@media (max-width:680px){
  .weekly-history-card { grid-template-columns:1fr; }
  .weekly-history-actions { justify-content:flex-start; }
}

/* v1.9.0 Web Host Approval */
.host-entry,.host-application,.host-pending{max-width:760px;margin:0 auto}.entry-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.host-application form{display:grid;gap:13px}.host-application .quiet{margin-top:12px}.pending-status{display:flex;align-items:center;gap:9px;margin:16px 0;padding:12px 14px;border-radius:13px;background:#fff7e7;color:#7d5a13}.pending-status span{width:10px;height:10px;border-radius:50%;background:#d69e2e}.approval-list{display:grid;gap:11px}.approval-card{display:grid;grid-template-columns:1fr auto;gap:14px;align-items:center;padding:14px;border:1px solid #d9e5e0;border-radius:15px;background:#fbfdfc}.approval-title{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.approval-card p{margin:7px 0 0}.approval-actions{display:flex;gap:8px;flex-wrap:wrap}.approval-actions button{white-space:nowrap}.approval-actions .danger{background:#fff5f3;color:#9a3028;border:1px solid #e5bbb5}.status-pill{display:inline-flex;padding:3px 8px;border-radius:999px;background:#dcefe7;color:#176b57;font-size:11px;font-weight:800}
@media(max-width:680px){.entry-actions,.approval-card{grid-template-columns:1fr}.approval-actions{justify-content:flex-start}.approval-actions button{flex:1 1 160px}}

/* v1.9.1 Web fallback from the WeChat QR screen */
.host-link-web{display:grid;gap:10px;margin-top:16px}.or-divider{display:block;text-align:center;color:#6d7b77;font-size:.85rem}.host-link-web button{width:100%}

/* v1.9.2 · Host Portal app shell + bilingual UI */
:root{--as-green:#176b57;--as-green-2:#2a8a70;--as-mint:#e9f6f0;--as-ink:#17332d;--as-muted:#6a7f77;--as-line:#dbe8e2;--as-bg:#f3f7f4;--as-shadow:0 16px 40px rgba(21,76,62,.08)}
body{background:linear-gradient(180deg,#eef5f1 0,#f7f9f7 240px,#f3f6f4 100%);color:var(--as-ink)}
.app-header,.compact-header{background:linear-gradient(135deg,#176b57 0%,#218166 100%);padding:calc(18px + env(safe-area-inset-top)) max(18px,calc((100vw - 1060px)/2)) 28px;box-shadow:0 12px 30px rgba(13,79,62,.14)}
.app-header{align-items:center}.header-copy{min-width:0}.app-header h1{font-size:clamp(29px,5vw,42px);letter-spacing:-.03em;margin:5px 0}.app-header p{font-size:15px}.header-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.header-control{border:1px solid rgba(255,255,255,.55);background:rgba(255,255,255,.96);color:var(--as-green);border-radius:15px;min-height:46px;padding:10px 15px;box-shadow:0 8px 20px rgba(0,0,0,.08);font-weight:850}.header-actions a.header-control{display:inline-flex;align-items:center}
main{max-width:1060px;padding:20px 16px 92px}.entry-card{max-width:760px;margin:0 auto 18px;box-shadow:var(--as-shadow)}
.card{border-color:var(--as-line);box-shadow:0 10px 26px rgba(20,69,57,.045)}
.portal-shell{display:grid;grid-template-columns:220px minmax(0,1fr);gap:16px;align-items:start}.portal-welcome{grid-column:1/-1;margin-bottom:2px;background:linear-gradient(135deg,#fff 0%,#f7fbf9 100%);box-shadow:var(--as-shadow)}.welcome-eyebrow{font-size:11px;font-weight:900;letter-spacing:.16em;color:var(--as-green-2);margin-bottom:6px}.portal-welcome h2{font-size:clamp(24px,4vw,34px);letter-spacing:-.025em}
.portal-nav{grid-column:1;display:flex;flex-direction:column;gap:8px;position:sticky;top:16px;margin:0;padding:10px;background:rgba(255,255,255,.82);border:1px solid var(--as-line);border-radius:18px;box-shadow:0 10px 28px rgba(21,76,62,.06);backdrop-filter:blur(14px)}.portal-nav button{display:flex;align-items:center;gap:10px;justify-content:flex-start;min-height:52px;border:0;background:transparent;color:#345d53;padding:11px 12px}.portal-nav button:hover{background:#edf6f2}.portal-nav button.active{background:var(--as-green);color:white;box-shadow:0 7px 18px rgba(23,107,87,.18)}.nav-icon{display:grid;place-items:center;width:27px;height:27px;border-radius:9px;background:rgba(23,107,87,.10);font-weight:900}.portal-nav button.active .nav-icon{background:rgba(255,255,255,.18)}
.portal-panel{grid-column:2;grid-row:2;margin:0;min-width:0;box-shadow:var(--as-shadow)}.portal-panel>h2{font-size:clamp(25px,4vw,34px);letter-spacing:-.025em}.section-kicker{font-size:10px;letter-spacing:.16em}.welcome-actions button{min-height:44px}.welcome-actions #linkWechatHost{background:#eef7f3}.welcome-actions #reload{background:white}
.activity{background:white;border-color:var(--as-line);box-shadow:0 5px 14px rgba(20,69,57,.035);transition:transform .16s ease,box-shadow .16s ease}.activity:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(20,69,57,.08)}.activity b{color:var(--as-green)}
.weekly-history-wrap,.share-box{box-shadow:inset 0 0 0 1px rgba(23,107,87,.03)}
button,input,select,textarea{transition:border-color .16s ease,box-shadow .16s ease,transform .12s ease}button:not(:disabled):active{transform:translateY(1px)}input:focus,select:focus,textarea:focus{outline:none;border-color:#5cae95;box-shadow:0 0 0 3px rgba(44,143,113,.12)}

/* Manage page refinements */
.compact-header{align-items:center}.compact-header .header-actions{align-self:center}.compact-header h1{max-width:650px}.stage-nav{box-shadow:0 9px 24px rgba(21,76,62,.06)}

@media(max-width:760px){
  .app-header,.compact-header{padding:calc(14px + env(safe-area-inset-top)) 16px 20px;align-items:flex-start}.app-header h1{font-size:31px}.app-header p{max-width:250px}.header-actions{gap:7px}.header-control{min-height:42px;padding:8px 11px;font-size:13px;border-radius:13px}
  main{padding:12px 10px calc(98px + env(safe-area-inset-bottom))}.portal-shell{display:block}.portal-welcome{margin-bottom:12px}.portal-welcome{align-items:flex-start}.portal-welcome h2{font-size:28px}.welcome-actions{max-width:170px}.welcome-actions button{width:100%;font-size:13px;padding:9px 10px}
  .portal-panel{margin-bottom:16px}.portal-nav{position:fixed;z-index:40;left:10px;right:10px;bottom:calc(8px + env(safe-area-inset-bottom));top:auto;display:flex;flex-direction:row;align-items:stretch;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;gap:6px;padding:6px;margin:0;border-radius:19px;background:rgba(255,255,255,.94);box-shadow:0 14px 40px rgba(18,63,52,.18);backdrop-filter:blur(18px);scrollbar-width:none}.portal-nav::-webkit-scrollbar{display:none}.portal-nav button{flex:0 0 86px;min-width:86px;max-width:86px;min-height:58px;display:grid;place-items:center;align-content:center;gap:2px;padding:6px 4px;font-size:11px;text-align:center}.portal-nav button[hidden]{display:none!important}.portal-nav .nav-icon{width:25px;height:25px;font-size:12px}.portal-nav button.active{box-shadow:none}
  .card{border-radius:18px}.entry-actions{grid-template-columns:1fr}.section-head{align-items:center}.section-head>button{flex:0 0 auto}.week-days{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(max-width:420px){.header-actions{flex-direction:column;align-items:stretch}.header-control{text-align:center}.portal-welcome{display:grid;grid-template-columns:1fr}.welcome-actions{max-width:none;display:grid;grid-template-columns:1fr 1fr}.welcome-actions button{width:auto}.portal-nav{left:6px;right:6px}.portal-nav button{font-size:10px}.activity{padding:12px}.count{font-size:13px}}

/* v1.9.4 Photos / Video + Story */
.media-upload-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;margin:14px 0}.media-picker{display:grid;gap:6px}.media-picker input[type=file]{padding:10px;background:#fff}.media-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:14px}.media-card{border:1px solid var(--as-line,#dbe8e2);border-radius:16px;overflow:hidden;background:#fff}.media-preview{position:relative;background:#e8f0ec}.media-preview img,.media-preview video{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#dce9e3}.media-preview video{object-fit:contain;background:#10251f}.cover-badge{position:absolute;top:8px;left:8px;padding:5px 8px;border-radius:999px;background:rgba(23,107,87,.92);color:#fff;font-size:11px;font-weight:850}.media-body{display:grid;gap:10px;padding:12px}.media-meta{display:flex;justify-content:space-between;gap:8px;color:#637970;font-size:12px}.media-meta strong{color:var(--as-ink,#17332d)}.media-body label{display:grid;gap:5px;font-size:12px;font-weight:750}.media-story-toggle{display:flex!important;grid-template-columns:none!important;align-items:center;gap:8px}.media-story-toggle input{width:auto;min-width:18px;height:18px;margin:0}.media-actions{display:flex;gap:7px;flex-wrap:wrap}.media-actions button{flex:1 1 110px;padding:8px 10px;font-size:12px}.danger-inline{color:#9a3028;background:#fff6f4;border-color:#e8c0bb}.portal-media-list{display:grid;gap:10px;margin-top:14px}.portal-media-card{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center;padding:13px 14px;border:1px solid var(--as-line,#dbe8e2);border-radius:14px;background:#fbfdfc}.portal-media-card strong,.portal-media-card span{display:block}.portal-media-card span{margin-top:3px;color:#6a7f77;font-size:13px}.coach-teaser{margin-top:18px;padding:16px;border-radius:17px;background:linear-gradient(135deg,#eaf6f0,#f8fbf9);border:1px solid #cfe3da}.coach-teaser h3{margin:4px 0 6px}.coach-teaser .button-link{display:inline-flex;margin-top:8px;text-decoration:none;font-weight:850;color:#176b57}
@media(max-width:680px){.media-upload-row,.media-grid,.portal-media-card{grid-template-columns:1fr}.media-upload-row button{width:100%}.media-actions button{flex:1 1 100%}}


/* v1.9.5 · Route / hiking web management */
.route-card,.route-live-card{border-color:#cfe2da}
.route-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}
.route-detail{background:#f0f7f4;border:1px solid #d7e7e1;border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.route-detail span{font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:#66817a}
.route-detail strong{font-size:1rem;color:#163d34;overflow-wrap:anywhere}
.route-capacity-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end;margin-top:12px}
.route-capacity-row label{display:grid;gap:6px}
.route-safety-summary{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}
.alert-chip{background:#fff3df!important;color:#8a5315!important}
.route-outstanding{border-radius:16px;padding:14px 16px;margin:10px 0 16px}
.route-outstanding.warning{background:#fff5e8;border:1px solid #f2d1a2;color:#75481c}
.route-outstanding.safe{background:#ebf7f0;border:1px solid #c8e5d5;color:#176b57}
.route-outstanding p{margin:6px 0 0}
.route-participant-list{display:grid;gap:10px}
.route-participant{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:14px 16px;border:1px solid #dce8e3;border-radius:16px;background:#f8fbfa}
.route-participant.safe{background:#eef8f2}
.route-participant.pending{background:#fffdfa}
.route-participant>div:first-child{display:grid;gap:4px}
.route-status{font-weight:700;color:#276c59}
.route-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.route-actions button{white-space:nowrap}
.route-roster-row .attendance{min-width:auto}
@media(max-width:720px){
  .route-detail-grid{grid-template-columns:1fr}
  .route-capacity-row{grid-template-columns:1fr}
  .route-participant{grid-template-columns:1fr}
  .route-actions{justify-content:stretch}
  .route-actions button{flex:1}
}

/* v1.9.5b route-aware Story editor */
.story-auto-summary{margin:14px 0 18px;padding:16px;border-radius:18px;background:#f1f8f5;border:1px solid #d4e7df}.story-auto-title{font-weight:800;margin-bottom:10px;color:#155f4d}.story-auto-grid{display:grid;grid-template-columns:minmax(100px,.7fr) minmax(0,1.6fr);gap:8px 14px}.story-auto-label{font-size:.86rem;color:#6a8079}.story-auto-value{font-weight:650;min-width:0;overflow-wrap:anywhere}@media(max-width:640px){.story-auto-grid{grid-template-columns:1fr}.story-auto-label{margin-top:4px}.story-auto-value{margin-bottom:4px}}

/* v1.9.6c lightweight usage analytics */
.usage-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px}.usage-metric{background:#f4f8f6;border:1px solid #dce9e3;border-radius:16px;padding:14px}.usage-metric strong{display:block;font-size:1.55rem;line-height:1.1;color:#123b32}.usage-metric span{display:block;margin-top:5px;color:#61766f;font-size:.88rem}.usage-source{grid-column:1/-1;font-size:.88rem;color:#61766f;padding:4px 2px}@media(min-width:700px){.usage-stats{grid-template-columns:repeat(4,minmax(0,1fr))}}

/* v1.10.0a registration activity */
.registration-activity-card{border-color:#dbe9e4}
.registration-action-needed{display:grid;gap:4px;padding:14px 16px;margin:8px 0 14px;border-radius:16px;background:#fff7e8;border:1px solid #f0d4a1;color:#5c441d}
.registration-action-needed strong{font-size:.82rem;text-transform:uppercase;letter-spacing:.08em}
.registration-action-needed span{font-weight:700}
.registration-activity-list{display:grid;gap:8px}
.registration-activity-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid #edf2ef}
.registration-activity-row:last-child{border-bottom:0}
.registration-activity-row>div{display:grid;gap:3px}
.registration-activity-row span,.registration-activity-row time{color:#71827c;font-size:.86rem}
.registration-activity-row time{white-space:nowrap}
.registration-activity-actions{margin-top:14px;flex-wrap:wrap}
@media(max-width:640px){.registration-activity-row{display:grid}.registration-activity-row time{white-space:normal}.registration-activity-actions button{flex:1 1 100%}}

/* v1.12.0 AI Story Studio */
.story-studio{padding:14px;border:1px solid #cfe3da;border-radius:16px;background:linear-gradient(135deg,#eef8f4,#fbfdfc);display:grid;gap:12px}.story-studio-head strong{font-size:1.02rem;color:#155f4d}.story-studio-head p{margin:4px 0 0}.story-studio-controls{display:grid;grid-template-columns:minmax(180px,.42fr) 1fr;gap:10px;align-items:end}.story-studio-controls label{display:grid;gap:6px}.story-studio-controls button{min-height:46px}.story-studio-results{display:grid;gap:10px}.story-variant{border:1px solid #d8e8e1;border-radius:14px;background:#fff;padding:12px;display:grid;gap:9px}.story-variant-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.story-variant-head strong{color:#173a31}.story-variant-badge{font-size:11px;padding:4px 7px;border-radius:999px;background:#e7f3ee;color:#176b57;font-weight:800}.story-variant textarea,.story-variant input{width:100%;background:#fbfdfc}.story-variant-actions{display:flex;gap:8px;flex-wrap:wrap}.story-variant-actions button{flex:1 1 130px;padding:8px 10px}.story-ai-source{font-size:11px;color:#73877f}.story-hashtags{font-size:12px;color:#176b57;overflow-wrap:anywhere}@media(max-width:620px){.story-studio-controls{grid-template-columns:1fr}.story-variant-actions button{flex-basis:100%}}

/* v1.12.0b explicit host/admin scope */
.host-role-line{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:5px 0}.host-role-badge{display:inline-flex;border-radius:999px;padding:5px 9px;font-size:11px;letter-spacing:.08em;font-weight:900;background:#e8f2ff;color:#245f92}.host-role-badge.admin{background:#fff2d8;color:#845a00}

/* v1.12.0c hosted activity segmentation */
.host-activity-tabs{display:flex;gap:8px;overflow-x:auto;margin:14px 0 10px;padding-bottom:3px;-webkit-overflow-scrolling:touch}
.host-activity-tabs button{flex:0 0 auto;border:1px solid #c9d9d2;background:#fff;color:#20483e;border-radius:999px;padding:9px 16px;font-weight:700;white-space:nowrap}
.host-activity-tabs button.active{background:#176b57;color:#fff;border-color:#176b57}

.round-timer-panel{border:1px solid var(--line,#d9e6e1);border-radius:16px;padding:14px;margin:12px 0;background:#fbfdfc}
#roundTimerDisplay{font-size:2.35rem;letter-spacing:.08em;display:block;margin:.15rem 0}
.round-timer-panel .settings-row{align-items:end}
@media(max-width:640px){#roundTimerDisplay{font-size:2rem}.round-timer-panel .settings-row{display:grid;grid-template-columns:1fr 1fr}.round-timer-panel .settings-row button{grid-column:1/-1}}



/* PWA v1.2.4 · unified Host header actions */
.app-header .header-actions,
.compact-header .header-actions{
  align-items:stretch;
}

.app-header .header-control,
.compact-header .header-control{
  display:flex;
  align-items:center;
  justify-content:center;
  text-align:center;
  min-width:116px;
  min-height:56px;
  padding:10px 16px;
  border-radius:18px;
  font-size:16px;
  line-height:1.15;
  font-weight:850;
}

.app-header .header-actions > a[href="../app.html"],
.compact-header .header-actions > a[href="../app.html"]{
  font-size:17px;
  font-weight:900;
}

@media(max-width:620px){
  .app-header .header-actions,
  .compact-header .header-actions{
    flex-direction:column;
    align-items:stretch;
    gap:10px;
    width:132px;
    flex:0 0 132px;
  }

  .app-header .header-control,
  .compact-header .header-control{
    width:100%;
    min-width:0;
    min-height:64px;
    padding:10px 12px;
    border-radius:22px;
    font-size:18px;
    line-height:1.12;
    font-weight:850;
  }

  .app-header .header-actions > a[href="../app.html"],
  .compact-header .header-actions > a[href="../app.html"]{
    font-size:19px;
    font-weight:900;
  }
}

@media(max-width:390px){
  .app-header .header-actions,
  .compact-header .header-actions{
    width:126px;
    flex-basis:126px;
  }
  .app-header .header-control,
  .compact-header .header-control{
    min-height:60px;
    font-size:17px;
  }
}
