/* ── Wrap / Shell (from ui-theme.css) ── */
.wrap {
  max-width: var(--page-width-standard, 920px);
  margin: 0 auto;
  padding: var(--space-lg, 24px) 14px var(--space-xl, 32px);
  display: grid;
  gap: var(--space-md, 16px);
}

.shell {
  max-width: var(--page-shell-width, 1280px);
  margin: 0 auto;
  padding: var(--space-lg, 24px) 14px var(--space-xl, 32px);
  display: grid;
  gap: var(--space-md, 16px);
}

.wrap > .card:nth-of-type(2),
.shell > .panel:nth-of-type(2),
.shell > .table-wrap:nth-of-type(2) {
  animation-delay: 50ms;
}

.wrap > .card:nth-of-type(3),
.shell > .panel:nth-of-type(3),
.shell > .table-wrap:nth-of-type(3) {
  animation-delay: 95ms;
}

.wrap .card {
  border-radius: var(--radius-xl);
  background: var(--surface-solid);
  box-shadow: var(--shadow-md);
  padding: var(--space-lg, 24px);
}

.app-wrap {
  max-width: min(var(--page-shell-width, 1280px), calc(100vw - 28px));
  padding: var(--space-md, 16px) 14px var(--space-lg, 24px);
  gap: var(--space-sm, 10px);
}

.app-wrap .card {
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  padding: var(--space-md, 16px);
}

.app-wrap .module-topbar {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  grid-template-rows: auto auto;
  align-items: center;
  gap: 4px var(--space-md, 16px);
  padding: var(--space-sm, 10px) 14px;
}

.app-wrap .module-topbar .aca-brand-inline {
  grid-column: 1;
  grid-row: 1 / span 2;
  margin: 0;
}

.app-wrap .module-topbar .title {
  grid-column: 2;
  grid-row: 1;
  font-size: var(--text-page-title, 1.28rem);
}

.app-wrap .module-topbar .sub {
  grid-column: 2;
  grid-row: 2;
  margin: 0;
  line-height: 1.35;
}

.app-wrap .module-topbar .inline-actions {
  grid-column: 3;
  grid-row: 1 / span 2;
  justify-content: flex-end;
}

.app-wrap .module-topbar .aca-logo-badge.is-compact {
  padding: 6px 9px;
  border-radius: 14px;
}

.app-wrap .module-topbar .aca-logo-badge.is-compact .aca-logo {
  width: 52px;
}

.app-wrap .form-grid {
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: var(--space-sm, 10px) var(--space-sm, 10px);
  align-items: end;
}

.app-wrap .form-grid > .field {
  align-self: stretch;
}

.app-wrap .form-grid > .btn {
  align-self: end;
}

.app-wrap .module-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-xs, 6px);
}

.app-wrap .field label {
  margin-bottom: 4px;
  font-size: 0.82rem;
}

.app-wrap input:not([type="checkbox"]):not([type="radio"]),
.app-wrap select {
  min-height: 38px;
  height: 38px;
  padding: 8px 10px;
}

.app-wrap textarea {
  min-height: 58px;
  padding: 8px 10px;
}

.app-wrap .inline-actions {
  gap: 7px;
}

.app-wrap .inline-actions .btn,
.app-wrap .inline-actions select,
.app-wrap .inline-actions input:not([type="checkbox"]):not([type="radio"]) {
  min-height: 36px;
}

.app-wrap .btn {
  min-height: 36px;
  padding: var(--space-xs, 8px) var(--space-sm, 12px);
  font-size: 0.88rem;
}

.app-wrap .activity-list {
  gap: var(--space-xs, 8px);
}

.app-wrap .activity-card,
.app-wrap .session-card {
  padding: var(--space-sm, 12px);
  gap: var(--space-xs, 8px);
}

.app-wrap .meta-row {
  gap: 5px;
}

.app-wrap .meta-pill {
  padding: var(--space-2xs, 4px) var(--space-xs, 8px);
  font-size: 0.76rem;
}

