@charset "UTF-8";
/* Crowd B · 准格. Approved source: product CSS 4e274bdc; source order retained. */
:root {
  color-scheme:light;
  --bg:#F2F4FA;
  --surface:#FFFFFF;
  --ink:#202E48;
  --muted:#56627A;
  --border:#D2D9E7;
  --primary:#373C88;
  --primary-soft:#EBECFA;
  --success:var(--raw-success);
  --danger:var(--raw-danger);
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
  font-size:14px;
  color:var(--ink);
  background:var(--bg);
  --primary-hover:#282D6A;
  --accent:#B7C8F0;
  --nav-bg:#1C2944;
  --radius:6px;
  --control-radius:4px;
  --table-size:13px;
  --raw-white:#FFFFFF;
  --raw-success:#24623F;
  --raw-success-bg:#EDF5ED;
  --raw-warning:#82500F;
  --raw-warning-bg:#FBF2E0;
  --raw-danger:#A52E38;
  --raw-danger-bg:#FCEDF0;
  --raw-info:#305D8B;
  --raw-info-bg:#EAF1FA;
  --raw-neutral:#56627A;
  --raw-neutral-bg:#EDF0F4;
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-6:24px;
  --space-8:32px;
  --button-bg:var(--primary);
  --input-border:var(--border);
  --card-radius:var(--radius);
  --button-radius:var(--control-radius);
  line-height:1.6;
  --table-head:#EDF0F7;
  --row-border:#E4E8F0;
  --welcome:#E8ECF8;
  --editor-bg:#F0F3FB;
  --badge-radius:3px;
  --auth-pattern:none;
  --auth-shadow:0 12px 40px #10224012;
}

body {
  margin:0;
}

a {
  color:var(--primary);
  text-decoration:none;
}

button,input,select,textarea {
  font:inherit;
}

button,a,input,select,textarea {
  outline-offset:3px;
}

button {
  cursor:pointer;
}

button:disabled {
  cursor:not-allowed;
  opacity:.5;
}

h1,h2,h3,p {
  margin:0;
}

h2 {
  line-height:1.5;
}

small {
  font-size:12px;
}

.muted,.subtitle {
  color:var(--muted);
}

.subtitle {
  margin-top:7px;
}

.eyebrow {
  margin-bottom:8px;
}

.brand {
  display:flex;
  align-items:center;
  color:var(--ink);
}

.brand-mark {
  place-items:center;
  font-size:26px;
  font-weight:800;
}

.brand small {
  display:block;
  font-weight:500;
}

.app-shell {
  display:flex;
  min-height:100vh;
}

.sidebar {
  flex:0 0 224px;
  border-right:1px solid var(--border);
  position:fixed;
  inset:0 auto 0 0;
  overflow-y:auto;
  display:flex;
  flex-direction:column;
}

.sidebar nav>a,.nav-group a {
  display:block;
}

.sidebar a.active {
  background:var(--primary-soft);
  color:var(--primary);
  font-weight:650;
}

.sidebar nav a:hover {
  background:#f2f5fb;
}

.app-main {
  display:flex;
  flex-direction:column;
  min-height:100vh;
}

.topbar {
  border-bottom:1px solid var(--border);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}

.topbar-label {
  font-size:12px;
  color:#8c97a7;
}

.language-switch {display:inline-flex;gap:6px;align-items:center;font-size:13px}
/* 登录卡片内的切语入口只在窄视口（auth-intro 隐藏时）出现 */
.language-switch--card {display:none}
@media(max-width:760px) {.language-switch--card {display:inline-flex;margin:0 0 12px}}
.language-switch a {color:var(--muted);text-decoration:none}
.language-switch a.active {color:var(--primary);font-weight:600}
.account-menu {
  display:flex;
  align-items:center;
  gap:12px;
  font-size:12px;
  color:#647187;
}

.account-menu form {
  border-left:1px solid var(--border);
  padding-left:12px;
}

.avatar {
  display:grid;
  place-items:center;
  border-radius:50%;
}

.button-quiet {
  border:0;
  background:none;
  padding:6px;
}

.button-quiet:hover {
  color:var(--primary);
}

.content {
  width:100%;
  margin:0 auto;
  flex:1;
}

.page-heading {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
}

.page-footer {
  color:#a3adbd;
  border-top:1px solid var(--border);
  display:flex;
  justify-content:space-between;
}

.panel {
  border:1px solid var(--border);
  overflow:hidden;
}

.panel-heading {
  display:flex;
  justify-content:space-between;
  align-items:center;
  border-bottom:1px solid var(--border);
  gap:20px;
}

.panel>.role-list,.panel>p {
  margin:22px 24px;
}

.panel-heading .muted {
  font-size:12px;
}

.table-wrap {
  overflow-x:auto;
}

table {
  width:100%;
  border-collapse:collapse;
  text-align:left;
  white-space:nowrap;
}

th {
  border-bottom:1px solid var(--border);
}

td {
  border-bottom:1px solid #f0f3f7;
  vertical-align:middle;
}

tbody tr:last-child td {
  border-bottom:0;
}

.cell-meta {
  display:block;
}

.cell-wrap {
  white-space:normal;
  overflow-wrap:anywhere;
}

.amount {
  font-weight:650;
}

.badge {
  display:inline-flex;
  align-items:center;
  gap:5px;
  white-space:nowrap;
}

