/* Budget page specific styles */
    .sheet {
      max-width: var(--maxw);
      margin: 0 auto;
      padding: var(--sp-6) var(--sp-4) var(--sp-7);
      display: flex;
      flex-direction: column;
      gap: var(--sp-6);
    }

    h2 {
      font-family: var(--f-mono);
      font-size: var(--fs-h2);
      font-weight: 600;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-2);
      margin: 0 0 var(--sp-4);
      display: flex;
      align-items: center;
      gap: var(--sp-3);
    }

    h2::after {
      content: "";
      flex: 1;
      height: 1px;
      background: var(--rule);
    }

    section {
      display: flex;
      flex-direction: column;
      gap: var(--sp-4);
    }

    .note {
      font-size: var(--fs-xs);
      color: var(--ink-3);
      margin: var(--sp-3) 0 0;
      max-width: 74ch;
    }

    .legend {
      display: flex;
      flex-wrap: wrap;
      gap: var(--sp-4);
      margin-bottom: var(--sp-3);
    }

    .lg {
      display: flex;
      align-items: center;
      gap: var(--sp-2);
      font-size: var(--fs-xs);
      color: var(--ink-2);
    }

    .sw {
      width: 14px;
      height: 14px;
      border-radius: 3px;
      flex: none;
    }

    svg {
      display: block;
      width: 100%;
      height: auto;
      overflow: visible;
    }

    .ax {
      font-family: var(--f-mono);
      font-size: var(--fs-micro);
      fill: var(--ink-3);
    }

    .lb {
      font-family: var(--f-sans);
      font-size: var(--fs-xs);
      fill: var(--ink-2);
    }

    .vl {
      font-family: var(--f-mono);
      font-size: var(--fs-micro);
      fill: var(--ink);
      font-variant-numeric: tabular-nums;
    }

    .grid line {
      stroke: var(--rule);
      stroke-width: 1;
    }

    .zero {
      stroke: var(--rule-2);
      stroke-width: 1;
    }

    .hit {
      fill: transparent;
      cursor: pointer;
    }

    .gapbox {
      margin-top: var(--sp-3);
      font-size: var(--fs-xs);
      color: var(--flag-ink);
      background: var(--flag-bg);
      border: 1px solid var(--flag-bd);
      padding: 8px 10px;
    }

    .ctl {
      display: flex;
      flex-wrap: wrap;
      gap: var(--sp-3);
      align-items: flex-end;
      margin-bottom: var(--sp-4);
    }

    .ctl label {
      font-family: var(--f-mono);
      font-size: var(--fs-micro);
      letter-spacing: 0.12em;
      text-transform: uppercase;
      color: var(--ink-3);
      display: block;
      margin-bottom: var(--sp-1);
    }

    select, button {
      font-family: var(--f-sans);
      font-size: var(--fs-sm);
      padding: 8px 10px;
      min-height: 42px;
      border: 1px solid var(--rule-2);
      background: var(--sheet);
      color: var(--ink);
      cursor: pointer;
    }

    .tscroll {
      overflow-x: auto;
      border: 1px solid var(--rule-2);
      background: var(--sheet);
      margin-top: var(--sp-4);
    }

    table {
      border-collapse: collapse;
      width: 100%;
      font-size: var(--fs-sm);
    }

    th, td {
      padding: 9px 13px;
      text-align: left;
      border-bottom: 1px solid var(--rule);
      white-space: nowrap;
    }

    th {
      background: var(--sheet-2);
      font-family: var(--f-mono);
      font-size: var(--fs-micro);
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--ink-2);
      position: sticky;
      top: 0;
    }

    td.n {
      font-family: var(--f-mono);
      font-size: var(--fs-xs);
      text-align: right;
      font-variant-numeric: tabular-nums;
    }

    tbody tr:hover {
      background: var(--sheet-2);
    }

    .xp {
      display: flex;
      align-items: center;
      gap: var(--sp-2);
      background: none;
      border: none;
      padding: 0;
      min-height: 34px;
      font: inherit;
      font-size: var(--fs-sm);
      color: var(--ink);
      cursor: pointer;
      text-align: left;
    }

    .xp:hover {
      color: var(--accent);
    }

    .xp .chev {
      display: inline-block;
      width: 11px;
      flex: none;
      color: var(--ink-3);
      transition: transform 0.12s ease;
    }

    .xp[aria-expanded="true"] .chev {
      transform: rotate(90deg);
    }

    tr.detail > td {
      padding: 0;
      background: var(--sheet-2);
      border-bottom: 1px solid var(--rule-2);
    }

    .lines {
      width: 100%;
      font-size: var(--fs-xs);
    }

    .lines th, .lines td {
      padding: 6px 13px;
      border-bottom: 1px solid var(--rule);
      white-space: nowrap;
    }

    .lines th {
      background: transparent;
      position: static;
      color: var(--ink-3);
      font-size: var(--fs-micro);
    }

    .lines tr:last-child td {
      border-bottom: none;
    }

    .lines td.n {
      font-family: var(--f-mono);
      text-align: right;
      font-variant-numeric: tabular-nums;
    }

    .lines .lbl {
      padding-left: var(--sp-5);
      color: var(--ink-2);
    }

    .lines .xfer {
      color: var(--flag-ink);
    }

    .detail-note {
      padding: var(--sp-3) 13px var(--sp-3) var(--sp-5);
      font-size: var(--fs-micro);
      color: var(--ink-3);
    }

    .namecell .nm {
      font-size: var(--fs-sm);
    }

    .spentbar {
      display: none;
    }

    #tip {
      position: fixed;
      z-index: 9;
      pointer-events: none;
      opacity: 0;
      transition: opacity 0.1s;
      background: var(--sheet);
      border: 1px solid var(--rule-2);
      padding: 8px 10px;
      max-width: 280px;
      font-size: var(--fs-xs);
      box-shadow: 0 6px 20px rgba(0, 0, 0, 0.18);
    }

    #tip b {
      display: block;
      font-size: var(--fs-sm);
      margin-bottom: 3px;
    }

    #tip .r {
      display: flex;
      justify-content: space-between;
      gap: var(--sp-4);
      font-family: var(--f-mono);
      font-size: var(--fs-micro);
      color: var(--ink-2);
    }

    #tip .r i {
      width: 9px;
      height: 9px;
      border-radius: 2px;
      display: inline-block;
      margin-right: 5px;
    }

    @media (prefers-reduced-motion: reduce) {
      .xp .chev {
        transition: none;
      }
    }

    @media (max-width: 700px) {
      #depttable tbody.drow {
        border: 1px solid var(--rule-2);
        background: var(--sheet);
        margin-bottom: var(--sp-3);
      }

      #depttable td.namecell {
        padding: var(--sp-3) var(--sp-4) var(--sp-2);
        border-bottom: 1px solid var(--rule);
      }

      #depttable td.namecell .nm,
      #depttable .xp {
        font-size: var(--fs-body);
        font-weight: 600;
      }

      #depttable .xp {
        min-height: 44px;
      }

      #depttable tbody.drow td.n:last-child {
        padding-bottom: var(--sp-3);
      }

      .spentbar {
        display: block;
        height: 6px;
        margin-top: var(--sp-2);
        background: var(--sheet-2);
        border: 1px solid var(--rule);
      }

      .spentbar i {
        display: block;
        height: 100%;
        background: var(--m-actual);
      }

      tr.detail > td {
        background: var(--sheet-2);
        padding: 0;
      }

      .lines tr {
        padding: var(--sp-3) 0;
        border-bottom: 1px solid var(--rule);
      }

      .lines td.lbl {
        font-weight: 600;
        color: var(--ink);
        font-size: var(--fs-sm);
        margin-bottom: var(--sp-1);
      }

      .detail-note {
        padding: var(--sp-3) var(--sp-4);
      }
    }

    @media (max-width: 640px) {
      :root {
        --fs-display: 27px;
        --fs-fig: 24px;
      }

      .cell {
        border-right: none;
        border-bottom: 1px solid var(--rule);
      }
    }