/* ==========================================================================
   tickets.css — 纸基质感 / 纤维噪波 / 多轴光影褶皱 / clip-path 撕裂边
                 顶层防裁剪印章 / 零黑边流体容器 / 七种差异化工业表单
   表单形制取自 ref/：卡带 J 卡、连打纸带、战术 HUD、轴测零件明细、
                     蓝图校核单、青色机密传输单、高反差拼贴单。
   ========================================================================== */

/* ---------------- 挂载节点骨架 ---------------- */
.hanger{
  position:absolute;left:0;top:0;width:0;height:0;
  transform-style:preserve-3d;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  -webkit-font-smoothing:subpixel-antialiased;
  transition:none;
}
.hanger.is-hidden{visibility:hidden;pointer-events:none;}

.hang-arm{
  position:absolute;left:0;top:0;width:0;height:0;
  transform-style:preserve-3d;transform-origin:0 0;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  -webkit-font-smoothing:subpixel-antialiased;
}

.ticket-card{
  position:absolute;top:10px;left:0;
  transform-style:preserve-3d;
  cursor:pointer;
  overflow:visible;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  -webkit-font-smoothing:subpixel-antialiased;
  -moz-osx-font-smoothing:auto;
}
.card-shadow{
  position:absolute;inset:6px 0 0 0;
  box-shadow:0 18px 38px rgba(0,0,0,.26),0 3px 8px rgba(0,0,0,.14);
  transform:translateZ(-2px);pointer-events:none;
}

/* 预览态禁止纸面跟手倾斜，只在聚焦层放开 */
body:not(.is-focus-cull) .paper-sheet,
body:not(.is-focus-cull) .paper-substrate{
  transform:none !important;
}

.paper-sheet,
.paper-substrate{
  position:relative;
  display:flex;
  flex-direction:column;
  background:linear-gradient(176deg,var(--paper-bone),var(--paper-warm));
  border-top:1px solid rgba(0,0,0,.13);
  transform-style:preserve-3d;
  transform-origin:50% 0;
  overflow:visible;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  -webkit-font-smoothing:subpixel-antialiased;
  -moz-osx-font-smoothing:auto;
}

/* 纸浆纤维噪波 */
.paper-grain{
  position:absolute;inset:0;pointer-events:none;
  mix-blend-mode:multiply;opacity:.42;
  background-image:
    radial-gradient(rgba(0,0,0,.055) .8px,transparent .8px),
    radial-gradient(rgba(0,0,0,.035) .6px,transparent .6px),
    repeating-linear-gradient(0deg,rgba(0,0,0,.018) 0 1px,transparent 1px 4px),
    repeating-linear-gradient(97deg,rgba(0,0,0,.012) 0 1px,transparent 1px 7px);
  background-size:5px 5px,3px 3px,100% 4px,100% 100%;
}
/* 多轴向光影褶皱：角度随光标法线实时旋转 */
.paper-crease{
  position:absolute;inset:0;pointer-events:none;
  mix-blend-mode:multiply;opacity:.42;
  background:
    linear-gradient(var(--crease-a,132deg),transparent 26%,rgba(0,0,0,.13) 50%,transparent 74%),
    linear-gradient(var(--crease-b,42deg),transparent 32%,rgba(0,0,0,.075) 50%,transparent 68%);
}
/* 反光叠加已拆除：纸面保持哑光纤维质感 */
.paper-sheen{display:none !important;}

