  :root {
    --ink: #1a2820;
    --paper: #f4ecd8;
    --paper-line: #d9cfb6;
    --moss: #2d5043;
    --moss-dark: #1f3830;
    --rust: #a14a2a;
    --gold: #b8893a;
    --muted: #6b6055;
    --ok: #2d5043;
    --bad: #a14a2a;
  }

  * { box-sizing: border-box; }

  body {
    margin: 0;
    padding: 0;
    background:
      radial-gradient(ellipse at top, #faf3df 0%, #f4ecd8 50%, #ede2c6 100%);
    color: var(--ink);
    font-family: 'Noto Serif SC', 'Source Serif 4', serif;
    min-height: 100vh;
    padding: 30px 16px 60px;
  }

  body::before {
    content: '';
    position: fixed;
    inset: 0;
    background-image:
      linear-gradient(rgba(45,80,67,0.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(45,80,67,0.04) 1px, transparent 1px);
    background-size: 24px 24px;
    pointer-events: none;
    z-index: 0;
  }

  .sheet {
    max-width: 1200px;
    margin: 0 auto;
    background: rgba(250, 243, 223, 0.85);
    border: 1px solid var(--moss);
    box-shadow:
      0 1px 0 var(--moss) inset,
      0 0 0 4px var(--paper),
      0 0 0 5px var(--moss),
      0 30px 60px -20px rgba(31, 56, 48, 0.3);
    padding: 36px 36px 30px;
    position: relative;
    z-index: 1;
  }

  .header {
    display: flex;
    justify-content: space-between;
    align-items: flex-end;
    border-bottom: 2px double var(--moss);
    padding-bottom: 18px;
    margin-bottom: 24px;
  }

  .header h1 {
    font-size: 28px;
    font-weight: 700;
    letter-spacing: 0.15em;
    margin: 0;
    color: var(--moss-dark);
  }
  .header h1 .small {
    display: block;
    font-size: 11px;
    letter-spacing: 0.4em;
    color: var(--muted);
    font-weight: 400;
    margin-bottom: 6px;
    font-family: 'Source Serif 4', serif;
    font-style: italic;
  }

  .header .stamp {
    border: 1.5px solid var(--rust);
    color: var(--rust);
    padding: 6px 14px;
    font-size: 12px;
    letter-spacing: 0.2em;
    transform: rotate(-2deg);
    font-family: 'Noto Serif SC', serif;
    font-weight: 600;
    white-space: nowrap;
  }

  .params {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 0;
    border: 1px solid var(--moss);
    margin-bottom: 24px;
    background: rgba(244, 236, 216, 0.5);
  }

  .params .cell {
    padding: 10px 12px;
    border-right: 1px solid var(--paper-line);
    border-bottom: 1px solid var(--paper-line);
    display: flex;
    flex-direction: column;
    gap: 4px;
  }
  .params .cell:nth-child(5n) { border-right: none; }
  .params .cell.full { grid-column: 1 / -1; border-right: none; }
  .params .label {
    font-size: 11px;
    color: var(--muted);
    letter-spacing: 0.1em;
  }
  .params .value, .params input, .params select {
    font-family: 'JetBrains Mono', monospace;
    font-size: 15px;
    font-weight: 500;
    color: var(--ink);
    background: transparent;
    border: none;
    outline: none;
    padding: 2px 0;
    border-bottom: 1px dashed var(--paper-line);
    width: 100%;
  }
  .params input:focus, .params select:focus {
    border-bottom-color: var(--moss);
  }
  .params .readonly {
    color: var(--moss-dark);
    font-weight: 600;
  }

  /* 数据表格 */
  .table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    border: 1px solid var(--moss);
    margin-bottom: 24px;
    position: relative;
    /* 左右阴影提示可滚动 */
    background:
      linear-gradient(to right, var(--paper), rgba(244,236,216,0)) 0 0,
      linear-gradient(to left,  var(--paper), rgba(244,236,216,0)) 100% 0,
      radial-gradient(farthest-side at 0 50%, rgba(45,80,67,0.18), rgba(45,80,67,0)) 0 0,
      radial-gradient(farthest-side at 100% 50%, rgba(45,80,67,0.18), rgba(45,80,67,0)) 100% 0;
    background-repeat: no-repeat;
    background-size: 32px 100%, 32px 100%, 14px 100%, 14px 100%;
    background-attachment: local, local, scroll, scroll;
  }
  table {
    width: 100%;
    min-width: 980px;
    border-collapse: collapse;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
  }
  /* 滑动提示条 */
  .scroll-hint {
    display: none;
    text-align: center;
    font-family: 'Source Serif 4', serif;
    font-style: italic;
    font-size: 11px;
    color: var(--muted);
    letter-spacing: 0.15em;
    margin: -16px 0 12px;
  }
  .scroll-hint::before { content: '← '; }
  .scroll-hint::after  { content: ' →'; }
  thead tr {
    background: var(--moss);
    color: var(--paper);
  }
  th {
    padding: 10px 6px;
    font-weight: 500;
    letter-spacing: 0.05em;
    border-right: 1px solid rgba(244, 236, 216, 0.2);
    font-family: 'Noto Serif SC', serif;
    font-size: 12px;
  }
  th:last-child { border-right: none; }
  th .unit {
    display: block;
    font-size: 10px;
    opacity: 0.75;
    font-family: 'JetBrains Mono', monospace;
    margin-top: 2px;
  }

  tbody td {
    padding: 0;
    border-right: 1px solid var(--paper-line);
    border-bottom: 1px solid var(--paper-line);
    text-align: center;
    background: rgba(255, 252, 240, 0.4);
  }
  tbody tr:nth-child(even) td { background: rgba(244, 236, 216, 0.3); }
  tbody td:last-child { border-right: none; }

  tbody input {
    width: 100%;
    border: none;
    background: transparent;
    padding: 8px 4px;
    text-align: center;
    font-family: 'JetBrains Mono', monospace;
    font-size: 13px;
    color: var(--ink);
    outline: none;
  }
  tbody input:focus {
    background: rgba(184, 137, 58, 0.12);
    box-shadow: inset 0 -2px 0 var(--gold);
  }
  tbody td.computed {
    padding: 8px 4px;
    color: var(--moss-dark);
    font-weight: 500;
  }
  tbody td.station {
    color: var(--muted);
    padding: 8px 4px;
    font-size: 12px;
  }
  .neg { color: var(--rust); }

  /* 操作按钮 */
  .actions {
    display: flex;
    gap: 10px;
    margin-bottom: 24px;
    flex-wrap: wrap;
  }
  button {
    font-family: 'Noto Serif SC', serif;
    font-size: 13px;
    letter-spacing: 0.1em;
    padding: 9px 18px;
    background: transparent;
    border: 1px solid var(--moss);
    color: var(--moss-dark);
    cursor: pointer;
    transition: all 0.15s ease;
  }
  button:hover {
    background: var(--moss);
    color: var(--paper);
  }
  button.primary {
    background: var(--moss);
    color: var(--paper);
  }
  button.primary:hover {
    background: var(--moss-dark);
  }
  button.danger {
    border-color: var(--rust);
    color: var(--rust);
  }
  button.danger:hover {
    background: var(--rust);
    color: var(--paper);
  }

  /* 汇总区 */
  .summary {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 24px;
    margin-top: 6px;
  }
  .panel {
    border: 1px solid var(--moss);
    padding: 18px 20px;
    background: rgba(244, 236, 216, 0.5);
  }
  .panel h3 {
    margin: 0 0 14px;
    font-size: 13px;
    letter-spacing: 0.3em;
    color: var(--moss-dark);
    padding-bottom: 8px;
    border-bottom: 1px dashed var(--moss);
  }
  .panel .row {
    display: flex;
    justify-content: space-between;
    padding: 6px 0;
    border-bottom: 1px dotted var(--paper-line);
    font-size: 13px;
  }
  .panel .row:last-child { border-bottom: none; }
  .panel .row .k {
    color: var(--muted);
    font-family: 'Noto Serif SC', serif;
  }
  .panel .row .v {
    font-family: 'JetBrains Mono', monospace;
    color: var(--moss-dark);
    font-weight: 600;
  }

  .verdict {
    grid-column: 1 / -1;
    border: 2px solid var(--moss);
    padding: 20px;
    text-align: center;
    background: rgba(45, 80, 67, 0.04);
  }
  .verdict .pill {
    display: inline-block;
    padding: 8px 24px;
    font-family: 'Noto Serif SC', serif;
    font-size: 16px;
    letter-spacing: 0.3em;
    margin: 0 8px;
    border: 1px solid;
  }
  .verdict .pill.ok {
    border-color: var(--ok);
    color: var(--ok);
    background: rgba(45, 80, 67, 0.08);
  }
  .verdict .pill.bad {
    border-color: var(--bad);
    color: var(--bad);
    background: rgba(161, 74, 42, 0.08);
  }
  .verdict .final {
    margin-top: 14px;
    font-size: 22px;
    letter-spacing: 0.5em;
    font-weight: 700;
  }
  .verdict .final.ok { color: var(--ok); }
  .verdict .final.bad { color: var(--bad); }

  .footnote {
    margin-top: 30px;
    text-align: center;
    font-family: 'Source Serif 4', serif;
    font-style: italic;
    font-size: 11px;
    color: var(--muted);
    letter-spacing: 0.15em;
  }

  @media (max-width: 760px) {
    body { padding: 14px 6px; }
    .sheet { padding: 18px 14px; }
    .header { flex-direction: column; align-items: flex-start; gap: 10px; }
    .header h1 { font-size: 20px; }
    .params { grid-template-columns: repeat(2, 1fr); }
    .params .cell:nth-child(5n) { border-right: 1px solid var(--paper-line); }
    .params .cell:nth-child(2n) { border-right: none; }
    .summary { grid-template-columns: 1fr; }
    .scroll-hint { display: block; }
    /* 表格保持原始宽度,通过横向滚动查看 */
    .table-wrap { margin-left: -14px; margin-right: -14px; border-left: none; border-right: none; }
  }

  @media print {
    body { background: white; padding: 0; }
    body::before { display: none; }
    .sheet { box-shadow: none; border: 1px solid #000; }
    .actions { display: none; }
    button { display: none; }
  }
