:root {
  --navy: #12355b;
  --navy-2: #0b2745;
  --blue: #2674ff;
  --cyan: #12a8a0;
  --yellow: #ffc94a;
  --orange: #f28c28;
  --red: #d94a4a;
  --green: #16856c;
  --ink: #17263a;
  --muted: #6b7787;
  --line: #dfe6ee;
  --paper: #ffffff;
  --canvas: #f4f7fb;
  --shadow: 0 12px 32px rgba(18, 53, 91, .08);
  --radius: 18px;
}

* { box-sizing: border-box; }
html { color-scheme: light; }
body {
  margin: 0;
  color: var(--ink);
  background: var(--canvas);
  font-family: "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;
  font-size: 16px;
  line-height: 1.55;
}
a { color: inherit; }
button, input, select, textarea { font: inherit; }
button, select { cursor: pointer; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 20;
  color: #fff;
  background: var(--navy-2);
  border-bottom: 3px solid var(--yellow);
}
.header-inner {
  width: min(1180px, calc(100% - 32px));
  min-height: 74px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
}
.brand { display: flex; align-items: center; gap: 11px; text-decoration: none; }
.brand-mark, .auth-symbol {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  color: var(--navy-2);
  background: var(--yellow);
  font-size: 20px;
  box-shadow: inset 0 -3px rgba(0,0,0,.1);
}
.brand strong { display: block; font-size: 17px; letter-spacing: .02em; }
.brand small { display: block; opacity: .66; font-size: 12px; }
.nav { display: flex; align-items: center; gap: 5px; }
.nav a { padding: 9px 14px; border-radius: 9px; text-decoration: none; font-size: 15px; color: rgba(255,255,255,.75); }
.nav a:hover, .nav a.active { color: #fff; background: rgba(255,255,255,.11); }
.nav a.logout { margin-left: 8px; color: #ffd2d2; }

.page-shell { width: min(1180px, calc(100% - 32px)); margin: 0 auto; padding: 38px 0 60px; }
.footer { padding: 26px 16px 38px; text-align: center; color: var(--muted); font-size: 14px; }
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 8px; font-size: clamp(28px, 4vw, 42px); line-height: 1.2; letter-spacing: -.025em; }
h2 { margin-bottom: 0; font-size: 22px; line-height: 1.3; }
h3 { margin: 28px 0 12px; font-size: 17px; }
.muted { margin-bottom: 0; color: var(--muted); }
.eyebrow { margin-bottom: 7px; color: var(--blue); font-size: 13px; font-weight: 800; letter-spacing: .15em; text-transform: uppercase; }

.dashboard-head, .form-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 28px; margin-bottom: 28px; }
.quick-actions { display: flex; gap: 10px; flex: none; }
.button {
  display: inline-flex;
  min-height: 46px;
  align-items: center;
  justify-content: center;
  padding: 10px 18px;
  border: 1px solid transparent;
  border-radius: 12px;
  font-weight: 750;
  text-decoration: none;
  transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}