.app-wrap .app-create-card {
  padding: var(--space-sm, 12px) var(--space-md, 16px);
}

.app-create-details {
  display: grid;
  gap: var(--space-sm, 12px);
}

.app-create-details > summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-sm, 12px);
  cursor: pointer;
  list-style: none;
}

.app-create-details > summary::-webkit-details-marker {
  display: none;
}

.app-create-details > summary .title-sm {
  margin: 0;
}

.app-create-details > summary .meta-pill::before {
  content: "点此";
  margin-right: 2px;
}

.app-create-details[open] > summary .meta-pill {
  color: var(--accent-strong);
  border-color: rgba(26, 110, 245, 0.32);
  background: var(--accent-soft);
}

.app-create-details[open] > summary .meta-pill::before {
  content: "";
  margin: 0;
}

.app-create-details[open] > summary .meta-pill {
  font-size: 0;
}

.app-create-details[open] > summary .meta-pill::after {
  content: "收起";
  font-size: 0.76rem;
}

.wrap .title {
  margin: 0;
  font-size: var(--text-page-title, 1.6rem);
  line-height: 1.2;
  letter-spacing: 0;
  font-weight: var(--weight-title, 720);
}

.wrap .title-sm {
  font-size: var(--text-section-title, 1.1rem);
  font-weight: var(--weight-section, 700);
}

.wrap .sub {
  font-size: var(--text-body, 0.95rem);
  line-height: 1.6;
}

.wrap .tip {
  border-radius: var(--radius-md);
  border-color: var(--line-strong);
  background: #f8fafc;
}

.wrap .tip.warn {
  border-color: rgba(220, 170, 80, 0.5);
  background: var(--warning-soft);
  color: var(--warning);
}

.wrap .tip.success {
  border-color: rgba(100, 180, 150, 0.5);
  background: var(--success-soft);
  color: var(--success);
}

.wrap .tip.plain {
  border-color: var(--line-strong);
  background: #f4f7fb;
  color: var(--text-muted);
}

.wrap .guide-card {
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  background: var(--surface-solid);
}

.wrap .guide-step {
  border-radius: var(--radius-md);
  border-color: var(--line);
  background: var(--surface-solid);
  box-shadow: none;
}

.wrap .btn-primary,
.shell .btn-primary {
  background: var(--accent);
  border-color: transparent;
}

.wrap .btn-soft,
.shell .btn-soft {
  background: var(--surface-solid);
  border-color: var(--line-strong);
  color: var(--text);
}

.wrap .camera-wrap {
  border-radius: var(--radius-lg);
  border-color: var(--line);
  background: #0a1628;
  box-shadow: 0 16px 40px rgba(0, 0, 0, 0.24);
}

.wrap .camera-wrap::after {
  border: 2px solid rgba(255, 255, 255, 0.85);
  border-radius: 14px;
}

.wrap .decision-card,
.wrap .scan-review-shell,
.wrap .scan-review-meta,
.wrap .scan-status-bar,
.wrap .zoom-control,
.wrap .aircraft-tile,
.wrap .qr-wrap {
  border-radius: var(--radius-lg);
  border-color: var(--line);
  background: var(--surface-solid);
}

.wrap .scan-review-overlay {
  background: rgba(0, 0, 0, 0.4);
  backdrop-filter: blur(6px);
}

.wrap .scan-status-bar {
  background: #f8fafc;
}

.wrap .scan-hit-banner {
  border-radius: var(--radius-md);
  border-color: rgba(26, 110, 245, 0.3);
  background: var(--accent-soft);
  color: var(--accent-strong);
}

.wrap .scan-hit-banner.banner-warn {
  border-color: rgba(220, 170, 80, 0.5);
  background: var(--warning-soft);
  color: var(--warning);
}

.wrap .scan-review-title {
  font-size: var(--text-page-title, 1.3rem);
  letter-spacing: 0;
}

.wrap .scan-review-eyebrow {
  color: var(--accent);
}