.text-success {
  color:var(--success);
}

.text-link {
  color:var(--primary);
}

.button {
  display:inline-flex;
  justify-content:center;
  align-items:center;
  border:1px solid transparent;
  white-space:nowrap;
}

.button-block {
  width:100%;
  padding:13px;
}

.actions {
  display:flex;
  gap:9px;
  align-items:center;
  flex-wrap:wrap;
}

.alert {
  border:1px solid #dce6fb;
  margin-bottom:20px;
}

.empty-state {
  text-align:center;
  white-space:normal;
}

.empty-state strong {
  display:block;
  margin-bottom:6px;
}

.empty-state:before {
  content:"";
  display:block;
  width:36px;
  height:27px;
  border:2px solid #d8e2f1;
  border-radius:5px;
  margin:0 auto 16px;
}

.pagination {
  border-top:1px solid var(--border);
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
}

.pagination>div {
  display:flex;
  gap:10px;
  align-items:center;
}

.pagination form {
  display:flex;
  gap:8px;
  align-items:center;
}

.pagination select {
  width:64px;
  padding:5px;
}

.page-number {
  padding:0 5px;
}

label {
  display:block;
  line-height:1.5;
}

input,select,textarea {
  display:block;
  width:100%;
}

input[type=checkbox],input[type=radio] {
  display:inline-block;
  padding:0;
}

input[type=hidden] {
  display:none;
}

textarea {
  resize:vertical;
  min-height:96px;
}

.form-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
}

.form-grid .full {
  grid-column:1/-1;
}

.form-field small {
  display:block;
  margin-top:7px;
}

.check-row {
  display:flex;
  gap:18px;
  align-items:center;
  flex-wrap:wrap;
}

.check-row label {
  display:flex;
  gap:7px;
  align-items:center;
  margin:0;
}

.form-footer {
  border-top:1px solid var(--border);
  display:flex;
  justify-content:flex-end;
  gap:12px;
}

.form-inline {
  display:flex;
  align-items:flex-end;
  gap:13px;
  flex-wrap:wrap;
}

.form-inline label {
  margin-bottom:7px;
}

.role-list {
  display:flex;
  gap:8px;
  flex-wrap:wrap;
}

.welcome-card {
  border:1px solid #dfe7fb;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin-bottom:24px;
}

.welcome-card p:not(.eyebrow) {
  color:#8798b3;
  margin-top:8px;
}

.entry-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
}

.entry-card {
  background:white;
  border:1px solid var(--border);
  color:var(--ink);
  transition:border-color .15s,box-shadow .15s;
}

.entry-icon {
  display:grid;
  place-items:center;
}

.detail-grid {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}

.detail-grid dt {
  margin-bottom:9px;
}

.detail-grid dd {
  margin:0;
  overflow-wrap:anywhere;
}

.section-link {
  display:inline-block;
  font-size:12px;
  margin-bottom:18px;
}

.review-item {
  padding:20px 24px;
  border-bottom:1px solid var(--border);
}

.review-item:last-child {
  border-bottom:0;
}

.review-item p {
  margin-top:10px;
  white-space:pre-wrap;
  overflow-wrap:anywhere;
}

.review-meta {
  display:flex;
  gap:18px;
  align-items:center;
}

.progress {
  border-radius:5px;
  overflow:hidden;
  width:90px;
  margin-top:7px;
}

.progress span {
  display:block;
  height:100%;
}

.auth-page {
  display:flex;
  flex-direction:column;
  min-height:100vh;
}

.auth-layout {
  display:grid;
  align-items:center;
  margin:auto;
}

.intro-steps {
  display:flex;
}

.login-card {
  background:white;
  border:1px solid #e5ebf4;
}

.input-action {
  display:flex;
}

.input-action input {
  min-width:0;
}

.input-action button {
  padding:10px 12px;
  font-size:11px;
}

.login-help {
  text-align:center;
  border-top:1px solid var(--border);
  margin-top:24px;
}

.auth-footer {
  text-align:center;
  padding:25px;
}

.entry {
  width:520px;
  margin:15vh auto;
  background:white;
  padding:40px;
  border:1px solid var(--border);
  border-radius:12px;
}

.notice {
  margin-top:24px;
  padding:16px;
}

.danger-note {
  color:var(--danger);
}

details {
  border-top:1px solid var(--border);
}

summary {
  cursor:pointer;
}

details>.panel-body {
  padding-top:5px;
}

.account-edit-grid {
  display:grid;
}

.account-edit-grid h3 {
  margin-bottom:18px;
}

.account-edit-grid .check-row {
  min-height:55px;
  margin-bottom:16px;
}

.account-edit-grid button {
  margin-top:15px;
}

.row-editor td {
  padding:0;
}

.row-editor details {
  border-top:0;
}

.panel-heading .form-inline input {
  width:220px;
}

.error-card {
  width:600px;
  margin:16vh auto;
  background:white;
  border:1px solid var(--border);
  border-radius:14px;
  padding:45px;
}

.error-card .subtitle {
  line-height:1.9;
}

body {
  min-width:1120px;
}

* {
  box-sizing:border-box;
}

a,button,input,select,textarea {
  outline-offset:3px;
}

:focus-visible {
  outline:3px solid var(--primary)!important;
  outline-offset:3px!important;
}

input:focus,select:focus,textarea:focus {
  border-color:var(--primary);
  outline:2px solid var(--primary-soft);
}

