
#fq3d-back{position:fixed;inset:0;background:rgba(2,8,23,.68);z-index:2147483000;display:flex;align-items:center;justify-content:center;padding:18px;font-family:Arial,sans-serif}
#fq3d-modal,#fq3d-assembly{width:min(1180px,96vw);height:min(800px,94vh);background:#eef2f6;border-radius:14px;box-shadow:0 25px 90px rgba(0,0,0,.45);overflow:hidden;display:flex;flex-direction:column}
#fq3d-small{width:min(520px,94vw);background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 25px 90px rgba(0,0,0,.45)}
.fq3d-head{height:58px;background:#0b172a;color:#fff;display:flex;align-items:center;padding:0 16px;gap:14px;flex:none}.fq3d-head>div:first-child{display:flex;flex-direction:column;gap:3px}.fq3d-head b{font-size:15px;letter-spacing:.3px}.fq3d-head span{font-size:11px;color:#cbd5e1}.fq3d-head-actions{margin-left:auto;display:flex;gap:8px;align-items:center}.fq3d-head button{border:0;border-radius:6px;background:#334155;color:#fff;padding:8px 11px;font-weight:800;cursor:pointer}.fq3d-head button:last-child{font-size:20px;padding:4px 10px}
.fq3d-status{padding:5px 8px;border:1px solid #64748b;border-radius:999px;color:#fff!important;font-weight:800}
.fq3d-tabs{display:flex;gap:5px;padding:8px;background:#dce3ea;border-bottom:1px solid #bdc7d2;flex:none;overflow:auto}.fq3d-tabs button{border:1px solid #aab5c1;background:#fff;border-radius:7px;padding:8px 12px;font-weight:800;color:#334155;white-space:nowrap;cursor:pointer}.fq3d-tabs button.active{background:#0f766e;color:#fff;border-color:#0f766e}
#fq3d-body{flex:1;min-height:0;padding:10px}.fq3d-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:12px;height:100%}.fq3d-canvas-wrap{background:#fff;border:1px solid #cbd5e1;border-radius:10px;overflow:hidden;min-height:420px}.fq3d-canvas-wrap canvas{width:100%;height:100%;display:block}.fq3d-side{background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:14px;overflow:auto}.fq3d-side h3{margin:0 0 8px;font-size:16px}.fq3d-side p{font-size:12px;line-height:1.45;color:#475569}.fq3d-side label{display:block;font-size:12px;font-weight:800;margin:10px 0}.fq3d-side input,.fq3d-side select,.fq3d-side textarea{display:block;width:100%;box-sizing:border-box;border:1px solid #aab5c1;border-radius:6px;padding:8px;margin-top:4px;background:#fff}.fq3d-side button,.backup-body button,.assembly-form button{border:0;border-radius:6px;padding:9px 12px;font-weight:900;cursor:pointer;margin:6px 5px 0 0}.primary{background:#0f766e!important;color:#fff!important}.secondary{background:#334155!important;color:#fff!important}.danger{background:#b91c1c!important;color:#fff!important}.verify{background:#15803d!important;color:#fff!important;font-size:15px!important;padding:12px 18px!important}.fq3d-side button:disabled{opacity:.45;cursor:not-allowed}
.fq3d-upload{display:block;border:2px dashed #94a3b8;border-radius:8px;padding:14px;text-align:center;background:#f8fafc;cursor:pointer}.fq3d-upload input{display:none}.fq3d-kv,.test-card{display:grid;grid-template-columns:90px 1fr;gap:7px 10px;font-size:12px;margin:14px 0;padding:10px;background:#f8fafc;border-radius:8px}.fq3d-btns{display:flex;flex-wrap:wrap}.fq3d-face-note{font-size:12px;line-height:1.8;background:#f8fafc;border-left:4px solid #0f766e;padding:8px 10px;margin:12px 0}.anchor-list{max-height:280px;overflow:auto;border-top:1px solid #e2e8f0;margin-top:10px}.anchor-row{display:flex;justify-content:space-between;align-items:center;padding:7px 2px;border-bottom:1px solid #e2e8f0}.anchor-row small{display:block;color:#64748b;margin-top:2px}.anchor-row button{padding:4px 7px;background:#fee2e2;color:#991b1b}.warn,.ok{padding:10px;border-radius:8px;font-size:12px;line-height:1.5;margin:10px 0}.warn{background:#fff7ed;border:1px solid #fdba74;color:#9a3412}.ok{background:#ecfdf5;border:1px solid #86efac;color:#166534}.muted{color:#64748b;font-size:12px;padding:8px 0}.fq3d-empty{display:flex;height:100%;align-items:center;justify-content:center;background:#fff;border-radius:10px;color:#64748b;font-weight:800}.fq3d-verify{background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:28px;max-width:720px;margin:20px auto}.verify-box{background:#f8fafc;padding:14px;border-radius:8px;line-height:1.8;margin:16px 0}.check{display:block;padding:12px;border:1px solid #cbd5e1;border-radius:8px;margin:15px 0}.check input{margin-right:8px}.fq3d-row-btn{border:0;background:#0f766e;color:#fff;border-radius:5px;padding:6px 8px;font-size:11px;font-weight:900;cursor:pointer}.fq3d-row-status{display:block;margin-top:4px;font-size:9px;font-weight:800;color:#92400e}.fq3d-row-status.verified{color:#166534}.backup-body{padding:18px}.backup-body .fq3d-upload{margin-top:10px}.assembly-grid{display:grid;grid-template-columns:380px minmax(0,1fr);gap:12px;padding:12px;flex:1;min-height:0}.assembly-form,.assembly-preview{background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:12px;overflow:auto}.assembly-form label{display:grid;grid-template-columns:130px 1fr;gap:8px;align-items:center;font-size:12px;font-weight:800;margin:7px 0}.assembly-form input,.assembly-form select{height:31px;border:1px solid #aab5c1;border-radius:5px;padding:4px 7px}.assembly-form hr{border:0;border-top:1px solid #e2e8f0;margin:12px 0}.assembly-preview canvas{width:100%;height:430px;display:block}
#fq3d-toast{position:fixed;left:50%;bottom:25px;transform:translate(-50%,20px);opacity:0;pointer-events:none;transition:.18s;z-index:2147483646;background:#0f172a;color:#fff;padding:10px 14px;border-radius:8px;font:700 12px Arial;box-shadow:0 10px 30px rgba(0,0,0,.3)}#fq3d-toast.show{opacity:1;transform:translate(-50%,0)}#fq3d-toast.bad{background:#991b1b}
@media(max-width:800px){#fq3d-back{padding:4px}#fq3d-modal,#fq3d-assembly{width:100vw;height:98vh;border-radius:8px}.fq3d-grid,.assembly-grid{grid-template-columns:1fr;overflow:auto}.fq3d-canvas-wrap{min-height:390px;height:52vh}.fq3d-side{overflow:visible}.assembly-form label{grid-template-columns:110px 1fr}}
