.ff-page{width:100%;max-width:1400px;margin:0 auto;padding:clamp(14px,1.4vw,22px);box-sizing:border-box}.ff-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.ff-back{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--tpl-hair);background:var(--tpl-card);color:var(--tpl-t1);border-radius:999px;padding:6px 12px;font:inherit;font-size:12.5px;cursor:pointer}.ff-title{font-size:20px;font-weight:700;color:var(--tpl-t1)}.ff-sub{font-size:12.5px;color:var(--tpl-t2)}.ff-actions{margin-left:auto;display:flex;gap:6px;flex-wrap:wrap}.ff-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:start}@media (max-width: 1000px){.ff-grid{grid-template-columns:minmax(0,1fr)}}.ff-card{background:var(--tpl-card);border:1px solid var(--tpl-hair);border-radius:12px;padding:16px;margin-bottom:14px}.ff-card.is-active{border-color:var(--tpl-t1);box-shadow:0 0 0 1px var(--tpl-t1)}.ff-card.is-locked{opacity:.55}.ff-card.is-done{background:var(--tpl-inset)}.ff-step-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}.ff-step-num{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--tpl-inset);color:var(--tpl-t1);border:1px solid var(--tpl-hair);flex:none}.ff-card.is-active .ff-step-num{background:var(--tpl-t1);color:var(--tpl-card);border-color:var(--tpl-t1)}.ff-card.is-done .ff-step-num{background:var(--tpl-t1);color:var(--tpl-card)}.ff-step-title{font-size:15px;font-weight:700;color:var(--tpl-t1)}.ff-step-note{font-size:12px;color:var(--tpl-t2)}.ff-step-right{margin-left:auto;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.ff-tray-tag{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;border:1px solid var(--tpl-hair)}.ff-tray-tag i{width:10px;height:10px;border-radius:3px;display:inline-block}.ff-tray-tag.blue i{background:#2b6cb0}.ff-tray-tag.yellow i{background:#d69e2e}.ff-tray-tag.red i{background:#c53030}.ff-scan{margin:4px 0 12px}.ff-scan>label{display:block;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--tpl-t2);margin-bottom:6px}.ff-scan-row{display:flex;gap:6px;align-items:center}.ff-scan-row .ff-scan-input{flex:1;min-width:0;height:42px;font-size:15px;font-family:JetBrains Mono,ui-monospace,monospace;letter-spacing:.02em}.ff-scan-row .tpl-btn{height:42px}.ff-scan-hint{font-size:11.5px;color:var(--tpl-t3);margin-top:5px}.ff-feedback{display:flex;gap:10px;align-items:flex-start;border-radius:10px;padding:10px 12px;margin-bottom:12px;font-size:13px;line-height:1.4;border:1px solid}.ff-feedback.ok{background:var(--tpl-ok-t);border-color:var(--tpl-hair2);color:var(--tpl-t1)}.ff-feedback.err{background:var(--tpl-danger-t);border-color:var(--tpl-danger);color:var(--tpl-danger);font-weight:600}.ff-feedback button{margin-left:auto;border:0;background:none;color:inherit;cursor:pointer;padding:0 2px}.ff-progress{display:inline-flex;align-items:center;gap:8px;font-size:12px;color:var(--tpl-t2);white-space:nowrap}.ff-progress-bar{width:90px;height:6px;border-radius:99px;background:var(--tpl-hair);overflow:hidden}.ff-progress-bar>div{height:100%;background:var(--tpl-t1);border-radius:99px;transition:width .2s ease}.ff-progress.is-full .ff-progress-bar>div{background:var(--tpl-orange)}.ff-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}.ff-unit{border:1px solid var(--tpl-hair);border-radius:10px;overflow:hidden;background:var(--tpl-card)}.ff-unit.is-done{border-color:var(--tpl-t1)}.ff-unit-head{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;background:var(--tpl-inset);border-bottom:1px solid var(--tpl-hair)}.ff-unit-head strong{font-size:13.5px}.ff-unit-meta{font-size:11.5px;color:var(--tpl-t2);margin-top:2px}.ff-unit-head .ff-right{margin-left:auto;display:flex;gap:6px;align-items:center}.ff-rows{width:100%;border-collapse:collapse}.ff-rows td{padding:7px 12px;border-bottom:1px solid var(--tpl-hair);font-size:12.5px;vertical-align:middle}.ff-rows tr:last-child td{border-bottom:0}.ff-rows td.ff-role{color:var(--tpl-t2);width:38%}.ff-rows td.ff-r{text-align:right;white-space:nowrap}.ff-serial{font-family:JetBrains Mono,ui-monospace,monospace;font-size:12px;font-weight:600}.ff-missing{color:var(--tpl-t3);font-style:italic}.ff-chips{display:flex;flex-wrap:wrap;gap:5px}.ff-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 8px;border-radius:6px;border:1px solid var(--tpl-hair);background:var(--tpl-inset);font-family:JetBrains Mono,ui-monospace,monospace;font-size:11.5px}.ff-chip button{border:0;background:none;cursor:pointer;color:var(--tpl-t3);padding:0 2px;display:inline-flex}.ff-chip button:hover{color:var(--tpl-danger)}.ff-lines{border:1px solid var(--tpl-hair);border-radius:10px;overflow:hidden}.ff-line{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px 12px;padding:10px 12px;border-bottom:1px solid var(--tpl-hair);align-items:center}.ff-line:last-child{border-bottom:0}.ff-line-name{font-size:13px;font-weight:600}.ff-line-sku{font-size:11.5px;color:var(--tpl-t2)}.ff-line .ff-chips{grid-column:1 / -1}.ff-section-label{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--tpl-t2);margin:14px 0 8px}.ff-swatch{display:inline-block;width:10px;height:10px;border-radius:3px;border:1px solid rgba(0,0,0,.25);vertical-align:-1px;margin-right:4px}.ff-banner{border-radius:10px;padding:12px 14px;margin-bottom:14px;font-size:13px;line-height:1.45;border:1px solid var(--tpl-warn);background:var(--tpl-warn-t);color:var(--tpl-t1)}.ff-banner.danger{border-color:var(--tpl-danger);background:var(--tpl-danger-t)}.ff-banner strong{display:block;margin-bottom:2px}.ff-kv{display:grid;grid-template-columns:110px minmax(0,1fr);gap:6px 10px;font-size:12.5px}.ff-kv span{color:var(--tpl-t2)}.ff-log{max-height:340px;overflow:auto;font-size:12px}.ff-log div{padding:6px 0;border-bottom:1px solid var(--tpl-hair)}.ff-log small{display:block;color:var(--tpl-t3);font-size:11px}.ff-big-done{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600}.ff-gate{max-width:560px;margin:40px auto;text-align:center}.ff-gate .ff-scan{text-align:left}.ff-gate h2{margin:6px 0 4px;font-size:20px}.ff-empty{padding:30px;text-align:center;color:var(--tpl-t2);font-size:13px}.ff-btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:12px}.ff-carton{border:1px solid var(--tpl-hair);border-radius:10px;margin-bottom:10px;overflow:hidden}.ff-carton.is-active{border-color:var(--tpl-orange);box-shadow:0 0 0 1px var(--tpl-orange)}.ff-carton-head{display:flex;align-items:center;gap:8px;padding:9px 12px;background:var(--tpl-inset);cursor:pointer}.ff-carton-body{padding:8px 12px;font-size:12.5px}.ff-carton-body div{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px dashed var(--tpl-hair)}.ff-carton-body div:last-child{border-bottom:0}.ff-board{display:grid;grid-template-columns:repeat(6,minmax(170px,1fr));gap:10px;overflow-x:auto;padding-bottom:6px}.ff-col{background:var(--tpl-inset);border:1px solid var(--tpl-hair);border-radius:12px;min-height:200px;display:flex;flex-direction:column}.ff-col-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--tpl-hair);font-weight:700;font-size:13px}.ff-col-head span{margin-left:auto;font-weight:600;color:var(--tpl-t2);font-size:12px}.ff-col-body{padding:8px;display:flex;flex-direction:column;gap:8px}.ff-kcard{background:var(--tpl-card);border:1px solid var(--tpl-hair);border-radius:10px;padding:10px;cursor:pointer;text-align:left;font:inherit;color:inherit}.ff-kcard:hover{border-color:var(--tpl-t1)}.ff-kcard strong{font-size:13px}.ff-kcard .ff-sub{margin:2px 0 6px}.ff-preview{padding:10px 12px;border-top:1px solid var(--tpl-hair)}.ff-preview .md-wrap{width:100%}.ff-preview .md-module{border:1.5px solid #aaa;border-radius:12px;padding:5px;background:#fff;border-left:8px solid var(--md-edge);color:#171717}.ff-preview .md-display{background:#fff;color:#222;border:1px solid #ccc;border-radius:7px;height:22px;display:flex;justify-content:space-between;align-items:center;padding:0 10px;font-size:11px;font-weight:700;margin-bottom:5px}.ff-preview .md-plates{display:grid;gap:5px;margin-bottom:14px}.ff-preview .md-plate{position:relative;border:1px solid #aaa;border-radius:8px}.ff-preview .md-row{display:flex;justify-content:space-between;align-items:center;min-height:30px;padding:0 8px;border-bottom:1px solid #ccc}.ff-preview .md-row:last-of-type{border-bottom:0}.ff-preview .md-lbl{font-size:12px;font-weight:700;display:flex;align-items:center;gap:5px;max-width:50%;overflow-wrap:anywhere;min-width:0}.ff-preview .md-n2 .md-lbl,.ff-preview .md-n3 .md-lbl{font-size:10px;gap:3px}.ff-preview .md-r{flex-direction:row-reverse;text-align:right}.ff-preview .md-lbl i{font-style:normal;font-size:8px;font-weight:700;color:#fff;background:#666;border-radius:50%;min-width:14px;height:14px;line-height:14px;text-align:center}.ff-preview .md-blank{color:#999;font-weight:400;font-size:10px;font-style:italic}.ff-preview .md-ctx{border-color:#d0d0d0;color:#b5b5b5}.ff-preview .md-ctx .md-lbl{font-weight:400}.ff-preview .md-ctx .md-lbl i{background:#d0d0d0}.ff-preview .md-active{border-color:#555;box-shadow:0 0 0 1px #888}.ff-preview .md-tag{position:absolute;bottom:-13px;left:50%;transform:translate(-50%);white-space:nowrap;background:#111;color:#fff;font-size:7.5px;letter-spacing:.1em;padding:1px 6px;border-radius:0 0 4px 4px}.ff-preview .md-socket{border-color:#c8c8c8;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#aaa;font-size:9px;gap:6px;min-height:92px}.ff-preview .md-sock{position:relative;width:36px;height:36px;border:2px solid #c8c8c8;border-radius:50%}.ff-preview .md-sock b{position:absolute;width:6px;height:6px;background:#c8c8c8;border-radius:50%}.ff-preview .md-sock b:nth-child(1){top:5px;left:13px}.ff-preview .md-sock b:nth-child(2){bottom:7px;left:6px}.ff-preview .md-sock b:nth-child(3){bottom:7px;right:6px}.ff-preview .md-caption{font-size:10px;color:var(--tpl-t2);margin-top:4px;text-align:center}.ff-done-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}.ff-done-bar .tpl-select{width:auto;min-width:150px}.ff-done-search{flex:1 1 260px;display:flex;align-items:center;gap:8px;padding:0 12px;height:36px;border:1px solid var(--tpl-hair);border-radius:10px;background:var(--tpl-card);color:var(--tpl-t3)}.ff-done-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;font:inherit;font-size:13px;color:var(--tpl-t1)}.ff-banner.ok{border-color:var(--tpl-ok, #16a34a);background:var(--tpl-ok-t, rgba(22,163,74,.08))}.ff-hero{padding:20px;margin-bottom:14px}.ff-hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap}.ff-hero-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ff-hero-title h1{margin:0;font-size:24px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;line-height:1.1;color:var(--tpl-t1)}.ff-hero-chip{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;border:1px solid var(--tpl-hair);font-size:12px;font-weight:500;color:var(--tpl-t2);white-space:nowrap}.ff-hero-meta{margin-top:8px;font-size:13px;color:var(--tpl-t2)}.ff-stepper{display:flex;align-items:center;gap:0;margin-top:18px;padding-top:16px;border-top:1px solid var(--tpl-hair);overflow-x:auto;scrollbar-width:none}.ff-stepper-item{display:flex;align-items:center;gap:8px;flex:1 1 0;min-width:-moz-max-content;min-width:max-content}.ff-stepper-item:last-child{flex:0 0 auto}.ff-stepper-dot{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:600;flex:none;border:1px solid var(--tpl-hair2);color:var(--tpl-t3);background:var(--tpl-card)}.ff-stepper-label{font-size:12.5px;color:var(--tpl-t3);white-space:nowrap}.ff-stepper-line{flex:1;height:1px;background:var(--tpl-hair2);margin:0 12px;min-width:24px}.ff-stepper-item.is-done .ff-stepper-dot{background:var(--tpl-t1);border-color:var(--tpl-t1);color:var(--tpl-card)}.ff-stepper-item.is-done .ff-stepper-label{color:var(--tpl-t2)}.ff-stepper-item.is-active .ff-stepper-dot{border-color:var(--tpl-orange);color:var(--tpl-orange)}.ff-stepper-item.is-active .ff-stepper-label{color:var(--tpl-t1);font-weight:600}.ff-step{padding:18px 20px;margin-bottom:12px}.ff-step.is-active{border-color:var(--tpl-hair2);box-shadow:inset 3px 0 0 var(--tpl-orange)}.ff-step-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.ff-step-dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;font-size:12px;font-weight:600;border:1px solid var(--tpl-hair2);color:var(--tpl-t2);background:var(--tpl-card)}.ff-step.is-active .ff-step-dot{background:var(--tpl-t1);border-color:var(--tpl-t1);color:var(--tpl-card)}.ff-step.is-done .ff-step-dot{background:var(--tpl-inset);color:var(--tpl-t1)}.ff-step.is-waiting .ff-step-dot{color:var(--tpl-t3)}.ff-step-name{font-size:14.5px;font-weight:600;color:var(--tpl-t1)}.ff-step.is-waiting .ff-step-name{color:var(--tpl-t2)}.ff-step-desc{font-size:12.5px;color:var(--tpl-t2);margin-top:1px}.ff-step-body{margin-top:16px}.ff-step-body>.ff-section-label:first-child{margin-top:4px}.ff-text-btn{border:0;background:none;padding:4px 2px;font:inherit;font-size:12.5px;font-weight:500;color:var(--tpl-orange);cursor:pointer}.ff-text-btn:hover{text-decoration:underline}.ff-text-btn.muted{color:var(--tpl-t2)}.ff-text-btn.muted:hover{color:var(--tpl-orange)}.ff-menu{position:relative}.ff-menu-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:30;min-width:210px;background:var(--tpl-card);border:1px solid var(--tpl-hair);border-radius:12px;padding:6px;box-shadow:0 10px 30px #00000014}.ff-menu-pop button{display:flex;align-items:center;gap:8px;width:100%;border:0;background:none;padding:8px 10px;border-radius:8px;font:inherit;font-size:13px;color:var(--tpl-t1);cursor:pointer;text-align:left}.ff-menu-pop button:hover{background:var(--tpl-inset)}.ff-menu-pop svg{color:var(--tpl-t3)}.ff-step .ff-unit{border-radius:10px}.ff-step .ff-unit-head{background:var(--tpl-inset)}.ff-step .ff-lines{border-radius:10px}.ff-step .ff-btn-row{margin-top:16px}.ff-done-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--tpl-t2);margin-top:12px}.ff-done-line svg{color:var(--tpl-t1)}.ff-gate{max-width:560px;margin:32px auto;padding:28px 28px 22px;text-align:center}.ff-gate h2{margin:12px 0 4px;font-size:22px;font-weight:600;letter-spacing:.02em;color:var(--tpl-t1)}.ff-plates{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px;margin-top:4px}.ff-plate{border:1px solid var(--tpl-hair);border-radius:12px;overflow:hidden;background:var(--tpl-card);display:flex;flex-direction:column}.ff-plate.is-ok{border-color:var(--tpl-hair2)}.ff-plate-head{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-bottom:1px solid var(--tpl-hair)}.ff-plate-head strong{font-size:13.5px;font-weight:600}.ff-plate-meta{font-size:11.5px;color:var(--tpl-t2);margin-top:2px}.ff-plate-serial{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--tpl-hair);font-size:12.5px}.ff-plate-serial span:first-child{color:var(--tpl-t2)}.ff-plate-serial .ff-text-btn{margin-left:auto}.ff-plate .ff-preview{border-top:0;flex:1}.ff-plate .ff-scan{padding:10px 14px 0;margin:0}.ff-chip-status{margin-left:auto;display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:500;white-space:nowrap;border:1px solid var(--tpl-hair);color:var(--tpl-t2)}.ff-chip-status.is-ok{background:var(--tpl-t1);border-color:var(--tpl-t1);color:var(--tpl-card)}.ff-chip-status.is-warn{border-color:var(--tpl-orange);color:var(--tpl-orange)}.ff-preview .md-merged{display:grid}.ff-preview .md-merged .md-gang{min-width:0}.ff-preview .md-merged .md-gang+.md-gang{border-left:1px dashed #d4d4d4}.ff-preview .md-socket span{font-size:9px}.ff-preview .md-plates:has(.md-merged){margin-bottom:6px}.ff-plates{grid-template-columns:repeat(auto-fill,minmax(420px,1fr))}@media (max-width: 700px){.ff-plates{grid-template-columns:minmax(0,1fr)}}.ff-plate .ff-plate-serial span:first-child{min-width:150px}.ff-mini-ok{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--tpl-t1);color:var(--tpl-card)}.ff-mini-wait{font-size:11px;color:var(--tpl-orange)}.ff-ecards{display:flex;flex-direction:column;gap:12px;margin-top:4px}.ff-ecard{display:grid;grid-template-columns:minmax(230px,30%) minmax(0,1fr);border:1px solid var(--tpl-hair);border-radius:12px;overflow:hidden;background:var(--tpl-card)}@media (max-width: 760px){.ff-ecard{grid-template-columns:minmax(0,1fr)}}.ff-ecard-info{background:var(--tpl-inset);border-right:1px solid var(--tpl-hair);padding:16px 18px;min-width:0}@media (max-width: 760px){.ff-ecard-info{border-right:0;border-bottom:1px solid var(--tpl-hair)}}.ff-ecard-top{display:flex;align-items:center;gap:8px;margin-bottom:6px}.ff-ecard-num{font-size:15px;font-weight:700;color:var(--tpl-t1)}.ff-ecard-info small{display:block;margin:12px 0 3px;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--tpl-t3)}.ff-ecard-title{display:block;font-size:15px;font-weight:700;color:var(--tpl-t1);letter-spacing:.01em;overflow-wrap:anywhere}.ff-ecard-sub{font-size:12px;color:var(--tpl-t2);margin-top:1px}.ff-ecard-plate{padding:6px 0;border-bottom:1px dashed var(--tpl-hair2)}.ff-ecard-plate:last-of-type{border-bottom:0}.ff-ecard-plate-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--tpl-t2);min-height:20px}.ff-ecard-plate-row .ff-serial{font-size:12.5px;color:var(--tpl-t1);overflow-wrap:anywhere}.ff-ecard-plate-row .ff-mini-ok,.ff-ecard-plate-row .ff-mini-wait,.ff-ecard-plate-row .ff-text-btn{margin-left:auto}.ff-ecard-plate .ff-scan{margin:6px 0 0}.ff-ecard-fig{display:flex;align-items:center;justify-content:center;padding:18px 20px;min-width:0}.ff-ecard-fig .ff-preview{border:0;padding:0;width:100%;display:flex;justify-content:center}.ff-ecard-fig .md-module{padding:6px;border-width:1.5px;border-left-width:8px}.ff-ecard-fig .md-display{height:26px;font-size:12px;padding:0 12px;margin-bottom:6px}.ff-ecard-fig .md-plates{gap:6px;margin-bottom:20px}.ff-ecard-fig .md-row{min-height:36px;padding:0 10px}.ff-ecard-fig .md-lbl{font-size:13px}.ff-ecard-fig .md-n2 .md-lbl{font-size:11.5px;gap:4px}.ff-ecard-fig .md-n2 .md-row{padding:0 7px}.ff-ecard-fig .md-n3 .md-lbl{font-size:10px;gap:3px}.ff-ecard-fig .md-n3 .md-row{padding:0 5px}.ff-ecard-fig .md-lbl i{min-width:16px;height:16px;line-height:16px;font-size:9px}.ff-ecard-fig .md-tag{bottom:-17px;font-size:9px;letter-spacing:.08em;padding:2px 10px;border-radius:0 0 6px 6px}.ff-ecard-fig .md-socket{min-height:120px}.ff-ecard-fig .md-caption{font-size:11px;margin-top:8px}.ff-preview .md-tag.md-tag-done{background:#fff;color:#111;border:1px solid #111;border-top:0}.ff-pack-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px;align-items:start}@media (max-width: 900px){.ff-pack-grid{grid-template-columns:minmax(0,1fr)}}.ff-pack-grid .ff-line .ff-serial{white-space:nowrap}.ff-pack-note{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--tpl-t2);padding:12px 14px;border:1px dashed var(--tpl-hair2);border-radius:10px}.ff-pack-empty{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px dashed var(--tpl-hair2);border-radius:12px;margin-bottom:4px;color:var(--tpl-t2);flex-wrap:wrap}.ff-pack-empty strong{color:var(--tpl-t1);font-size:13.5px}.ff-pack-empty>:last-child{margin-left:auto}.ff-boxes{display:flex;flex-direction:column;gap:10px}.ff-box{border:1px solid var(--tpl-hair);border-radius:12px;overflow:hidden;background:var(--tpl-card)}.ff-box.is-active{border-color:var(--tpl-orange);box-shadow:0 0 0 1px var(--tpl-orange)}.ff-box-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--tpl-inset);color:var(--tpl-t1)}.ff-box-head[role=button]{cursor:pointer}.ff-box-head strong{font-size:13.5px}.ff-box.is-active .ff-box-head svg:first-child{color:var(--tpl-orange)}.ff-box-actions{margin-left:auto;display:flex;gap:4px}.ff-icon-btn{width:30px;height:30px;display:grid;place-items:center;border-radius:999px;border:1px solid var(--tpl-hair);background:var(--tpl-card);color:var(--tpl-t2);cursor:pointer}.ff-icon-btn:hover{color:var(--tpl-t1);border-color:var(--tpl-hair2)}.ff-box-body{padding:4px 12px}.ff-box-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--tpl-hair)}.ff-box-row:last-child{border-bottom:0}.ff-box-row .ff-text-btn{margin-left:auto}.ff-ship-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:18px;align-items:start}@media (max-width: 900px){.ff-ship-grid{grid-template-columns:minmax(0,1fr)}}.ff-ship-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.ff-ship-fields .tpl-field{display:flex;flex-direction:column;gap:6px}.ff-ship-label{font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--tpl-t3)}.ff-ship-box{background:var(--tpl-inset);border:1px solid var(--tpl-hair);border-radius:12px;padding:14px 16px}.ff-ship-box small{display:block;margin:0 0 4px;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--tpl-t3)}.ff-ship-to{font-size:13px;color:var(--tpl-t1);line-height:1.45;margin-bottom:14px}.ff-ship-carton{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--tpl-hair);color:var(--tpl-t1)}.ff-ship-carton strong{font-size:13px}.ff-ship-carton .ff-icon-btn{margin-left:auto;flex:none}.ff-vimg{display:inline-flex;align-items:center;justify-content:center;flex:none;border-radius:8px;overflow:hidden;background:var(--tpl-inset);border:1px solid var(--tpl-hair)}.ff-vimg img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.ff-vimg i{width:70%;height:56%;border-radius:5px;border:1px solid rgba(0,0,0,.18);display:block}.ff-yrow{display:grid;grid-template-columns:26px auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--tpl-hair)}.ff-yrow:last-child{border-bottom:0}.ff-ynum{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;background:var(--tpl-inset);border:1px solid var(--tpl-hair2);color:var(--tpl-t1)}@media (max-width: 560px){.ff-yrow{grid-template-columns:24px auto minmax(0,1fr)}.ff-yrow>:last-child{grid-column:2 / -1}}.ff-dlg{display:grid;gap:14px;font-size:13px}.ff-dlg-field{display:grid;gap:6px}.ff-dlg-field>span{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--tpl-t3)}.ff-dlg-radio{display:flex;gap:8px;align-items:center;color:var(--tpl-t1)}.ff-red-card{padding:18px 20px;border-color:var(--tpl-danger);margin-bottom:14px;box-shadow:inset 3px 0 #c53030}.ff-red-card .ff-btn-row{margin-top:16px}.ff-red-card.is-done{border-color:var(--tpl-hair);box-shadow:none}.ff-red-dot{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;flex:none;font-size:12px;font-weight:700;background:#c53030;color:#fff}.ff-red-card.is-done .ff-red-dot{background:var(--tpl-t1);color:var(--tpl-card)}.ff-red-list{border:1px solid var(--tpl-hair);border-radius:12px;overflow:hidden;background:var(--tpl-card)}.ff-red-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--tpl-hair)}.ff-red-row:last-child{border-bottom:0}.ff-red-row .ff-red-side{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.ff-red-serials{display:flex;align-items:center;gap:6px;margin-top:4px;flex-wrap:wrap;color:var(--tpl-t3)}.ff-serial.is-bad{text-decoration:line-through;color:var(--tpl-danger)}.ff-red-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;white-space:nowrap;border:1px solid var(--tpl-hair);color:var(--tpl-t2)}.ff-red-chip.tone-danger{border-color:var(--tpl-danger);color:var(--tpl-danger);background:var(--tpl-danger-t)}.ff-red-chip.tone-warn{border-color:var(--tpl-orange);color:var(--tpl-orange)}.ff-red-chip.tone-orange{border-color:var(--tpl-orange);background:var(--tpl-orange);color:#fff}.ff-red-chip.tone-info{border-color:var(--tpl-hair2);color:var(--tpl-t1);background:var(--tpl-inset)}.ff-red-chip.tone-ok{border-color:var(--tpl-t1);background:var(--tpl-t1);color:var(--tpl-card)}.ff-red-done{margin-top:10px}.ff-red-done summary{cursor:pointer;font-size:12.5px;color:var(--tpl-t2);margin-bottom:8px}.ff-red-pick{display:flex;gap:12px;align-items:center;padding:10px 12px;border-radius:10px;background:var(--tpl-inset)}.ff-red-how{margin:0;padding-left:20px;list-style:decimal;font-size:12.5px;line-height:1.55;color:var(--tpl-t2)}.ff-red-how strong{color:var(--tpl-t1)}.ff-red-how li{margin:2px 0;padding-left:2px}.ff-red-btn{border:0;background:none;cursor:pointer;padding:0;font:inherit;font-size:12px;font-weight:600;color:var(--tpl-danger)}.ff-red-btn:hover{text-decoration:underline}.ff-red-btn:disabled{opacity:.5;cursor:default}.ff-ecard-plate-row .ff-red-btn,.ff-ecard-plate-row .ff-red-chip{margin-left:auto}.ff-red-group{margin-bottom:14px}.ff-red-group-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}@media (max-width: 560px){.ff-red-row{grid-template-columns:auto minmax(0,1fr)}.ff-red-row .ff-red-side{grid-column:1 / -1;flex-direction:row;justify-content:flex-start}}.ff-pick-units{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:12px}.ff-pick-unit{border:1px solid var(--tpl-hair);border-radius:12px;overflow:hidden;background:var(--tpl-card)}.ff-pick-unit-head{display:flex;gap:12px;align-items:center;padding:12px;background:var(--tpl-inset);border-bottom:1px solid var(--tpl-hair)}.ff-pick-unit-head .ff-vimg{background:var(--tpl-card)}.ff-pick-title{font-size:14px;font-weight:700;line-height:1.25}.ff-pick-meta{font-size:11.5px;color:var(--tpl-t2);margin-top:2px;overflow-wrap:anywhere}.ff-pick-count{margin-left:auto;align-self:flex-start;flex:none;font-size:11px;font-weight:600;color:var(--tpl-t2);border:1px solid var(--tpl-hair);border-radius:999px;padding:2px 8px;background:var(--tpl-card)}.ff-pick-parts{display:flex;flex-direction:column}.ff-pick-part{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 12px;border-bottom:1px solid var(--tpl-hair)}.ff-pick-part:last-child{border-bottom:0}.ff-pick-part-name{font-size:12.5px;font-weight:600}.ff-pick-lines{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:10px}.ff-pick-line{display:flex;gap:12px;align-items:center;padding:10px 12px;border:1px solid var(--tpl-hair);border-radius:12px;background:var(--tpl-card)}.ff-pick-line-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:none}.ff-pick-qty{font-size:15px;font-weight:700}@media (max-width: 640px){.ff-pick-units,.ff-pick-lines{grid-template-columns:minmax(0,1fr)}.ff-pick-unit-head .ff-vimg{width:88px!important;height:50px!important}}.ff-preview .md-module{background:var(--md-fill, #fff);border-left-width:1.5px;border-color:#00000059;color:var(--md-ink, #171717)}.ff-preview .md-plate:not(.md-socket){background:var(--md-fill, #fff);border-color:#00000047;color:var(--md-ink, #171717)}.ff-preview .md-row{border-bottom-color:color-mix(in srgb,var(--md-ink, #171717) 22%,transparent)}.ff-preview .md-lbl i{background:var(--md-ink, #666);color:var(--md-fill, #fff)}.ff-preview .md-socket{background:var(--md-fill, #fff)}.ff-preview .md-ctx{opacity:.55}