::selection {
  background:var(--primary-soft);
  color:var(--ink);
}

h1 {
  font-size:28px;
  line-height:1.35;
  letter-spacing:-.65px;
  font-weight:700;
}

h2 {
  font-size:18px;
  font-weight:650;
}

h3 {
  font-size:15px;
}

p {
  line-height:1.75;
}

small,.eyebrow,.nav-group p,.sidebar-note,.page-footer,.cell-meta,.mono,.badge,.review-meta, .detail-grid dt,.form-field small,.entry-card p,.text-link,.pagination,.panel-heading .muted, .button,.login-help,.auth-footer,.topbar-label,.topbar .account-menu,.button-quiet, .panel-heading .form-inline input,.panel-heading .form-inline .button, .account-edit-grid button,.row-editor summary {
  font-size:13px;
}

.muted,.subtitle,.topbar-label,.account-menu,.cell-meta,.review-meta,.detail-grid dt, .form-field small,.entry-card p,.sidebar-note,.auth-footer,.login-help,.page-footer, .welcome-card p:not(.eyebrow),.panel-heading .muted {
  color:var(--muted);
}

.eyebrow {
  color:var(--primary);
  letter-spacing:1.6px;
  font-size:11px;
  font-weight:700;
}

.brand {
  font-size:26px;
  font-weight:750;
  letter-spacing:-1px;
  gap:12px;
  line-height:1.15;
}

.brand small {
  font-size:11px;
  letter-spacing:1.6px;
  line-height:1.5;
  color:var(--muted);
  margin-top:6px;
}

.brand-mark {
  background:none;
  color:var(--primary);
  border-radius:0;
  width:40px;
  height:40px;
  display:flex;
  flex:none;
}

.brand-mark svg {
  width:100%;
  height:100%;
  display:block;
}

.sidebar {
  padding:32px 18px 24px;
  border-color:var(--border);
}

.sidebar .brand {
  padding:0 10px 36px;
}

.sidebar nav>a,.nav-group a {
  font-size:14px;
  padding:11px 14px;
  margin:4px 0;
  border-radius:var(--control-radius);
  color:var(--muted);
}

.sidebar nav a.active {
  font-weight:650;
}

.nav-group {
  margin-top:24px;
}

.nav-group p {
  color:var(--muted);
  letter-spacing:1px;
  padding:0 14px 6px;
  font-size:11px;
}

.sidebar-note {
  border-top:1px solid var(--border);
  padding:20px 10px 0;
  margin-top:auto;
  line-height:1.8;
  font-size:12px;
}

.topbar {
  padding:0 36px;
  background:var(--surface);
  border-color:var(--border);
}

.topbar-label:before {
  content:"";
  display:inline-block;
  width:7px;
  height:7px;
  background:var(--primary);
  border-radius:50%;
  margin-right:9px;
}

.avatar {
  background:var(--primary-soft);
  color:var(--primary);
  width:32px;
  height:32px;
  font-size:13px;
}

.button-quiet {
  color:var(--muted);
  font-size:13px;
}

.content {
  padding:32px 36px 42px;
  max-width:1520px;
}

.page-heading {
  margin-bottom:24px;
}

.subtitle {
  font-size:14px;
  line-height:1.7;
}

.page-footer {
  padding:20px 36px;
  border-color:var(--border);
  font-size:12px;
}

.panel {
  background:var(--surface);
  border-color:var(--border);
  border-radius:var(--card-radius);
  margin-bottom:24px;
  box-shadow:none;
}

.panel-heading {
  border-color:var(--border);
}

.panel-heading h2 {
  font-size:17px;
}

.panel-body {
  padding:24px;
}

.panel-heading .form-inline input {
  min-height:40px;
  font-size:13px;
}

.panel-heading .form-inline .button {
  height:40px;
  font-size:13px;
}

table {
  font-size:var(--table-size);
  font-variant-numeric:tabular-nums;
  line-height:1.5;
}

th {
  background:var(--table-head);
  color:var(--muted);
  font-size:12px;
  font-weight:650;
  border-color:var(--border);
}

td {
  border-color:var(--row-border);
  font-size:var(--table-size);
}

tbody tr:hover {
  background:var(--primary-soft);
}

.cell-main {
  color:var(--ink);
  font-weight:600;
}

.cell-meta {
  margin-top:4px;
  font-size:12px;
  color:var(--muted);
}

.mono {
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size:12px;
  color:var(--ink);
  font-variant-numeric:tabular-nums;
}

td.mono,td .mono {
  font-size:var(--table-size);
}

.cell-wrap {
  min-width:150px;
  max-width:360px;
  line-height:1.65;
}

.amount {
  font-size:15px;
  font-variant-numeric:tabular-nums;
}

.badge {
  padding:5px 9px;
  background:var(--raw-neutral-bg);
  color:var(--raw-neutral);
  border:1px solid transparent;
  font-size:12px;
  border-radius:var(--badge-radius);
  font-weight:550;
  line-height:1.4;
}

.badge.status-success,.badge:has(.text-success) {
  color:var(--raw-success);
  background:var(--raw-success-bg);
}

.badge.status-warning {
  color:var(--raw-warning);
  background:var(--raw-warning-bg);
}

.badge.status-info {
  color:var(--raw-info);
  background:var(--raw-info-bg);
}

