.page-controls{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.page-jump{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px}
.page-jump input{width:64px;border:1px solid var(--line);background:#fff;border-radius:7px;padding:6px 8px;text-align:center;outline:none;font-variant-numeric:tabular-nums}
.page-jump input:focus{border-color:var(--brand-2);box-shadow:0 0 0 3px rgba(30,102,85,.08)}
.module-switch{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 9px 18px;padding:4px;background:rgba(255,255,255,.08);border-radius:10px}
.module-btn{border:0;background:transparent;color:#b8c7c2;border-radius:8px;padding:8px 6px;font-weight:800;font-size:13px;cursor:pointer}
.module-btn.active{background:#fff;color:var(--brand)}
.yarn-empty{margin-bottom:16px;padding:14px 16px;background:#fff6ee;border:1px solid #f0d3b8;color:#8a5a2b;font-size:13px;line-height:1.6}
.field-hint{display:block;margin-top:6px;color:var(--muted);font-size:11px}
.form-grid textarea{width:100%;border:1px solid var(--line);background:#fff;border-radius:7px;padding:10px;outline:none;font-size:13px;resize:vertical;min-height:84px;font-family:ui-monospace,Consolas,monospace}
.form-grid textarea:focus{border-color:var(--brand-2);box-shadow:0 0 0 3px rgba(30,102,85,.08)}
.btn.danger{background:#b6473d;color:#fff}
.btn.tiny{min-height:30px;padding:5px 9px;font-size:11px}
.tally-modal{max-width:min(920px,calc(100vw - 24px))}
.sheet{position:relative;background:#fff;color:#111;border:1px solid #222;padding:16px 18px 20px;margin:10px auto;max-width:210mm}
.sheet-title{text-align:center;font-size:26px;font-weight:900;letter-spacing:.2em;margin:0 0 10px}
.sheet-head{display:flex;justify-content:space-between;gap:16px;font-size:13px;margin-bottom:8px}
.sheet-meta{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px;font-size:13px;margin-bottom:10px}
.sheet-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:12px}
.sheet-table th,.sheet-table td{border:1px solid #222;height:28px;text-align:center;padding:2px 4px}
.sheet-table .corner{width:64px;background:linear-gradient(to top right,transparent 49%,#222 50%,#222 51%,transparent 52%);position:relative}
.sheet-table .corner .tl,.sheet-table .corner .br{position:absolute;font-size:10px;font-weight:700}
.sheet-table .corner .tl{top:3px;right:6px}
.sheet-table .corner .br{bottom:3px;left:6px}
.sheet-watermark{position:absolute;inset:28% 12% 22%;display:grid;place-items:center;font-size:72px;font-weight:900;color:rgba(180,40,40,.18);letter-spacing:.12em;pointer-events:none}
.sheet-foot{display:flex;justify-content:space-between;gap:16px;margin-top:12px;font-size:13px}
.sheet-yarn-list{display:grid;grid-template-columns:repeat(8,1fr);gap:8px;border:1px solid #222;padding:12px;min-height:120px}
.sheet-yarn-list span{text-align:center;font-variant-numeric:tabular-nums}
@media print{
  body *{visibility:hidden}
  .tally-modal[open],.tally-modal[open] *,.sheet,.sheet *{visibility:visible}
  .tally-modal{position:absolute;inset:0;max-width:none;width:100%;background:#fff}
  .tally-modal .modal-card{box-shadow:none;border:0;padding:0;overflow:visible;background:#fff}
  .sheet{position:absolute;left:0;top:0;margin:0;width:100%;border:0}
  .no-print{display:none!important}
}
