:root {
  --navy-strong: #0f3470;
  --blue-soft: #eef4ff;
  --blue-band: #f3f7fd;
  --green: #1f8a5b;
  --amber: #a76512;
}

button, input, select, textarea { -webkit-tap-highlight-color: transparent; }
button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 3px solid rgba(18, 58, 120, .18);
  outline-offset: 2px;
}

/* Compact home viewport: keep the core task and progress visible without crowding. */
.brand-bar { min-height: 58px; padding-right: 18px; padding-left: 18px; }
.view { padding-right: 18px; padding-left: 18px; }
.hero { padding: 25px 0 15px; }
.hero h1 { max-width: none; font-size: 29px; line-height: 1.16; letter-spacing: -1.2px; white-space: nowrap; }
.hero p { margin-top: 8px; font-size: 14px; }
.search-panel { padding: 14px; border-radius: 15px; }
.search-panel .section-line { margin-bottom: 9px; }
.search-field { min-height: 48px; }
.search-panel .primary-button { min-height: 46px; margin-top: 8px; }
.search-panel .field-hint { margin-top: 7px; line-height: 1.45; }
.prepare-cta { margin-top: 14px; padding: 15px 16px; border-radius: 14px; }
.prepare-cta h2 { font-size: 19px; }
.prepare-cta p { margin-top: 3px; font-size: 11px; }
.prepare-cta button { padding: 9px 11px; }
.consult-entry { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; margin-top: 10px; padding: 13px 15px; border: 1px solid #d7e2f0; border-radius: 13px; background: #f8fbff; color: var(--navy-strong); text-align: left; }
.consult-entry span { display: grid; gap: 3px; }
.consult-entry strong { font-size: 14px; }
.consult-entry small { color: #69798e; font-size: 11px; }
.consult-entry b { flex: 0 0 auto; color: var(--navy); font-size: 13px; }
.progress-card { margin-top: 13px; }
.journey { margin-top: 22px; }
.journey h2 { font-size: 21px; }
.journey > p { margin: 4px 0 11px; font-size: 12px; }
.journey-steps { gap: 5px; }
.journey-steps b { width: 30px; height: 30px; font-size: 12px; }
.journey-steps strong { font-size: 12px; }
.journey-steps small { font-size: 9px; }
.quick-links { margin-top: 21px; }
.quick-links button { min-height: 64px; }
.quick-links strong { font-size: 15px; }
.disclaimer { margin-top: 18px; }

.consult-qr-card { padding: 28px 24px calc(30px + var(--safe)); text-align: center; }
.consult-qr-card h1 { margin: 0 36px 8px; color: var(--navy-strong); font-size: 25px; }
.consult-qr-card > p { margin: 0 auto; max-width: 320px; color: var(--muted); font-size: 13px; line-height: 1.65; }
.consult-qr-frame { display: grid; place-items: center; width: min(286px, 82vw); min-height: 286px; margin: 20px auto 15px; padding: 12px; border: 1px solid #d8e2ef; border-radius: 17px; background: #fff; box-shadow: 0 12px 30px rgba(18, 58, 120, .08); }
.consult-qr-frame img { display: block; width: 100%; height: auto; border-radius: 9px; }
#consult-qr-placeholder { justify-items: center; gap: 9px; color: var(--muted); }
#consult-qr-placeholder:not([hidden]) { display: grid; }
#consult-qr-placeholder span { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 12px; background: var(--red); color: #fff; font-family: serif; font-size: 27px; font-weight: 900; }
#consult-qr-placeholder strong { color: var(--ink); font-size: 15px; }
#consult-qr-placeholder small { font-size: 11px; }
.consult-qr-tip { padding: 10px 12px; border-radius: 10px; background: var(--blue-band); color: #5f7088 !important; font-size: 11px !important; }

.bottom-nav { grid-template-columns: repeat(4, 1fr); min-height: 70px; }
.nav-item { gap: 4px; font-size: 10px; font-weight: 700; }
.nav-item span { display: grid; place-items: center; height: 23px; font-size: 0; }
.nav-item svg { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.9; stroke-linecap: round; stroke-linejoin: round; }
.nav-item.active::after { content: ""; position: absolute; bottom: 8px; width: 18px; height: 2px; border-radius: 2px; background: var(--navy); }
.nav-item { position: relative; }

.toast {
  position: fixed;
  top: calc(14px + env(safe-area-inset-top, 0px));
  left: 50%;
  z-index: 100;
  display: flex;
  align-items: center;
  gap: 10px;
  width: max-content;
  max-width: min(88vw, 360px);
  min-height: 48px;
  padding: 11px 16px;
  border: 1px solid rgba(18, 58, 120, .09);
  border-radius: 14px;
  background: rgba(255, 255, 255, .98);
  box-shadow: 0 12px 36px rgba(22, 38, 64, .18);
  color: var(--ink);
  transform: translate(-50%, -12px);
  opacity: 0;
  transition: opacity .2s ease, transform .2s ease;
}
.toast.show { transform: translate(-50%, 0); opacity: 1; }
.toast > span { display: grid; flex: 0 0 auto; place-items: center; width: 25px; height: 25px; border-radius: 50%; background: var(--green); color: #fff; font-size: 14px; font-weight: 900; }
.toast.error > span { background: var(--red); }
.toast.info > span { background: var(--navy); }
.toast p { margin: 0; font-size: 14px; font-weight: 700; line-height: 1.5; }

.confirm-dialog { width: min(88vw, 360px); padding: 0; border: 0; border-radius: 18px; background: transparent; }
.confirm-dialog::backdrop { background: rgba(10, 24, 45, .46); backdrop-filter: blur(2px); }
.confirm-card { padding: 23px 20px 18px; border-radius: 18px; background: #fff; box-shadow: 0 24px 70px rgba(13, 31, 60, .25); }
.confirm-card h2 { margin: 0; color: var(--ink); font-size: 20px; }
.confirm-card p { margin: 9px 0 21px; color: var(--muted); font-size: 14px; line-height: 1.65; }
.confirm-card > div { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.confirm-card button { min-height: 46px; margin: 0; }

.sheet { max-width: 100vw; overflow: hidden; }
.sheet #sheet-content { max-height: 91vh; overflow: auto; overscroll-behavior: contain; }
.sheet-close { display: grid; place-items: center; line-height: 1; }

.lottery-detail { padding: 26px 18px calc(32px + var(--safe)); }
.lottery-detail > header { padding-right: 38px; }
.lottery-detail h1 { margin: 0; color: var(--navy-strong); font-size: 26px; letter-spacing: -.5px; }
.lottery-note { display: flex; gap: 8px; margin: 9px 0 0; color: #64748b; font-size: 12px; line-height: 1.6; }
.lottery-note::before { content: "i"; display: grid; flex: 0 0 auto; place-items: center; width: 17px; height: 17px; margin-top: 1px; border: 1px solid var(--navy); border-radius: 50%; color: var(--navy); font: 800 11px/1 serif; }
.lottery-years { display: grid; grid-template-columns: repeat(auto-fit, minmax(90px, 1fr)); gap: 8px; margin-top: 22px; }
.lottery-years button { min-height: 44px; border: 1px solid #ccd7e6; border-radius: 10px; background: #fff; color: #40516a; font-size: 16px; font-weight: 800; }
.lottery-years button.active { border-color: var(--navy); background: var(--navy); color: #fff; }
.lottery-districts { display: grid; grid-template-columns: repeat(3, 1fr); margin-top: 12px; padding: 4px; border: 1px solid #e2e8f0; border-radius: 11px; background: #fff; }
.lottery-districts button { min-height: 37px; padding: 0 4px; border: 0; border-radius: 8px; background: transparent; color: #526176; font-size: 12px; font-weight: 700; }
.lottery-districts button.active { background: var(--blue-soft); color: var(--navy); font-weight: 900; }
.lottery-summary { display: grid; grid-template-columns: repeat(3, 1fr); margin: 16px 0 18px; padding: 15px 5px; border-radius: 13px; background: var(--blue-band); }
.lottery-summary div { display: grid; gap: 4px; text-align: center; }
.lottery-summary div + div { border-left: 1px solid #d6e1f1; }
.lottery-summary small { color: #6e7d91; font-size: 10px; }
.lottery-summary b { color: var(--navy); font-size: 18px; font-variant-numeric: tabular-nums; }
.lottery-group { margin-top: 14px; }
.lottery-group-title { display: flex; align-items: center; justify-content: space-between; min-height: 48px; padding: 0 12px; border-radius: 10px 10px 0 0; background: var(--blue-band); color: var(--navy); }
.lottery-group-title strong { font-size: 17px; }
.lottery-group-title small { color: #65758a; font-size: 11px; }
.lottery-table-head, .lottery-data-row { display: grid; grid-template-columns: minmax(0, 1.65fr) .75fr .7fr .72fr; align-items: center; column-gap: 8px; }
.lottery-table-head { min-height: 38px; padding: 0 8px; border-bottom: 1px solid #dfe6ef; color: #8793a3; font-size: 10px; text-align: right; }
.lottery-table-head span:first-child { text-align: left; }
.lottery-data-row { min-height: 57px; padding: 8px; border-bottom: 1px solid #e6ebf1; color: #344256; font-size: 12px; text-align: right; }
.lottery-data-row strong { overflow: hidden; color: var(--ink); font-size: 13px; line-height: 1.35; text-align: left; text-overflow: ellipsis; }
.lottery-data-row span { font-variant-numeric: tabular-nums; }
.lottery-data-row b { color: var(--red); font-size: 15px; font-variant-numeric: tabular-nums; }

.roster-view { padding-bottom: calc(100px + var(--safe)); }
.roster-head { padding-bottom: 13px; }
.roster-head h1 { color: var(--navy-strong); }
.roster-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; margin: 4px 0 18px; }
.roster-steps span { display: grid; justify-items: center; gap: 5px; color: #718096; font-size: 10px; font-weight: 700; }
.roster-steps b { display: grid; place-items: center; width: 28px; height: 28px; border: 1px solid #cbd8ea; border-radius: 50%; background: #fff; color: var(--navy); font-size: 12px; }
.roster-type-tabs { display: grid; grid-template-columns: repeat(3, 1fr); padding: 4px; border: 1px solid #dbe4ef; border-radius: 12px; background: #f7f9fc; }
.roster-type-tabs button { min-height: 38px; border: 0; border-radius: 9px; background: transparent; color: #68788d; font-size: 12px; font-weight: 800; }
.roster-type-tabs button.active { background: #fff; color: var(--navy); box-shadow: 0 3px 10px rgba(18, 58, 120, .09); }
.roster-query-card { display: grid; gap: 13px; margin-top: 12px; padding: 18px 16px; border: 1px solid #dbe4ef; border-radius: 16px; background: #fff; box-shadow: 0 10px 28px rgba(18, 58, 120, .06); }
.roster-query-card label { display: grid; gap: 7px; color: #40516a; font-size: 12px; font-weight: 800; }
.roster-query-card select, .roster-query-card input { width: 100%; min-height: 48px; padding: 0 12px; border: 1px solid #ced9e7; border-radius: 10px; background: #fff; color: var(--ink); font-size: 14px; }
.roster-query-card .primary-button { margin: 0; }
.roster-query-card .field-hint { margin: -2px 0 0; text-align: center; }
.roster-official-entry { display: grid; gap: 7px; padding: 11px 12px; border: 1px solid #d8e4f2; border-radius: 10px; background: #f6f9fd; color: #65768c; font-size: 11px; line-height: 1.55; }
.roster-official-entry[hidden] { display: none; }
.roster-official-entry a { color: var(--navy); font-size: 12px; font-weight: 900; text-decoration: none; }
.roster-risk-note { display: grid; gap: 5px; padding: 12px 13px; border: 1px solid #f0d69c; border-radius: 11px; background: #fffaf0; color: #725624; }
.roster-risk-note strong { font-size: 13px; line-height: 1.4; }
.roster-risk-note span { font-size: 12px; line-height: 1.7; }
.roster-result-card .result-boundary { margin-top: 8px; padding-top: 8px; border-top: 1px solid currentColor; border-top-color: rgba(39, 108, 77, .18); font-weight: 700; }
.roster-result-card.miss .result-boundary { border-top-color: rgba(85, 101, 123, .18); }
.roster-result-card .source-link { display: inline-flex; }
.available-projects { margin-top: 26px; }
.available-projects .section-line { margin-bottom: 8px; }
.available-projects .section-line small { color: var(--muted); }
.roster-project { display: grid; grid-template-columns: 1fr auto; gap: 7px 12px; width: 100%; padding: 15px 2px; border: 0; border-bottom: 1px solid var(--line); background: #fff; color: var(--ink); text-align: left; }
.roster-project strong { font-size: 14px; line-height: 1.5; }
.roster-project small { color: var(--muted); font-size: 11px; }
.roster-project em { grid-row: 1 / 3; grid-column: 2; align-self: center; padding: 5px 8px; border-radius: 7px; background: #edf8f2; color: var(--green); font-size: 10px; font-style: normal; font-weight: 900; }
.roster-empty { margin-top: 12px; padding: 30px 20px; border: 1px dashed #cad7e7; border-radius: 14px; background: #f8fbff; color: var(--muted); font-size: 13px; line-height: 1.7; text-align: center; }
.roster-result-card { margin-top: 16px; padding: 17px; border-radius: 14px; background: #edf8f2; color: #276c4d; }
.roster-result-card.miss { background: #f7f9fc; color: #55657b; }
.roster-result-card h3 { margin: 0 0 6px; font-size: 16px; }
.roster-result-card p { margin: 0; font-size: 12px; line-height: 1.65; }
.roster-result-card .source-link { margin-top: 12px; }
.roster-match { position: relative; overflow: hidden; margin-top: 12px; border: 1px solid #dce5ef; border-radius: 10px; background: #fff; }
.roster-match img { display: block; width: 100%; height: auto; }
.roster-highlight { position: absolute; border: 2px solid var(--red); border-radius: 4px; background: rgba(215, 55, 50, .10); box-shadow: 0 0 0 9999px rgba(16, 31, 54, .08); pointer-events: none; }

@media (max-width: 365px) {
  .hero h1 { font-size: 25px; letter-spacing: -1.3px; }
  .lottery-data-row, .lottery-table-head { grid-template-columns: minmax(0, 1.45fr) .72fr .68fr .72fr; column-gap: 5px; }
  .lottery-data-row { font-size: 11px; }
  .lottery-data-row strong { font-size: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .toast { transition: none; }
}

/* UI/UX Pro Max pass: trustworthy, content-first, compact and touch friendly. */
html { color-scheme: light; }
body { overscroll-behavior-y: contain; -webkit-font-smoothing: antialiased; }
button, a, input, select, textarea { touch-action: manipulation; }
/* 非微信浏览器入口：保留页面拦截，同时提供可直接扫码进入的微信二维码。 */
.wechat-gate { padding: 24px; background: linear-gradient(160deg, #f4f8ff 0%, #fff 52%, #f8fbff 100%); }
.wechat-gate-card { display: grid; justify-items: center; width: min(100%, 360px); padding: 30px 24px 26px; border: 1px solid #dce6f3; border-radius: 22px; background: #fff; box-shadow: 0 18px 42px rgba(18, 58, 120, .12); }
.wechat-gate-card .seal { width: 56px; height: 56px; border-radius: 15px; font-size: 32px; }
.wechat-gate-card h1 { margin: 17px 0 8px; color: var(--navy-strong, var(--navy)); font-size: 24px; }
.wechat-gate-card p { max-width: 280px; margin: 0; color: #63748b; font-size: 14px; line-height: 1.7; }
.site-entry-qr { display: block; width: min(224px, 68vw); height: auto; margin: 20px 0 12px; padding: 10px; border: 1px solid #dbe5f1; border-radius: 14px; background: #fff; }
.wechat-gate-card small { color: #8090a5; font-size: 12px; }
/* iOS/微信在输入控件小于 16px 时会自行放大页面；保持控件字号即可稳定视口。 */
@supports (-webkit-touch-callout: none) {
  input, select, textarea { font-size: 16px !important; }
}
button:disabled { cursor: wait; opacity: .68; box-shadow: none !important; }
.text-button { min-height: 44px; padding: 0 4px; }
.brand { min-height: 44px; }
.hero h1 { font-size: clamp(22px, 7.4vw, 29px); line-height: 1.18; letter-spacing: -1px; }
.hero p { color: #5f6f84; line-height: 1.55; }
.section-line strong { color: var(--navy-strong); }
.search-field { transition: border-color .18s ease, box-shadow .18s ease; }
.search-field:focus-within { border-color: var(--navy); box-shadow: 0 0 0 3px rgba(18,58,120,.09); }
.search-field > svg { flex: 0 0 auto; width: 19px; height: 19px; fill: none; stroke: var(--navy); stroke-width: 1.9; stroke-linecap: round; }
.search-field input { min-height: 44px; }
.primary-button, .secondary-button { transition: transform .16s ease, box-shadow .16s ease, background-color .16s ease; }
.primary-button:active, .secondary-button:active, .prepare-cta button:active, .quick-links button:active { transform: scale(.985); }
.prepare-cta button { min-height: 44px; }
.journey-steps div { padding-right: 2px; }
.journey-steps b { background: #fff; box-shadow: 0 3px 9px rgba(18,58,120,.07); }
.journey-steps strong { color: #273a54; }
.journey-steps small { color: #69798e; font-size: 10px; }
.quick-links button { border-radius: 0; }
.quick-links span { border-radius: 9px; background: #f5f8fd; }
.quick-links span svg { width: 19px; height: 19px; fill: none; stroke: currentColor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.field-hint, .disclaimer { font-size: 12px; }
.filter-chip { min-height: 44px; padding: 0 15px; }
.school-row { min-height: 82px; }
.school-row:active { background: #f7f9fc; }
.sheet-close { top: 10px; right: 10px; width: 44px; height: 44px; font-size: 26px; }
.detail h1, .path-form h1, .result-card h1 { margin-right: 48px; }
.path-form label, .detail label { font-size: 14px; }
.path-form input, .path-form select, .path-form textarea, .detail select { min-height: 48px; }
.path-form .check { min-height: 44px; align-items: center; }
.path-form .check input { flex: 0 0 auto; width: 20px; min-height: 20px; }
.guide-intro { margin-right: 42px !important; padding: 11px 12px; border-radius: 10px; background: var(--blue-band); color: #52657f !important; }
.material-groups { display: grid; gap: 10px; margin-top: 12px; }
.material-group { overflow: hidden; border: 1px solid #dbe4ef; border-radius: 12px; background: #fff; }
.material-group summary { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 50px; padding: 0 13px; color: var(--navy-strong); cursor: pointer; list-style: none; font-size: 14px; font-weight: 900; }
.material-group summary::-webkit-details-marker { display: none; }
.material-group summary::after { content: "+"; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--blue-soft); color: var(--navy); font-size: 17px; }
.material-group[open] summary { border-bottom: 1px solid #e2e8f0; background: #f7faff; }
.material-group[open] summary::after { content: "−"; }
.material-group summary small { margin-left: auto; color: #77869a; font-size: 10px; font-weight: 700; }
.material-group > div { padding: 0 13px; }
.material-group .check-row:first-child { border-top: 0; }
.check-row { grid-template-columns: 64px 1fr; padding: 12px 0; }
.check-row b { padding-top: 2px; font-size: 11px; }
.check-row span > strong { display: block; color: #27384f; font-size: 14px; }
.check-row span > small { font-size: 12px; line-height: 1.65; }
.button-pair { gap: 10px; }
.lottery-districts button { min-height: 44px; }
.lottery-summary small { font-size: 11px; }
.lottery-table-head { font-size: 11px; }
.lottery-data-row { min-height: 60px; }
.lottery-data-row strong { overflow: visible; font-size: 13px; line-height: 1.45; text-overflow: clip; white-space: normal; word-break: break-word; }
.roster-steps span { font-size: 11px; }
.roster-type-tabs button { min-height: 44px; }
.roster-project { min-height: 68px; }
.roster-project small, .roster-official-entry { font-size: 12px; }
.roster-project em { font-size: 11px; }

/* 入学准备：政策判断项合并为移动端直选卡片 */
.path-form-simple { gap: 0; padding-top: 22px; }
.path-form-head { padding: 0 2px 18px; border-bottom: 1px solid #e7edf5; }
.path-form-head > span { display: inline-flex; min-height: 28px; align-items: center; padding: 0 10px; border-radius: 999px; background: #edf4ff; color: #174785; font-size: 12px; font-weight: 800; }
.path-form-simple .path-form-head h1 { max-width: none; margin: 10px 36px 5px 0; font-size: 25px; }
.path-form-head p { margin: 0; color: #66758a; font-size: 13px; line-height: 1.65; }
.choice-group { min-width: 0; margin: 0; padding: 18px 0; border: 0; border-bottom: 1px solid #e7edf5; }
.choice-group legend { width: 100%; margin: 0 0 11px; padding: 0; color: #263a56; font-size: 15px; font-weight: 800; }
.choice-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 9px; }
.choice-card { position: relative; display: block!important; min-width: 0; cursor: pointer; }
.choice-card input { position: absolute; width: 1px!important; min-height: 1px!important; opacity: 0; pointer-events: none; }
.choice-card span { display: grid; align-content: center; min-height: 50px; padding: 10px 12px; border: 1px solid #ccd8e7; border-radius: 11px; background: #fff; color: #334761; transition: border-color .18s ease,background .18s ease,box-shadow .18s ease; }
.choice-card strong { font-size: 13px; line-height: 1.4; }
.choice-card small { display: block; margin-top: 4px; color: #738198; font-size: 11px; font-weight: 400; line-height: 1.5; }
.choice-card input:checked + span { border-color: #174785; background: #edf4ff; color: #123a78; box-shadow: inset 0 0 0 1px #174785; }
.choice-card input:checked + span::after { position: absolute; top: 9px; right: 9px; display: grid; width: 18px; height: 18px; place-items: center; border-radius: 50%; background: #174785; color: #fff; content: "✓"; font-size: 11px; }
.choice-card input:focus-visible + span { outline: 3px solid rgba(23,71,133,.22); outline-offset: 2px; }
.choice-wide .choice-grid { grid-template-columns: 1fr; }
.choice-wide .choice-card span { min-height: 58px; padding-right: 38px; }
.path-form-simple .consent { margin-top: 16px; }
.path-form-simple > .primary-button { margin-top: 14px; }
.choice-card:active span { background: #f3f7fc; }
.phone-capture { margin-top: 16px; padding: 15px; border: 1px solid #c9d8ea; border-radius: 12px; background: #f7faff; }
.phone-capture .phone-input { gap: 7px; color: #263a56; font-size: 14px; font-weight: 800; }
.phone-capture .phone-input input { min-height: 48px; border-color: #bfcfe2; background: #fff; font-size: 16px; letter-spacing: .3px; }
.phone-capture .phone-input small { color: #6b7b91; font-size: 11px; font-weight: 400; line-height: 1.55; }
.phone-capture-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.phone-capture-head b { color: #24583d; font-size: 14px; }
.phone-capture-head p { margin: 4px 0 0; color: #5f7368; font-size: 12px; }
.phone-capture-head button { min-width: 64px; min-height: 44px; border: 1px solid #b9d5c5; border-radius: 9px; background: #fff; color: #276446; font-size: 13px; font-weight: 800; }
.phone-capture.is-saved { border-color: #bdd8c8; background: #f1faf5; }
.phone-capture.is-saved .phone-input { margin-top: 13px; padding-top: 13px; border-top: 1px dashed #bdd8c8; }
.phone-notice { margin-top: 12px; padding: 12px 13px; border: 1px solid #d8e1ec; border-radius: 11px; background: #f8fafd; color: #526277; }
.phone-notice summary { color: #263a56; font-size: 13px; font-weight: 800; cursor: pointer; }
.phone-notice p { margin: 9px 0 0; color: #66768a; font-size: 11px; font-weight: 400; line-height: 1.7; }
.phone-consent-check { display: flex !important; align-items: flex-start; gap: 8px !important; margin-top: 10px; color: #4d5e74 !important; font-size: 12px !important; line-height: 1.55; }
.phone-consent-check input { flex: 0 0 auto; width: 17px !important; min-height: 17px !important; margin: 1px 0 0; }
.phone-collection-form > p { padding-right: 34px; }
.phone-collection-form .phone-capture { padding: 0; border: 0; background: transparent; }
.phone-collection-form .phone-input input { width: 100%; min-height: 50px; padding: 0 13px; border: 1px solid #c5d2e2; border-radius: 10px; }
.lead-card { margin-top: 18px; padding: 17px !important; border: 1px solid #cbd9eb !important; border-radius: 14px; background: linear-gradient(145deg,#f7faff,#eef5ff); }
.lead-card > span { display: inline-block; margin-bottom: 7px; padding: 4px 7px; border-radius: 6px; background: #fff; color: var(--navy); font-size: 10px; font-weight: 800; }
.lead-card h3 { margin-bottom: 5px !important; color: var(--navy-strong); }
.lead-card p { margin: 0; color: #617188 !important; font-size: 12px !important; line-height: 1.65 !important; }
.lead-card .primary-button { margin-top: 12px; }
.phone-manage { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 14px; border: 1px solid #bdd8c8; border-radius: 11px; background: #f1faf5; }
.phone-manage div { display: grid; gap: 4px; }
.phone-manage b { color: #24583d; font-size: 13px; }
.phone-manage span { color: #5f7368; font-size: 12px; }
.phone-manage button { min-width: 62px; min-height: 40px; border: 1px solid #b9d5c5; border-radius: 9px; background: #fff; color: #276446; font-size: 13px; font-weight: 800; }
.admission-timeline { margin-top: 22px; padding: 15px 14px 7px; border: 1px solid #d5e1ef; border-radius: 15px; background: linear-gradient(145deg,#f8fbff,#fff); }
.admission-timeline-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; padding-bottom: 10px; }
.admission-timeline h2 { margin: 0; color: #263a56; font-size: 15px; line-height: 1.45; }
.admission-timeline h2 small { color: #78879a; font-size: 10px; font-weight: 400; }
.admission-timeline-head p { margin: 4px 0 0; color: #708096; font-size: 11px; line-height: 1.55; }
.timeline-status-badge { flex: 0 0 auto; padding: 4px 7px; border-radius: 999px; background: #edf2f7; color: #65758a; font-size: 10px; font-weight: 800; white-space: nowrap; }
.admission-timeline-list { position: relative; display: grid; gap: 0; margin: 0; padding: 0; list-style: none; }
.admission-timeline-list::before { position: absolute; top: 13px; bottom: 20px; left: 28px; width: 1px; background: #d4dfeb; content: ''; }
.admission-timeline-list li { position: relative; display: grid; grid-template-columns: 48px minmax(0,1fr) auto; align-items: center; gap: 10px; min-height: 48px; }
.admission-timeline-list time { color: #6d7d91; font-size: 11px; font-weight: 800; text-align: right; }
.admission-timeline-list li > div { min-width: 0; padding: 7px 0; }
.admission-timeline-list strong,.admission-timeline-list small { display: block; }
.admission-timeline-list strong { color: #394b63; font-size: 12px; line-height: 1.45; }
.admission-timeline-list small { margin-top: 2px; color: #8a98a9; font-size: 10px; line-height: 1.4; }
.admission-timeline-list em { position: relative; z-index: 1; display: grid; width: 8px; height: 8px; margin-right: 2px; border: 2px solid #aab8c8; border-radius: 50%; background: #fff; font-style: normal; }

@media (max-width: 350px) {
  .view { padding-right: 14px; padding-left: 14px; }
  .brand-bar { padding-right: 14px; padding-left: 14px; }
  .hero h1 { font-size: 21px; letter-spacing: -1.1px; }
  .journey-steps { grid-template-columns: repeat(2, 1fr); gap: 12px; }
  .journey-steps div { grid-template-columns: 30px 1fr; align-items: center; column-gap: 8px; }
  .journey-steps b { grid-row: 1 / 3; }
  .journey-steps strong { font-size: 12px; }
  .journey-steps small { font-size: 11px; }
  .lottery-table-head, .lottery-data-row { grid-template-columns: minmax(0,1.65fr) .68fr .64fr .68fr; column-gap: 4px; padding-right: 4px; padding-left: 4px; }
  .choice-grid { grid-template-columns: 1fr; }
  .admission-timeline { padding-right: 12px; padding-left: 12px; }
  .admission-timeline-list li { grid-template-columns: 45px minmax(0,1fr) auto; gap: 8px; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
}

/* 2026 admissions timeline: compact cards, no loose connector lines */
.admission-timeline { padding: 17px 16px 16px; border: 1px solid #dce6f2; border-radius: 18px; background: #f8fbff; }
.admission-timeline-head { align-items: center; padding-bottom: 14px; }
.admission-timeline h2 { color: #173d78; font-size: 16px; }
.admission-timeline h2 small { display: inline-block; margin-left: 5px; padding: 3px 6px; border-radius: 5px; background: #e8f1ff; color: #2865ad; font-size: 10px; font-weight: 800; }
.admission-timeline-head p { max-width: 270px; margin-top: 5px; line-height: 1.55; }
.timeline-status-badge { padding: 5px 8px; background: #e8f1ff; color: #2865ad; }
.admission-timeline-list { gap: 9px; }
.admission-timeline-list::before { display: none; }
.admission-timeline-list li { grid-template-columns: 74px minmax(0, 1fr); gap: 11px; min-height: 0; padding: 12px 12px; border: 1px solid #e0e9f4; border-radius: 13px; background: #fff; box-shadow: 0 3px 10px rgba(30, 72, 125, .04); }
.admission-timeline-list time { align-self: start; min-width: 0; padding: 4px 6px; border-radius: 6px; background: #f0f5fb; color: #2865ad; font-size: 11px; text-align: center; white-space: nowrap; }
.admission-timeline-list li > div { padding: 0; }
.admission-timeline-list strong { color: #253c5c; font-size: 13px; line-height: 1.5; }
.admission-timeline-list small { margin-top: 3px; color: #7b8ba0; font-size: 10px; }
.admission-timeline-list em { display: none; }
@media(max-width:365px) { .admission-timeline-list li { grid-template-columns: 66px minmax(0, 1fr); gap: 8px; padding-right: 9px; padding-left: 9px; } }


/* 2025 lottery reference card */
.lottery-reference { margin-top: 12px; padding: 14px; border: 1px solid #eadfce; border-radius: 15px; background: #fffaf3; }
.lottery-reference-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.lottery-reference h2 { margin: 0; color: #684d2d; font-size: 14px; }
.lottery-reference-head p { margin: 4px 0 0; color: #9a8060; font-size: 11px; line-height: 1.45; }
.lottery-reference-head span { flex: 0 0 auto; padding: 3px 7px; border-radius: 5px; background: #f5e7d1; color: #9a6d35; font-size: 10px; font-weight: 800; }
.lottery-reference-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 11px; }
.lottery-reference-grid div { padding: 9px 10px; border-radius: 9px; background: #fff; }
.lottery-reference-grid b, .lottery-reference-grid small { display: block; }
.lottery-reference-grid b { color: #7f5728; font-size: 14px; }
.lottery-reference-grid small { margin-top: 3px; color: #8e7b65; font-size: 10px; line-height: 1.4; }
.lottery-reference-note { margin: 9px 0 0; color: #a18e76; font-size: 10px; line-height: 1.5; }


/* Expanded lottery reference details */
.lottery-reference-detail-grid { grid-template-columns: 1fr; }
.lottery-reference-detail-grid div { padding: 9px 10px; border: 1px solid #f1e7d9; }
.lottery-reference-detail-grid b { font-size: 12px; }


/* Make the saved-progress entry clear without adding a duplicate card */
.brand-bar #saved-entry { position: relative; min-height: 36px; padding: 0 12px; border: 1px solid #b9cde8; border-radius: 10px; background: #eef5ff; color: #164884; font-size: 13px; font-weight: 800; box-shadow: 0 3px 8px rgba(18,58,120,.08); }
.brand-bar #saved-entry::after { display: block; margin-top: 1px; color: #6880a0; content: '查看已保存方案'; font-size: 9px; font-weight: 500; line-height: 1.1; }


/* V2-inspired home visual blocks */
.v2-home-hero { position: relative; margin: 0 -20px; padding: 28px 20px 32px; overflow: hidden; }
.v2-hero-bg { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(238,245,255,.72), rgba(255,249,240,0)); }
.v2-hero-bg::after { position: absolute; right: -20px; bottom: 0; left: -20px; height: 100px; background: #edf4fc; opacity: .72; clip-path: polygon(0 82%, 12% 45%, 23% 70%, 35% 28%, 48% 67%, 60% 24%, 72% 58%, 84% 18%, 100% 52%, 100% 100%, 0 100%); content: ''; }
.v2-hero-content { position: relative; z-index: 1; }
.v2-home-hero h1 { color: #164884; font-size: 29px; font-weight: 800; }
.v2-home-hero p { margin-top: 8px; }
.v2-search-panel { position: relative; z-index: 2; margin-top: -64px; padding: 20px; border-radius: 18px; box-shadow: 0 12px 28px rgba(18,58,120,.10); }
.v2-search-panel .search-field { background: #fbfdff; }
.v2-search-panel .field-hint { font-size: 11px; }
.v2-home-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 16px; }
.v2-action-card { display: flex; min-height: 116px; align-items: center; justify-content: space-between; padding: 16px; border-radius: 16px; box-shadow: 0 8px 20px rgba(18,58,120,.07); }
.v2-prepare-card { background: linear-gradient(135deg,#fff,#fff8f0); }
.v2-consult-card { background: linear-gradient(135deg,#fff,#f0f7ff); }
.v2-action-card h3 { margin: 0; color: #253c5c; font-size: 15px; }
.v2-action-card p { margin: 6px 0 9px; color: #718096; font-size: 11px; }
.v2-action-card > span { font-size: 34px; opacity: .8; }
.v2-small-button { min-height: 32px; padding: 0 12px; border: 0; border-radius: 16px; font-size: 11px; font-weight: 800; }
.v2-orange-button { background: #f45a2a; color: #fff; }
.v2-blue-button { background: #e8f1ff; color: #2865ad; }
@media(max-width:365px) { .v2-home-actions { gap: 8px; } .v2-action-card { padding: 12px; } .v2-action-card > span { font-size: 28px; } }

/* Ensure V2 home cards win over compact legacy rules */
.v2-home-hero { display: block; }
.v2-home-hero h1 { max-width: none; margin: 0 0 8px; white-space: nowrap; }
.v2-home-hero p { color: #718096; font-size: 14px; }
.v2-home-actions .v2-action-card { display: flex; }
.v2-home-actions .v2-small-button { width: auto; min-height: 32px; margin: 0; }


/* Match V2 inline search control */
.v2-search-box { display: flex; align-items: center; gap: 8px; padding: 4px; border: 1px solid #d7e2ef; border-radius: 12px; background: #fbfdff; }
.v2-search-field { display: flex; min-width: 0; flex: 1; align-items: center; gap: 9px; padding: 0 8px; }
.v2-search-field svg { flex: 0 0 auto; width: 19px; height: 19px; fill: none; stroke: #2865ad; stroke-width: 1.9; }
.v2-search-field input { width: 100%; min-width: 0; min-height: 42px; border: 0; outline: 0; background: transparent; color: var(--ink); font-size: 14px; }
.v2-inline-search-button { flex: 0 0 auto; min-height: 40px; padding: 0 15px; border: 0; border-radius: 10px; background: #f45a2a; color: #fff; font-size: 13px; font-weight: 800; box-shadow: 0 4px 10px rgba(244,90,42,.22); }
.v2-inline-search-button:active { transform: translateY(1px); }
@media(max-width:365px) { .v2-inline-search-button { padding: 0 11px; font-size: 12px; } .v2-search-field { padding: 0 5px; } }

.lottery-reference-inline { margin: 6px 0 8px; padding: 10px 12px; border-color: #eadfce; border-radius: 12px; background: #fffaf3; }
.lottery-reference-inline .lottery-reference-head { align-items: center; gap: 8px; }
.lottery-reference-inline h2 { font-size: 12px; color: #684d2d; }
.lottery-reference-inline .lottery-reference-head p { margin-top: 2px; font-size: 10px; color: #9a8060; }
.lottery-reference-inline .lottery-reference-head p strong { color: #8a5d28; font-weight: 800; }
.lottery-reference-inline .lottery-reference-head span { padding: 2px 6px; font-size: 9px; }
.lottery-reference-compact { display: flex; align-items: center; gap: 5px; margin-top: 8px; padding: 7px 8px; border: 1px solid #f1e7d9; border-radius: 9px; background: #fff; }
.lottery-reference-compact span { flex: 1 1 0; min-width: 0; text-align: center; }
.lottery-reference-compact b, .lottery-reference-compact em { display: block; font-style: normal; white-space: nowrap; }
.lottery-reference-compact b { color: #76552f; font-size: 10px; font-weight: 800; }
.lottery-reference-compact em { margin-top: 2px; color: #a18e76; font-size: 9px; }
.lottery-reference-compact i { flex: 0 0 auto; color: #d1b48e; font-size: 13px; font-style: normal; }
.lottery-reference-inline .lottery-reference-note { margin: 6px 0 0; font-size: 9px; line-height: 1.35; }
@media (max-width: 380px) { .lottery-reference-compact { gap: 2px; padding-left: 4px; padding-right: 4px; } .lottery-reference-compact b { font-size: 9px; } .lottery-reference-compact em { font-size: 8px; } .lottery-reference-compact i { font-size: 11px; } }

.lottery-reference-inline .lottery-reference-head { min-height: 17px; }
.lottery-reference-inline .lottery-reference-head span { min-width: 30px; text-align: center; }
.lottery-reference-compact { align-items: stretch; gap: 0; padding: 6px 5px; }
.lottery-reference-compact span { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; }
.lottery-reference-compact b, .lottery-reference-compact em { line-height: 1.2; }
.lottery-reference-compact i { display: flex; align-items: center; justify-content: center; width: 16px; }
.lottery-reference-compact b { font-size: 10px; }
.lottery-reference-compact em { margin-top: 0; font-size: 9px; }
.lottery-reference-inline .lottery-reference-note { margin-top: 5px; }

.lottery-reference-compact { display: grid; grid-template-columns: minmax(0,1fr) 14px minmax(0,1fr) 14px minmax(0,1fr) 14px minmax(0,1fr); align-items: stretch; column-gap: 0; }
.lottery-reference-compact span { width: auto; min-width: 0; }
.lottery-reference-compact i { width: 14px; }
.lottery-reference-compact b, .lottery-reference-compact em { text-align: center; }

.lottery-reference-compact { grid-template-columns: repeat(4, minmax(0,1fr)); gap: 0; padding: 7px 4px; }
.lottery-reference-compact span { display: flex; min-height: 30px; align-items: center; justify-content: center; }
.lottery-reference-compact b, .lottery-reference-compact em { text-align: center; }
.lottery-reference-compact b { font-size: 10px; }
.lottery-reference-compact em { font-size: 9px; }
.lottery-reference-compact i { display: none; }

.lottery-reference-inline { margin: 6px 0 8px; padding: 8px 12px; border: 0; border-top: 1px solid #f0e2cf; border-bottom: 1px solid #f0e2cf; border-radius: 0; background: transparent; }
.lottery-reference-inline .lottery-reference-head { display: flex; align-items: center; justify-content: space-between; min-height: 17px; }
.lottery-reference-inline .lottery-reference-head h2 { margin: 0; font-size: 11px; color: #76552f; }
.lottery-reference-inline .lottery-reference-head span { padding: 0; color: #a18e76; background: transparent; font-size: 9px; font-weight: 500; }
.lottery-reference-text { margin-top: 5px; }
.lottery-reference-text p { display: flex; align-items: baseline; gap: 8px; margin: 0; padding: 2px 0; color: #76552f; font-size: 10px; line-height: 1.35; }
.lottery-reference-text b { flex: 0 0 82px; color: #8a642f; font-size: 10px; font-weight: 500; }
.lottery-reference-text span { color: #8e7b65; }
.lottery-reference-inline .lottery-reference-note { margin: 4px 0 0; color: #a18e76; font-size: 9px; line-height: 1.3; }

/* 全页地图视图 */
.map-view { padding: 0 !important; }
.map-fullpage-canvas {
  position: fixed;
  inset: 0 0 calc(66px + var(--safe));
  z-index: 1;
  width: 100%;
  background: #edf2f7;
}
.map-fullpage-loading {
  position: fixed;
  inset: 0 0 calc(66px + var(--safe));
  z-index: 2;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 8px;
  padding: 20px;
  background: rgba(255,255,255,.92);
  text-align: center;
}
.map-fullpage-loading[hidden] { display: none; }
.map-fullpage-loading strong { font-size: 16px; color: var(--navy); }
.map-fullpage-loading small { color: var(--muted); font-size: 12px; }
.map-fullpage-toolbar {
  position: fixed;
  top: 8px;
  left: 12px;
  right: 12px;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 12px;
  border-radius: 22px;
  background: rgba(255,255,255,.94);
  box-shadow: 0 4px 16px rgba(0,0,0,.1);
  font-size: 13px;
  color: var(--navy);
}
.map-fullpage-toolbar[hidden] { display: none; }
.map-fullpage-toolbar button,
.map-fullpage-selection button {
  min-height: 34px;
  padding: 0 14px;
  border: 1px solid var(--navy);
  border-radius: 17px;
  background: #fff;
  color: var(--navy);
  font-size: 12px;
  font-weight: 700;
}
.map-fullpage-selection {
  position: fixed;
  bottom: calc(106px + var(--safe));
  left: 12px;
  right: 12px;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 10px 14px;
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 6px 20px rgba(0,0,0,.12);
}
.map-fullpage-selection[hidden] { display: none; }
.map-fullpage-selection strong { font-size: 15px; color: var(--ink); }
.map-fullpage-selection span { font-size: 11px; color: var(--muted); }
.map-fullpage-legend {
  position: fixed;
  bottom: calc(72px + var(--safe));
  left: auto;
  right: 12px;
  z-index: 3;
  display: flex;
  gap: 10px;
  padding: 6px 10px;
  border-radius: 12px;
  background: rgba(255,255,255,.92);
  box-shadow: 0 2px 10px rgba(0,0,0,.08);
  font-size: 11px;
  color: var(--navy);
}
.map-fullpage-legend[hidden] { display: none; }

/* 地图页搜索框 */
.map-search-bar {
  position: fixed;
  top: 12px;
  left: 12px;
  right: 12px;
  z-index: 10;
  display: flex;
  align-items: center;
  gap: 8px;
  height: 44px;
  padding: 0 14px;
  border-radius: 22px;
  background: rgba(255,255,255,.96);
  box-shadow: 0 4px 18px rgba(0,0,0,.12);
  backdrop-filter: blur(10px);
}
.map-search-bar svg {
  flex: 0 0 18px;
  width: 18px;
  height: 18px;
  stroke: var(--navy);
  stroke-width: 2;
  fill: none;
}
.map-search-bar input {
  width: 100%;
  border: 0;
  outline: 0;
  font-size: 15px;
  color: var(--ink);
  background: transparent;
}
.map-search-bar input::placeholder { color: var(--muted); }

/* 底部导航美化 */
.bottom-nav {
  min-height: 64px;
  padding: 6px 0 calc(6px + var(--safe));
  border-top: 1px solid #e8ecf1;
  background: rgba(255,255,255,.98);
  backdrop-filter: blur(10px);
}
.nav-item {
  gap: 3px;
  padding: 2px 0;
  font-size: 10px;
  color: #97a3b6;
  transition: color .18s;
}
.nav-item span { height: 22px; display: grid; place-items: center; }
.nav-item svg { width: 22px; height: 22px; }
.nav-item.active { color: var(--navy); }
.nav-item.active::after {
  content: "";
  position: absolute;
  bottom: -2px;
  width: 16px;
  height: 2px;
  border-radius: 2px;
  background: var(--navy);
}

.map-fullpage-legend .legend-boundary { display: block; flex: 0 0 auto; width: 14px; height: 14px; border-radius: 3px; background: rgba(18,58,120,.2); border: 2px solid #123a78; }
.map-fullpage-legend .legend-school { display: block; flex: 0 0 auto; width: 12px; height: 12px; border-radius: 50%; background: #d73732; }
.map-fullpage-legend span { color: #97a3b6; font-size: 10px; display: flex; align-items: center; gap: 4px; }
.legend-disclaimer { color: #d73732; font-size: 12px; font-weight: 700; margin-left: 6px; white-space: nowrap; background: #fff0f0; padding: 2px 8px; border-radius: 4px; border: 1px solid #ffcdd2; }


/* Prominent disclaimer bar */
.disclaimer-bar { margin: 10px 12px; padding: 10px 14px; border: 1px solid #ffcdd2; border-radius: 10px; background: #fff0f0; color: #b71c1c; font-size: 13px; line-height: 1.5; }
.disclaimer-bar strong { color: #d32f2f; }

/* Bottom disclaimer - make it visible */
.disclaimer { margin-top: 14px; padding: 12px 16px; border-top: 2px solid #ffcdd2; background: #fffaf5; color: #c62828; font-size: 13px; font-weight: 500; line-height: 1.55; border-radius: 0 0 12px 12px; }

/* Map legend disclaimer always visible */
.map-fullpage-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 6px 12px; background: rgba(255,245,240,.95); border-top: 1px solid #ffcdd2; }
.legend-disclaimer { display: inline-block; color: #d32f2f; font-size: 12px; font-weight: 700; background: #fff0f0; padding: 3px 10px; border-radius: 4px; border: 1px solid #ffcdd2; }


/* Bottom navigation - clean 3-item layout */
.bottom-nav { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; padding: 6px 8px; border-top: 1px solid #e8edf2; background: #fff; }
.bottom-nav .nav-item { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; padding: 6px 4px; border: 0; background: transparent; color: #8e99a8; font-size: 11px; font-weight: 400; cursor: pointer; }
.bottom-nav .nav-item.active { color: #123a78; font-weight: 500; }
.bottom-nav .nav-item .nav-icon { width: 22px; height: 22px; display: flex; align-items: center; justify-content: center; }
.bottom-nav .nav-item .nav-icon svg { width: 20px; height: 20px; stroke: currentColor; stroke-width: 1.5; fill: none; }


/* Hide brand bar on map view */
.app-map-active .brand-bar { display: none !important; }

/* Home page entry to the full school-map view. */
.map-entry-card{display:flex;align-items:center;gap:12px;width:100%;min-height:70px;padding:13px 15px;border:1px solid #d4e3f1;border-radius:12px;background:#f7fbff;color:#123a78;text-decoration:none;box-sizing:border-box;box-shadow:0 4px 12px rgba(18,58,120,.06)}
.map-entry-card:active{background:#edf6ff;transform:translateY(1px)}
.map-entry-icon{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:10px;background:#e5f1ff;color:#1765a6;font-weight:800;font-size:18px;line-height:1}
.map-entry-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:4px;text-align:left}
.map-entry-copy strong{font-size:16px;line-height:1.25;color:#123a78}
.map-entry-copy small{font-size:12px;line-height:1.35;color:#6c8198}
.map-entry-arrow{flex:0 0 auto;font-size:28px;line-height:1;color:#1765a6}

.school-groups-section,.region-groups-section{margin-top:18px}.school-groups-section .section-line,.region-groups-section .section-line{display:flex;align-items:baseline;justify-content:space-between;margin:0 2px 9px}.school-groups-section .section-line small{color:var(--muted)}.school-group-card{cursor:default}.school-group-card button{margin-top:10px;width:100%}

.sheet.group-qr-sheet{width:min(calc(100% - 36px),360px);max-height:calc(100vh - 72px);margin:auto;border-radius:14px;box-shadow:0 18px 48px rgba(15,40,80,.28)}.group-qr-sheet #sheet-content{max-height:calc(100vh - 72px);padding:0}.group-qr-dialog{padding:28px 22px 25px;text-align:center}.group-qr-dialog h1{margin:0 36px 8px;font-size:20px;line-height:1.4;color:var(--navy)}.group-qr-dialog p{margin:0;color:var(--muted);font-size:13px;line-height:1.65}.group-qr-image{display:block;width:min(260px,100%);margin:20px auto 0;border-radius:6px;background:#fff}

/* Compact school-group directory */
#groups-view{padding:18px 18px calc(92px + var(--safe))}.groups-page-intro{padding:18px 18px 17px;border:1px solid #dce5f0;border-radius:18px;background:#fff;box-shadow:0 8px 20px rgba(17,50,97,.05)}.groups-page-intro span{display:block;color:#577094;font-size:11px;font-weight:700}.groups-page-intro h1{margin:6px 0 3px;color:#102b58;font-size:24px;line-height:1.25}.groups-page-intro p{margin:0;color:#728197;font-size:12px}.school-groups-section,.region-groups-section{margin-top:18px}.groups-section-heading{display:flex;align-items:center;justify-content:space-between;margin:0 1px 10px;color:#173d78}.groups-section-heading strong{font-size:17px}.groups-section-heading small{color:#7b8ba1;font-size:11px}.school-groups-section .groups-grid{display:block;padding:0}.school-group-district{margin:0 0 17px}.school-group-district h2{margin:0 0 8px;color:#32578f;font-size:14px}.school-group-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.school-group-entry{position:relative;display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:2px 7px;min-height:58px;padding:10px 41px 10px 10px;border:1px solid #d9e3ef;border-radius:8px;background:#fff;color:#173d78;text-align:left;overflow:hidden}.school-group-entry:active{transform:scale(.985);background:#f7faff}.school-group-icon{grid-row:1 / span 2;display:grid;place-items:center;width:21px;height:21px;border-radius:50%;background:#edf3fc;color:#41679b;font-size:10px;font-weight:800}.school-group-entry strong{overflow:hidden;font-size:13px;line-height:1.25;text-overflow:ellipsis;white-space:nowrap}.school-group-entry small{overflow:hidden;color:#8492a6;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.school-group-entry em{position:absolute;top:8px;right:7px;padding:3px 5px;border-radius:4px;background:#e8effa;color:#315b9b;font-size:9px;font-style:normal;font-weight:800}.region-groups-section .groups-grid{padding:0;gap:9px}.region-groups-section .group-card{min-height:86px;padding:14px;border-radius:8px}.region-groups-section .group-card strong{font-size:15px}.sheet.group-qr-sheet{width:min(calc(100% - 58px),320px);border-radius:20px;background:#fff}.group-qr-dialog{padding:36px 20px 25px}.group-qr-dialog h1{margin:0 28px 14px;font-size:19px;color:#172b4d}.group-qr-dialog p{font-size:12px;color:#8b99ab}.group-qr-image{width:min(248px,100%);margin:18px auto 0;border-radius:12px;box-shadow:0 2px 13px rgba(16,40,74,.07)}.group-qr-sheet .sheet-close{top:14px;right:14px;width:30px;height:30px;background:#f0f4fa;font-size:23px}
/* School group readability */
.school-group-list{gap:10px}.school-group-entry{grid-template-columns:26px minmax(0,1fr);gap:3px 8px;min-height:68px;padding:11px 46px 11px 11px;border-color:#ccdced;box-shadow:0 1px 2px rgba(24,63,116,.025)}.school-group-icon{width:24px;height:24px;font-size:11px}.school-group-entry strong{font-size:14px;line-height:1.35;font-weight:800;color:#173d78}.school-group-entry small{font-size:11px;line-height:1.3;color:#71839a}.school-group-entry em{top:50%;right:9px;transform:translateY(-50%);padding:5px 6px;border-radius:5px;font-size:10px}.region-groups-section .groups-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.region-group-entry{position:relative;display:grid;grid-template-columns:26px minmax(0,1fr);gap:3px 8px;align-items:center;min-height:68px;padding:11px 46px 11px 11px;border:1px solid #ccdced;border-radius:8px;background:#fff;color:#173d78;text-align:left;box-shadow:0 1px 2px rgba(24,63,116,.025)}.region-group-entry:active{transform:scale(.985);background:#f7faff}.region-group-icon{grid-row:1 / span 2;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:#edf3fc;color:#41679b;font-size:11px;font-weight:800}.region-group-entry strong{overflow:hidden;font-size:14px;line-height:1.35;font-weight:800;color:#173d78;text-overflow:ellipsis;white-space:nowrap}.region-group-entry small{overflow:hidden;color:#71839a;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.region-group-entry em{position:absolute;top:50%;right:9px;transform:translateY(-50%);padding:5px 6px;border-radius:5px;background:#e8effa;color:#315b9b;font-size:10px;font-style:normal;font-weight:800}@media(max-width:370px){.school-group-list,.region-groups-section .groups-grid{grid-template-columns:1fr}.school-group-entry,.region-group-entry{min-height:62px}}
/* Single-column compact group list for mobile readability. */
.school-group-list{display:grid!important;grid-template-columns:1fr!important;gap:7px!important}.school-group-district{margin-bottom:14px}.school-group-district h2{margin-bottom:7px}.school-group-entry{grid-template-columns:28px minmax(0,1fr)!important;gap:3px 9px!important;min-height:64px!important;padding:9px 54px 9px 12px!important;border-radius:7px!important}.school-group-icon{width:25px!important;height:25px!important;font-size:11px!important}.school-group-entry strong{display:-webkit-box!important;overflow:hidden!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important;white-space:normal!important;text-overflow:clip!important;font-size:14px!important;line-height:1.3!important}.school-group-entry small{font-size:11px!important;line-height:1.2!important}.school-group-entry em{right:10px!important;min-width:32px!important;padding:5px 6px!important;text-align:center!important}.region-groups-section .groups-grid{display:grid!important;grid-template-columns:1fr!important;gap:7px!important}.region-group-entry{grid-template-columns:28px minmax(0,1fr)!important;gap:3px 9px!important;min-height:62px!important;padding:9px 54px 9px 12px!important;border-radius:7px!important}.region-group-icon{width:25px!important;height:25px!important;font-size:11px!important}.region-group-entry strong{font-size:14px!important;line-height:1.3!important}.region-group-entry em{right:10px!important;min-width:32px!important;padding:5px 6px!important;text-align:center!important}
/* Keep school-group rows compact: school name is the only text label. */
.school-group-entry{min-height:50px!important;grid-template-columns:25px minmax(0,1fr)!important;align-items:center!important;gap:0 8px!important;padding:8px 54px 8px 12px!important}.school-group-entry small{display:none!important}.school-group-entry strong{-webkit-line-clamp:1!important;font-size:14px!important;line-height:1.35!important}.school-group-icon{grid-row:1!important;width:23px!important;height:23px!important}.school-group-entry em{top:50%!important;right:10px!important;transform:translateY(-50%)!important}
.school-group-district{margin:0 0 10px!important;border:1px solid #d7e3ef;border-radius:8px;background:#fff;overflow:hidden}
.school-group-district summary{display:flex;align-items:center;min-height:42px;padding:0 12px;cursor:pointer;list-style:none;color:#173d78;user-select:none}
.school-group-district summary::-webkit-details-marker{display:none}
.school-group-district summary strong{font-size:14px;font-weight:800}
.school-group-district summary small{margin-left:7px;color:#8392a6;font-size:11px}
.school-group-district summary::after{content:"+";margin-left:auto;color:#41679b;font-size:20px;font-weight:400;line-height:1}
.school-group-district[open] summary{border-bottom:1px solid #e4edf5}
.school-group-district[open] summary::after{content:"-"}
.school-group-district .school-group-list{padding:7px!important;gap:6px!important}
/* Direct roster project entry: a single shareable query card with the project title. */
.roster-direct-view{min-height:calc(100vh - 63px);padding-top:24px;background:linear-gradient(155deg,#f1f4ff 0%,#fff 72%)}
.roster-direct-view .roster-query-shell{max-width:560px;margin:0 auto;padding:24px 28px 28px;border:1px solid rgba(255,255,255,.85);border-radius:32px;background:rgba(255,255,255,.94);box-shadow:0 22px 50px rgba(77,93,221,.14)}
.roster-direct-view .roster-head{padding:0 6px 22px;text-align:center}
.roster-direct-view .roster-page-school{display:block;margin:0 0 8px;color:#5b57ed;font-size:13px;font-weight:900;line-height:1.4}
.roster-direct-view .roster-head h1{margin:0;color:#10192f;font-size:25px;font-weight:900;letter-spacing:-.4px;line-height:1.3}
.roster-direct-view .roster-head p{margin:10px 0 0;color:#65758f;font-size:13px;line-height:1.6}
.roster-direct-view .roster-steps,.roster-direct-view .roster-type-tabs,.roster-direct-view .roster-project-selector{display:none}
.roster-direct-view .roster-query-card{grid-template-columns:minmax(0,1fr) 112px;gap:16px;margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.roster-direct-view .roster-official-entry{grid-column:1/-1;grid-row:auto;order:4;gap:7px;padding:13px 14px;border-color:#e1e7f0;border-radius:15px;background:#fafbfd;text-align:center}
.roster-direct-view .roster-official-entry span{color:#7a899d;font-size:11px;line-height:1.5}
.roster-direct-view .roster-official-button{display:flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border:1px solid #cfd9e8;border-radius:12px;background:#fff;color:#405779;font-size:14px;font-weight:800;text-decoration:none}
.roster-direct-view .roster-risk-note{grid-column:1/-1;grid-row:auto;order:1;gap:6px;padding:17px 16px;border-color:#f7d777;border-radius:18px;background:#fffaf0;color:#814015;text-align:left}
.roster-direct-view .roster-risk-note strong{font-size:15px}
.roster-direct-view .roster-risk-note span{font-size:12px;line-height:1.65}
.roster-direct-view .roster-name-field{grid-column:1;align-self:end;order:2;color:#a1acbd;font-size:0}
.roster-direct-view .roster-name-field input{min-height:52px;padding:0 15px;border-color:#dce4ef;border-radius:16px;font-size:15px;color:#172438}
.roster-direct-view .roster-name-field input::placeholder{color:#a1acbd}
.roster-direct-view .roster-submit-button{grid-column:2;align-self:end;order:2;width:112px;min-height:52px;margin:0;border:0;border-radius:16px;background:#4d46eb;color:#fff;font-size:16px;box-shadow:0 8px 16px rgba(77,70,235,.2)}
.roster-direct-view .field-hint{grid-column:1/-1;order:3;margin:0;color:#7c8ba1;text-align:center;font-size:11px}
.roster-direct-view .available-projects{display:none}
@media(max-width:430px){.roster-direct-view{padding:15px 12px calc(84px + var(--safe))}.roster-direct-view .roster-query-shell{padding:19px 14px 20px;border-radius:24px}.roster-direct-view .roster-head{padding-bottom:17px}.roster-direct-view .roster-page-school{font-size:12px}.roster-direct-view .roster-head h1{font-size:23px;letter-spacing:-.2px}.roster-direct-view .roster-head p{margin-top:8px;font-size:12px}.roster-direct-view .roster-query-card{grid-template-columns:minmax(0,1fr) 88px;gap:12px}.roster-direct-view .roster-official-entry{padding:12px 11px}.roster-direct-view .roster-official-button{min-height:42px;font-size:13px;border-radius:11px}.roster-direct-view .roster-risk-note{padding:14px 13px}.roster-direct-view .roster-risk-note strong{font-size:14px}.roster-direct-view .roster-risk-note span{font-size:11px}.roster-direct-view .roster-name-field input{min-height:48px;font-size:14px}.roster-direct-view .roster-submit-button{width:88px;min-height:48px;font-size:15px;border-radius:14px}}
/* Compact map entry aligned with the enrollment guide card. */
.v2-search-panel{display:none!important}
.home-tool-entry{display:flex;align-items:center;gap:12px;width:100%;min-height:78px;margin-top:12px;padding:12px 14px;border:1px solid #b8d9ee;border-radius:12px;box-sizing:border-box;text-decoration:none}
.home-map-entry{background:#eef8ff;color:#123a78}
.home-tool-entry:active{transform:translateY(1px);filter:brightness(.98)}
.home-tool-icon{display:grid;place-items:center;flex:0 0 38px;width:38px;height:38px;border-radius:50%;background:#e1f1ff;color:#1765a6;font-size:18px;font-weight:800}
.home-tool-copy{min-width:0;flex:1}
.home-tool-copy strong{display:block;color:#123a78;font-size:16px;line-height:1.35}
.home-tool-copy p{margin:3px 0 0;color:#607a99;font-size:12px;line-height:1.35}
.home-tool-button{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;min-height:42px;padding:0 12px;border-radius:10px;background:#123a78;color:#fff;font-size:14px;font-weight:800;white-space:nowrap}
.home-tool-button b{font-size:20px;font-weight:400;line-height:1}
@media(max-width:365px){.home-tool-entry{gap:9px;padding:10px}.home-tool-copy strong{font-size:14px}.home-tool-copy p{font-size:11px}.home-tool-button{min-height:38px;padding:0 9px;font-size:12px}}