.badge.status-danger {
  color:var(--raw-danger);
  background:var(--raw-danger-bg);
}

.badge .text-success {
  color:inherit;
}

.badge.status-success:before {
  content:"✓";
  font-weight:700;
}

.badge.status-warning:before {
  content:"!";
  font-weight:750;
}

.badge.status-info:before {
  content:"·";
  font-weight:750;
}

.button {
  border-radius:var(--button-radius);
  padding:10px 16px;
  font-size:14px;
  min-height:40px;
  gap:8px;
  font-weight:600;
  line-height:1.4;
  transition:background-color .16s,border-color .16s;
}

.button-primary {
  background:var(--button-bg);
  color:var(--raw-white);
}

.button-primary:hover {
  background:var(--primary-hover);
}

.button-secondary {
  background:var(--surface);
  color:var(--ink);
  border-color:var(--border);
}

.button-secondary:hover {
  background:var(--primary-soft);
  border-color:var(--primary);
}

.button-danger {
  background:var(--raw-danger-bg);
  border-color:#E7BAC0;
  color:var(--raw-danger);
}

.button-block {
  min-height:48px;
  font-size:15px;
  margin-top:20px;
}

.button:disabled {
  opacity:1;
  background:var(--raw-neutral-bg);
  color:#667180;
  border-color:var(--border);
}

.alert {
  border-radius:var(--control-radius);
  background:var(--raw-info-bg);
  color:var(--raw-info);
  border-color:#C8D7E9;
  font-size:14px;
  line-height:1.7;
  padding:14px 16px;
}

.alert-success {
  color:var(--raw-success);
  background:var(--raw-success-bg);
  border-color:#BED8C4;
}

.alert-error {
  color:var(--raw-danger);
  background:var(--raw-danger-bg);
  border-color:#E7BAC0;
}

label {
  font-size:14px;
  color:var(--ink);
  font-weight:550;
  margin-bottom:8px;
}

input,select,textarea {
  font-size:14px;
  min-height:44px;
  padding:10px 12px;
  border:1px solid var(--input-border);
  border-radius:var(--control-radius);
  color:var(--ink);
  background:var(--surface);
}

input::placeholder,textarea::placeholder {
  color:#68756F;
  opacity:1;
}

input[type=checkbox],input[type=radio] {
  width:16px;
  min-height:16px;
  accent-color:var(--primary);
}

.check-row label {
  font-size:13px;
  font-weight:500;
}

.form-field small {
  color:var(--muted);
  font-size:12px;
  line-height:1.7;
}

.form-grid {
  gap:20px;
}

.form-footer {
  margin-top:24px;
  padding-top:20px;
  border-color:var(--border);
}

.form-inline .button {
  height:44px;
}

.form-inline .form-field {
  min-width:180px;
}

.pagination {
  color:var(--muted);
  border-color:var(--border);
  padding:16px 24px;
  font-size:12px;
}

.pagination .button {
  font-size:12px;
  padding:6px 12px;
  min-height:34px;
}

.pagination select {
  min-height:34px;
}

.empty-state {
  color:var(--muted);
  font-size:14px;
  padding:56px 24px!important;
}

.empty-state strong {
  color:var(--ink);
  font-size:16px;
}

.empty-state:before {
  border-color:var(--border);
  box-shadow:inset 0 7px var(--primary-soft);
}

.welcome-card {
  background:var(--welcome);
  border-color:var(--border);
  border-radius:var(--card-radius);
  padding:28px 32px;
  position:relative;
  overflow:hidden;
}

.welcome-card h2 {
  font-size:22px;
  line-height:1.5;
  overflow-wrap:anywhere;
}

.welcome-card p:not(.eyebrow) {
  font-size:14px;
}

.welcome-card .badge {
  background:var(--surface);
  color:var(--primary);
  border-color:var(--border);
}

.entry-grid {
  gap:20px;
}

.entry-card {
  border-color:var(--border);
  border-radius:var(--card-radius);
}

.entry-card:hover {
  box-shadow:0 4px 14px #00000006;
  border-color:var(--primary);
}

.entry-icon {
  background:var(--primary-soft);
  color:var(--primary);
  font-size:18px;
  font-weight:700;
  width:44px;
  height:44px;
  margin-bottom:22px;
}

.entry-icon svg {
  width:24px;
  height:24px;
  display:block;
}

.entry-card p {
  font-size:14px;
  margin:8px 0 24px;
  color:var(--muted);
}

.text-link {
  font-size:14px;
  font-weight:600;
}

.detail-grid {
  gap:24px;
  padding:24px;
}

.detail-grid dt {
  font-size:12px;
  color:var(--muted);
}

.detail-grid dd {
  font-size:14px;
  color:var(--ink);
}

.review-item p {
  font-size:14px;
  color:var(--muted);
}

.review-meta {
  font-size:12px;
  color:var(--muted);
  flex-wrap:wrap;
}

.progress {
  height:6px;
  background:var(--border);
}

.progress span {
  background:var(--primary);
}

summary {
  font-size:14px;
  color:var(--primary);
  padding:16px 24px;
}

.row-editor details {
  background:var(--editor-bg);
}

.row-editor summary {
  font-size:13px;
}

.account-edit-grid {
  gap:24px;
  grid-template-columns:1fr 1.25fr 1fr;
}

.account-edit-grid button {
  font-size:13px;
}

.account-edit-note {
  font-size:12px!important;
  line-height:1.7;
}

