:root {
  --ink: #071936;
  --muted: #667386;
  --paper: #f4f6f9;
  --card: #ffffff;
  --line: #e6e8ed;
  --green: #071936;
  --green-2: #9dbb00;
  --lime: #d7ff1f;
  --orange: #ff7a45;
  --shadow: 0 18px 50px rgba(7,25,54,.10);
}

* { box-sizing: border-box; }
body { margin: 0; font-family: Inter, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif; color: var(--ink); background: var(--paper); }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }

.shell { min-height: 100vh; }
.topbar { height: 66px; padding: 0 5vw; display: flex; align-items: center; justify-content: space-between; background: rgba(255,254,250,.92); border-bottom: 1px solid var(--line); position: sticky; top: 0; z-index: 20; backdrop-filter: blur(14px); }
.brand { display: flex; align-items: center; gap: 12px; font-weight: 800; letter-spacing: -.02em; }
.brand-mark { width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center; background: var(--ink); color: var(--lime); font-size: 19px; border: 1px solid rgba(255,255,255,.24); }
.brand-mark.has-image { overflow:hidden; background:white; }
.brand-mark img { width:100%; height:100%; object-fit:contain; }
.brand small { display: block; color: var(--muted); font-size: 10px; letter-spacing: .12em; font-weight: 700; }
.top-actions { display: flex; align-items: center; gap: 10px; }
.switch-link { color: var(--green); text-decoration: none; font-size: 13px; font-weight: 700; padding: 9px 13px; border: 1px solid #b9cdc5; border-radius: 999px; }

.hero { margin: 28px auto 20px; width: min(1180px, 92vw); min-height: 245px; border-radius: 28px; padding: 38px 42px; position: relative; overflow: hidden; background: linear-gradient(125deg, #071936, #102a54 68%, #313f69); color: white; box-shadow: var(--shadow); }
.hero::before { content: ""; position: absolute; width: 360px; height: 360px; border: 52px solid rgba(215,243,106,.22); border-radius: 50%; right: -80px; top: -165px; }
.hero::after { content: ""; position: absolute; width: 110px; height: 110px; border-radius: 50%; background: var(--lime); right: 125px; bottom: -55px; box-shadow: 0 0 0 32px rgba(215,243,106,.12); }
.eyebrow { color: var(--lime); font-weight: 800; font-size: 12px; letter-spacing: .18em; text-transform: uppercase; }
.hero h1 { margin: 10px 0 12px; font-size: clamp(30px, 5vw, 52px); letter-spacing: -.055em; line-height: 1; }
.hero p { max-width: 580px; line-height: 1.65; color: rgba(255,255,255,.78); margin: 0 0 22px; }
.hero-meta { display: flex; flex-wrap: wrap; gap: 10px; }
.hero-meta span { background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.16); padding: 8px 12px; border-radius: 999px; font-size: 12px; }

.main { width: min(1180px, 92vw); margin: 0 auto 90px; }
.tabs { display: flex; gap: 8px; margin: 20px 0; }
.tab { border: 0; background: transparent; color: var(--muted); padding: 10px 17px; border-radius: 999px; font-weight: 700; }
.tab.active { color: white; background: var(--ink); }
.panel { display: none; }
.panel.active { display: block; }
.card { background: var(--card); border: 1px solid var(--line); border-radius: 22px; box-shadow: 0 10px 35px rgba(21,53,47,.055); }
.toolbar { padding: 17px 20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; border-bottom: 1px solid var(--line); }
.toolbar h2 { margin: 0; font-size: 18px; }
.toolbar p { margin: 4px 0 0; color: var(--muted); font-size: 12px; }
.field { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 13px; }
.field input, .field select, .field textarea { border: 1px solid var(--line); background: white; color: var(--ink); padding: 10px 12px; border-radius: 12px; outline: none; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--green-2); box-shadow: 0 0 0 3px rgba(20,147,109,.12); }

.booking-wrap { overflow: auto; max-height: 650px; }
.booking-grid { min-width: 720px; display: grid; grid-template-columns: 92px repeat(var(--court-count), minmax(170px, 1fr)); }
.grid-head { position: sticky; top: 0; z-index: 3; background: #f0f2eb; padding: 14px 10px; font-weight: 800; border-bottom: 1px solid var(--line); text-align: center; }
.grid-head:first-child { left: 0; z-index: 4; }
.time-label { position: sticky; left: 0; z-index: 2; background: #faf9f4; display: grid; place-items: center; min-height: 62px; border-bottom: 1px solid var(--line); border-right: 1px solid var(--line); color: var(--muted); font-size: 12px; font-weight: 700; }
.slot { min-height: 62px; border: 0; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--card); color: var(--ink); transition: .18s ease; display: grid; place-content: center; gap: 4px; }
.slot:hover:not(:disabled) { background: #eff9f3; }
.slot strong { font-size: 14px; }
.slot small { color: var(--muted); }
.slot.selected { background: var(--green); color: white; box-shadow: inset 0 0 0 2px var(--lime); }
.slot.selected small { color: var(--lime); }
.slot:disabled { cursor: not-allowed; color: #9ba6a1; background: repeating-linear-gradient(135deg,#f0f0eb,#f0f0eb 7px,#e9eae4 7px,#e9eae4 14px); }

.selection-bar { position: sticky; bottom: 14px; margin: 16px; border-radius: 18px; background: var(--ink); color: white; padding: 14px 16px; display: flex; align-items: center; justify-content: space-between; gap: 14px; box-shadow: 0 16px 45px rgba(21,53,47,.28); }
.selection-bar.hidden { display: none; }
.selection-info strong { display: block; }
.selection-info small { color: rgba(255,255,255,.65); }
.primary, .secondary, .danger { border: 0; border-radius: 13px; padding: 11px 18px; font-weight: 800; }
.primary { background: var(--lime); color: var(--ink); }
.primary.dark { background: var(--green); color: white; }
.secondary { background: #e9eee9; color: var(--ink); }
.danger { background: #fff0ea; color: #b23b18; }
.primary:disabled { opacity: .4; cursor: not-allowed; }

.orders { display: grid; gap: 12px; }
.order-card { padding: 18px; display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center; }
.order-card h3 { margin: 0 0 6px; font-size: 16px; }
.order-card p { margin: 3px 0; color: var(--muted); font-size: 13px; }
.order-saving { display:block; margin-top:4px; color:#8da600; font-weight:750; }
.badge { display: inline-flex; align-items: center; padding: 5px 9px; border-radius: 999px; background: #e7f5ef; color: var(--green); font-size: 11px; font-weight: 800; }
.badge.warn { background: #fff2dc; color: #a25b00; }
.badge.gray { background: #eceeea; color: #66716d; }

.modal-backdrop { position: fixed; inset: 0; display: none; place-items: center; padding: 20px; background: rgba(13,35,30,.58); z-index: 50; backdrop-filter: blur(8px); }
.modal-backdrop.open { display: grid; }
.modal { width: min(460px, 100%); background: var(--card); border-radius: 24px; box-shadow: 0 30px 90px rgba(0,0,0,.25); overflow: hidden; }
.modal-head { padding: 23px 24px 17px; border-bottom: 1px solid var(--line); }
.modal-head h2 { margin: 0 0 6px; }
.modal-head p { margin: 0; color: var(--muted); font-size: 13px; }
.modal-body { padding: 20px 24px; }
.summary-line { display: flex; justify-content: space-between; margin: 11px 0; color: var(--muted); }
.summary-line.total { color: var(--ink); font-size: 19px; font-weight: 900; padding-top: 12px; border-top: 1px dashed var(--line); }
.summary-line.hidden,.generated-codes.hidden { display:none; }
.summary-line.discount strong { color:#8da600; }
.promo-entry { margin:18px 0 14px; padding:14px; border-radius:16px; background:#f2f4f7; }
.promo-entry > label { display:flex; justify-content:space-between; color:var(--ink); font-size:12px; font-weight:800; }
.promo-entry label small { color:var(--muted); font-weight:600; }
.promo-entry > div { display:grid; grid-template-columns:1fr auto; gap:8px; margin-top:9px; }
.promo-entry input { min-width:0; padding:11px 12px; border:1px solid var(--line); border-radius:12px; outline:0; text-transform:uppercase; }
.promo-entry input:focus { border-color:#aabd20; box-shadow:0 0 0 3px rgba(215,255,31,.28); }
.promo-entry p { min-height:16px; margin:7px 2px 0; color:#7f9600; font-size:11px; }
.modal-actions { display: flex; gap: 10px; padding: 0 24px 24px; }
.modal-actions button { flex: 1; }

.toast { position: fixed; left: 50%; bottom: 34px; transform: translate(-50%,20px); opacity: 0; z-index: 100; background: var(--ink); color: white; padding: 12px 18px; border-radius: 13px; box-shadow: var(--shadow); transition: .2s; font-weight: 700; font-size: 13px; }
.toast.show { transform: translate(-50%,0); opacity: 1; }
.toast.error { background: #a83f25; }
.empty { padding: 54px 20px; text-align: center; color: var(--muted); }
.loading { padding: 80px; text-align: center; color: var(--muted); }

.admin-shell { display: grid; grid-template-columns: 230px 1fr; min-height: 100vh; }
.sidebar { background: var(--ink); color: white; padding: 26px 18px; position: sticky; top: 0; height: 100vh; display:flex; flex-direction:column; }
.sidebar .brand { margin: 0 8px 32px; }
.sidebar nav { display: grid; gap: 6px; }
.side-link { border: 0; text-align: left; color: rgba(255,255,255,.62); background: transparent; padding: 12px 14px; border-radius: 14px; font-weight: 700; display:flex; align-items:center; gap:12px; }
.side-link > span { width:22px; color:rgba(215,255,31,.65); font-size:10px; letter-spacing:.08em; }
.side-link.active, .side-link:hover { color: var(--ink); background: var(--lime); }
.side-link.active > span, .side-link:hover > span { color:var(--ink); }
.admin-main { padding: 30px clamp(20px,4vw,54px) 70px; min-width: 0; }
.page-head { display: flex; justify-content: space-between; align-items: end; gap: 16px; margin-bottom: 24px; }
.page-head h1 { margin: 0; font-size: 30px; letter-spacing: -.04em; }
.page-head p { color: var(--muted); margin: 6px 0 0; }
.kpis { display: grid; grid-template-columns: repeat(4,1fr); gap: 14px; margin-bottom: 20px; }
.kpi { padding: 20px; position:relative; overflow:hidden; }
.kpi span { color: var(--muted); font-size: 12px; }
.kpi strong { display: block; font-size: 27px; margin-top: 8px; letter-spacing: -.04em; }
.kpi small { display:block; margin-top:8px; color:#929cab; font-size:11px; }
.kpi.accent { color:white; background:var(--ink); border-color:var(--ink); }
.kpi.accent span,.kpi.accent small { color:rgba(255,255,255,.65); }
.kpi.accent strong { color:var(--lime); }
.kpi.warning::after { content:""; position:absolute; right:-18px; top:-23px; width:80px; height:80px; border-radius:50%; background:rgba(215,255,31,.45); }
.admin-grid { display: grid; grid-template-columns: minmax(0,1fr) 330px; gap: 18px; }
.admin-grid > *, .admin-grid .card { min-width: 0; }
.form-stack { padding: 20px; display: grid; gap: 14px; }
.form-stack .field { display: grid; align-items: stretch; }
.form-stack h2 { margin:5px 0 0; }
.form-stack p { color:var(--muted); font-size:12px; line-height:1.6; margin:5px 0 0; }

.admin-workspace { min-width:0; }
.admin-topbar { height:72px; padding:0 clamp(20px,4vw,54px); display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line); background:rgba(255,255,255,.92); position:sticky; top:0; z-index:15; backdrop-filter:blur(14px); }
.admin-topbar > div:first-child { display:flex; flex-direction:column; }
.admin-topbar strong { font-size:15px; }
.topbar-kicker,.section-kicker,.form-index { color:#8da600; font-size:10px; letter-spacing:.16em; font-weight:850; }
.admin-top-actions { display:flex; align-items:center; gap:10px; }
.global-search { height:38px; min-width:280px; display:flex; align-items:center; gap:8px; padding:0 12px; border-radius:22px; background:#edf0f4; color:#7d8898; }
.global-search input { width:100%; border:0; outline:0; background:transparent; color:var(--ink); font-size:12px; }
.global-search.light { background:#fff; border:1px solid var(--line); }
.circle-action,.admin-avatar { width:38px; height:38px; border-radius:50%; display:grid; place-items:center; border:1px solid var(--line); background:white; color:#8da600; }
.admin-avatar { color:var(--ink); background:var(--lime); border-color:var(--lime); font-size:11px; font-weight:850; }
.venue-switch { margin:-13px 7px 24px; padding:13px 14px; border:1px solid rgba(255,255,255,.12); border-radius:16px; background:rgba(255,255,255,.06); }
.venue-switch span,.venue-switch strong,.venue-switch small { display:block; }
.venue-switch span { color:var(--lime); font-size:9px; letter-spacing:.12em; }
.venue-switch strong { margin-top:6px; font-size:12px; }
.venue-switch small { margin-top:4px; color:rgba(255,255,255,.5); font-size:10px; }
.sidebar-foot { margin-top:auto; padding:14px 10px 0; display:flex; align-items:center; gap:10px; border-top:1px solid rgba(255,255,255,.1); }
.sidebar-foot strong,.sidebar-foot small { display:block; font-size:10px; }
.sidebar-foot small { margin-top:3px; color:rgba(255,255,255,.4); }
.system-dot { width:9px; height:9px; border-radius:50%; background:var(--lime); box-shadow:0 0 0 4px rgba(215,255,31,.12); }
.page-head { align-items:center; }
.page-head .section-kicker { display:block; margin-bottom:6px; }
.date-nav { display:flex; align-items:center; gap:7px; padding:5px; border:1px solid var(--line); border-radius:18px; background:white; }
.date-nav button { height:32px; min-width:32px; border:0; border-radius:11px; background:#edf0f4; color:var(--ink); font-weight:850; }
.date-nav .field input { border:0; padding:6px; }
.date-nav .today-button { padding:0 12px; color:var(--ink); background:var(--lime); }
.schedule-card { overflow:hidden; }
.schedule-toolbar { min-height:78px; padding:15px 18px; display:flex; align-items:center; justify-content:space-between; gap:15px; border-bottom:1px solid var(--line); }
.schedule-toolbar h2 { margin:0; font-size:13px; letter-spacing:.09em; }
.schedule-toolbar h2 small { color:var(--muted); letter-spacing:0; }
.legend { display:flex; gap:14px; margin-top:10px; flex-wrap:wrap; }
.legend span { display:flex; align-items:center; gap:6px; color:var(--muted); font-size:10px; }
.legend i { width:8px; height:8px; border-radius:50%; }
.legend .free { background:#dfe5ec; }.legend .confirmed { background:var(--ink); }.legend .hold { background:#f6c133; }.legend .blocked { background:#e66d47; }
.filter-row { display:flex; gap:6px; }
.filter-chip { border:1px solid var(--line); border-radius:20px; padding:8px 12px; background:white; color:var(--muted); font-size:11px; font-weight:750; }
.filter-chip.active { color:var(--ink); border-color:var(--lime); background:var(--lime); }
.admin-slot { min-height:66px; padding:6px; }
.admin-slot strong { font-size:10px; letter-spacing:.05em; }
.admin-slot small { max-width:130px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:10px; }
.admin-slot[data-kind="FREE"] strong { color:#91a0b4; }
.slot-booking { color:white; background:var(--ink); box-shadow:inset 4px 0 0 var(--lime); }
.slot-booking small { color:rgba(255,255,255,.65); }
.slot-hold { color:#604b00; background:#fff4c4; box-shadow:inset 4px 0 0 #f6c133; }
.slot-blocked { color:#8e351d; background:#fff0ea; box-shadow:inset 4px 0 0 #e66d47; }
.admin-slot.filtered-out { opacity:.12; pointer-events:none; }
.action-grid { grid-template-columns:280px 1fr; margin-top:22px; align-items:start; }
.operation-intro { padding:24px 5px; }
.operation-intro h2 { margin:8px 0; font-size:26px; }
.operation-intro p { color:var(--muted); font-size:13px; line-height:1.75; }
.quick-forms { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.settings-grid { display:grid; grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr); gap:18px; margin-top:18px; }
.policy-form { grid-template-columns:1fr 1fr; }
.policy-form > div,.policy-form > button { grid-column:1/-1; }
.pricing-summary { padding:24px; }
.pricing-summary h2 { margin:8px 0 20px; }
.pricing-summary > div { padding:14px 0; display:flex; align-items:baseline; justify-content:space-between; border-bottom:1px solid var(--line); }
.pricing-summary > div strong { color:var(--ink); font-size:21px; }
.pricing-summary > div span { color:var(--muted); font-size:11px; }
.pricing-summary p { color:var(--muted); font-size:11px; line-height:1.6; }
.pricing-view-switch { display:flex; gap:7px; }
.pricing-management-grid { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:18px; align-items:start; }
.pricing-panel { padding:24px; }
.pricing-rule-list { display:grid; gap:10px; }
.pricing-rule { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px 18px; align-items:center; padding:16px; border:1px solid var(--line); border-radius:16px; background:#fafbfc; }
.pricing-rule h3 { margin:7px 0 4px; font-size:16px; }.pricing-rule p,.pricing-rule small { display:block; margin:0; color:var(--muted); font-size:10px; line-height:1.5; }
.pricing-rule > strong { padding:9px 11px; border-radius:12px; color:var(--ink); background:var(--lime); font-size:16px; white-space:nowrap; }
.pricing-actions { grid-column:1/-1; display:flex; justify-content:flex-end; gap:8px; padding-top:10px; border-top:1px solid var(--line); }
.pricing-dialog { width:min(680px,calc(100% - 30px)); max-height:92vh; overflow:auto; padding:0; border:0; border-radius:24px; box-shadow:0 28px 90px rgba(7,25,54,.28); }
.pricing-dialog::backdrop { background:rgba(7,25,54,.52); backdrop-filter:blur(4px); }
.pricing-dialog form { position:relative; padding:28px; }.dialog-close { position:absolute; right:18px; top:18px; width:36px; height:36px; border:0; border-radius:50%; background:#edf0f4; font-size:20px; }
.pricing-calendar-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; }
.pricing-calendar-grid article { padding:13px; border:1px solid var(--line); border-radius:14px; }.pricing-calendar-grid span,.pricing-calendar-grid strong,.pricing-calendar-grid small { display:block; }.pricing-calendar-grid span,.pricing-calendar-grid small { color:var(--muted); font-size:9px; }.pricing-calendar-grid strong { margin:6px 0; font-size:17px; }.pricing-calendar-grid small { line-height:1.5; }
.promo-admin-grid { display:grid; grid-template-columns:minmax(320px,.75fr) minmax(0,1.25fr); gap:18px; align-items:start; }
.promo-form { position:sticky; top:94px; }
.form-pair { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.form-pair .field { display:grid; align-items:stretch; }
.promo-campaigns { display:grid; gap:12px; }
.promo-campaign-card { padding:21px; }
.promo-campaign-head { display:flex; justify-content:space-between; gap:16px; align-items:start; }
.promo-campaign-head h3 { margin:7px 0 5px; font-size:19px; }
.promo-campaign-head p { margin:0; color:var(--muted); font-size:11px; }
.promo-amount { color:var(--ink); background:var(--lime); border-radius:14px; padding:9px 12px; font-size:18px; font-weight:900; white-space:nowrap; }
.promo-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-top:18px; }
.promo-stats div { padding:10px; border-radius:12px; background:#f2f4f7; }
.promo-stats strong,.promo-stats span { display:block; }
.promo-stats strong { font-size:17px; }.promo-stats span { margin-top:3px; color:var(--muted); font-size:9px; }
.generated-codes { margin-bottom:14px; padding:20px; border-color:#cce90c; }
.generated-codes h3 { margin:7px 0; }.generated-codes p { margin:0 0 13px; color:var(--muted); font-size:11px; }
.code-cloud { display:flex; flex-wrap:wrap; gap:7px; }
.code-cloud code { padding:7px 9px; border-radius:9px; background:var(--ink); color:var(--lime); font-size:11px; }
.table-card { overflow:hidden; }
.table-head,.table-row { display:grid; grid-template-columns:2fr .8fr .7fr .8fr 1.2fr; gap:14px; align-items:center; padding:14px 20px; }
.table-head { color:#7d8898; background:#edf0f4; font-size:10px; font-weight:800; letter-spacing:.07em; }
.table-row { min-height:72px; border-top:1px solid var(--line); font-size:12px; }
.customer-cell { display:flex; align-items:center; gap:11px; }
.customer-cell strong,.customer-cell small { display:block; }
.customer-cell small,.muted-value { margin-top:4px; color:var(--muted); font-size:10px; }
.customer-avatar { width:38px; height:38px; flex:none; display:grid; place-items:center; border-radius:50%; color:var(--ink); background:var(--lime); font-weight:850; }
.membership-badge { display:inline-flex; padding:6px 9px; border-radius:9px; color:var(--lime); background:var(--ink); font-size:9px; font-weight:850; letter-spacing:.08em; }
.detail-drawer { position:fixed; z-index:81; right:0; top:0; bottom:0; width:min(430px,92vw); padding:34px; background:white; box-shadow:-20px 0 70px rgba(7,25,54,.18); transform:translateX(105%); transition:.25s ease; }
.detail-drawer.open { transform:translateX(0); }
.drawer-mask { display:none; position:fixed; z-index:80; inset:0; background:rgba(7,25,54,.42); backdrop-filter:blur(3px); }
.drawer-mask.open { display:block; }
.drawer-close { position:absolute; right:22px; top:22px; width:38px; height:38px; border:0; border-radius:50%; background:#edf0f4; font-size:24px; color:var(--ink); }
.detail-drawer h2 { margin:12px 45px 5px 0; font-size:26px; }
.drawer-subtitle { color:var(--muted); }
.detail-list { margin-top:26px; border-top:1px solid var(--line); }
.detail-list > div { min-height:58px; display:flex; align-items:center; justify-content:space-between; gap:20px; border-bottom:1px solid var(--line); }
.detail-list span { color:var(--muted); font-size:11px; }
.detail-list strong { text-align:right; font-size:12px; }
.channel-card { transition:.18s ease; }
.channel-card:has(.channel-open):hover { border-color:#c6dc2d; transform:translateY(-1px); }
.channel-back { margin-bottom:16px; }
.integration-hero { padding:24px; display:flex; align-items:center; justify-content:space-between; gap:18px; }
.integration-hero h2 { margin:6px 0; font-size:25px; }.integration-hero p { margin:0; color:var(--muted); }
.integration-stats { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin:14px 0; }
.integration-stats .card { padding:17px; min-width:0; }.integration-stats span,.integration-stats strong { display:block; }
.integration-stats span { color:var(--muted); font-size:10px; }.integration-stats strong { margin-top:7px; font-size:13px; overflow-wrap:anywhere; }
.integration-error { margin:0 0 14px; padding:13px 16px; border-radius:14px; color:#9b321d; background:#fff0ea; font-size:12px; }
.mapping-section { padding:24px; margin-top:16px; }
.mapping-head { display:flex; align-items:start; justify-content:space-between; gap:18px; margin-bottom:20px; }
.mapping-head h2 { margin:0 0 7px; font-size:20px; }.mapping-head p { margin:0; color:var(--muted); font-size:12px; line-height:1.6; }
.mapping-head code { color:var(--ink); background:#eff2f5; padding:2px 5px; border-radius:5px; }
.mapping-form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.mapping-form label,.mapping-row label,.new-mapping-form label { display:grid; gap:7px; color:var(--muted); font-size:11px; font-weight:750; }
.mapping-form input,.mapping-form select,.mapping-row input,.mapping-row select,.new-mapping-form input,.new-mapping-form select { width:100%; min-width:0; border:1px solid var(--line); border-radius:11px; background:white; color:var(--ink); padding:10px 11px; outline:0; }
.mapping-form input:focus,.mapping-form select:focus,.mapping-row input:focus,.mapping-row select:focus,.new-mapping-form input:focus,.new-mapping-form select:focus { border-color:#aabd20; box-shadow:0 0 0 3px rgba(215,255,31,.25); }
.mapping-form input[readonly] { background:#f2f4f7; color:var(--muted); }
.mapping-actions { display:flex; flex-wrap:wrap; align-items:end; gap:8px; }
.mapping-form > .mapping-actions { grid-column:1/-1; }
.mapping-list { display:grid; gap:10px; }
.mapping-row { display:grid; grid-template-columns:1.25fr 1fr 1fr .8fr; align-items:end; gap:12px; padding:16px; border:1px solid var(--line); border-radius:16px; background:#fafbfc; }
.mapping-row > div:first-child { align-self:center; }.mapping-row strong,.mapping-row small { display:block; }.mapping-row small { margin-top:5px; color:var(--muted); font-size:10px; }
.mapping-row .mapping-actions { grid-column:1/-1; }.row-note { grid-column:1/-1; margin:0; color:var(--muted); font-size:10px; }.error-text { color:#a83f25; }
.new-mapping-form { display:grid; grid-template-columns:1.2fr 1fr 1fr auto; gap:12px; align-items:end; padding-top:18px; margin-top:18px; border-top:1px solid var(--line); }
.test-result { margin-top:16px; padding:15px; border-radius:14px; background:#f2f4f7; font-size:12px; }.test-result.success { background:#eff9db; }.test-result.failed { color:#a83f25; background:#fff0ea; }
.test-result strong { display:block; margin-bottom:9px; }.test-result div { display:flex; flex-wrap:wrap; gap:8px 14px; }.test-result span { font-size:11px; }
.empty.compact { padding:26px 15px; }

.editor-profile,.editor-panel { padding:24px; }
.editor-section-head { display:flex; align-items:flex-start; justify-content:space-between; gap:18px; margin-bottom:22px; }
.editor-section-head h2 { margin:6px 0; font-size:21px; }.editor-section-head p { margin:0; color:var(--muted); font-size:12px; line-height:1.6; }
.profile-editor-grid { display:grid; grid-template-columns:180px minmax(0,1fr); gap:26px; }
.logo-editor { display:flex; align-items:center; flex-direction:column; gap:10px; padding:18px; border-radius:18px; background:#f2f4f7; }
.logo-preview { width:118px; height:118px; display:grid; place-items:center; overflow:hidden; border:1px solid var(--line); border-radius:24px; color:var(--ink); background:white; font-size:46px; }
.logo-preview img,.coach-photo img { width:100%; height:100%; object-fit:cover; }
.logo-editor small { color:var(--muted); text-align:center; font-size:9px; line-height:1.5; }
.file-button { display:flex; align-items:center; justify-content:center; cursor:pointer; font-size:12px; }
.text-button { border:0; padding:4px; color:#a83f25; background:transparent; font-weight:800; }
.profile-fields { min-width:0; }.profile-fields > .primary { margin-top:16px; }
.editor-form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
.editor-form-grid label,.special-form label { display:grid; gap:7px; color:var(--muted); font-size:10px; font-weight:800; }
.editor-form-grid .wide,.special-form .wide { grid-column:1/-1; }
.editor-form-grid input,.editor-form-grid select,.editor-form-grid textarea,.special-form input,.special-form select { width:100%; min-width:0; padding:10px 11px; border:1px solid var(--line); border-radius:11px; color:var(--ink); background:white; outline:0; font:inherit; }
.editor-form-grid textarea { resize:vertical; line-height:1.6; }
.editor-form-grid input:focus,.editor-form-grid select:focus,.editor-form-grid textarea:focus,.special-form input:focus,.special-form select:focus { border-color:#aabd20; box-shadow:0 0 0 3px rgba(215,255,31,.25); }
.facility-editor { margin-top:16px; }.facility-editor > strong { display:block; margin-bottom:9px; font-size:12px; }
.facility-grid { display:flex; flex-wrap:wrap; gap:7px; }.facility-option input { position:absolute; opacity:0; pointer-events:none; }.facility-option span { display:block; padding:8px 11px; border:1px solid var(--line); border-radius:999px; color:var(--muted); background:white; font-size:10px; cursor:pointer; }.facility-option input:checked + span { border-color:var(--lime); color:var(--ink); background:var(--lime); font-weight:850; }
.editor-columns { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(370px,.8fr); gap:16px; margin-top:16px; align-items:start; }
.editor-side-stack,.editor-list { display:grid; gap:12px; }.editor-side-stack { gap:16px; }
.court-editor,.coach-editor,.new-editor-form { padding:16px; border:1px solid var(--line); border-radius:17px; background:#fafbfc; }
.court-editor-main { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }.court-editor-main strong,.court-editor-main small { display:block; }.court-editor-main small { margin-top:4px; color:var(--muted); font-size:9px; }
.court-fields { grid-template-columns:repeat(3,minmax(0,1fr)); }
.editor-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; margin-top:13px; }
.disabled-record { opacity:.58; }.disabled-record input,.disabled-record select,.disabled-record textarea { pointer-events:none; }
.weekly-schedule { margin-top:15px; padding-top:15px; border-top:1px solid var(--line); }.weekly-schedule > strong { font-size:12px; }.weekly-schedule > div { display:grid; gap:7px; margin:11px 0; }
.schedule-day { display:grid; grid-template-columns:84px 1fr 18px 1fr; gap:7px; align-items:center; color:var(--muted); font-size:10px; }.schedule-day label { display:flex; align-items:center; gap:6px; color:var(--ink); font-weight:750; }.schedule-day input[type="time"] { min-width:0; padding:8px; border:1px solid var(--line); border-radius:9px; background:white; }
.new-editor-form { margin-bottom:12px; border-color:#c9e106; background:#faffdf; }.new-editor-form > strong { display:block; margin-bottom:13px; }.new-editor-form > p { margin:10px 0 0; color:var(--muted); font-size:9px; line-height:1.5; }
.special-form { display:grid; grid-template-columns:1fr 1fr; gap:10px; }.special-form > button { grid-column:1/-1; }
.special-list { display:grid; gap:7px; margin-top:15px; padding-top:15px; border-top:1px solid var(--line); }.special-list > div { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px; border-radius:11px; background:#f2f4f7; }.special-list strong,.special-list small { display:block; }.special-list strong { font-size:11px; }.special-list small { margin-top:3px; color:var(--muted); font-size:9px; }
.coach-editor { display:grid; grid-template-columns:58px minmax(0,1fr); gap:13px; }.coach-photo { width:58px; height:58px; display:grid; place-items:center; overflow:hidden; border-radius:16px; color:var(--ink); background:var(--lime); font-size:22px; font-weight:900; }.coach-fields { min-width:0; }.compact-list .editor-form-grid { grid-template-columns:1fr 1fr; }
.public-about-head h2 { margin:7px 0; }.public-about-head p { max-width:760px; color:var(--muted); line-height:1.8; white-space:pre-line; }
.public-facilities { display:flex; flex-wrap:wrap; gap:7px; margin:18px 0; }.public-facilities span { padding:8px 11px; border-radius:999px; color:var(--ink); background:#eef3ea; font-size:11px; font-weight:750; }
.public-contact { display:flex; flex-wrap:wrap; gap:8px 24px; padding:15px 0; border-top:1px solid var(--line); color:var(--muted); font-size:12px; }
.coach-title { margin:23px 0 12px; }.public-coaches { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }.public-coaches article { display:grid; grid-template-columns:72px 1fr; gap:13px; padding:14px; border:1px solid var(--line); border-radius:16px; }.public-coaches article > img,.public-coaches article > strong { width:72px; height:72px; display:grid; place-items:center; object-fit:cover; border-radius:15px; background:var(--lime); font-size:24px; }.public-coaches h4 { margin:2px 0 4px; }.public-coaches h4 small { display:block; margin-top:3px; color:var(--muted); font-weight:600; }.public-coaches b { color:#8da600; font-size:10px; }.public-coaches p { margin:6px 0 0; color:var(--muted); font-size:11px; line-height:1.6; }
.academy-create-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; align-items:start; }.academy-create-grid textarea { width:100%; padding:10px; border:1px solid var(--line); border-radius:11px; resize:vertical; }
.academy-section { margin-top:16px; padding:24px; }.academy-program-list,.academy-session-list,.academy-package-list { display:grid; gap:10px; }
.academy-program-list > article { display:grid; grid-template-columns:1fr auto; align-items:center; gap:14px; padding:15px; border:1px solid var(--line); border-radius:15px; }.academy-program-list h3 { margin:6px 0 4px; }.academy-program-list h3 small { display:block; margin-top:3px; color:var(--muted); font-size:10px; }.academy-program-list p,.academy-program-list small { display:block; margin:0; color:var(--muted); font-size:10px; }.academy-program-list > article > div:last-child { text-align:right; }
.academy-coach-stats { display:grid; gap:10px; }.academy-coach-stats article { display:grid; grid-template-columns:minmax(160px,1.5fr) repeat(4,minmax(80px,1fr)); align-items:center; gap:14px; padding:15px; border:1px solid var(--line); border-radius:15px; }.academy-coach-stats article > div { display:grid; gap:3px; }.academy-coach-stats article > div:not(:first-child) { text-align:center; }.academy-coach-stats strong { font-size:15px; }.academy-coach-stats small { color:var(--muted); font-size:10px; }
.academy-session-card { overflow:hidden; border:1px solid var(--line); border-radius:16px; }.academy-session-head { display:flex; justify-content:space-between; gap:16px; padding:16px; background:#fafbfc; }.academy-session-head h3 { margin:6px 0 4px; }.academy-session-head p,.academy-session-head small { display:block; margin:0; color:var(--muted); font-size:10px; }.academy-session-head > div:last-child { text-align:right; }
.attendance-list > div { display:grid; grid-template-columns:1fr 130px auto 70px; gap:10px; align-items:center; padding:11px 16px; border-top:1px solid var(--line); }.attendance-list strong,.attendance-list small { display:block; }.attendance-list small { margin-top:3px; color:var(--muted); font-size:9px; }.attendance-list select { padding:9px; border:1px solid var(--line); border-radius:10px; background:white; }.attendance-list em { color:var(--muted); font-size:9px; font-style:normal; text-align:right; }
.academy-package-list > article { display:grid; grid-template-columns:1.2fr 1fr 1fr; gap:15px; align-items:center; padding:14px; border:1px solid var(--line); border-radius:15px; }.academy-package-list strong,.academy-package-list small { display:block; }.academy-package-list small { margin-top:4px; color:var(--muted); font-size:9px; }.package-progress { height:8px; overflow:hidden; border-radius:10px; background:#edf0f4; }.package-progress span { display:block; width:var(--progress); height:100%; background:var(--lime); }
.academy-public-head { margin-bottom:18px; }.academy-public-head h2 { margin:6px 0; font-size:26px; }.academy-public-head p { margin:0; color:var(--muted); }
.academy-public-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }.public-program { padding:20px; }.public-coach-mini { display:flex; align-items:center; gap:10px; }.public-coach-mini > img,.public-coach-mini > strong { width:46px; height:46px; display:grid; place-items:center; object-fit:cover; border-radius:50%; background:var(--lime); }.public-coach-mini b,.public-coach-mini small { display:block; }.public-coach-mini small { margin-top:3px; color:var(--muted); font-size:9px; }.public-program h3 { margin:16px 0 8px; }.public-program h3 small { display:block; margin-top:4px; color:var(--muted); font-size:10px; }.public-program > p { min-height:48px; color:var(--muted); font-size:11px; line-height:1.6; }.program-meta { display:flex; flex-wrap:wrap; gap:6px; }.program-meta span,.package-badge { padding:6px 8px; border-radius:9px; background:#edf0f4; font-size:9px; }.package-badge { margin-top:10px; color:var(--ink); background:var(--lime); font-weight:800; }
.public-session-section { margin-top:16px; padding:22px; }.public-session-section h2 { margin:0 0 15px; }.public-session-list { display:grid; gap:8px; }.public-session-list article { display:flex; align-items:center; justify-content:space-between; gap:14px; padding:12px; border:1px solid var(--line); border-radius:14px; }.public-session-list article > div { display:flex; align-items:center; gap:12px; }.public-session-list article > div:last-child { justify-content:flex-end; }.public-session-list strong,.public-session-list small { display:block; }.public-session-list small { margin-top:4px; color:var(--muted); font-size:9px; }.session-date { min-width:45px; padding:9px 6px; border-radius:11px; text-align:center; background:var(--ink); color:var(--lime); font-size:11px; font-weight:850; }

.platform-body { min-height:100vh; background:#f3f5f8; }.platform-topbar { min-height:84px; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:18px 4vw; border-bottom:1px solid var(--line); background:white; }.platform-topbar .brand { display:flex; align-items:center; gap:12px; color:var(--ink); font-weight:900; }.platform-topbar .brand small { display:block; margin-top:3px; color:var(--muted); font-size:9px; }.platform-main { width:min(1480px,92vw); margin:36px auto 80px; }.platform-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:18px; }.platform-layout { display:grid; grid-template-columns:minmax(330px,.72fr) minmax(520px,1.5fr); gap:18px; align-items:start; }.platform-onboarding { position:sticky; top:18px; padding:24px; }.platform-clubs { display:grid; gap:14px; }.platform-club-card { padding:22px; }.platform-club-card > header { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }.platform-club-card h2 { margin:7px 0 4px; }.platform-club-card p { margin:0; color:var(--muted); font-size:10px; }.status-pill { padding:8px 11px; border-radius:999px; font-size:9px; font-weight:850; white-space:nowrap; }.status-pill.active { color:#087451; background:#ddf5ec; }.status-pill.disabled { color:#9a541c; background:#fff0e5; }.platform-meta { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:18px 0; }.platform-meta > div { padding:12px; border-radius:12px; background:#f4f6f8; }.platform-meta small,.platform-meta strong { display:block; }.platform-meta small { color:var(--muted); font-size:9px; }.platform-meta strong { margin-top:5px; font-size:10px; }.submerchant-form { display:grid; grid-template-columns:1.25fr 1fr auto; align-items:end; gap:10px; padding-top:16px; border-top:1px solid var(--line); }.submerchant-form button { min-height:42px; }.security-note { margin-top:11px!important; line-height:1.6; }

@media (max-width: 850px) {
  .hero { padding: 30px 24px; }
  .admin-shell { display: block; }
  .sidebar { height: auto; position: static; padding: 15px 18px; }
  .sidebar .brand { margin: 0 0 12px; }
  .sidebar nav { display: flex; overflow: auto; }
  .venue-switch,.sidebar-foot { display:none; }
  .side-link { white-space: nowrap; }
  .kpis { grid-template-columns: repeat(2,1fr); }
  .admin-grid { grid-template-columns: 1fr; }
  .admin-topbar { position:static; }
  .admin-topbar > div:first-child { display:none; }
  .admin-top-actions,.global-search { width:100%; }
  .action-grid,.settings-grid,.promo-admin-grid,.pricing-management-grid { grid-template-columns:1fr; }
  .pricing-calendar-grid { grid-template-columns:1fr 1fr; }
  .promo-form { position:static; }
  .quick-forms { grid-template-columns:1fr; }
  .schedule-toolbar { align-items:flex-start; flex-direction:column; }
  .table-head,.table-row { grid-template-columns:1.7fr .8fr .7fr; }
  .table-head > *:nth-child(4),.table-head > *:nth-child(5),.table-row > *:nth-child(4),.table-row > *:nth-child(5) { display:none; }
  .mapping-row { grid-template-columns:1fr 1fr; }.mapping-row > div:first-child,.mapping-row .mapping-actions,.row-note { grid-column:1/-1; }
  .new-mapping-form { grid-template-columns:1fr 1fr; }
  .editor-columns { grid-template-columns:1fr; }
  .academy-create-grid,.academy-public-grid { grid-template-columns:1fr 1fr; }
  .academy-coach-stats article { grid-template-columns:minmax(150px,1.5fr) repeat(2,1fr); }.academy-coach-stats article > div:nth-child(4),.academy-coach-stats article > div:nth-child(5) { grid-column:auto; }
}

@media (max-width: 1250px) and (min-width: 851px) {
  .admin-grid { grid-template-columns: 1fr; }
  .admin-grid > div:last-child { grid-template-columns: 1fr 1fr; }
  .kpis { grid-template-columns: repeat(2,1fr); }
}

@media (max-width: 560px) {
  .topbar { padding: 0 4vw; }
  .hero { width: 100%; margin: 0; border-radius: 0 0 25px 25px; min-height: 260px; }
  .main { width: 94vw; }
  .switch-link { font-size: 0; }
  .switch-link::after { content: "后台"; font-size: 12px; }
  .selection-bar { align-items: stretch; flex-direction: column; }
  .order-card { grid-template-columns: 1fr; }
  .kpis { grid-template-columns: 1fr 1fr; }
  .page-head { align-items:flex-start; flex-direction:column; }
  .date-nav { width:100%; }
  .date-nav .field { flex:1; }
  .date-nav .field input { width:100%; }
  .filter-row { width:100%; overflow:auto; }
  .policy-form { grid-template-columns:1fr; }
  .form-pair { grid-template-columns:1fr; }
  .promo-stats { grid-template-columns:1fr 1fr; }
  .integration-hero,.mapping-head { align-items:flex-start; flex-direction:column; }
  .integration-stats { grid-template-columns:1fr 1fr; }
  .mapping-form,.mapping-row,.new-mapping-form { grid-template-columns:1fr; }
  .mapping-row > div:first-child,.mapping-row .mapping-actions,.row-note { grid-column:auto; }
  .profile-editor-grid { grid-template-columns:1fr; }.logo-editor { align-items:flex-start; }.editor-form-grid,.court-fields,.special-form,.compact-list .editor-form-grid { grid-template-columns:1fr; }.editor-form-grid .wide,.special-form .wide,.special-form > button { grid-column:auto; }.coach-editor { grid-template-columns:1fr; }
  .public-coaches { grid-template-columns:1fr; }
  .platform-summary,.platform-layout,.platform-meta,.submerchant-form { grid-template-columns:1fr; }.platform-onboarding { position:static; }
  .academy-create-grid,.academy-public-grid { grid-template-columns:1fr; }.attendance-list > div,.academy-package-list > article,.academy-coach-stats article { grid-template-columns:1fr 1fr; }.academy-coach-stats article > div:first-child { grid-column:1/-1; }.attendance-list em { text-align:left; }.public-session-list article { align-items:flex-start; flex-direction:column; }
}