/* ---------------- 胶带 / 铰链 / 铆钉（ref: connect.jpg） ---------------- */
.tape-strip{
  position:absolute;top:-9px;width:62px;height:20px;
  background:linear-gradient(180deg,rgba(236,206,54,.6),rgba(212,180,40,.48));
  border-left:1px dashed rgba(0,0,0,.18);
  border-right:1px dashed rgba(0,0,0,.18);
  box-shadow:0 2px 5px rgba(0,0,0,.14);
  transform:translateZ(1px) rotate(-2.4deg);
  z-index:30;pointer-events:none;
}
.tape-strip.tape-r{right:20px;transform:translateZ(1px) rotate(3.1deg);}
.tape-strip.tape-l{left:20px;}
.tape-strip.tape-red{
  background:linear-gradient(180deg,rgba(224,43,29,.55),rgba(180,30,20,.45));
}
.corner-bracket{
  position:absolute;width:15px;height:15px;
  border:2px solid var(--alu-mid);
  background:linear-gradient(135deg,var(--alu-hi),var(--alu-mid));
  box-shadow:0 1px 3px rgba(0,0,0,.4);
  transform:translateZ(2px);z-index:28;pointer-events:none;
}
.corner-bracket::after{
  content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;
  margin:-2px 0 0 -2px;border-radius:50%;
  background:radial-gradient(circle at 34% 30%,#fff,#5c5c59 62%,#18181a);
}
.corner-bracket.cb-tl{left:-6px;top:-6px;}
.corner-bracket.cb-br{right:-6px;bottom:-6px;}

/* ---------------- 顶层印章（Z 轴最顶层，不裁切、不镜像） ---------------- */
.stamp{
  position:absolute;transform-style:preserve-3d;
  font-family:var(--font-screen);
  color:var(--stamp-red);
  border:2px solid var(--stamp-red);
  background:#f6f6f2;
  padding:1px 8px;font-size:1.28rem;line-height:1.18;
  letter-spacing:.06em;white-space:nowrap;
  box-shadow:0 3px 9px rgba(0,0,0,.18);
  z-index:400;pointer-events:none;
  backface-visibility:visible;
  -webkit-backface-visibility:visible;
  -webkit-font-smoothing:subpixel-antialiased;
  -moz-osx-font-smoothing:auto;
}
.stamp.s-tr{right:-15px;top:28px;transform:translateZ(26px) rotate(11deg);}
.stamp.s-tl{left:-14px;top:52px;transform:translateZ(26px) rotate(-7deg);}
.stamp.s-bl{left:-14px;bottom:30px;transform:translateZ(26px) rotate(-8deg);}
.stamp.s-br{right:-12px;bottom:44px;transform:translateZ(26px) rotate(6deg);}
.stamp.s-blue{color:var(--stamp-blue);border-color:var(--stamp-blue);}
.stamp.s-black{color:#141414;border-color:#141414;}
.stamp.s-round{
  border-radius:50%;width:74px;height:74px;padding:0;
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-size:.8rem;border-width:2.5px;border-style:double;
}
.stamp.s-slab{
  /* 螺栓压印钢板字（ref: connect.jpg 的 TRAINING 字牌） */
  font-family:var(--font-code);font-weight:700;font-size:.72rem;
  letter-spacing:.2em;color:#f2f2ee;background:#17171a;
  border:1px solid #000;padding:3px 10px;
  box-shadow:0 3px 8px rgba(0,0,0,.45),inset 0 1px 0 rgba(255,255,255,.18);
}
.stamp.s-slab::before,.stamp.s-slab::after{
  content:"";position:absolute;top:50%;width:3px;height:3px;margin-top:-1.5px;
  border-radius:50%;background:#9a9a96;
}
.stamp.s-slab::before{left:3px;}
.stamp.s-slab::after{right:3px;}

/* 红色套版十字（ref: 6f55125d） */
.reg-cross{
  position:absolute;width:13px;height:13px;
  transform:translateZ(18px);pointer-events:none;z-index:120;
}
.reg-cross::before,.reg-cross::after{
  content:"";position:absolute;background:var(--reg-red);
}
.reg-cross::before{left:50%;top:0;width:1px;height:100%;margin-left:-.5px;}
.reg-cross::after{top:50%;left:0;height:1px;width:100%;margin-top:-.5px;}

/* ---------------- 齿孔 / 撕裂下缘 ---------------- */
.perf-edge{
  height:11px;
  background:repeating-linear-gradient(to right,transparent 0 6px,rgba(0,0,0,.2) 6px 10px);
  border-bottom:1px dashed rgba(0,0,0,.26);opacity:.9;
}
/* 热敏纸撕边：作为纸体内部底层流体条参与排版（不能脱离 .paper-sheet）
   剪影由父级 clip-path 统一裁齿；hover 时父级 3D 倾斜 + 齿尖同步变形 */
.torn-hem,
.zigzag-torn{
  display:block;
  flex:0 0 auto;
  height:14px;width:100%;margin-top:auto;
  position:relative;
  background:linear-gradient(176deg,var(--paper-warm),#e2e1d7);
  filter:drop-shadow(0 1px .5px rgba(0,0,0,.16));
  pointer-events:none;
  transform:translateZ(0.4px);
  clip-path:polygon(
    0 0, 100% 0,
    100% 38%,
    97.2% 100%, 94.1% 42%, 91.3% 88%, 88.0% 28%, 85.2% 96%,
    81.9% 36%, 78.8% 82%, 75.6% 22%, 72.4% 90%, 69.1% 40%,
    66.0% 100%, 62.7% 30%, 59.5% 78%, 56.3% 18%, 53.2% 92%,
    50.0% 44%, 46.8% 86%, 43.6% 24%, 40.4% 98%, 37.2% 34%,
    34.1% 80%, 30.8% 20%, 27.6% 94%, 24.4% 48%, 21.2% 76%,
    18.0% 16%, 14.8% 88%, 11.6% 32%, 8.4% 100%, 5.2% 40%,
    2.4% 84%, 0 36%
  );
}

/* ---------------- 通用排版原子 ---------------- */
.ticket-body{
  padding:12px 16px 14px;display:flex;flex-direction:column;position:relative;flex:1 1 auto;contain:layout;
  backface-visibility:hidden;
  -webkit-backface-visibility:hidden;
  -webkit-font-smoothing:subpixel-antialiased;
  -moz-osx-font-smoothing:auto;
}
.receipt-head{text-align:center;border-bottom:2px dashed #7a7a73;padding-bottom:7px;margin-bottom:7px;}
.receipt-head.align-l{text-align:left;border-bottom:1px solid #333;}
.store-title{font-family:var(--font-serif);font-size:1.5rem;font-style:italic;line-height:1.05;}
.head-sub{font-family:var(--font-mono);font-size:.61rem;color:var(--ink-dim);letter-spacing:.06em;margin-top:2px;}
.head-kicker{font-family:var(--font-code);font-size:.58rem;color:var(--stamp-blue);letter-spacing:.1em;}

.spec-table{
  width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:.62rem;
  border:1px solid #b4b4ad;margin-bottom:6px;
}
.spec-table td{border:1px solid #cac9c2;padding:3px 5px;line-height:1.25;vertical-align:top;}
.spec-k{display:block;font-size:.52rem;color:var(--ink-dim);letter-spacing:.07em;}
.spec-v{font-weight:700;}
.ink-red{color:var(--stamp-red);}
.ink-blue{color:var(--stamp-blue);}
.ink-klein{color:var(--klein);}
.inline-row{
  display:flex;justify-content:space-between;gap:6px;
  font-family:var(--font-mono);font-size:.61rem;margin:3px 0 6px;color:#2b2b27;
}
.sig-row{
  display:flex;justify-content:space-between;align-items:flex-end;
  font-family:var(--font-mono);font-size:.53rem;color:var(--ink-dim);
  border-top:1px solid #c2c2bb;margin-top:6px;padding-top:4px;
}
.sig-line{flex:1;border-bottom:1px solid #6c6c66;margin:0 6px 2px 0;height:12px;}

[contenteditable=true]{outline:none;border-radius:1px;user-select:text;cursor:text;}
[contenteditable=true]:hover{background:rgba(27,56,166,.09);}
[contenteditable=true]:focus{background:#fff;box-shadow:0 0 0 1px var(--stamp-red);}

.feed-bar{
  font-family:var(--font-mono);font-size:.62rem;line-height:1.4;
  color:#22221f;background:rgba(0,0,0,.028);
  border-left:2px solid var(--stamp-red);
  padding:5px 7px;margin:4px 0 6px;min-height:34px;word-break:break-word;
}
.feed-caret{
  display:inline-block;width:6px;height:11px;background:var(--stamp-red);
  vertical-align:-1px;animation:caretBlink .9s steps(2,jump-none) infinite;
}
@keyframes caretBlink{0%,100%{opacity:1;}50%{opacity:0;}}

.barcode-cluster{margin-top:4px;display:flex;flex-direction:column;align-items:center;}
.barcode-svg{width:100%;height:26px;display:block;}
.barcode-txt{
  font-family:var(--font-mono);font-size:.57rem;letter-spacing:.26em;
  color:#2e2e2a;margin-top:1px;
}

/* ---------------- 零黑边流体图像容器 ---------------- */
.asset-frame{
  position:relative;width:100%;background:transparent;  /* 绝无衬底 */
  margin:5px 0 6px;line-height:0;font-size:0;
}
.asset-frame .fluid-img{
  display:block;
  width:100%;          /* 宽度 100% 贴合小票 */
  height:auto;         /* 高度完全交给原生比例 */
  object-fit:fill;     /* 无裁切、无 letterbox */
  background:transparent;
  border:1px solid rgba(0,0,0,.16);
  box-shadow:0 3px 12px rgba(0,0,0,.16);
}
.asset-frame.is-loading .fluid-img{opacity:.25;}
.asset-void{
  position:relative;width:100%;min-height:148px;
  border:1px dashed #8c8c85;
  background-color:rgba(0,0,0,.022);
  background-image:
    radial-gradient(rgba(0,0,0,.2) 1px,transparent 1px),
    radial-gradient(rgba(0,0,0,.08) 1px,transparent 1px);
  background-size:9px 9px,9px 9px;
  background-position:0 0,4.5px 4.5px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:5px;padding:20px 14px 30px;text-align:center;font-size:0;line-height:1.4;
}
.void-mark{
  font-family:var(--font-code);font-size:.64rem;letter-spacing:.14em;color:#393935;
  border:1px solid #6d6d67;padding:2px 8px;background:rgba(244,244,238,.85);
}
.void-sub{font-family:var(--font-mono);font-size:.55rem;color:var(--ink-dim);letter-spacing:.03em;}
.asset-frame.has-image .asset-void{display:none;}

.mount-btn{
  position:absolute;bottom:6px;right:6px;
  background:#fff;color:#111;border:1px solid #2a2a2a;
  font-family:var(--font-mono);font-size:.63rem;font-weight:700;
  padding:3px 8px;cursor:pointer;line-height:1.2;
  box-shadow:2px 2px 0 rgba(0,0,0,.28);z-index:25;
}
.mount-btn:hover{background:#111;color:#fff;}

.asset-meta{
  font-family:var(--font-code);font-size:.49rem;line-height:1.5;letter-spacing:.05em;
  color:var(--ink-dim);border-bottom:1px dotted #aeaea7;
  padding:2px 0 3px;margin-bottom:4px;
  display:flex;justify-content:space-between;gap:6px;flex-wrap:wrap;
}
.asset-meta b{color:#292925;font-weight:700;}

/* ---------------- 色彩提取色板 ---------------- */
.palette-dock{
  display:flex;align-items:stretch;gap:6px;margin:4px 0 6px;padding:4px;
  background:rgba(0,0,0,.035);border:1px dashed #a6a69f;
  border-left:3px solid var(--pal-accent,#8c8c85);
}
.palette-label{
  font-family:var(--font-code);font-size:.49rem;letter-spacing:.14em;color:var(--ink-dim);
  writing-mode:vertical-rl;transform:rotate(180deg);text-align:center;
}
.swatch-group{display:flex;flex:1;gap:4px;min-height:30px;}
.swatch-chip{
  flex:1;position:relative;border:1px solid rgba(0,0,0,.24);
  display:flex;align-items:flex-end;justify-content:center;
  font-family:var(--font-code);font-size:.47rem;font-weight:700;
  padding-bottom:2px;cursor:copy;
  transition:transform .14s steps(2),box-shadow .14s;
}
.swatch-chip:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 4px 10px rgba(0,0,0,.3);z-index:5;}
.swatch-chip .chip-pct{position:absolute;top:1px;left:2px;font-size:.41rem;opacity:.85;}
.palette-note{
  font-family:var(--font-code);font-size:.47rem;letter-spacing:.06em;
  color:var(--ink-faint);margin:-2px 0 5px;
}

/* ---------------- 长票内部滚动 / 聚焦态 ---------------- */
.ticket-scroll{
  position:relative;
  max-height:78vh;
  overflow:visible;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.ticket-card.focused,
.ticket-card.in-focus,
.dev-panel.in-focus{
  pointer-events:auto;
  transform-origin:50% 50%;
  z-index:10;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  padding:0 !important;
  background:transparent !important;
  background-image:none !important;
  border:none !important;
  outline:none !important;
  box-shadow:none !important;
  filter:none !important;
  overflow:visible !important;
  backface-visibility:visible;
  -webkit-backface-visibility:visible;
  isolation:auto;
  contain:none;
}
.ticket-card.focused .ticket-scroll,
.ticket-card.in-focus .ticket-scroll{
  max-height:78vh;
  overflow-x:visible;
  overflow-y:auto;
  background:transparent;
  border:none;
  box-shadow:none;
  padding:0;
  overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
.ticket-card.focused .paper-sheet,
.ticket-card.in-focus .paper-sheet{
  height:auto;
  max-height:none;
  overflow:visible;
  background-clip:padding-box;
}
.ticket-card.focused .ticket-body,
.ticket-card.in-focus .ticket-body{
  overflow:visible;
}
.ticket-card.focused .stamp,
.ticket-card.in-focus .stamp,
.ticket-card.focused .reg-cross,
.ticket-card.in-focus .reg-cross,
.ticket-card.focused .tape-strip,
.ticket-card.in-focus .tape-strip,
.ticket-card.focused .corner-bracket,
.ticket-card.in-focus .corner-bracket{
  overflow:visible;
  clip-path:none;
}
.dev-panel.in-focus{
  pointer-events:auto;
  transform-origin:50% 50%;
  z-index:10;
  height:auto !important;
  min-height:0 !important;
  max-height:none !important;
  padding:0 !important;
  background:transparent !important;
  border:none !important;
  outline:none !important;
  box-shadow:none !important;
  filter:none !important;
  overflow:visible !important;
  backface-visibility:visible;
  -webkit-backface-visibility:visible;
}
.dev-panel.in-focus .dev-shell{
  max-height:78vh;
  overflow-x:visible;
  overflow-y:auto;
  overscroll-behavior:contain;
}
.ticket-card.in-focus .card-shadow,
.ticket-card.focused .card-shadow{
  box-shadow:0 22px 48px rgba(0,0,0,.32);
  background:transparent;
}
.focus-bar{
  display:none;position:relative;z-index:200;
  font-family:var(--font-mono);font-size:.67rem;font-weight:700;letter-spacing:.08em;
  background:var(--stamp-red);color:#fff;text-align:center;padding:5px 10px;cursor:pointer;
}
.focus-bar:hover{background:#96101d;}
.ticket-card.in-focus .focus-bar,.dev-panel.in-focus .focus-bar{display:block;}
.ticket-card.focused .focus-bar,
.ticket-card.in-focus .focus-bar{
  position:sticky;top:0;z-index:240;
}
.ticket-card.focused .mod-drawer,
.ticket-card.in-focus .mod-drawer{
  position:sticky;top:28px;z-index:230;
}

/* 复古工业档案滚动条：只画在内部文本滚动区，不画在卡片外框 */
.ticket-scroll,
.ticket-card.focused .ticket-scroll,
.ticket-card.in-focus .ticket-scroll,
.dev-panel.in-focus .dev-shell{
  scrollbar-width:thin;
  scrollbar-color:#2c2c28 #cfcbbd;
}
.ticket-scroll::-webkit-scrollbar,
.ticket-card.focused .ticket-scroll::-webkit-scrollbar,
.ticket-card.in-focus .ticket-scroll::-webkit-scrollbar,
.dev-panel.in-focus .dev-shell::-webkit-scrollbar{
  width:11px;
}
.ticket-scroll::-webkit-scrollbar-track,
.ticket-card.focused .ticket-scroll::-webkit-scrollbar-track,
.ticket-card.in-focus .ticket-scroll::-webkit-scrollbar-track,
.dev-panel.in-focus .dev-shell::-webkit-scrollbar-track{
  background:
    radial-gradient(circle at 50% 6px,#8a8678 0 1.1px,transparent 1.4px) 0 0 / 11px 14px,
    repeating-linear-gradient(0deg,rgba(0,0,0,.08) 0 1px,transparent 1px 5px),
    linear-gradient(90deg,#ddd8c8,#c4c0b2 46%,#b7b3a6);
  border-left:1px solid #8e8a7c;
  box-shadow:inset 1px 0 0 rgba(255,255,255,.35);
}
.ticket-scroll::-webkit-scrollbar-thumb,
.ticket-card.focused .ticket-scroll::-webkit-scrollbar-thumb,
.ticket-card.in-focus .ticket-scroll::-webkit-scrollbar-thumb,
.dev-panel.in-focus .dev-shell::-webkit-scrollbar-thumb{
  background:
    radial-gradient(circle at 50% 7px,#c9182b 0 1.4px,#1a1a17 1.7px 2.4px,transparent 2.6px),
    linear-gradient(90deg,#4a4a44,#1b1b18 40%,#2e2e2a);
  border:1px solid #c9182b;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),inset 0 -1px 0 rgba(0,0,0,.45);
}
.ticket-scroll::-webkit-scrollbar-thumb:hover,
.ticket-card.focused .ticket-scroll::-webkit-scrollbar-thumb:hover,
.ticket-card.in-focus .ticket-scroll::-webkit-scrollbar-thumb:hover,
.dev-panel.in-focus .dev-shell::-webkit-scrollbar-thumb:hover{
  background:
    radial-gradient(circle at 50% 7px,#fff 0 1.2px,#c9182b 1.5px 2.6px,transparent 2.8px),
    linear-gradient(90deg,#c9182b,#7a1018);
}

/* ---------------- 模块化组装器 ---------------- */
.ticket-modules{
  display:flex;flex-direction:column;gap:10px;
  margin-top:8px;
}
.mod-block{
  position:relative;
  border:1px dashed rgba(0,0,0,.22);
  padding:7px 7px 8px;
  background:#fff;
  overflow:visible;
  isolation:isolate;
}
.mod-block.is-dragging{
  opacity:.55;
  outline:1px dashed var(--stamp-red);
}
.mod-toolbar{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;margin:-2px 0 6px;
  font-family:var(--font-code);font-size:.48rem;letter-spacing:.1em;color:var(--ink-dim);
  position:relative;z-index:720;pointer-events:auto;
}
.mod-handle{cursor:grab;user-select:none;padding:1px 0;pointer-events:auto;}
.mod-handle:active{cursor:grabbing;}
.mod-del,
[data-mod-del]{
  position:absolute;top:2px;right:2px;
  z-index:9000;isolation:isolate;
  border:1px solid #2a2a26;background:#fff;color:#111;
  font-family:var(--font-mono);font-size:.7rem;line-height:1;
  width:22px;height:22px;padding:0;
  cursor:pointer;
  box-shadow:1px 1px 0 rgba(0,0,0,.22);
  pointer-events:auto !important;
  touch-action:manipulation;
  transform:translateZ(12px);
}
.mod-del:hover{background:#c9182b;color:#fff;border-color:#96101d;}
.mod-drawer{
  position:relative;z-index:160;
  background:#121210;color:#f3f2ea;
  border-bottom:1px solid #c9182b;
  padding:5px 7px 6px;
  font-family:var(--font-code);letter-spacing:.06em;
  opacity:1;transition:none;
}
.hanger.is-selected .mod-drawer,
.ticket-card.focused .mod-drawer,
.ticket-card.in-focus .mod-drawer{opacity:1;}
.mod-drawer-hd{
  font-size:.46rem;letter-spacing:.16em;color:#c8c6b8;margin-bottom:4px;
}
.mod-drawer-row{display:flex;flex-wrap:wrap;gap:4px;}
.mod-drawer-row button{
  border:1px solid #8a8a82;background:#111;color:#f3f2ea;
  font-family:var(--font-mono);font-size:.52rem;padding:2px 6px;cursor:pointer;
}
.mod-drawer-row button:hover{background:#c9182b;border-color:#fff;}
.mod-matrix{
  width:100%;border-collapse:collapse;
  font-family:var(--font-mono);font-size:.6rem;margin-bottom:5px;
}
.mod-matrix th,.mod-matrix td{
  border:1px solid #b4b4ad;padding:3px 5px;text-align:left;vertical-align:top;
}
.mod-matrix th{background:#1d1d1a;color:#f2f2ee;font-size:.46rem;letter-spacing:.1em;}
.mod-add-row{
  border:1px dashed #6d6d67;background:rgba(255,255,255,.5);
  font-family:var(--font-mono);font-size:.55rem;padding:2px 7px;cursor:pointer;
}
.mod-code-lab{
  display:block;font-family:var(--font-code);font-size:.46rem;
  letter-spacing:.12em;color:var(--ink-dim);margin-bottom:3px;
}
.mod-code-input{
  width:100%;box-sizing:border-box;margin-bottom:6px;
  border:1px solid #2a2a26;background:#fff;color:#111;
  font-family:var(--font-mono);font-size:.62rem;padding:3px 6px;cursor:text;
}
.mod-code-row{display:grid;grid-template-columns:1fr 84px;gap:8px;align-items:end;}
.mod-qr{
  width:84px;height:84px;display:block;
  border:1px solid rgba(0,0,0,.35);background:#f4f3ed;
}
.mod-code-cap{
  font-family:var(--font-code);font-size:.44rem;letter-spacing:.12em;
  color:var(--ink-dim);margin-top:3px;
}
.mod-stamp-row{display:flex;gap:4px;margin-bottom:8px;}
.mod-stamp-swatch{
  border:1px solid #2a2a26;background:#fff;
  font-family:var(--font-code);font-size:.5rem;padding:2px 7px;cursor:pointer;
}
.mod-stamp-swatch.active{outline:1px solid currentColor;}
.mod-stamp-swatch.is-red{color:var(--stamp-red);}
.mod-stamp-swatch.is-blue{color:var(--stamp-blue);}
.mod-stamp-swatch.is-black{color:#141414;}
.mod-stamp-mark{
  display:inline-block;margin:6px 4px;
  font-family:var(--font-screen);font-size:1.18rem;letter-spacing:.08em;
  border:2px solid;padding:2px 10px;background:#f6f6f2;
  transform:rotate(-8deg);
  box-shadow:0 3px 8px #111;
}
.mod-stamp-mark[data-stamp-ink="red"]{color:var(--stamp-red);border-color:var(--stamp-red);}
.mod-stamp-mark[data-stamp-ink="blue"]{color:var(--stamp-blue);border-color:var(--stamp-blue);}
.mod-stamp-mark[data-stamp-ink="black"]{color:#141414;border-color:#141414;}
.mod-text{
  font-family:var(--font-ticket);font-size:.68rem;line-height:1.55;
  min-height:2.4em;padding:4px 2px;
}
.mod-rule{
  margin:8px 0;padding:3px 0;
  font-family:var(--font-code);font-size:.48rem;letter-spacing:.16em;
  text-align:center;color:var(--ink-dim);
  border-top:1px dashed #7a7a73;border-bottom:1px dashed #7a7a73;
}
.mod-bars{display:flex;flex-direction:column;gap:4px;margin:4px 0 6px;}
.mod-bar-row{
  display:flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:.55rem;position:relative;
}
.mod-bar-row span{flex:0 0 42px;color:var(--ink-dim);}
.mod-bar-row i{
  flex:1;height:7px;background:repeating-linear-gradient(90deg,#1c1c19 0 3px,#8a8a84 3px 5px);
  transform-origin:0 50%;
}
.mod-bar-row b{flex:0 0 28px;text-align:right;}
.mod-bars-lab{
  font-family:var(--font-code);font-size:.46rem;letter-spacing:.14em;color:var(--ink-dim);
}
.mod-time{
  border:1px solid #2a2a26;padding:6px 8px;margin:4px 0;
  background:rgba(0,0,0,.03);
}
.mod-time-k{font-family:var(--font-code);font-size:.44rem;letter-spacing:.16em;color:var(--ink-dim);}
.mod-time-v{font-family:var(--font-screen);font-size:1.24rem;letter-spacing:.06em;}
.mod-time-s{font-family:var(--font-mono);font-size:.52rem;color:var(--ink-dim);}

.is-line{position:relative;}
.line-ops{
  position:absolute;right:0;top:50%;transform:translateY(-50%) translateZ(8px);
  display:none;gap:2px;z-index:8500;pointer-events:auto;
}
.ticket-card.is-editing .line-ops,
.hanger.is-selected .line-ops,
.ticket-card.focused .line-ops,
.ticket-card.in-focus .line-ops,
.is-line:hover > .line-ops{display:inline-flex;}
.line-ops button{
  width:16px;height:16px;padding:0;line-height:14px;
  border:1px solid #2a2a26;background:#fff;color:#111;
  font-family:var(--font-mono);font-size:.55rem;cursor:pointer;
  box-shadow:1px 1px 0 rgba(0,0,0,.2);
}
.line-ops [data-line-add]:hover{background:#111;color:#fff;}
.line-ops [data-line-del]:hover{background:#c9182b;color:#fff;border-color:#96101d;}

/* ---------------- 工业风右键菜单 ---------------- */
.ctx-menu{
  position:fixed;z-index:7200;display:none;
  min-width:236px;max-width:280px;
  background:linear-gradient(180deg,#f4f3ed,#dedcd3);
  border:1px solid #111;
  box-shadow:3px 3px 0 #111, 0 18px 38px rgba(0,0,0,.38);
  padding:5px 0 6px;
  font-family:var(--font-code);
  color:#111;
}
.ctx-menu.is-open{display:block;}
.ctx-k{
  padding:6px 14px 3px;
  font-size:.46rem;letter-spacing:.18em;color:#6a6860;
}
.ctx-item{
  display:block;width:100%;text-align:left;
  background:transparent;border:0;border-radius:0;
  padding:7px 14px;
  font-family:var(--font-code);font-size:.62rem;letter-spacing:.08em;
  color:#111;cursor:pointer;
}
.ctx-item:hover, .ctx-item:focus{
  background:#111;color:#f4f3ed;outline:none;
}
.ctx-item.is-danger:hover{background:#c9182b;color:#fff;}
.ctx-item:disabled{opacity:.32;pointer-events:none;}
.ctx-sep{height:1px;background:#111;opacity:.22;margin:4px 10px;}
.ctx-sub{display:flex;flex-direction:column;padding:2px 0 4px;}
.ctx-sub .ctx-item{padding:5px 14px 5px 22px;font-size:.56rem;letter-spacing:.06em;}
body.theme-dark .ctx-menu{
  background:linear-gradient(180deg,#2a2c32,#16171b);color:#ecece6;border-color:#c8c6b8;
  box-shadow:3px 3px 0 #000, 0 18px 38px rgba(0,0,0,.55);
}
body.theme-dark .ctx-item{color:#ecece6;}
body.theme-dark .ctx-item:hover{background:#f4f3ed;color:#111;}
body.theme-dark .ctx-k{color:#9a9890;}

.form-hud .mod-block{border-color:#4a535b;background:rgba(255,255,255,.04);}
.form-hud .mod-matrix th{background:#0d0f12;color:#d6dade;}
.form-hud .mod-matrix td{border-color:#3d444c;color:#ccd2d8;}
.form-hud .mod-code-input{background:#0a0c0e;color:#d6dade;border-color:#3d444c;}
.form-hud .mod-stamp-mark{background:rgba(20,23,27,.9);}
.form-transmittal .mod-block{border-color:#0a3d54;background:rgba(255,255,255,.16);}
.form-transmittal .mod-matrix th{background:#0a3d54;color:#d6f1fa;}
.form-transmittal .mod-matrix td{border-color:#0a3d54;color:#0a3d54;}
.form-transmittal .mod-code-input{background:rgba(255,255,255,.55);color:#0a3d54;border-color:#0a3d54;}

/* ==========================================================================
   表单形制 A — 卡带 J 卡双栏黑胶规格单 (ref: 4c732118)
   ========================================================================== */
.form-vinyl .paper-sheet{background:linear-gradient(174deg,#f5f2e6,#e9e5d4);}
.vinyl-head{
  font-family:var(--font-code);font-size:.72rem;font-weight:700;
  letter-spacing:.34em;text-align:center;color:#111;
  padding:2px 0 5px;border-bottom:1px solid #111;margin-bottom:6px;
}
.vinyl-sub{
  font-family:var(--font-code);font-size:.46rem;letter-spacing:.2em;
  text-align:center;color:#55554e;margin:-4px 0 7px;
}
.chip-label{
  display:inline-block;background:#17171a;color:#f3f3ef;
  font-family:var(--font-code);font-size:.5rem;font-weight:700;
  letter-spacing:.14em;padding:1px 7px;transform:rotate(-.6deg);
}
.vinyl-cols{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;margin:6px 0;}
.vinyl-col-hd{
  font-family:var(--font-code);font-size:.5rem;letter-spacing:.18em;
  border-bottom:1px solid #2a2a26;padding-bottom:2px;margin-bottom:3px;color:#2a2a26;
}
.trk-row{
  display:flex;align-items:baseline;gap:3px;
  font-family:var(--font-mono);font-size:.56rem;color:#232320;line-height:1.5;
}
.trk-row .trk-n{width:16px;flex:0 0 16px;color:#77776e;}
.trk-row .trk-dots{flex:1;border-bottom:1px dotted #8b8b83;transform:translateY(-3px);}
.trk-row .trk-t{flex:0 0 auto;}
.waveform-strip{
  height:34px;margin:6px 0 4px;display:flex;align-items:flex-end;gap:1px;
  border-bottom:1px solid #2a2a26;
}
.waveform-strip i{flex:1;background:#1c1c19;min-height:2px;}
.index-chips{display:flex;gap:4px;margin:4px 0 2px;}
.index-chips span{
  flex:1;font-family:var(--font-code);font-size:.44rem;letter-spacing:.1em;
  text-align:center;border:1px solid #2a2a26;padding:2px 0;color:#2a2a26;
}
.cat-mark{
  font-family:var(--font-code);font-size:1.5rem;font-weight:700;
  letter-spacing:-.02em;color:#c8c6b8;text-align:right;line-height:.9;margin-top:2px;
}

/* ==========================================================================
   表单形制 B — 打孔连打纸带 (tractor-feed fanfold)
   ========================================================================== */
.form-fanfold .paper-sheet{
  background:linear-gradient(176deg,#f2f4ef,#e7ebe4);
  padding:0 15px;                        /* 让位给两侧齿孔带 */
}
.sprocket-rail{
  position:absolute;top:0;bottom:0;width:15px;
  background:rgba(0,0,0,.035);
  border-right:1px dashed rgba(0,0,0,.28);
  pointer-events:none;
}
.sprocket-rail.sr-r{right:0;border-right:none;border-left:1px dashed rgba(0,0,0,.28);}
.sprocket-rail.sr-l{left:0;}
.sprocket-rail i{
  position:absolute;left:50%;width:7px;height:7px;margin-left:-3.5px;
  border-radius:50%;background:var(--bg-canvas);
  box-shadow:inset 0 1px 2px rgba(0,0,0,.55);
}
.greenbar{font-family:var(--font-mono);font-size:.57rem;margin:5px 0;}
.greenbar .gb-row{display:flex;gap:8px;padding:1.5px 4px;color:#1f2a22;}
.greenbar .gb-row:nth-child(odd){background:rgba(120,178,140,.22);}
.greenbar .gb-row span:first-child{flex:0 0 78px;color:#4a5a4e;}
.greenbar .gb-row span:last-child{margin-left:auto;font-weight:700;}
.dotmatrix{
  font-family:var(--font-code);font-size:.54rem;line-height:1.55;
  color:#1d1d1a;letter-spacing:.02em;
  text-shadow:.4px 0 0 rgba(0,0,0,.35);
}
.dotmatrix .dm-prompt{color:#0a7a34;}

/* ==========================================================================
   表单形制 C — 战术 HUD 仪表清单 (ref: 6f55125d)
   ========================================================================== */
.form-hud .paper-sheet{background:linear-gradient(172deg,#1a1c20,#0d0f12);color:#d6dade;}
.form-hud .ticket-body{color:#ccd2d8;}
.hud-head{
  display:flex;justify-content:space-between;align-items:baseline;
  border-bottom:1px solid #3d444c;padding-bottom:5px;margin-bottom:7px;
}
.hud-title{
  font-family:var(--font-code);font-size:.92rem;font-weight:700;
  letter-spacing:.06em;color:#eef2f5;
}
.hud-badge{
  font-family:var(--font-code);font-size:.46rem;letter-spacing:.14em;
  border:1px solid var(--reg-red);color:var(--reg-red);padding:1px 5px;
}
.hud-grid{
  display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:#2c3238;border:1px solid #3d444c;margin-bottom:6px;
}
.hud-cell{background:#14171b;padding:4px 5px;font-family:var(--font-code);}
.hud-cell .hc-k{display:block;font-size:.42rem;letter-spacing:.12em;color:#6e7a85;}
.hud-cell .hc-v{font-size:.78rem;color:#6cf39a;font-family:var(--font-screen);}
.hud-gauge{margin:5px 0;}
.hud-gauge .hg-k{
  font-family:var(--font-code);font-size:.44rem;letter-spacing:.12em;
  color:#79858f;display:flex;justify-content:space-between;
}
.hud-gauge .hg-bar{
  height:6px;background:#22272c;border:1px solid #3d444c;margin-top:2px;overflow:hidden;
}
.hud-gauge .hg-bar i{
  display:block;height:100%;
  background:repeating-linear-gradient(90deg,#6cf39a 0 3px,#2f7a4e 3px 5px);
}
.hud-gauge.warn .hg-bar i{
  background:repeating-linear-gradient(90deg,#f36c6c 0 3px,#7a2f2f 3px 5px);
}
.hud-rings{
  position:absolute;right:8px;top:44px;width:86px;height:86px;
  pointer-events:none;opacity:.55;
}
.hud-rings i{
  position:absolute;border:1px dashed #57626b;border-radius:50%;
}
.hud-rings i:nth-child(1){inset:0;}
.hud-rings i:nth-child(2){inset:14px;}
.hud-rings i:nth-child(3){inset:28px;border-style:solid;border-color:#3d444c;}
.form-hud .asset-void{
  border-color:#4a535b;background-color:rgba(255,255,255,.03);
  background-image:
    radial-gradient(rgba(255,255,255,.22) 1px,transparent 1px),
    radial-gradient(rgba(255,255,255,.08) 1px,transparent 1px);
}
.form-hud .void-mark{background:rgba(20,23,27,.9);color:#c3cad1;border-color:#59636c;}
.form-hud .void-sub{color:#78838d;}
.form-hud .asset-meta{color:#8b959e;border-bottom-color:#3d444c;}
.form-hud .asset-meta b{color:#dfe5ea;}
.form-hud .palette-dock{background:rgba(255,255,255,.04);border-color:#4a535b;}
.form-hud .palette-label,.form-hud .palette-note{color:#79858f;}
.form-hud .feed-bar{background:rgba(255,255,255,.04);color:#c3cad1;border-left-color:var(--reg-red);}
.form-hud .sig-row{color:#79858f;border-top-color:#3d444c;}
.form-hud .sig-line{border-bottom-color:#5c666f;}
.form-hud .barcode-txt{color:#aab3bb;}
.form-hud .torn-hem,
.form-hud .zigzag-torn{background:linear-gradient(176deg,#0d0f12,#070809);}
.form-hud .perf-edge{
  background:repeating-linear-gradient(to right,transparent 0 6px,rgba(255,255,255,.22) 6px 10px);
  border-bottom-color:rgba(255,255,255,.26);
}
.form-hud [contenteditable=true]:hover{background:rgba(108,243,154,.12);}
.form-hud [contenteditable=true]:focus{background:#0a0c0e;box-shadow:0 0 0 1px #6cf39a;}

/* ==========================================================================
   表单形制 D — 轴测分解零件明细表 (ref: 105e7718)
   ========================================================================== */
.form-bom .paper-sheet{background:linear-gradient(176deg,#f6f6f4,#eceae6);}
.bom-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  border-bottom:2px solid #1d1d1a;padding-bottom:4px;margin-bottom:6px;
}
.bom-title{font-family:var(--font-serif);font-size:1.32rem;line-height:1;letter-spacing:.01em;}
.bom-dwg{font-family:var(--font-code);font-size:.46rem;letter-spacing:.12em;color:#5c5c55;text-align:right;}
.section-box{
  position:relative;border:1px dashed #82827a;padding:8px 8px 6px;margin:5px 0 7px;
  background:rgba(255,255,255,.35);
}
.section-box .sb-tag{
  position:absolute;top:-7px;left:8px;background:var(--paper-bone);
  font-family:var(--font-code);font-size:.42rem;letter-spacing:.16em;padding:0 4px;color:#55554e;
}
.legend-list{display:flex;flex-direction:column;gap:2px;}
.legend-item{
  display:flex;align-items:baseline;gap:6px;
  font-family:var(--font-mono);font-size:.55rem;color:#24241f;
}
.legend-item .lg-dot{
  flex:0 0 13px;width:13px;height:13px;border-radius:50%;
  background:#1d1d1a;color:#fff;font-family:var(--font-code);font-size:.4rem;
  display:flex;align-items:center;justify-content:center;
}
.legend-item .lg-lead{flex:1;border-bottom:1px solid #b4b4ac;transform:translateY(-3px);}
.legend-item .lg-val{flex:0 0 auto;font-weight:700;letter-spacing:.04em;}
.bom-table{width:100%;border-collapse:collapse;font-family:var(--font-code);font-size:.5rem;margin:4px 0 6px;}
.bom-table th{
  background:#1d1d1a;color:#f2f2ee;font-weight:700;letter-spacing:.1em;
  padding:2px 4px;text-align:left;font-size:.44rem;
}
.bom-table td{border-bottom:1px solid #cdcdc6;padding:2px 4px;color:#26261f;}
.bom-table tr:nth-child(even) td{background:rgba(0,0,0,.028);}
.drop-lines{
  position:absolute;left:0;right:0;bottom:0;height:26px;pointer-events:none;
  background:repeating-linear-gradient(90deg,transparent 0 17px,rgba(0,0,0,.2) 17px 18px);
  opacity:.5;
}

/* ==========================================================================
   表单形制 E — 蓝图工程校核单 (ref: 6f55125d 构造线)
   ========================================================================== */
.form-blueprint .paper-sheet{
  background:
    radial-gradient(circle at 78% 26%,rgba(0,34,199,.055),transparent 42%),
    linear-gradient(176deg,#f2f4f7,#e6eaef);
}
.bp-construct{
  position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:
    repeating-linear-gradient(90deg,rgba(0,0,0,.14) 0 1px,transparent 1px 3px),
    repeating-linear-gradient(0deg,rgba(0,0,0,.09) 0 1px,transparent 1px 3px);
  background-size:100% 1px,1px 100%;
  background-position:0 34%,66% 0;
  background-repeat:no-repeat;
}
.bp-circle{
  position:absolute;border:1px dashed rgba(0,0,0,.3);border-radius:50%;pointer-events:none;
}
.bp-head{
  display:flex;justify-content:space-between;align-items:flex-end;
  border-bottom:1px solid var(--klein);padding-bottom:4px;margin-bottom:6px;
}
.bp-title{font-family:var(--font-code);font-size:1.02rem;font-weight:700;letter-spacing:.04em;color:#141419;}
.bp-scale{font-family:var(--font-code);font-size:.46rem;letter-spacing:.12em;color:var(--klein);}
.rev-block{
  width:100%;border-collapse:collapse;font-family:var(--font-code);font-size:.46rem;
  border:1px solid #8d95a2;margin:5px 0 6px;
}
.rev-block th{background:#dfe4ea;color:#2a2f38;padding:2px 4px;text-align:left;letter-spacing:.08em;}
.rev-block td{border-top:1px solid #b9c0ca;padding:2px 4px;color:#2a2f38;}
.tol-stack{
  display:flex;gap:4px;margin:4px 0 6px;
  font-family:var(--font-code);font-size:.46rem;
}
.tol-stack div{
  flex:1;border:1px solid #9aa2ae;padding:2px 3px;text-align:center;
  background:rgba(255,255,255,.5);color:#2a2f38;
}
.tol-stack div b{display:block;font-size:.62rem;color:var(--klein);}

/* ==========================================================================
   表单形制 F — 青色机密传输单 (ref: ffbf3066)
   ========================================================================== */
.form-transmittal .paper-sheet{
  background:linear-gradient(176deg,#9fe6f8,#79cfe8);
  color:var(--carbon-cyan-ink);
}
.form-transmittal .ticket-body{color:#0a3d54;}
.ts-head{
  display:flex;align-items:stretch;border:1.5px solid #0a3d54;margin-bottom:0;
}
.ts-head .ts-name{
  flex:1;font-family:var(--font-code);font-size:.78rem;font-weight:700;
  letter-spacing:.1em;padding:4px 6px;
}
.ts-head .ts-date{
  flex:0 0 96px;border-left:1.5px solid #0a3d54;padding:2px 5px;
  font-family:var(--font-code);font-size:.42rem;letter-spacing:.1em;
}
.ts-head .ts-date b{
  display:block;font-family:var(--font-ticket);font-size:.74rem;letter-spacing:0;
  transform:rotate(-1.4deg);
}
.ts-grid{
  display:grid;grid-template-columns:1fr 1fr 1fr;
  border:1.5px solid #0a3d54;border-top:none;
}
.ts-grid > div{
  border-right:1px solid #0a3d54;padding:2px 5px;
  font-family:var(--font-code);font-size:.42rem;letter-spacing:.09em;
}
.ts-grid > div:last-child{border-right:none;}
.ts-grid b{
  display:block;font-family:var(--font-ticket);font-size:.68rem;letter-spacing:0;color:#083344;
}
.ts-remarks{
  border:1.5px solid #0a3d54;border-top:none;padding:6px 7px 9px;
  font-family:var(--font-ticket);font-size:.63rem;line-height:1.85;color:#0a3d54;
  background:repeating-linear-gradient(0deg,transparent 0 17px,rgba(10,61,84,.16) 17px 18px);
}
.ts-remarks .ts-rk{
  font-family:var(--font-code);font-size:.42rem;letter-spacing:.12em;
  display:block;margin-bottom:2px;
}
.redact{
  display:inline-block;background:#08202b;color:transparent;
  height:.72em;vertical-align:-.08em;border-radius:1px;
  user-select:none;
}
.ts-checks{
  border:1.5px solid #0a3d54;border-top:none;padding:5px 7px;
  display:grid;grid-template-columns:1fr 1fr;gap:1px 10px;
  font-family:var(--font-code);font-size:.45rem;letter-spacing:.06em;
}
.ts-checks label{display:flex;align-items:center;gap:4px;}
.ts-checks i{
  width:7px;height:7px;border:1px solid #0a3d54;flex:0 0 7px;background:rgba(255,255,255,.4);
}
.ts-checks label.on i{
  background:#0a3d54;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);
}
.gpo-foot{
  display:flex;justify-content:space-between;
  font-family:var(--font-code);font-size:.38rem;letter-spacing:.06em;
  color:#0a3d54;opacity:.8;margin-top:3px;
}
.hand-note{
  font-family:var(--font-ticket);font-size:.68rem;color:#123a5c;
  transform:rotate(-1.8deg);margin:4px 0 2px;opacity:.9;
}
.form-transmittal .asset-void{
  border-color:#0a3d54;background-color:rgba(255,255,255,.18);
  background-image:
    radial-gradient(rgba(10,61,84,.28) 1px,transparent 1px),
    radial-gradient(rgba(10,61,84,.12) 1px,transparent 1px);
}
.form-transmittal .void-mark{background:rgba(214,241,250,.9);color:#0a3d54;border-color:#0a3d54;}
.form-transmittal .void-sub,.form-transmittal .asset-meta,.form-transmittal .palette-note{color:#0d4a64;}
.form-transmittal .asset-meta{border-bottom-color:#5aa9c2;}
.form-transmittal .asset-meta b{color:#062d3d;}
.form-transmittal .palette-dock{background:rgba(255,255,255,.2);border-color:#0a3d54;}
.form-transmittal .palette-label{color:#0d4a64;}
.form-transmittal .feed-bar{background:rgba(255,255,255,.22);color:#0a3d54;}
.form-transmittal .sig-row{color:#0d4a64;border-top-color:#5aa9c2;}
.form-transmittal .sig-line{border-bottom-color:#0a3d54;}
.form-transmittal .barcode-txt{color:#0a3d54;}
.form-transmittal .torn-hem,
.form-transmittal .zigzag-torn{background:linear-gradient(176deg,#79cfe8,#63bcd6);}
.form-transmittal .perf-edge{
  background:repeating-linear-gradient(to right,transparent 0 6px,rgba(10,61,84,.3) 6px 10px);
  border-bottom-color:rgba(10,61,84,.35);
}

/* ==========================================================================
   表单形制 G — 高反差拼贴海报单 (ref: 951709fb / ec196398)
   ========================================================================== */
.form-collage .paper-sheet{background:linear-gradient(176deg,#f7f6f2,#ebe9e2);}
.cl-head{position:relative;margin-bottom:8px;}
.cl-title{
  font-family:var(--font-serif);font-size:1.62rem;font-style:italic;line-height:1;
  position:relative;z-index:2;
}
.cl-hl{
  position:absolute;left:-4px;right:18%;bottom:1px;height:11px;z-index:1;
  background:var(--marker-yellow);opacity:.82;
  transform:rotate(-.8deg);
}
.cl-kicker{
  font-family:var(--font-code);font-size:.48rem;letter-spacing:.2em;
  color:#3a3a34;margin-top:3px;
}
.chevron-row{display:flex;align-items:center;gap:3px;margin:5px 0;}
.chevron-row i{
  width:0;height:0;border-left:7px solid #1c1c19;
  border-top:5px solid transparent;border-bottom:5px solid transparent;
}
.chevron-row span{
  font-family:var(--font-code);font-size:.46rem;letter-spacing:.16em;
  color:#1c1c19;margin-left:4px;
}
.e-nodes{
  display:flex;flex-wrap:wrap;gap:4px 10px;margin:5px 0 6px;
  font-family:var(--font-serif);font-size:.62rem;font-style:italic;color:#24241f;
}
.e-nodes span{display:flex;align-items:center;gap:4px;}
.e-nodes span::before{
  content:"";width:5px;height:5px;border-radius:50%;background:#1c1c19;
}
.e-nodes sub{font-size:.52em;}
.datum-line{
  display:flex;align-items:center;gap:6px;margin:5px 0 6px;
  font-family:var(--font-code);font-size:.46rem;color:#55554e;
}
.datum-line i{
  flex:1;height:1px;
  background:repeating-linear-gradient(90deg,#55554e 0 2px,transparent 2px 5px);
}
.micro-bars{display:flex;gap:2px;margin:4px 0 6px;height:11px;}
.micro-bars i{flex:1;}
.micro-bars i.mb-gold{background:var(--gold-bar);}
.micro-bars i.mb-grey{background:#b9b9b2;}
.micro-bars i.mb-ink{background:#1c1c19;}
.collage-strip{
  display:flex;gap:3px;margin:5px 0 6px;height:30px;
  filter:contrast(1.5) grayscale(1);
}
.collage-strip i{
  flex:1;
  background-image:
    repeating-linear-gradient(45deg,#1c1c19 0 2px,transparent 2px 4px),
    linear-gradient(180deg,#d8d8d2,#8e8e87);
  border:1px solid #6d6d66;
}
.collage-strip i:nth-child(2){
  background-image:
    repeating-linear-gradient(-45deg,#1c1c19 0 1px,transparent 1px 5px),
    linear-gradient(180deg,#ececE6,#a4a49d);
}
.collage-strip i:nth-child(3){
  background-image:
    repeating-linear-gradient(90deg,#1c1c19 0 1px,transparent 1px 3px),
    linear-gradient(180deg,#c4c4be,#77776f);
}

/* ==========================================================================
   便签 / 货运质检单 / 水洗唛
   ========================================================================== */
.note-sheet{
  position:relative;padding:9px 10px;
  font-family:var(--font-mono);font-size:.59rem;line-height:1.45;
  border:1px solid;transform-style:preserve-3d;
}
.note-sheet .note-hd{
  font-weight:700;border-bottom:1px solid;padding-bottom:3px;margin-bottom:4px;
  display:flex;justify-content:space-between;gap:6px;letter-spacing:.04em;
}
.note-sheet .note-row{display:flex;justify-content:space-between;gap:8px;}
.note-sheet .note-ft{border-top:1px dashed;margin-top:5px;padding-top:4px;font-weight:700;}
.note-qa{background:#fdf1bf;border-color:#c67d09;color:#483203;}
.note-qa .note-hd,.note-qa .note-ft{border-color:#c67d09;}
.note-wash{background:#daf0fc;border-color:#0f6fab;color:#052f48;}
.note-wash .note-hd,.note-wash .note-ft{border-color:#0f6fab;}
.note-punch{
  position:absolute;left:8px;bottom:6px;display:flex;gap:4px;
}
.note-punch i{
  width:6px;height:6px;border-radius:50%;background:rgba(0,0,0,.18);
  box-shadow:inset 0 1px 1px rgba(0,0,0,.5);
}

/* 深色主题：去掉硬编码白边，避免 PNG 透明通道衬出白底 */
body.theme-dark .ticket-card,
body.theme-dark .ticket-scroll,
body.theme-dark .hang-arm,
body.theme-dark .hanger{
  background:transparent;
  border-color:rgba(255,255,255,.15);
  outline:none;
}
body.theme-dark .ticket-card,
body.theme-dark .paper-sheet,
body.theme-dark .paper-substrate{
  box-shadow:0 18px 40px rgba(0,0,0,.55);
  border-color:rgba(255,255,255,.15);
}
body.theme-dark .card-shadow{
  background:transparent;
  box-shadow:0 16px 36px rgba(0,0,0,.48),0 2px 8px rgba(0,0,0,.28);
}
body.theme-dark .ticket-card.in-focus .card-shadow,
body.theme-dark .ticket-card.focused .card-shadow{
  box-shadow:0 22px 48px rgba(0,0,0,.5);
}
body.theme-dark .mod-block{
  background:rgba(255,255,255,.045);
  border-color:rgba(255,255,255,.15);
}
body.theme-dark .mod-code-input,
body.theme-dark .mod-qr,
body.theme-dark .mount-btn,
body.theme-dark .mod-del,
body.theme-dark .line-ops button,
body.theme-dark .mod-add-row{
  background:#16171b;
  color:#ecece6;
  border-color:rgba(255,255,255,.18);
}
body.theme-dark .asset-frame,
body.theme-dark .asset-frame .fluid-img,
body.theme-dark .barcode-cluster,
body.theme-dark .barcode-svg{
  border-color:rgba(255,255,255,.15);
  background:transparent;
}
body.theme-dark .asset-void{
  background-color:rgba(255,255,255,.04);
}
body.theme-dark .void-mark{
  background:rgba(20,21,24,.8);color:#d8d6ce;border-color:rgba(255,255,255,.2);
}
body.theme-dark [contenteditable=true]:focus{
  background:rgba(255,255,255,.06);
}
body.theme-dark .palette-dock,
body.theme-dark .spec-table,
body.theme-dark .mod-matrix th,
body.theme-dark .mod-matrix td{
  background:rgba(255,255,255,.04);
  border-color:rgba(255,255,255,.16);
}
body.theme-dark .mod-matrix th{
  background:#16171b;
  color:#ecece6;
}