.auth-page {
  background-image:var(--auth-pattern);
}

.auth-layout {
  width:min(1120px,calc(100% - 112px));
  grid-template-columns:1fr 456px;
  gap:100px;
  padding:60px 0;
}

.auth-intro {
  position:relative;
}

.auth-intro .brand {
  margin-bottom:60px;
  font-size:32px;
  gap:16px;
}

.auth-intro .brand-mark {
  width:52px;
  height:52px;
}

.auth-intro .brand small {
  font-size:12px;
}

.auth-intro h1 {
  letter-spacing:-1.3px;
  position:relative;
  z-index:1;
}

.auth-intro>.eyebrow {
  font-size:12px;
  color:var(--primary);
  margin-bottom:16px;
}

.auth-intro>p:not(.eyebrow) {
  font-size:15px;
  color:var(--muted);
  line-height:1.9;
  margin-top:24px;
}

.intro-steps {
  gap:0;
  margin-top:36px;
  flex-wrap:wrap;
  font-size:12px;
  color:var(--muted);
}

.intro-steps span {
  padding:0 16px;
  border-left:1px solid var(--border);
}

.intro-steps span:first-child {
  padding-left:0;
  border:0;
}

.login-card {
  padding:36px;
  border-radius:var(--card-radius);
  border-color:var(--border);
  box-shadow:var(--auth-shadow);
}

.login-card h2 {
  font-size:24px;
  font-weight:700;
}

.login-card .subtitle {
  font-size:14px;
  color:var(--muted);
  margin:12px 0 28px;
}

.auth-form {
  margin-top:24px;
}

.auth-form label {
  font-size:14px;
  margin-bottom:8px;
}

.auth-form input {
  height:46px;
}

.input-action {
  gap:8px;
}

.input-action .button {
  font-size:13px;
  padding:10px 12px;
}

.login-help {
  font-size:12px;
  color:var(--muted);
  padding-top:20px;
  line-height:1.8;
}

.login-card .alert {
  font-size:13px;
}

.auth-footer {
  font-size:12px;
  padding-bottom:26px;
}

.error-card,.entry {
  border-radius:var(--card-radius);
  border-color:var(--border);
  padding:40px;
}

.error-card .subtitle {
  font-size:15px;
  color:var(--muted);
}

.notice {
  background:var(--primary-soft);
  border-left:3px solid var(--primary);
}

.sidebar {
  background:#1C2944;
  color:#DBE3F7;
  border:0;
  padding-top:32px;
  width:216px;
  flex-basis:216px;
}

.sidebar .brand {
  color:#fff;
}

.sidebar .brand-mark {
  color:#C2CBFF;
}

.sidebar .brand small {
  color:#C5CEE3;
}

.sidebar nav>a,.sidebar .nav-group a {
  color:#D1D8EA;
  border-radius:4px;
}

.sidebar nav a.active {
  background:#FFFFFF;
  color:#373C88;
}

.sidebar nav a:hover:not(.active) {
  background:#2D3B59;
  color:#FFFFFF;
}

.sidebar .nav-group p {
  color:#AAB8D4;
}

.sidebar-note {
  border-color:#3F4D68;
  color:#AAB8D4;
}

.app-main {
  margin-left:216px;
  width:calc(100% - 216px);
}

.topbar {
  height:64px;
}

.panel-heading {
  padding:18px 24px;
}

th {
  padding:12px 18px;
}

td {
  padding:14px 18px;
}

.welcome-card {
  border-left:4px solid var(--primary);
}

.entry-card {
  border-top:3px solid var(--primary);
  padding:24px;
}

.entry-icon {
  border-radius:3px;
}

.auth-page {
  background:#F2F4FA;
  position:relative;
  isolation:isolate;
}

.auth-page:before {
  content:"";
  position:absolute;
  z-index:-1;
  left:0;
  top:0;
  bottom:0;
  width:50%;
  background:#1C2944;
}

.auth-intro .brand,.auth-intro h1 {
  color:#FFFFFF;
}

.auth-intro .brand-mark {
  color:#B6C3FF;
}

.auth-intro .brand small,.auth-intro>p:not(.eyebrow),.auth-intro>.eyebrow,.intro-steps {
  color:#C6D1E8;
}

.auth-intro .eyebrow {
  font-family:ui-monospace,SFMono-Regular,monospace;
  letter-spacing:2px;
}

.auth-intro h1 {
  font-weight:750;
  font-size:42px;
  line-height:1.5;
}

.auth-intro .intro-steps span {
  border-color:#52627D;
}

.login-card {
  border-top:4px solid var(--primary);
}

.auth-footer {
  position:relative;
  color:#42516E;
  background:var(--bg);
}

/* Local template spacing; no inline visual overrides. */
.error-card .eyebrow {margin-top:36px}
.error-card .actions {margin-top:30px}
.assignment-run-form {margin-top:20px}
.review-decision-fields {margin-top:24px}
.reviewer-empty-note {margin-top:15px}
.account-edit-note {font-size:12px;margin-top:18px;line-height:1.7}

@media (prefers-reduced-motion:reduce) {*{transition:none!important;scroll-behavior:auto!important}}