.button:hover { transform: translateY(-1px); }
.button.primary { color: #fff; background: var(--blue); box-shadow: 0 7px 18px rgba(38,116,255,.25); }
.button.primary:hover { background: #1765ee; }
.button.secondary { color: var(--navy-2); background: var(--yellow); }
.button.ghost { color: var(--navy); background: #fff; border-color: var(--line); }
.button.full { width: 100%; }
.text-button { padding: 6px 0; border: 0; color: var(--blue); background: transparent; font-weight: 700; }
.text-link, .row-link { color: var(--blue); font-weight: 700; text-decoration: none; }
.text-link { display: inline-block; margin-top: 17px; }

.alert { margin-bottom: 20px; padding: 13px 16px; border-radius: 12px; border: 1px solid; }
.alert.success { color: #0d6752; background: #e7f8f2; border-color: #b8e7d9; }
.alert.error { color: #9e2f2f; background: #fff0f0; border-color: #f1c0c0; }
.alert.warning { margin: 16px 0 0; color: #7a4d00; background: #fff7de; border-color: #f2d886; }
.alert.info { color: #225d98; background: #edf6ff; border-color: #bddcf8; }

.score-grid { display: grid; grid-template-columns: 1.45fr repeat(4, 1fr); gap: 14px; margin-bottom: 18px; }
.score-card, .panel { background: var(--paper); border: 1px solid rgba(18,53,91,.09); border-radius: var(--radius); box-shadow: var(--shadow); }
.score-card { position: relative; overflow: hidden; min-height: 150px; padding: 22px; }
.score-card::after { content: ""; position: absolute; width: 76px; height: 76px; right: -26px; bottom: -30px; border-radius: 50%; background: #eef4fb; }
.total-card { color: #fff; background: var(--navy); }
.total-card::after { background: rgba(255,201,74,.2); width: 120px; height: 120px; }
.card-label { font-weight: 700; color: var(--muted); }
.total-card .card-label { color: rgba(255,255,255,.72); }
.big-number { margin: 4px 0 0; font-size: 52px; line-height: 1.05; font-weight: 900; letter-spacing: -.04em; }
.big-number.blue { color: var(--blue); }
.big-number.orange { color: var(--orange); }
.big-number.teal { color: var(--cyan); }
.card-note { margin-top: 8px; color: var(--muted); font-size: 13px; }
.total-card .card-note { color: rgba(255,255,255,.62); }

.content-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; margin-bottom: 18px; }
.panel { padding: 24px; }
.panel-heading, .section-title-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.panel-heading { margin-bottom: 22px; }
.panel-heading .eyebrow { margin-bottom: 4px; }
.status-pill { display: inline-flex; white-space: nowrap; padding: 5px 9px; border-radius: 999px; color: #5d6876; background: #eef1f5; font-size: 12px; font-weight: 800; }
.success-pill { color: #0b7058; background: #dff5ed; }
.danger-pill { color: #aa3434; background: #ffe7e7; }
.today-score-row { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.today-score-row > div { padding: 16px; }
.today-score-row > div + div { border-left: 1px solid var(--line); }
.today-score-row span { display: block; color: var(--muted); font-size: 13px; }
.today-score-row strong { display: block; margin-top: 2px; font-size: 28px; }
.today-score-row small { margin-left: 3px; font-size: 13px; color: var(--muted); }
.progress-message { margin-top: 15px; padding: 10px 12px; color: #805900; background: #fff6d8; border-radius: 10px; font-weight: 650; }
.progress-message.good { color: #0d6a55; background: #e3f6ef; }
.empty-copy { color: var(--muted); margin: 5px 0 22px; }
.streak-item { display: grid; grid-template-columns: 42px 1fr auto; align-items: center; gap: 13px; padding: 14px 0; border-top: 1px solid var(--line); }
.streak-item:first-of-type { border-top: 0; padding-top: 3px; }
.streak-icon { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; color: #8a5800; background: #fff0b7; font-weight: 900; }
.streak-icon.shield { color: #087364; background: #dff5ef; }
.streak-item strong { display: block; }
.streak-item p { margin: 1px 0 0; color: var(--muted); font-size: 13px; }

.records-panel { margin-top: 18px; }
.table-wrap { overflow-x: auto; margin: 0 -5px; }
table { width: 100%; border-collapse: collapse; }
th { padding: 10px 12px; color: var(--muted); background: #f5f8fb; text-align: left; font-size: 13px; }
td { padding: 14px 12px; border-bottom: 1px solid var(--line); vertical-align: middle; }
tbody tr:last-child td { border-bottom: 0; }
td small { display: block; margin-top: 2px; color: var(--muted); }
.type-badge { display: inline-flex; padding: 4px 8px; border-radius: 8px; color: #176253; background: #e0f5ee; font-size: 12px; font-weight: 800; }
.type-badge.exam { color: #925a00; background: #fff0c5; }
.type-badge.redeem { color: #8b3f78; background: #fae7f5; }
.points-cell { color: var(--blue); font-size: 17px; font-weight: 900; }
.points-cell.spent { color: var(--red); }
.empty-state { padding: 25px; border: 1px dashed #cbd5e1; border-radius: 13px; text-align: center; }
.empty-state p { margin: 5px 0 0; color: var(--muted); }
.detail-score-grid { grid-template-columns: 1.25fr 1fr 1fr; }
.detail-list > div { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 11px 0; border-bottom: 1px solid var(--line); }
.detail-list > div:last-child { border-bottom: 0; }
.detail-list strong { flex: none; }
.signature-record, .record-note { margin-top: 18px; }
.saved-signature { display: grid; place-items: center; min-height: 180px; padding: 12px; border: 2px dashed #c5d0dc; border-radius: 14px; background: #fbfdff; }
.saved-signature img { display: block; max-width: 100%; max-height: 180px; }
.saved-signature-grid .signature-block { padding: 12px; }
.legacy-signature { color: var(--muted); text-align: center; font-size: 14px; }
.signature-meta { margin: 12px 0 0; font-size: 13px; }

.scoring-layout { display: grid; grid-template-columns: minmax(0, 1fr) 300px; align-items: start; gap: 18px; }
.form-main { display: grid; gap: 18px; }
.form-section { padding: 22px; }
.section-title-row { margin-bottom: 18px; }
.section-title-row > div { display: flex; align-items: center; gap: 10px; }
.step-number { display: inline-grid; place-items: center; min-width: 36px; height: 30px; padding: 0 7px; border-radius: 9px; color: #fff; background: var(--navy); font-size: 12px; font-weight: 900; }
.positive-step { background: var(--green); }
.negative-step { background: var(--red); }
.section-score { font-size: 13px; font-weight: 800; }
.positive-text { color: var(--green); }
.negative-text { color: var(--red); }
.date-input { width: 170px; }
input, select, textarea {
  width: 100%;
  min-height: 46px;
  padding: 10px 12px;
  color: var(--ink);
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 10px;
  outline: none;
}
input:focus, select:focus, textarea:focus { border-color: var(--blue); box-shadow: 0 0 0 3px rgba(38,116,255,.13); }
textarea { resize: vertical; }
.checklist { display: grid; gap: 8px; }
.score-row { position: relative; display: flex; align-items: center; gap: 12px; min-height: 58px; padding: 11px 13px; border: 1px solid var(--line); border-radius: 12px; cursor: pointer; transition: border .14s, background .14s; }
.score-row:hover { border-color: #aebccd; background: #fafcff; }
.score-row:has(input:checked) { border-color: #82c9ba; background: #f0fbf7; }
.negative-section .score-row:has(input:checked) { border-color: #e4a4a4; background: #fff5f5; }
.score-row input[type="checkbox"] { position: absolute; width: 1px; height: 1px; opacity: 0; }
.custom-check { flex: none; width: 23px; height: 23px; border: 2px solid #b8c4d1; border-radius: 7px; background: #fff; }
.score-row input:checked + .custom-check { border-color: var(--green); background: var(--green); box-shadow: inset 0 0 0 4px #fff; }
.negative-section .score-row input:checked + .custom-check { border-color: var(--red); background: var(--red); }
.check-copy { flex: 1; }
.check-copy strong { display: block; font-size: 15px; }
.check-copy small { display: block; color: var(--muted); font-size: 12px; }
.point-chip { flex: none; min-width: 44px; padding: 4px 8px; border-radius: 8px; text-align: center; font-size: 13px; font-weight: 900; }
.point-chip.plus { color: #0d725a; background: #dff6ed; }
.point-chip.minus { color: #b03e3e; background: #ffe6e6; }
.point-chip.blocker { color: #a33a32; background: #ffe2df; }
.select-row select { width: 84px; min-height: 38px; padding: 6px 8px; color: var(--green); font-weight: 800; }
.blocker-row { margin-top: 7px; border-style: dashed; }

.score-sticky { position: sticky; top: 98px; padding: 24px; color: #fff; background: var(--navy); border-radius: var(--radius); box-shadow: 0 18px 40px rgba(11,39,69,.18); }
.score-sticky .eyebrow { color: #a9d8ff; }
.live-total { display: flex; align-items: baseline; gap: 5px; margin: 1px 0 14px; }
.live-total span { font-size: 64px; line-height: 1; font-weight: 900; }
.live-total small { color: rgba(255,255,255,.65); }
.score-equation { display: flex; justify-content: space-between; padding: 12px 0; border-top: 1px solid rgba(255,255,255,.15); border-bottom: 1px solid rgba(255,255,255,.15); color: rgba(255,255,255,.72); font-size: 13px; }
.score-equation strong { color: #fff; }
.unlock-box { margin: 14px 0; padding: 10px; border-radius: 10px; color: #765000; background: var(--yellow); text-align: center; font-size: 13px; font-weight: 800; }
.unlock-box.unlocked { color: #0c5c49; background: #bff1df; }
.unlock-box.blocked { color: #8b2d2d; background: #ffd7d7; }
.game-time { display: grid; padding: 13px 0 18px; }
.game-time span { color: rgba(255,255,255,.65); font-size: 13px; }
.game-time strong { font-size: 25px; }
.game-time small { color: rgba(255,255,255,.53); font-size: 11px; }
.tiny-note { margin: 12px 0 0; color: rgba(255,255,255,.5); text-align: center; font-size: 11px; }
.signature-help { margin: -5px 0 12px; color: var(--muted); font-size: 14px; }
.dual-sign-note { flex: none; padding: 5px 9px; color: #8a5800; background: #fff0b7; border-radius: 999px; font-size: 12px; font-weight: 800; }
.dual-signature-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.single-signature-grid { grid-template-columns: minmax(0, 620px); }
.signature-block { min-width: 0; padding: 12px; border: 1px solid #d9e2ec; border-radius: 14px; background: #f9fbfd; }
.child-signature-block { border-color: #ecdcae; background: #fffdf6; }
.signature-label { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 8px; }
.signature-label strong { color: var(--navy); font-size: 15px; }
.child-signature-block .signature-label strong { color: #835700; }
.signature-canvas { display: block; width: 100%; height: 170px; border: 2px dashed #aebaca; border-radius: 13px; background-color: #fbfdff; background-image: linear-gradient(transparent 74%, #e8edf3 75%, transparent 76%); touch-action: none; cursor: crosshair; }
.confirm-row { display: flex; gap: 10px; align-items: flex-start; margin: 14px 0; cursor: pointer; }
.confirm-row input { width: 20px; min-height: 20px; margin: 2px 0 0; accent-color: var(--blue); }
.rules-panel { margin-top: 18px; }
.rules-list { display: grid; grid-template-columns: 1fr 1fr; gap: 9px 30px; margin: 0; padding-left: 24px; }
.rules-list li { padding-left: 4px; color: #3e4d5e; }

.exam-layout { display: grid; grid-template-columns: minmax(0, 1fr) 330px; align-items: start; gap: 18px; }
.exam-form { padding: 24px; }
.field-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.field-grid label, .stack-form label { display: grid; gap: 6px; color: #445265; font-size: 14px; font-weight: 700; }
.wide-field { grid-column: 1 / -1; }
.exam-preview { display: grid; grid-template-columns: 1fr 1fr 1.3fr; margin: 24px 0; border: 1px solid var(--line); border-radius: 14px; overflow: hidden; }
.exam-preview > div { display: grid; padding: 14px 16px; border-right: 1px solid var(--line); }
.exam-preview > div:last-child { border-right: 0; }
.exam-preview span { color: var(--muted); font-size: 13px; }
.exam-preview strong { color: var(--blue); font-size: 25px; }
.exam-preview .exam-preview-total { color: #fff; background: var(--navy); }
.exam-preview-total span { color: rgba(255,255,255,.66); }
.exam-preview-total strong { color: var(--yellow); }
.signature-title { margin-top: 5px; }
.reward-table-panel { position: sticky; top: 98px; }
.reward-list { display: grid; }
.reward-list > div { display: flex; align-items: center; justify-content: space-between; padding: 9px 10px; border-bottom: 1px solid var(--line); }
.reward-list > div:nth-child(odd) { background: #f7f9fc; }
.reward-list strong { color: var(--orange); font-size: 17px; }
.compact-list > div { padding: 7px 10px; font-size: 14px; }

.auth-body { min-height: 100vh; display: grid; place-items: center; padding: 26px 16px; background: radial-gradient(circle at 20% 10%, #235a8c 0, var(--navy-2) 34%, #081c31 100%); }
.auth-card { width: min(460px, 100%); padding: 34px; background: #fff; border-radius: 22px; box-shadow: 0 28px 70px rgba(0,0,0,.28); }
.auth-card.compact { width: min(410px, 100%); }
.auth-card .auth-symbol { margin-bottom: 23px; }
.auth-card h1 { font-size: 32px; }
.auth-card .muted { margin-bottom: 22px; }
.stack-form { display: grid; gap: 15px; }

@media (max-width: 900px) {
  .score-grid { grid-template-columns: 1fr 1fr; }
  .detail-score-grid { grid-template-columns: 1fr 1fr; }
  .content-grid, .scoring-layout, .exam-layout { grid-template-columns: 1fr; }
  .score-sidebar { order: -1; }
  .score-sticky, .reward-table-panel { position: static; }
  .score-sticky { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 24px; }
  .score-sticky .eyebrow, .score-sticky .button, .score-sticky .tiny-note { grid-column: 1 / -1; }
  .live-total { margin-bottom: 0; }
  .unlock-box { align-self: center; }
}

@media (max-width: 680px) {
  .site-header { position: static; }
  .header-inner { width: 100%; min-height: auto; padding: 13px 16px 9px; display: block; }
  .brand { margin-bottom: 10px; }
  .brand small { display: none; }
  .nav { overflow-x: auto; padding-bottom: 3px; }
  .nav a { flex: none; padding: 8px 11px; font-size: 14px; }
  .nav a.logout { margin-left: auto; }
  .page-shell { width: min(100% - 22px, 1180px); padding-top: 24px; }
  .dashboard-head, .form-heading { display: block; }
  .quick-actions { margin-top: 20px; }
  .form-heading .button { margin-top: 18px; }
  .score-grid { grid-template-columns: 1fr 1fr; gap: 10px; }
  .score-card { min-height: 126px; padding: 16px; }
  .total-card { grid-column: 1 / -1; }
  .big-number { font-size: 40px; }
  .content-grid { gap: 12px; }
  .panel { padding: 17px; border-radius: 15px; }
  .today-score-row { grid-template-columns: 1fr; }
  .today-score-row > div + div { border-left: 0; border-top: 1px solid var(--line); }
  .streak-item { grid-template-columns: 38px 1fr; }
  .streak-item .status-pill { grid-column: 2; justify-self: start; }
  .section-title-row { align-items: flex-start; }
  .date-input { width: 145px; }
  .score-row { padding: 10px; }
  .check-copy strong { font-size: 14px; }
  .point-chip { min-width: 40px; padding: 4px 6px; }
  .score-sticky { grid-template-columns: 1fr; }
  .score-sticky .eyebrow, .score-sticky .button, .score-sticky .tiny-note { grid-column: auto; }
  .score-equation { gap: 20px; justify-content: flex-start; }
  .rules-list { grid-template-columns: 1fr; }
  .field-grid, .exam-preview { grid-template-columns: 1fr; }
  .dual-signature-grid { grid-template-columns: 1fr; }
  .wide-field { grid-column: auto; }
  .exam-preview > div { border-right: 0; border-bottom: 1px solid var(--line); }
  .exam-preview > div:last-child { border-bottom: 0; }
  .auth-card { padding: 26px 21px; }
}

@media print {
  .site-header, .footer, .quick-actions, .form-heading .button { display: none; }
  body { background: #fff; }
  .page-shell { width: 100%; padding: 0; }
  .panel, .score-card { box-shadow: none; break-inside: avoid; }
}


/* 游戏时间兑换 */
.available-card { border-color: rgba(38,116,255,.18); }
.redemption-summary { margin-bottom: 18px; }
.redemption-grid { grid-template-columns: minmax(0, 1.2fr) minmax(320px, .8fr); }
.redeem-panel { padding: 22px; }
.rule-checks { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 16px 0 18px; }
.rule-check { display: flex; justify-content: space-between; gap: 12px; padding: 12px 13px; border: 1px solid var(--line); border-radius: 11px; background: #f8fafc; font-size: 14px; }
.rule-check strong { color: var(--navy); }
.rule-check span { color: var(--muted); text-align: right; }
.rule-check.ok { border-color: #b8e7d9; background: #effaf6; }
.rule-check.ok span { color: #0d6752; font-weight: 700; }
.rule-check.no { border-color: #f0caca; background: #fff7f7; }
.rule-check.no span { color: #a54545; font-weight: 700; }
.redeem-form { display: grid; gap: 16px; }
.redeem-form label { display: grid; gap: 6px; color: #445265; font-size: 14px; font-weight: 700; }
.redeem-form small { color: var(--muted); font-weight: 400; }
.redeem-conversion { display: flex; align-items: baseline; justify-content: space-between; padding: 16px; border-radius: 13px; color: #fff; background: var(--navy); }
.redeem-conversion span { color: rgba(255,255,255,.7); }
.redeem-conversion strong { font-size: 27px; }
.redeem-conversion strong span { color: var(--yellow); }
.compact-rules { display: grid; gap: 10px; margin: 0; padding-left: 22px; color: #3e4d5e; }
.redemption-note { margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--line); }
.inline-form { display: inline; }
.danger-text { color: var(--red); }
.cancelled-row { opacity: .58; }
.cancelled-row .points-cell { text-decoration: line-through; }
td small { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; }

@media (max-width: 900px) {
  .redemption-grid { grid-template-columns: 1fr; }
}
@media (max-width: 680px) {
  .rule-checks { grid-template-columns: 1fr; }
}

/* 多账户 + 手机 App 化 */
.account-strip { display:flex; align-items:center; gap:10px; margin-left:auto; }
.role-chip { display:inline-flex; align-items:center; min-height:30px; padding:5px 10px; border-radius:999px; background:#e8f1ff; color:#1f5ca8; font-size:12px; font-weight:800; white-space:nowrap; }
.role-chip.child-chip { background:#e7f8f2; color:#0d6752; }
.profile-switch { display:flex; align-items:center; gap:7px; color:#607085; font-size:12px; font-weight:700; }
.profile-switch select { width:auto; min-width:110px; min-height:34px; padding:5px 30px 5px 9px; border-radius:9px; font-size:13px; font-weight:800; }
.logout-link { color:#607085; font-size:13px; font-weight:700; text-decoration:none; white-space:nowrap; }
.setup-card { width:min(560px,100%); }
.setup-section { display:grid; gap:3px; margin-top:4px; padding:11px 13px; border-radius:12px; color:var(--navy); background:#eef5fc; }
.setup-section small, .stack-form label small { color:var(--muted); font-weight:400; }
.setup-section.child-setup { margin-top:10px; background:#fff8df; }
.app-tip { margin:18px 0 0; color:var(--muted); text-align:center; font-size:12px; line-height:1.6; }
.legacy-login-hint { font-size:13px; line-height:1.6; }
.account-layout { display:grid; grid-template-columns:minmax(0,1.45fr) minmax(300px,.75fr); gap:18px; align-items:start; }
.account-cards { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.account-card { padding:16px; border:1px solid var(--line); border-radius:15px; background:#fbfdff; }
.account-card.account-current { border-color:#8eb8ff; box-shadow:0 0 0 3px rgba(38,116,255,.08); }
.account-card.account-disabled { opacity:.65; background:#f7f7f7; }
.account-card-head { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:12px; }
.account-card-head strong { display:block; color:var(--navy); font-size:18px; }
.account-card-head small { display:block; margin-top:2px; color:var(--muted); }
.account-open { margin-bottom:10px; }
.account-edit { border-top:1px solid var(--line); padding-top:10px; }
.account-edit summary { cursor:pointer; color:var(--blue); font-size:13px; font-weight:800; }
.compact-form { margin-top:12px; gap:10px; }
.account-toggle { margin-top:7px; text-align:right; }
.create-account-panel { position:sticky; top:98px; }

@media (max-width:900px) {
  .account-layout { grid-template-columns:1fr; }
  .create-account-panel { position:static; }
}

@media (max-width:680px) {
  body { padding-bottom:74px; }
  .site-header { position:sticky; top:0; z-index:30; }
  .header-inner { display:grid; grid-template-columns:1fr auto; align-items:center; gap:8px; padding:10px 14px; }
  .brand { margin:0; min-width:0; }
  .brand strong { display:block; max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .account-strip { gap:6px; }
  .role-chip { display:none; }
  .profile-switch span { display:none; }
  .profile-switch select { min-width:96px; max-width:120px; }
  .logout-link { font-size:12px; }
  .nav { position:fixed; left:0; right:0; bottom:0; z-index:50; display:flex; gap:0; overflow-x:auto; padding:7px max(8px, env(safe-area-inset-right)) calc(7px + env(safe-area-inset-bottom)) max(8px, env(safe-area-inset-left)); background:rgba(255,255,255,.97); border-top:1px solid var(--line); box-shadow:0 -8px 24px rgba(18,53,91,.08); backdrop-filter:blur(12px); }
  .nav a { flex:1 0 auto; min-width:72px; padding:8px 9px; border-radius:10px; text-align:center; font-size:12px; }
  .nav a.active { color:#fff; background:var(--blue); }
  .page-shell { padding-bottom:28px; }
  .footer { padding-bottom:18px; }
  .account-cards { grid-template-columns:1fr; }
  .account-card { padding:14px; }
}
.admin-security-panel { margin-bottom:18px; }
.admin-inline-form { display:grid; grid-template-columns:1fr 1fr auto; gap:12px; align-items:end; }
.admin-inline-form label { display:grid; gap:6px; color:#445265; font-size:14px; font-weight:700; }
@media (max-width:680px) { .admin-inline-form { grid-template-columns:1fr; } }


/* 自助注册与邀请码 */
.auth-register-entry { display:flex; align-items:center; justify-content:center; gap:7px; margin-top:16px; padding-top:15px; border-top:1px solid var(--line); color:var(--muted); font-size:13px; }
.auth-register-entry a { color:var(--blue); font-weight:800; text-decoration:none; }
.auth-register-entry a:hover { text-decoration:underline; }
.invite-panel { margin-bottom:18px; }
.invite-setting-form { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:end; }
.invite-setting-form label { display:grid; gap:6px; color:#445265; font-size:14px; font-weight:700; }
.invite-setting-form label small { color:var(--muted); font-weight:400; line-height:1.5; }
.invite-disable-form { margin-top:10px; text-align:right; }
@media (max-width:680px) { .invite-setting-form { grid-template-columns:1fr; } }


/* Parent-child feedback and linked registration */
.register-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:14px 0 18px}.register-tabs a{padding:10px;border:1px solid var(--line);border-radius:11px;text-align:center;text-decoration:none;color:var(--muted);font-weight:800;background:#fff}.register-tabs a.active{color:#fff;background:var(--blue);border-color:var(--blue)}
.link-verify-box{display:grid;gap:10px;padding:14px;border:1px solid #cfe0f0;border-radius:14px;background:#f4f8fc}.link-verify-box>strong{color:var(--navy)}
.feedback-layout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(280px,.75fr);gap:18px;margin-bottom:18px}.feedback-value-options{display:flex;flex-wrap:wrap;gap:8px;margin-top:7px}.feedback-value-chip{position:relative;cursor:pointer}.feedback-value-chip input{position:absolute;opacity:0;pointer-events:none}.feedback-value-chip span{display:grid;place-items:center;min-width:52px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;font-weight:900;background:#fff}.feedback-value-chip.good input:checked+span{background:#e8f7ef;border-color:#78c79d;color:#127647}.feedback-value-chip.bad input:checked+span{background:#fff0ef;border-color:#e8a09a;color:#a72d25}.feedback-rules{display:grid;gap:12px}.feedback-rules p{margin:0;padding:12px;border-radius:11px;background:#f7f9fc}.feedback-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.feedback-summary-card{display:grid;gap:4px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff}.feedback-summary-card strong{font-size:28px}.positive-value{color:#16825a!important;font-weight:900}.negative-value{color:#c14b40!important;font-weight:900}.inline-review-actions{display:flex;gap:8px;align-items:center}.inline-review-actions form{margin:0}.parent-account-list{margin-top:18px}
@media(max-width:760px){.feedback-layout{grid-template-columns:1fr}.register-tabs{grid-template-columns:1fr}.feedback-summary-grid{grid-template-columns:1fr 1fr}}

/* v3.0 - parent review workflow */
.compact-alert{margin-top:12px;padding:10px 12px}.review-status-panel{margin-bottom:20px}.review-item-list{display:grid;gap:10px}.review-item-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:14px 16px;border:1px solid var(--line,#dfe6ee);border-radius:14px;background:#fff}.review-item-row>div:first-child{display:grid;gap:4px}.review-item-row small{display:block;color:var(--muted,#6b7785)}.review-item-row.approved{border-left:4px solid #2f9e78}.review-item-row.pending{border-left:4px solid #d69e2e}.review-item-row.rejected{border-left:4px solid #d64545}.review-item-state{display:flex;align-items:flex-end;gap:8px;flex-direction:column;min-width:160px}.parent-review-day{margin-bottom:18px}.parent-review-day.has-pending{box-shadow:0 0 0 2px rgba(214,158,46,.08)}.parent-review-list{margin-top:8px}.reject-inline-form{display:flex;gap:8px;align-items:center}.reject-inline-form input{min-width:180px;max-width:300px}.button.small{padding:7px 12px;font-size:.9rem}.parent-review-callout{margin:18px 0}.review-item-state .inline-review-actions{justify-content:flex-end}
@media (max-width:720px){.review-item-row{flex-direction:column}.review-item-state{width:100%;min-width:0;align-items:stretch}.reject-inline-form{flex-direction:column;align-items:stretch}.reject-inline-form input{max-width:none;width:100%}.parent-review-day .panel-heading{align-items:flex-start;gap:12px}.parent-review-day .panel-heading form{width:100%}.parent-review-day .panel-heading .button{width:100%}}


/* v3.1 - admin daily record management */
.record-list{display:grid;gap:10px}.record-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:#fff}.record-main{min-width:0;display:grid;gap:5px}.record-title{display:flex;align-items:center;gap:9px;flex-wrap:wrap;color:var(--navy)}.record-meta{color:var(--muted);font-size:13px;line-height:1.55}.record-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.record-actions form{margin:0}
@media(max-width:720px){.record-row{align-items:stretch;flex-direction:column}.record-actions{justify-content:stretch}.record-actions>*{flex:1}.record-actions .button{width:100%}}