/* UX refinement: shared controls and task-focused forms, same approved B tokens. */
body {min-width:0}
.app-main,.content,.panel,.table-wrap {min-width:0}
button,input,select {font:inherit}
input:not([type=checkbox]):not([type=radio]):not([type=hidden]),select {min-height:40px}
select {appearance:none;padding-right:36px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' viewBox='0 0 16 16'%3E%3Cpath d='m4 6 4 4 4-4' stroke='%2356627A' stroke-width='1.7'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}
textarea {min-height:112px;line-height:1.6;width:100%}
input[type=checkbox],input[type=radio] {width:18px;height:18px;min-height:0;accent-color:var(--primary);flex-shrink:0}
button:not(.button):not(.button-quiet),input[type=submit] {min-height:40px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--surface);color:var(--ink);padding:8px 14px;font-weight:600}
.button:active:not(:disabled) {transform:translateY(1px)}
button:disabled,input:disabled,select:disabled,textarea:disabled {opacity:.65;cursor:not-allowed}
input[aria-invalid=true],select[aria-invalid=true],textarea[aria-invalid=true] {border-color:var(--danger)}
.form-panel {width:100%;max-width:760px}
.stacked-form {display:grid;gap:24px}
.stacked-form .form-field {min-width:0}
.form-field>label,.form-field>legend {display:block;margin-bottom:8px;font-weight:600}
fieldset.form-field {padding:0;margin:0;border:0;min-width:0}
fieldset.form-field legend {padding:0}
.stacked-form .check-row {min-height:40px}
.check-label {display:flex;gap:10px;align-items:flex-start;line-height:1.6}
.check-label input {margin-top:3px}
.confirmation-field {padding:12px 14px;background:var(--raw-warning-bg);border:1px solid #E7D5B3;border-radius:var(--control-radius)}
.confirmation-field[hidden],.danger-note[hidden] {display:none}
.stacked-form>.form-footer {margin:8px -24px -24px;padding:20px 24px;justify-content:flex-end;flex-wrap:wrap}
.task-tabs {display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:24px;flex-wrap:wrap}
.task-tabs a {display:block;padding:12px 18px;border-bottom:3px solid transparent;color:var(--muted);font-weight:600}
.task-tabs a:hover {background:var(--primary-soft);color:var(--primary)}
.task-tabs a.active {color:var(--primary);border-bottom-color:var(--primary)}
.learning-steps {margin:0;padding-left:22px;display:grid;gap:10px;line-height:1.7}
.learning-steps li {padding-left:2px}
.reload-link {display:inline-block;margin-top:16px}
.page-size-form>label {display:flex;align-items:center;gap:8px;margin:0;white-space:nowrap}
.pagination .page-size-form select {width:76px;min-height:40px;padding-left:10px;padding-right:28px;background-position:right 8px center}
.page-heading {flex-wrap:wrap}
.page-heading>.button {flex-shrink:0}
.page-heading h1 {overflow-wrap:anywhere}
.form-status {font-size:14px;color:var(--ink);grid-column:1/-1;line-height:1.7}
.form-status:empty {display:none}
/* 任务内结果条与共用 alert 同一体系：中性进行中/提示用 info 底，未知结果用警示底（§15） */
.form-status:not(:empty) {padding:12px 14px;background:var(--raw-info-bg);color:var(--raw-info);border:1px solid #C8D7E9;border-radius:var(--control-radius)}
.form-status.is-uncertain {padding:12px 14px;background:var(--raw-warning-bg);color:var(--raw-warning);border:1px solid #E7D5B3;border-radius:var(--control-radius)}
.form-status a {display:inline-block;margin-left:8px;text-decoration:underline}
.is-submitting button[aria-live=polite]::before {content:"";width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;display:inline-block;animation:submit-spin .8s linear infinite}
@keyframes submit-spin {to{transform:rotate(360deg)}}
/* 共用站内确认（§15）：原生 dialog；取消/Esc 零请求。长内容与 200% 放大不遮主次动作。 */
.confirm-dialog {border:1px solid var(--border);border-radius:var(--control-radius);padding:0;max-width:min(520px,92vw);max-height:80vh;overflow:auto;box-shadow:0 12px 32px rgba(32,46,72,.18)}
.confirm-dialog::backdrop {background:rgba(32,46,72,.36)}
.confirm-card {padding:20px 22px;display:grid;gap:14px}
.confirm-title {margin:0;font-size:17px;color:var(--ink)}
.confirm-text {margin:0;color:var(--ink);line-height:1.7;overflow-wrap:anywhere}
.confirm-actions {display:flex;justify-content:flex-end;gap:10px}
/* 无脚本服务端确认页（§15 不绕确认） */
.confirm-panel {background:var(--surface);border:1px solid var(--border);border-radius:var(--control-radius);padding:24px;max-width:min(560px,92vw);display:grid;gap:14px;overflow:visible;max-height:85vh;overflow-y:auto}
.confirm-panel h1 {margin:0;font-size:18px;color:var(--ink)}
.confirm-panel p {margin:0;line-height:1.7;overflow-wrap:anywhere}
.confirm-facts {width:100%;border-collapse:collapse;font-size:14px}
.confirm-facts th {text-align:left;color:var(--muted);font-weight:600;padding:6px 12px 6px 0;white-space:nowrap;vertical-align:top}
.confirm-facts td {padding:6px 0;overflow-wrap:anywhere;white-space:normal;word-break:break-word}
/* §15 字段旁错误：与摘要同色 danger，位于字段下 */
.field-error {display:block;color:var(--raw-danger);font-size:13px;margin-top:4px}
[aria-invalid="true"] {border-color:var(--raw-danger)}
@media(max-width:1100px) {
 .sidebar {width:176px}
 .app-main {margin-left:176px;width:calc(100% - 176px)}
 .content {padding:24px 20px}
 .topbar {padding:12px 20px;height:auto;min-height:64px;flex-wrap:wrap;gap:12px}
 .account-menu {min-width:0;flex-wrap:wrap;overflow-wrap:anywhere}
 .form-grid,.detail-grid,.entry-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
 .pagination {gap:12px;flex-wrap:wrap}
 .panel-heading {flex-wrap:wrap;gap:12px}
 .auth-layout {width:calc(100% - 64px);grid-template-columns:minmax(0,1fr) minmax(320px,420px);gap:40px}
 .auth-intro h1 {font-size:32px}
}
@media(max-width:760px) {
 .sidebar {width:148px}
 .app-main {margin-left:148px;width:calc(100% - 148px)}
 .sidebar .brand {padding:20px 14px;font-size:22px}
 .sidebar nav {padding:0 10px}
 .content {padding:20px 14px}
 .panel-body,.panel-heading {padding:20px}
 .stacked-form>.form-footer {margin:4px -20px -20px;padding:16px 20px}
 .form-grid,.detail-grid,.entry-grid {grid-template-columns:1fr}
 .form-inline {align-items:stretch;flex-direction:column;width:100%}
 .form-inline input,.panel-heading .form-inline input {width:100%}
 .search-form {display:grid;grid-template-columns:1fr 1fr}
 .search-form input:not([type=hidden]) {grid-column:1/-1}
 .page-heading h1 {font-size:24px}
 .task-tabs a {padding:10px 12px}
 .page-footer {padding:20px;gap:8px;flex-wrap:wrap}
 .auth-layout {display:block;max-width:480px;width:calc(100% - 32px);padding:24px 0}
 .auth-intro {display:none}
 .auth-page:before {display:none}
 .login-card {padding:24px}
 .input-action {gap:8px;flex-wrap:wrap}
 .input-action input {flex:1 1 180px}
 .error-card,.entry {max-width:calc(100% - 32px);padding:24px;width:600px}
}
@media(prefers-reduced-motion:reduce) {.is-submitting button::before{animation:none}}

/* Shared list heading rhythm, including course and secondary batch entries. */
.page-heading {margin-bottom:24px;gap:24px}

/* Approved shared PC task layout (Product22ab936f); header, context and form share one axis. */
.content.content--task {max-width:872px}
.content--task .form-panel {max-width:none}
.content--task .subtitle {overflow-wrap:anywhere}
.content--task .form-field :where(input:not([type=hidden]):not([type=checkbox]):not([type=radio]),select) {width:100%;max-width:520px}
.content--task .form-field input[type=date],
.content--task .form-field input[type=number] {max-width:280px}
.content--task .form-field input[type=url] {max-width:none}
.content--task .form-field textarea {min-height:112px;resize:vertical}
.content--task .form-footer {gap:12px;justify-content:flex-end}
@media(max-width:1100px) {.content.content--task {max-width:840px}}
@media(max-width:760px) {.content.content--task {max-width:828px}}

/* Role-first workspace and readable details use the same approved B tokens. */
.content.content--workspace {max-width:1120px}
.workspace-identity {display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.workspace-entries {gap:20px}
.workspace-entries:has(>.entry-card:only-child) {grid-template-columns:1fr}
.workspace-entries .entry-card {display:grid;grid-template-columns:40px minmax(0,1fr) auto;column-gap:16px;row-gap:6px;align-items:start}
.workspace-entries .entry-icon {grid-row:1/3;margin:0}
.workspace-entries h2,.workspace-entries p {margin:0;grid-column:2}
.workspace-entries .text-link {grid-column:3;grid-row:1/3;align-self:center;white-space:nowrap}
.price-amount {display:flex;gap:12px;align-items:baseline;margin:8px 0 12px}
.price-amount strong {font-size:30px;color:var(--ink)}
.price-empty p {margin:12px auto 20px;max-width:60ch}
.empty-state .button {margin-top:12px}
.detail-grid {grid-template-columns:repeat(2,minmax(0,1fr))}
.detail-grid dd {overflow-wrap:anywhere}
.review-item p {max-width:80ch;overflow-wrap:anywhere}
.review-panel {max-width:800px;margin-left:auto;margin-right:auto}
.review-panel .review-decision-fields {grid-template-columns:1fr}
.check-list {display:grid;gap:12px}
.check-list label {display:flex;align-items:flex-start;gap:10px;line-height:1.6;margin:0;overflow-wrap:anywhere}
.check-list input {margin-top:3px}
@media(max-width:760px) {
 .detail-grid {grid-template-columns:1fr}
 .workspace-entries {grid-template-columns:1fr}
 .workspace-entries .entry-card {grid-template-columns:32px minmax(0,1fr)}
 .workspace-entries .text-link {grid-column:2;grid-row:3}
}

@media(max-width:760px) {
 .sidebar {padding:24px 10px}
 .sidebar .brand {padding:0 4px 24px;font-size:20px;gap:8px}
 .sidebar .brand-mark {width:32px;height:32px}
 .sidebar .brand small {font-size:10px;letter-spacing:1px}
 .sidebar nav {padding:0}
 .sidebar nav>a,.sidebar .nav-group a {padding:11px 10px;overflow-wrap:anywhere}
 .account-menu>span {min-width:0;overflow-wrap:anywhere}
}

/* Long identities wrap before they push amounts, dates or row actions off-screen. */
.table-wrap .identity-cell {min-width:140px;max-width:240px;white-space:normal;overflow-wrap:anywhere}

/* 业务看板（D1/D3 页面接线）：真实可见的图形 + 可读数据表，不靠颜色或悬浮提示传意。 */
.breadcrumb {display:flex;gap:6px;align-items:center;font-size:12px;color:var(--muted, #5a6270);margin:0 0 4px}
.breadcrumb a {color:inherit;text-decoration:underline}
.panel-grid {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}
.dashboard-chart {width:100%;height:auto;max-height:240px;color:var(--accent, #2b4a8b);display:block}
.dashboard-chart text {font-size:11px;fill:currentColor;color:inherit}
.dashboard-bars {list-style:none;margin:0 0 12px;padding:0;display:grid;gap:10px}
.dashboard-bars li {display:grid;grid-template-columns:minmax(96px,160px) minmax(0,1fr) auto;gap:10px;align-items:center}
.bar-label {overflow-wrap:anywhere;font-size:13px}
.bar-track {display:block;height:12px;border-radius:6px;background:rgba(43,74,139,.12);overflow:hidden}
.bar-fill {display:block;height:100%;background:currentColor;color:var(--accent, #2b4a8b)}
.bar-value {font-variant-numeric:tabular-nums;white-space:nowrap}
.metric-value {font-size:28px;font-weight:600;margin:0 0 4px;font-variant-numeric:tabular-nums}
.visually-hidden {position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Shared shell/list rhythm: workspace cards and list filters use the same panel and control axes. */
.content.content--list {max-width:1280px}
.filter-panel {margin-bottom:16px}
.filter-form {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px 24px;padding:18px 24px;background:var(--surface)}
.filter-fields {display:grid;grid-template-columns:repeat(3,minmax(140px,1fr));gap:14px 16px;min-width:0}
.filter-fields--single {grid-template-columns:minmax(240px,520px)}
.filter-form .form-field {min-width:0;margin:0}
.filter-form .form-field label {display:block}
.filter-form .form-field :where(input,select) {width:100%}
.filter-actions {display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}
.filter-actions .button {margin:0}
.list-panel {margin-bottom:24px}
.workspace-entries {grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:stretch}
.workspace-entries>.panel {margin:0;min-width:0}
.workspace-entries>.panel>.panel-heading {min-height:60px;padding:16px 20px;background:var(--table-head)}
.workspace-entries>.panel>.panel-heading h2 {margin:0}
.workspace-entries>.panel>.panel-body {padding:16px 20px 20px}
.workspace-entries .panel-body ul {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 12px;list-style:none;margin:0;padding:0}
.workspace-entries .panel-body li,.workspace-entries .panel-body p {min-width:0;margin:0}
.workspace-entries .panel-body .text-link {display:flex;align-items:center;min-height:42px;padding:9px 11px;border:1px solid transparent;border-radius:var(--control-radius);line-height:1.45;overflow-wrap:anywhere}
.workspace-entries .panel-body .text-link:hover {background:var(--primary-soft);border-color:var(--border)}
.workspace-entries .panel-body .text-link:focus-visible {outline:2px solid var(--primary);outline-offset:1px}
@media(max-width:1100px) {
 .filter-form {grid-template-columns:1fr}
 .filter-actions {justify-content:flex-start}
 .filter-fields {grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}
}
@media(max-width:760px) {
 .filter-form {padding:16px}
 .filter-fields {grid-template-columns:1fr}
 .filter-actions {display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
 .filter-actions>.button {width:100%}
 .workspace-entries {grid-template-columns:1fr}
 .workspace-entries .panel-body ul {grid-template-columns:1fr}
}
@media(max-width:1100px) {
 .panel-grid {grid-template-columns:minmax(0,1fr)}
}
@media(max-width:760px) {
 .dashboard-bars li {grid-template-columns:minmax(0,1fr);gap:4px}
}

/* 答题页：音标题先选词再展开、边界题波形拖柄（数字输入保留为无障碍兜底）。 */
.phoneme-block .phoneme-panel {margin:8px 0 0;padding:8px 0 0;border-top:1px dashed var(--border)}
.phoneme-block .phoneme-panel[hidden] {display:none}
.boundary-wave {position:relative;height:72px;margin:0 0 12px;border:1px solid var(--border);border-radius:var(--control-radius);background:var(--surface);touch-action:none}
.boundary-wave-bars {position:absolute;inset:0;display:flex;align-items:center;gap:1px;padding:0 2px;overflow:hidden}
.boundary-wave-bars span {flex:1 1 0;min-width:1px;background:var(--primary-soft);border-radius:1px}
.boundary-handle {position:absolute;top:0;bottom:0;width:12px;margin-left:-6px;padding:0;border:0;border-radius:3px;background:var(--primary);opacity:.85;cursor:ew-resize}
.boundary-handle::after {content:"";position:absolute;left:4px;top:50%;width:4px;height:24px;margin-top:-12px;border-radius:2px;background:var(--raw-white)}
.boundary-handle:focus-visible {outline:2px solid var(--raw-info);outline-offset:2px}
